第一章 PX4程式編譯過程解析
第一章 PX4程式編譯過程解析
PX4是一款軟硬體開源的專案,目的在於學習和研究。其中也有比較好的程式設計習慣,大家不妨可以學習一下國外牛人的程式設計習慣。這個專案是蘇黎世聯邦理工大學的一個實驗室搞出來的。該方案是基於NUTTX系統上開發的。開發系統上面最好使用Ubuntu系統進行開發(開發效率高),程式修改和讀寫可以用Source Insight 。後期的文章將會陸續將軟硬體進行開源和分析。
這一章節主要是對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檔案中就有很多的模組和相應的庫檔案,在這裡都是可以找到的哦。那麼編譯過程就講到這裡,注意這裡只是編譯過程,真正哪些模組會用到就要到下一章節的啟動檔案分析去了。
有什麼錯誤歡迎提出來,大家一起修正一起學習。