最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Betaflight 的Makefile 體系與移植

2022-10-17 22:47 作者:二木山人  | 我要投稿

betaflight 的 makefile體系是整體構(gòu)建固件的基礎(chǔ), 因為支持基本整個全系列STM 芯片,從F103 一直到 H7 (目前官方已經(jīng)移除F1、F3 的支持,僅支持F4、F7、H7系列),芯片的架構(gòu)、配置、存儲布局、內(nèi)存布局等各不相同,另外還要考慮一部分特定目標(biāo)需要配置特定的信息,所以betaflight 實現(xiàn)了一個十分復(fù)雜的makefile體系。 所以構(gòu)建betaflight 最好的方式是按照官方文檔,使用 make +arm-gcc + binutils 工具鏈進行構(gòu)建。 調(diào)試最好使用 gdb+openocd +Jlink/STlink/Daplink 進行仿真調(diào)試。


所需背景知識:

1、makefile 語法

2、linux 下 make、gcc、gdb、binutils 等編譯工具鏈基礎(chǔ)知識

3、git 、python 等基本工具知識

如果以上背景知識不夠扎實,可以邊看邊搜邊補充。


先介紹 betaflight 的makefile體系:


整體betaflight的makefile 包括3部分:

betaflight/make 目錄,

betflight/Makefile

betaflight/src/main/targets/target.mk


第一部分:betaflight/make 文件夾相關(guān)目錄結(jié)構(gòu)與用途如下:

make

----mcu ????????????????????????????????????具體MCU 的定義,如果新增MCU 需要在這里配置

--------AT32F43x.mk???????????????? 本次移植新增的at32f435/7 系列mcu構(gòu)建腳本,新建
--------SITL.mk?????????????????????????? 軟件仿真構(gòu)建目標(biāo)
--------STM32F1.mk????????????????? stm32f103 mcu 構(gòu)建腳本
--------STM32F3.mk
--------STM32F4.mk
--------STM32F7.mk
--------STM32G4.mk
--------STM32H7.mk

---source.mk???? ???????????????????? betaflight 公用源文件清單、usb以及其他庫文件清單,速度、大小優(yōu)化裁剪文件清單等????????? 需要微調(diào),增加at系列source file

---targets.mk???? ????????????????????所有的目標(biāo)信息配置,需要配置 at新增的target

---targets_list.mk?? ????????????????所有目標(biāo)清單,包括支持的、淘汰的等,不需要動

---tools.mk????????????????????????????自動安裝構(gòu)建相關(guān)工具的清單,不需要動

---checks.mk?????????? ????????????? 相關(guān)校驗清單,不需要動

---openocd.mk? ????????????????????openocd 仿真配置清單,包括jlink、stlink等,本次移植沒有用

---system-id.mk? ????????????????????其他配置相關(guān)清單,判斷當(dāng)前系統(tǒng)是什么系統(tǒng) ,不需要動

---macosx.mk ????????????????????????mac os下 的編譯環(huán)境配置,不需要動

---windows.mk????????????????????????windows 下的編譯環(huán)境配置,不需要動

--- linux.mk ????????????????????????????linux 下的編譯環(huán)境配置 ,不需要動

--- build_verbosity.mk? ?????????? 交互式構(gòu)建的設(shè)置,不需要動


第二部分:主Makefile

betaflight/ Makefile?????????????????? makefile 是bf的 主makefile文件,通過include make文件夾和target文件夾下的makefile來實現(xiàn)根據(jù)命令自動構(gòu)建具體的目標(biāo)固件的構(gòu)建規(guī)則。 主makefile 不需要做修改。


第三部分: betaflight/src/main/target/AT32F437DEV

具體的target 配置文件夾,主要包括 targe.h? target.c? target.mk 三個文件,為了移植到at32 的starter 開發(fā)板上,新增 AT32F437DEV 目標(biāo)

target.h? :新增目標(biāo)頭文件配置,主要是配置spi、i2c、uart、beeper、timer、led 等針腳配置以及啟用的timer 、gpio端口等,這部分信息會被編譯后的 轉(zhuǎn)換為? PG 配置信息,對應(yīng)到 bf 地面站 CLI 命令行里的Resource 信息 ,另外還包括具體使用什么 ACC 和GYRO、 具體傳感器信息等,通過 #define? USE_xxxx? 等宏定義打開編譯時包含的傳感器驅(qū)動代碼等。 一般考慮到mcu 的flash 大小以及構(gòu)建的目標(biāo)硬件配置來設(shè)定

target.c? 與target.h 配套使用,但是主要配置的是

timerHardware[USABLE_TIMER_CHANNEL_COUNT]

通過 DEF_TIM 宏來給需要通過timer? 輸出PWM 的針腳定義配置信息, 主要包括:CameraControl、LedStrip、Motor、Servo 等需要pwm 驅(qū)動的外設(shè)針腳定義以及使用的DMA 通道。


以上target.h和target.c 的相關(guān)針腳映射不可以隨便定義,需要查具體芯片的用戶手冊與數(shù)據(jù)手冊GPIO 復(fù)用表格,來設(shè)定具體目標(biāo)板的針腳IO分配。 配置錯誤可能會導(dǎo)致硬件無法使用。所以移植過程中需要反復(fù)的核對配置信息。


target.mk?? 這個文件是 target 的關(guān)鍵, 通過targets.mk 通過掃描 target 目錄下的具體子目錄名稱作為 BASE_TARGET? 參數(shù),而 target.mk 文件里


為了移植AT32F43x 系列MCU ,需要做以下工作:

1、搭建編譯環(huán)境,可以在linux 或者安裝了cygwin 的windows bash 中,在betaflight 目錄下執(zhí)行 :make arm_sdk_install? 命令,會自動安裝 arm 相關(guān)工具鏈到 betaflight/tools/文件夾下,后面的固件構(gòu)建也會自動引用這個文件夾下的工具 。

2、新建target 配置,如上文分析

3、增加 targets.mk 配置

4、新增 mcu/AT32F43X.mk 配置

通過以上幾步基本構(gòu)建了新移植的at32f435/7 系列mcu 的makefile體系,后面的移植過程中通過make命令進行目標(biāo)固件的構(gòu)建工作。


Betaflight 的Makefile 體系與移植的評論 (共 條)

分享到微博請遵守國家法律
巍山| 墨玉县| 武清区| 孟州市| 和顺县| 县级市| 靖远县| 恭城| 轮台县| 黔西县| 册亨县| 肇源县| 当涂县| 财经| 克东县| 海南省| 灵宝市| 嘉义市| 静海县| 河西区| 九江市| 山阳县| 扶风县| 深水埗区| 红桥区| 从化市| 上犹县| 廉江市| 肇庆市| 越西县| 东乌| 荣成市| 上栗县| 金山区| 麟游县| 葫芦岛市| 休宁县| 鄄城县| 松潘县| 竹北市| 昔阳县|