天天看點

PX環境搭建編譯px4_fmu-v2_default相關問題的解決方法

背景說明

筆者在ubuntu18.04下搭建PX環境時git clone的是較新版本的PX4-Autopilot連結在此.(而目前網上的教程基本是較老版本的Firmware,兩者檔案分布不相同,是以已有的方法不能直接地解決我們遇到的問題)筆者配置環境時走了不少彎路,最終是成功執行,編譯成功。

故在本文裡分享可能對後來者有用的方法,一些筆者遇到的其他問題在網上找到了直接解決方法的在本文中不再贅述。

問題1

問題描述:

make px4_fmu-v2_default時報錯資訊類似如下:

CMake Error at cmake/px4 add_module.cmake:149 (add_library):
Cannot find source file:
devices/src/gps_helper.cpp
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
Call Stack (most recent call first):
           

解決:

該問題實際上三由于github存儲部分代碼時是通過連結到另一個子產品完成(準确說法讀者可自行查詢),而這個連結到的子產品的代碼我們很可能clone不成功。類似這種問題,我們可以在PX4-Autopilot中手動下載下傳對應的檔案,再複制到我們的本地檔案夾中。例如:

PX環境搭建編譯px4_fmu-v2_default相關問題的解決方法

筆者就是這裡面的檔案并沒有成功clone,是以導緻編譯時找不到檔案。手動下載下傳這些缺少的檔案到對應路徑,便可解決這個問題。

問題2

問題描述:編譯過程中,可能會出現記憶體溢出問題,例如:

region `flash' overflowed by 788 bytes
           

此時我們可以通過修改預設的Flash大小來完成。(也可以注釋不用的子產品,此方法本文不介紹。實際下載下傳源碼到飛控上時flash的大小是固定的,内置晶片有關)

修改的檔案路徑和老版不同,路徑為

PX4-Autopilot/boards/px4/fmu-v2/nuttx-config/scripts/script.ld
           

(其中檔案夾fmu-v2是因為筆者編譯px4_fmu-v2_default,這裡讀者可根據自己需要找到對應的檔案夾,例如fmu-v3等)

将script.ld檔案的代碼中的1008k改成一個較大的數即可,例如改成1608k。

flash (rx)   : ORIGIN = 0x08004000, LENGTH = 1008K
           

結語

本文方法是筆者根據前人經驗摸索而來,主要是解決了PX4代碼clone不完全但是執行clone 子子產品時沒有更新子子產品,以及較新版本的代碼檔案分布與舊版變化較大的問題。歡迎各位同行指出本文存在的問題或與筆者進行探讨。