第一章 PX4-Pixhawk-程序编译过程解析
第一章?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-Pixhawk-程序编译过程解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第七章 PX4-Pixhawk-Mavl
- 下一篇: 第二章 PX4-Pixhawk-RCS启