pixhawk新增編譯選項 板級配置的方法

2021-07-29 21:25:11 字數 2044 閱讀 8315

pixhawk本身的硬體資源有限,咱們可能需要將pixhawk移植到咱們自己的板子上,但是又想不影響原版pixhawk的使用,這就需要增加編譯命令了。可是網上查不到如何增加編譯命令的帖子,所以本人只有自己研究,經過幾天的各種實驗,終於成功的新增了新板子的編譯命令。

以下講解基於pixhawk1.0.1版本

先講原理:

編譯命令是否存在取決於makefiles資料夾中的config_*.mk檔案是否存在:

例如我們編譯pixhawk的命令是:px4fmu-v2_default ,之所以有這個命令是由於存在檔案firmware/makefiles/config_px4fmu-v2_default.mk,這個檔案刪了這個命令就無效了.

config_px4fmu-v2_default.mk中包含這句話:

romfs_optional_files =$(px4_base)/images/px4io-v2_default.bin  #這句話制定了所對應的io處理器檔案

makefile會根據.mk檔案的名稱尋找io晶元的mk檔案:

例如:config_px4fmu-v2_default.mk

對應的是config_px4io-v2_default.mk,就算將romfs_optional_files

的值設定為別的,也改變不了對應關係。

config_*.mk檔案中包含應用層模組的裁剪資訊,nuttx作業系統的配置是在board_*.mk中:

敲命令"makearchives",就會將每個board_*.mk編譯出來,例如board_px4fmu-v2.mk就是v2版本硬體的fmu晶元的作業系統配置。

具體選擇哪個board_*.mk檔案是由config_*.mk檔案的名字決定的:

例如config_px4fmu-v2_default.mk對應著board_px4fmu-v2.mk

makefile會根據board_*.mk檔案的名字去尋找板子的配置兩個資料夾

:1.firmware

/nuttx-configs

/             #例如board_px4fmu-v2.mk對應其中的px4fmu-v2資料夾

2.firmware

/src

/drivers

/boards

/          #例如board_px4fmu-v2.mk對應其中的px4fmu-v2資料夾

firmware/image資料夾中的*.prototype與board_*.mk檔名稱對應:

例如,board_px4fmu-v2.mk與px4fmu-v2.prototype對應

再講步驟:

1.例如新增命令,make px4fmu-makekam_default

2.在firmware/makefiles資料夾中新增config_px4fmu-makekam_default.mk與config_px4io-makekam_default.mk,修改其中的bin檔名稱,和drivers/boards/模組的包含。

3.在firmware/makefile資料夾中新增board_px4fmu-makekam.mk與board_px4io-makekam.mk

4.在firmware/image資料夾中新增px4fmu-makekam.prototype與px4io-makekam.prototype

5.在firmware/src/drivers/boards/中增加px4fmu-makekam與px4io-makekam資料夾

6.同理在firmware/nuttx-configs中增加兩個資料夾

7.修改src/module/px4iofirmware/module.mk,因為其中由編譯命令條件分支,而我們的分支是新的

8.rcs指令碼和px4io.cpp中會命令fmu燒寫io,燒寫時選擇的bin檔名需要修改為"px4io-makekam_default.bin". 

9.給nutttx-config/我們的目錄/nsh/defconfig中增加我們自己的巨集定義,於是就可以形成分支了。   

關於defconfig,其實這個檔案是nuttx的配置檔案,所有的硬體資訊都在這個檔案中配置,值得好好研究,我們也可以在裡面增加自己的巨集。

cmake中新增 g編譯選項

在cmake 3.12之前,新增編譯選項可以如下方式新增 add definitions wall g 新增了之後,就相當於在編譯的時候加上了 wall g選項 沒加之前 gcc c main.c o test 新增之後,相當於 gcc g wall c main.c o test書中給出的示例如下...

cmake中新增 fPIC編譯選項方法

relocation r x86 64 32 against text can not be used when a shared object recompile with fpic 分別驗證過以下二種方法 第一種 筆者所採用的,因需修改原始cmakelists.txt檔案,感覺不太方便,非常希望...

新增除錯選項編譯出現錯誤

sky sky lenovo ideapad y470 work gcc o ggdb3 statistic statistic.c statistic 在函式 fini 中 fini 0x0 fini 被多次定義 usr bin ld usr lib debug usr lib x86 64 li...