如何成功移植cleanflight、INAV到keil開發環境
現在常見的開源飛控已經有很多,穿越機的有CC3D相容cleanflight、beatflight。但是如果追求先進導航體驗 話可以下載cleanflight的一個分支iNav fork韌體。INAV是專注導航、如多旋翼的定點、定高、返航、航線規劃等。相對PIX、APM這樣在複雜的作業系統上開發的開源系統,cleanflight、INAV版本中使用來比較簡單的作業系統,從開發的人數上講PIX4有14人,beatflight有9人,cleanfligt有5人,INAV有4人(截止2018年9月)。在特技飛行上beatflight是一種搶先版,在開源網站上也看出有大牛兼顧beatflight和cleanflight這兩個版本的開發,而INAV的導航部分則是移植了PIX4的導航演算法。
對於初學者來說,僅僅學習PIX這樣開原始碼風格需要很長一段時間、同時搭建它的開發環境也是很耗精力的一件事。大多數人對keil開發環境都比較熟悉、包括除錯。而在Linux下的操作包括Makefile/交叉工具鏈的環境搭建都相對陌生,也比較複雜。最近琢磨實現了對開原始碼cleanflight、INAV兩種開原始碼的移植,成功移植到keil開發環境下並設計相匹配的硬體,可實現JTAG線上除錯、並且支援cleanflight-configurator/INAV-configurator兩種地面站。
在移植之前我們先搭建cleanflight、inav在windows開發環境搭建。根據官網說明: 第一步安裝cygwin軟體
第三步:檢查交叉工具鏈版本、下載程式碼
如上圖所示,下載完程式碼選擇目標可進行編譯。 可能你會疑惑搭建這個開發環境的意義是什麼? 要完成移植需要了解編譯某個目標的整個過程,最重要的是需要建立某個目標所需要的原始檔,另外的方法是研讀Makefile,看看整個原始碼的編譯過程,方便移植。
我選擇的的目標板是PORT103R,再次截圖一部分編譯過程。
在編譯完後以後,在下載的原始碼中找到在編譯過程中出現的原始碼待用。 第四部:搭建keil的開發環境 因為原始碼在linux上開發的,所使用的是GCC交叉工具鏈,因此我們需要將keil的開發環境也配置成gcc交叉工具鏈,而非keil自帶的ARM編譯工具。使用自帶的工具會出現很多的錯誤,因為很多組合語言兩者都不相容。 這部分有很多相應部落格教程,在此不再說明。 移植成功後可根據自己實際情況使用不同的感測器,包括mup6050、mup6000、mpu6500,以下是我移植好的cleanflight、INAV兩個版本程式碼。
以上兩部分截圖,一是穿越機cleanflight的原始碼支援cleanflight的地面站,另一種是在導航方面表現強大的INAV程式碼,支援INAV-configuratorI,兩種程式碼支援同一個硬體,都是支援mavlink協議。 注:第一次寫部落格,如有錯誤歡迎指正,感恩,謝謝!