rt_thread hc32f460開發一:工程建立和注意事項
RT-Thread的開發方式
RT-Thread有兩種開發方式,RT-Thread Studio和ENV工具+傳統的開發工具(IAR或Keil)。
RT-Thread Studio
Stdio的好處是直觀,對新手比較友好。不過經過試用,發現其對新處理器支援受限比較嚴重,由於我們需要為F460的驅動和BSP增加許多改進,因此沒有采用Studio的方法進行開發。
https://www.rt-thread.org/document/site/#/development-tools/rtthread-studio/README
Env 工具 + Keil
Env是一個使用Kconfig系統的配置和包管理工具,修改Kconfig、SConstruct可以方便擴充套件現有的BSP和驅動。Env工具使用方法參考官方的文章:
開發過程中需要注意的問題
RT-Thread 4.X和3.X建立工程的區別
之前3.x版本的bsp是和硬體(開發板)強關聯的,因此在新硬體上使用RT-Thread都需要一個增加bsp,然後編譯和提交git的時候都要帶著整個RT-Thread的原始碼,非常臃腫。
4.x版本的bsp更佳傾向於為使用這款處理器的所有硬體提供一個供修改的基礎,使用scons --dist命令可以把所用晶片的bsp和系統元件打包成一個dist.zip。後續的開發直接基於這個打包後的dist目錄進行開發就可以了。
有一篇介紹如何製作新bsp的文章對理解bsp的結構非常有意義,建議參考https://github.com/RT-Thread/rt-thread/blob/master/bsp/stm32/docs/STM32%E7%B3%BB%E5%88%97BSP%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B.md
ddl_config.h需要手工開啟用到的函式庫
hc32f460標準庫中的ddl_config.h檔案中有一些了DDL_XXX_ENABLE的巨集,預設都是DDL_OFF,這樣即使包含了對應的標頭檔案在編譯的時候還是會報錯。需要手工修改該檔案,把用到的外設庫開啟。
Libraries\SConscript中需要新增用到的函式庫
Libraries\SConscript中預設僅包含了部分外設函式庫,在使用新函式庫時需要自行加入需要用到的函式庫。系統公共元件,比如GPIO、DMA建議直接新增到檔案中,RT-Thread中有獨立配置開關的外設庫,建議使用編譯選項的方式加入,減小程式碼編譯時間。
J-Tag引腳當作普通IO使用時的初始化
如果需要把用不到的J-Tag引腳當作普通IO使用,需要對其進行額外的初始化,參考其他驅動的例子,應該把初始化引數放在board_config.c中,然後在drv_gpio.c中引用。
如果不幸把當前除錯用到的引腳改掉,導致沒法進行除錯,需要修改CPU的啟動引腳電平,讓CPU不執行Flash中的程式碼,然後再次修改程式碼燒錄程式。
用盡CPU提供的記憶體(修改board.h)
hc32f460的bsp預設只使用了32kb的記憶體,對於rt-thread全功能不是很寬裕。hc32f460提供了四段共188kb的SRAM,雖然分了四段,但是地址是連續的,如果沒有特殊需求的話四段可以作為一個整體使用。
修改board.h中的SRAM記憶體結束地址,以使用全部記憶體。
開發資料
HC32F460使用者手冊
https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/47/key/0
HC32F460資料手冊
https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/46/key/0
HC32F460驅動庫
https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/57/key/9
HC32F460驅動庫幫助
https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/57/key/8
HC32F460IDE支援包
https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/58/key/2