前言
最近RT-Thread重構了stm32的BSP,看了一下,感覺很思路很清晰
目錄 簡介
bspstm32docs 重構BSP的介紹文檔
bspstm32libraries 各系列的stm32的HAL庫
bspstm32librariesHAL_Drivers 基於HAL庫的設備驅動bspstm32librariesHAL_Driversconfig 外設驅動的配置文件bspstm32librariesHALDriversdrv_flash flash的配置文件
bspstm32libraries emplates 移植BSP的模板
bspstm32stm32fxxx-xxx-xxx 各開發板的適配工程
我覺得這就是我想要的,於是就開始移植重構後的BSP
移植流程
- 複製一個與自己開發板系列相近的BSP
- 修改Scons腳本文件
- 修改驅動文件
- 規範BSP
複製一個與自己開發板系列相近的BSP
先找一個和自己開發板MCU類似的BSP,例如我的開發板的MCU是stm32f767,所以我複製了這個目錄下的工程
bspstm32stm32f429-fire-challenger
修改名字為你的開發板名字,例如我的
bspstm32stm32f767-fire-challenger
然後,在libraries目錄下加入你使用的MCU系列的HAL庫文件,比如我的f7系列就是
bspstm32librariesSTM32F7xx_HAL
HAL庫文件可以從STM32CubeFx中解壓得到
然後參照著已經有的HAL庫文件夾的情況,將一些使用不到的文件刪除,特別是以下文件需要刪除,否則會報錯
bspstm32librariesSTM32F7xx_HALSTM32F7xx_HAL_DriverSrcstm32f7xx_hal_msp_template.c
bspstm32librariesSTM32F7xx_HALSTM32F7xx_HAL_DriverSrcstm32f7xx_hal_timebase_rtc_alarm_template.c
bspstm32librariesSTM32F7xx_HALSTM32F7xx_HAL_DriverSrcstm32f7xx_hal_timebase_rtc_wakeup_template.c
bspstm32librariesSTM32F7xx_HALSTM32F7xx_HAL_DriverSrcstm32f7xx_hal_timebase_tim_template.c
在移植完成後,將
bspstm32stm32f767-fire-challenger
複製到下面這個目錄
bspstm32libraries emplates
將名字更改為
bspstm32libraries emplatesstm32f7xx
修改Scons腳本文件
需要修改的腳本文件有點多,不過不急,慢慢來
可以從我提交的pr中看到我修改過的腳本文件,我將他們全部列出來,免得有人遺漏了需要修改的地方
- bsp/stm32/libraries/HAL_Drivers/SConscript
- bsp/stm32/libraries/HALDrivers/drvconfig.h
- bsp/stm32/libraries/Kconfig
- bsp/stm32/libraries/STM32F7xx_HAL/SConscript
- bsp/stm32/stm32f767-fire-challenger/Kconfig
- bsp/stm32/stm32f767-fire-challenger/SConscript
- bsp/stm32/stm32f767-fire-challenger/SConstruct
- bsp/stm32/stm32f767-fire-challenger/applications/SConscript
- bsp/stm32/stm32f767-fire-challenger/board/Kconfig
- bsp/stm32/stm32f767-fire-challenger/board/SConscript
- bsp/stm32/stm32f767-fire-challenger/rtconfig.py
- bsp/stm32/libraries/templates/stm32f7xx/Kconfig
- bsp/stm32/libraries/templates/stm32f7xx/SConscript
- bsp/stm32/libraries/templates/stm32f7xx/SConstruct
- bsp/stm32/libraries/templates/stm32f7xx/applications/SConscript
- bsp/stm32/libraries/templates/stm32f7xx/board/Kconfig
- bsp/stm32/libraries/templates/stm32f7xx/board/SConscript
- bsp/stm32/libraries/templates/stm32f7xx/rtconfig.py
看著腳本文件很多,其實也不是太麻煩,只要參考已有的模板,該起來很容易的,那麼接下來一個個來講解吧
bsp/stm32/libraries/HAL_Drivers/SConscript
需要在這個文件中加入你的soc系列,按順序排好,如圖