1. 程式人生 > >PX4學習(2)——原生韌體框架分析

PX4學習(2)——原生韌體框架分析

本文轉自阿木社群:

         搭建好了編譯環境,裝上了QT,就迫不及待的想看看程式碼的內容,結果。。。一看框架是懵逼的狀態。。。怎麼辦,查閱資料慢慢梳理唄~

原生韌體工程目錄原始碼分析

這是原生韌體的目錄檢視

總目錄結構

Src:目錄是原始碼目錄存放所有的原始碼,原始碼的檢視都應該在這裡。

Mavlink:是MAvlink的庫目錄,原始碼要呼叫這個庫,如果我們要修改和新增MAVLINLK訊息ID也是在這個目錄下面。

NuttX:是NuttX的系統庫,如果做二次開發,很少用到這個庫。

Cmake:是存放的Cmake編輯指令碼資料夾,其中Cmake/Configs是存放的不同硬體的編譯指令碼,nuttx_mindpx-v2_default

是PIXHAWK這個硬體的編輯指令碼,如果要新增驅動,新增系統功能的模組函式,要修改裡面的編譯選項,保證新增的模組檔案,能夠被編譯到。

Romfs:是檔案系統資料夾。裡面存放的飛控系統的啟動指令碼,我們要修改啟動指令碼主要在這個資料夾裡面。src/Romfs/px4fmu_common/init.d ,如rcS主要的啟動指令碼,還有其他的rc.XXX的指令碼,感測器指令碼,引數指令碼等等,反正負責系統初始化的,如果自己定寫了個功能模組要隨系統啟動那麼就在這裡新增啟動。和linux系統的啟動指令碼非常相似。

Msg:是存放UORB訊息主題的地方,如果要二次開發新增訊息主題,就在這個資料夾裡面新增修改。

子目錄結構

Src這個資料夾比較重要,詳細看看:

其中Drivers是驅動資料夾,包括了所有的感測器驅動,三軸,地磁,加速度,超聲波....

Examples是例項資料夾,入門PIXHAEK開發的一些很好的例子就在裡面,其中最經典的是 px4_simple_app這個例子,要搞明白程序間通訊UORB就是這個例程。

Modules是功能模組資料夾,什麼位置估計,位置控制,指令控制....都在這個資料夾,也是二次開發主要要修改的資料夾。

Systemcmds是系統指令資料夾,都是飛控的支援的命令的原始碼。比如top命令,reboot命令等等,這些命令都可以在終端操作。

這是modules的資料夾下面的東西,很清楚,姿態估計,位置估計,位置控制,導航,UORB原始碼等等相當於飛控程式碼的核心。

這是Drivers資料夾裡面的內容,可以看到所有的感測器驅動都在這裡面,氣壓計,GPS,加速度,地磁,光流等等。

整個工程框架還是非常清楚明瞭的,結構清楚,對於開發也很有利。主要就是修改moudlse,divers檔案裡面的內容。如果要新增好了檔案,nuttx_mindpx-v2_default在這裡面

以上是總的配置檔案。