版权声明:本文为博主原创文章,未经博主允许不得转载。
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的源码修改的哦这个从他的固件中看的出的。
。这个在构建整个架构的时候就包含了该文件目录。这里就进入文件的配置选项了哦。当然这个命名是
因为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文件中就有很多的模块和相应的库文件,在这里都是可以找到的哦。那么编译过程就讲到这里,注意这里只是编译过程,真正哪些模块会用到就要到下一章节的启动文件分析去了。
有什么错误欢迎提出来,大家一起修正一起学习。