第一章 PX4程序编译过程解析

PX4是一款软硬件开源的项目,目的在于学习和研究。其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯。这个项目是苏黎世联邦理工大学的一个实验室搞出来的。该方案是基于NUTTX系统上开发的。开发系统上面最好使用Ubuntu系统进行开发(开发效率高),程序修改和读写可以用Source Insight 。后期的文章将会陆续将软硬件进行开源和分析。

PX4的固件下载地址:https://github.com/PX4/Firmware

PX4的硬件下载地址:https://github.com/3drobotics/Pixhawk_OS_Hardware

这一章节主要是对PX4程序代码的编译过程进行讲解。首先要说的是makefile,现在windows下面的编程很多都是基于IDE进行开发。但是很多大型工程为了追求更好的开发和维护都用到了Makefile。Makefile定义了很多的开发和编译的规则,PX4的开发还涉及到Cmake使用。Cmake也是类似于Makefile文件,只是它是一个更高一级的编译配置工具,它是一个txt格式的文件。这里我们把它看成一个子Makefile文件。

好了我们进入到正题。首先我们进入到PX4固件文件的根目录如果是原始下载根目录在scr/Firmware下面。在该目录下有一个Makefile文件

(注意:所有的编译过程都是从需要编译的根目录下的Makefile文件开始),打开该文件我们开始进行分析。

首先对git是否存在进判断,然后运行check_cmake.sh对cmake的相关规则进行判断(主要是对cmake的版本号进行判断)。注:每行前面带“#”就是注释而已,没有什么用。

这里主要是对使用开发环境进行选择,这个对我们开发来说关系不大。

进入cmake的编译规则配置,这个不用管。

进入无人机的的编译配置选项,这个比较重要。主要选择你的硬件开发环境和类型。我们主要讲解的是编译px4fmu-v2_defalt,我们编译的语句是“make px4fmu-v2_defalt”,在这里就体现了。px4fmu-v1_defalt是适用于px4的v1硬件。这个可以从开源的硬件中找到。

此后的命令都是类似,都是选择不同的编译模式,其中清除指令是make clean,这个指令在后面也能找到的。

找到了编译源我们就要找到编译文件,对于我们的学习来说编译指令是make px4fmu-v2_defalt。说明一下APM的固件也是一样哦,都是可以找到的,APM是经过PX4的源码修改的哦这个从他的固件中看的出的。

px4fmu-v2_defalt这个文件在该目录下

。这个在构建整个架构的时候就包含了该文件目录。这里就进入文件的配置选项了哦。当然这个命名是

因为camke组建包含的就是nuttx_px4fmu-v2_defalt文件,注意到了没?

首先当然是把编译的工具导进来,因为那些模块都是用cmake写的,所以导入的是cmake工具。

接着就是一些驱动程序。到相应的目录都能找到这个cmake文件的。

这里举一个例子,比如drivers/mup6000。因为包含的关系我们很容易就可以查到这个文件在该目录下

。这个路径找到的是src/Firmware/src路径,然后引导到drivers路径,找到mup6000路径下的cmake文件。注意哦这里有个module drivers __mpu6000。这里的名字是mpu6000,这里在后面说到启动文件的时候会说到哦。这里就是要包含的c++文件,如果要编译自己的也可以写一个cmake文件或者在某个包含的cmake文件中加入自己的程序就行了,不然就不会参与编译哦,至于编写规则你随便找一个cmake文件模仿就行了,然后在这个文件中包含路径就行了。从这些cmake文件中也可以查哪些文件是参与编译的哪些是不参与编译的哦。很多人在看代码的时候总会出现有的文件是相同的然后又不知道时哪个文件参与编译的,那么从这些cmake文件中就可以知道了哦。

在这个camke文件中就有很多的模块和相应的库文件,在这里都是可以找到的哦。那么编译过程就讲到这里,注意这里只是编译过程,真正哪些模块会用到就要到下一章节的启动文件分析去了。

有什么错误欢迎提出来,大家一起修正一起学习。

原作者链接:http://blog.csdn.net/qq_18112493/article/details/69951055

