nona版本為精簡版本,只保留FISH(選配)最小內核,可以適配STM的STD.HAL/LL庫,需要手動進行移植;現在可以在KEIL MDK/CUBEMX中進行集成,也可以RT-Thread Nano 離線安裝包下載手動下載源碼(安裝在
)自己搭建。keil mdk在實時運行環境中打開,通過RT_CONFIG.H進行配置。
中斷處理:原3個中斷需要注釋掉避免重復定義HardFault_Handler()
、PendSV_Handler()、SysTick_Handler()
系統時鍾配置:需要一個硬件定時器來實現OSTICK處理
內存堆棧初始化: RT_USING_HEAP使能后就可以進行 rt_malloc、rt_free 以及各種系統動態創建對象的 API。默認是通過數組實現,也可以也推薦通過分散加載文件將堆空閑的起始分別設定為RAM_ZI的結束及RAM的結束。
串口控制台實現的RT_Kprintf()只進行了\n判斷,所有要實現回車換行需要添加\r處理,否則不會回到行首實現回車換行;
FISH組件是在串口控制台(只實現了輸出打印)基礎上又實現串口的輸入操作,從而可以自動初始化和調試,其實FISH接口還可以由USB、網口等其他實現。FISH是RT_THREAD的shell(包裹在操作系統外的門衛,上報輸入和傳達結果),有MSH(傳統命令行模式,占用資源少,缺省選型,按EXIT切換到C-Style 模式(占用資源多,調用須要加(),輸入MSH切換到MSH),FISH有內置命令和自動以命令
- 內置命令:table鍵/help回車查看支持的命令;free查看動態內存;ps/list_thread列出所有的線程;list_信號量、互斥量、事件、郵箱、隊列、定時器、設備、內存池等
- 外置命令:MSH_CMD_EXPORT(name, desc);
MSH_CMD_EXPORT(name, desc:neme<參數>);//帶參數
FINSH_FUNCTION_EXPORT(name, desc); //C-Style 模式 -》變量
FINSH_VAR_EXPORT(name, type, desc);
FINSH_FUNCTION_EXPORT_ALIAS(name, alias, desc);//當超過16字節時需要用別名
- 輸出:依賴
rt_kprintf()
輸出。在啟動函數rt_hw_board_init()
中,rt_console_set_device(const char* name)指定控制台輸出的接口
- 輸入:
rt_device_read()
函數從設備(串口中斷->釋放信號量rx_indicate())來讀