最近rt-thread重構了stm32的bsp,看了一下,感覺很思路很清晰
目錄簡介
bsp\stm32\docs
重構bsp的介紹文件
bsp\stm32\libraries
各系列的stm32的hal庫
bsp\stm32\libraries\hal_drivers
基於hal庫的裝置驅動
bsp\stm32\libraries\hal_drivers\config
外設驅動的配置檔案
bsp\stm32\libraries\haldrivers\drv_flash
flash的配置檔案
bsp\stm32\libraries\templates
移植bsp的模板
bsp\stm32\stm32f***-***-***
各開發板的適配工程
我覺得這就是我想要的,於是就開始移植重構後的bsp
先找乙個和自己開發板mcu類似的bsp,例如我的開發板的mcu是stm32f767,所以我複製了這個目錄下的工程
bsp\stm32\stm32f429-fire-challenger修改名字為你的開發板名字,例如我的
bsp\stm32\stm32f767-fire-challenger然後,在libraries目錄下加入你使用的mcu系列的hal庫檔案,比如我的f7系列就是
bsp\stm32\libraries\stm32f7xx_halhal庫檔案可以從stm32cubefx中解壓得到
然後參照著已經有的hal庫資料夾的情況,將一些使用不到的檔案刪除,特別是以下檔案需要刪除,否則會報錯
bsp\stm32\libraries\stm32f7xx_hal\stm32f7xx_hal_driver\src\stm32f7xx_hal_msp_template.c bsp\stm32\libraries\stm32f7xx_hal\stm32f7xx_hal_driver\src\stm32f7xx_hal_timebase_rtc_alarm_template.c bsp\stm32\libraries\stm32f7xx_hal\stm32f7xx_hal_driver\src\stm32f7xx_hal_timebase_rtc_wakeup_template.c bsp\stm32\libraries\stm32f7xx_hal\stm32f7xx_hal_driver\src\stm32f7xx_hal_timebase_tim_template.c在移植完成後,將
bsp\stm32\stm32f767-fire-challenger複製到下面這個目錄
bsp\stm32\libraries\templates將名字更改為
bsp\stm32\libraries\templates\stm32f7xx需要修改的指令碼檔案有點多,不過不急,慢慢來
可以從我提交的pr中看到我修改過的指令碼檔案,我將他們全部列出來,免得有人遺漏了需要修改的地方
需要在這個檔案中加入你的soc系列,按順序排好,如圖
同上,加入你的soc系列
同上,加入你的soc系列
這個檔案可以從下面這個位址複製過來
bsp\stm32\libraries\stm32f4xx_hal\sconscript然後修改圖中標記部分
這個檔案可以從下面這個位址複製過來
bsp\stm32\stm32f429-fire-challenger\kconfig這個檔案可以從下面這個位址複製過來
bsp\stm32\stm32f429-fire-challenger\sconscript這個檔案可以從下面這個位址複製過來
bsp\stm32\stm32f429-fire-challenger\sconstruct這個檔案可以從下面這個位址複製過來
這個檔案可以從下面這個位址複製過來
bsp\stm32\stm32f429-fire-challenger\board\kconfig不過需要修改圖中標記部分
這個檔案可以從下面這個位址複製過來
bsp\stm32\stm32f429-fire-challenger\board\sconscript不過需要修改圖中標記部分
這個檔案可以從下面這個位址複製過來
bsp\stm32f7-disco\rtconfig.py我是從舊版bsp中找的,你也可以找找你對應型號的舊版bsp中的這個指令碼
這個檔案可以從下面這個位址複製過來
bsp\stm32\libraries\templates\stm32f4xx\kconfig這個檔案可以從下面這個位址複製過來
bsp\stm32\libraries\templates\stm32f4xx\sconscript這個檔案可以從下面這個位址複製過來
bsp\stm32\libraries\templates\stm32f4xx\sconstruct這個檔案可以從下面這個位址複製過來
這個檔案可以從下面這個位址複製過來
bsp\stm32\libraries\templates\stm32f4xx\board\kconfig不過需要修改圖中標記部分
這個檔案可以從下面這個位址複製過來
bsp\stm32\libraries\templates\stm32f4xx\board\sconscript不過需要修改圖中標記部分
這個檔案可以從下面這個位址複製過來
bsp\stm32f7-disco\rtconfig.py驅動檔案分為:實現和配置
實現是下面這個目錄下的.c檔案
bsp\stm32\libraries\hal_drivers配置是以下目錄下的.h和部分.c檔案
bsp\stm32\libraries\hal_drivers\config\fx bsp\stm32\libraries\hal_drivers\drv_flash bsp\stm32\stm32f767-fire-challenger\board\ports我們需要做的事就是根據開發板實際情況進行修改
先確認config檔案是否符合開發板實際情況,同乙個系列的mcu的移植不需要修改config
bsp\stm32\libraries\hal_drivers\config\f7\uart_config.h根據hal庫的情況修改以下檔案
bsp\stm32\libraries\hal_drivers\drv_usart.c例如f7系列,參照stm32f7xxhaluart.h,看看什麼drv_usart.c中使用到的api是stm32f7xx_hal_uart.h中沒有的,改為stm32f7xx_hal_uart.h有的介面,可以參考下面的方式
還要注意一些暫存器是某些系列的產品特有的,要用巨集定義區分,例如
其他需要修改的地方都是差不多的,可以參考一下我的修改
在移植完驅動後,需要使用cubemx啟動外設,這部分請參考如何新增更多的片上資源選項
不過串列埠1預設是開啟的
這部分請參考stm32 系列 bsp 製作規範
移植到此結束,歡迎嘗試
AWTK 在 RT Thread 上的移植筆記
本文以 stm32f103ze 為例,介紹了 awtk 在 rtos 上移植的經驗。與其說移植,倒不如說是整合。所做的事情不過是把 awtk 放到 rtos 的乙個執行緒中執行而已。awtk 已經移植到 stm32f103ze 裸系統上,為了簡單起見,直接在 awtk stm32f103ze raw...
RT Thread的訊息佇列
1.訊息佇列控制塊的組成 結構體 通過下圖可以很容易發現訊息佇列有8個元素.msg pool msg size max msgs entry msg queue head msg queue tail msg queue free和.parent,其中.msg pool為訊息佇列的起始位址 msg ...
RT Thread 執行緒的建立
基本概念 執行緒是實現任務的載體,它是rt thread中最基本的排程單位,它描述了乙個 任務執行的執行環境,也描述了這個任務所處的優先等級。rt thread中,執行緒由三部分組成 執行緒 入口函式 執行緒控制塊 執行緒堆疊 1 建立程序 1 建立靜態執行緒 rt err t rt thread ...