PX4程序编译过程解析相关推荐

  1. 第一章 PX4程序编译过程解析

    版权声明:本文为博主原创文章,未经博主允许不得转载. 第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯 ...

  2. 第一章 PX4-Pixhawk-程序编译过程解析

    第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯.这个项目是苏黎世联邦理工大学的一个实验室搞出来的.该 ...

  3. C++ 程序编译过程:从代码到程序

    在大学课堂上学习 C++ 时,老师并没有过多涉猎 C++ 语法背后的知识.也就是说,初学 C++ 时,哪怕写出了代码,我也并不知道从代码到程序的过程中究竟发生了什么.我也曾尝试了解,但作为初学者,面对 ...

  4. 编译html成qch,在应用程序编译过程中运行qcollectiongenerator

    我一直在研究一个名为RoboJournal的程序很长一段时间.下一版本包含完整的文档;每当用户按F1或单击RoboJournal程序中的帮助项目时,帮助文件将显示在Qt助手中(比简单地打开浏览器窗口以 ...

  5. Android 系统 (79)---Android应用程序安装过程解析

    Android应用程序安装过程解析 Android应用程序安装过程解析 1.程序安装的4大步骤 (1) 拷贝apk文件到指定目录 在Android系统中,apk安装文件是会被保存起来的,默认情况下,用 ...

  6. Android应用程序安装过程解析(源码解析)

    Android应用程序安装过程解析 1.程序安装的4大步骤 (1) 拷贝apk文件到指定目录 在Android系统中,apk安装文件是会被保存起来的,默认情况下,用户安装的apk首先会被拷贝到 /da ...

  7. C程序编译过程及常见选项--静态库和动态库

    C程序编译过程及常见选项--静态库和动态库 前言 一.gcc详讲 1.1 编译过程 1.2 预处理 1.3 编译(Compilation) 1.4 汇编(Assembly) 1.5 链接(Linkin ...

  8. Linux 程序编译过程

    前言 计算机程序设计语言通常分为机器语言,汇编语言和高级语言三类.而高级语言需要被翻译成机器语言才可以被执行,而翻译的方式也被分为两种,一种是编译型,另一种为解释型,根据这两种的不同,我们将其分为编译 ...

  9. C语言——C程序编译过程

    C语言目录: 1. 概述 2. 数据类型 3. 量 4. 运算符 5. 流程控制 6. 函数 7. C程序编译过程 8. 文件 9. 内存管理 #mermaid-svg-5eSYOEOTEbZDntT ...

最新文章

  1. 利用phpmailer类邮件发送
  2. 表框mysql_mysql 表的操作
  3. 软件工程 软件的估计为什么这么难
  4. 多协程实例讲解(python 三)
  5. while和do-while循环结构
  6. 山寨“饿了么”应用中添加菜品数量按钮效果
  7. 【idea基础知识】project structure中没有web 或没有spring
  8. TED 你有拖延症吗?
  9. 联想服务器TS540装系统蓝屏,联想装win7蓝屏0x000000a5超详细图文解决方案
  10. 米兔机器人自主编程_可编程米兔机器人 让成年人回归童心的玩具
  11. C语言-基础入门-学习笔记(13):结构体
  12. 做跨境电商的Anker的也回来“内卷”了?
  13. 如何缩小pdf的大小?如何将pdf文件变小一点?
  14. 游戏辅助制作核心--植物大战僵尸逆向之植物种植call(七)
  15. replication_applier_configuration、replication_connection_configuration和replication_connection_status
  16. py语法07-字符串的操作
  17. 2019/01/01 一位前端实习生 艰辛过程 励志 实习周记(二)——第一周
  18. 贵大计算机学院张达敏,贵大计算机研究生怎么样?
  19. 【FASTDFS】fastdfs上传文件报错 org.csource.common.MyException: getStoreStorage fail, errno code: 28 解决方法
  20. 电信 IPRAN 设备组网方案_中国电信首次确认5G独立组网(SA)时间表

热门文章

  1. PDF格式转换器官方免费下载
  2. Maya 2022.2 for Mac中文版(玛雅三维动画制作软件)
  3. vue项目如何打war包
  4. u大师u盘装系统win7_U盘装系统教程
  5. springboot访问图片本地路径并映射成url
  6. 统计字典序元音字符串的数目(一题三解)
  7. (php毕业设计)基于php宠物爱好者交流平台管理系统源码
  8. C++编写浪漫烟花||新年专属
  9. wow plugins zhange
  10. Navicat 筛选或插入某个字段出现1060 - Duplicate column name ‘XXX‘错误,以及导入sql文件时数据丢失问题。