RT_THREAD之nano學習


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())來讀

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM