本文檔介紹了RT-Thread Nano 3.0.3 的基本功能,并介紹了如何下載及使用RT-Thread Nano 3.0.3及相關BSP例程。
RT-Thread Nano 3.0.3相比上一個版本2.1.1有了些新的變化:
新增V2M-MPS2 BSP支持
修復MDK 5.14無法復制license問題
更新board.c模板,簡化不必要的配置
msh命令導出默認添加RT_USED屬性,不需要另外加keep選項
更新stm32_msh和lpc824_msh例子的uart代碼,不再依賴drivers ipc部分
移除drivers ipc部分源碼
1 本文的目的和結構
1.1 本文的目的和背景
RT-Thread Nano 是 RT-Thread推出的極簡版實時操作系統,適用于家電、消費電子、醫療設備、工控等領域大量使用的32位ARM入門級MCU的場合。本文檔是快速入門文檔,方便用戶快速上手使用RT-Thread Nano 3.0.3。
1.2 本文的結構
本文首先介紹RT-Thread Nano 3.0.3基本功能,然后講解了如何安裝及配置RT-Thread Nano 3.0.3及如何獲取RT-Thread Nano 3.0.3相關例程。
2 RT-Thread Nano 簡介
RT-Thread Nano是一個精煉的硬實時內核,內存資源占用極小,功能包括任務處理、軟件定時器、信號量、郵箱和實時調度等相對完整的實時操作系統特性。MDK5以后采用pack形式管理芯片及各種相關組件,RT-Thread Nano也是通過MDK pack方式發布,RT-Thread Nano pack包括device drivers、kernel 和 shell (msh) 三部分功能,用戶可以從MDK的Run-time Environment按需要加載。
圖2-1 RT-Thread Nano主要功能
在支持semaphore和mailbox特性,并運行兩個線程(main線程+idle線程)情況下,ROM和RAM依然保持著極小的尺寸。我們基于Cortex M0 MCU的一個例子,編譯后的大小(ROM: 3.25K, RAM: 1.04K),除去MCU需要的ROM和RAM, RT-Thread Nano本身需要的ROM是2.5K , RAM 是1K。
圖2-2 RT-Thread Nano內存占用情況
用戶基于Nano的應用程序可以直接遷移到RT-Thread完整版。接下來將描述如何在MDK5上基于RTE(Run-Time Environment), 從裸機開始,創建一個RT-Thread RTOS的小系統工程。
3 Pack安裝
Pack可以通過MDK聯網安裝,也可以離線安裝。下面開始介紹兩種安裝方式。
Pack Installer安裝
打開MDK軟件,點擊工具欄的Pack Installer圖標:
圖3-1 Packs安裝
點擊右側的Pack,展開General,可以找到rt-thread::rthread,點擊對應的Action的Install,就可以在線安裝Pack了。安裝成功后Action欄顯示 ”Up to date”。
圖3-2 Packs管理
手動安裝
我們也可以從官網下載安裝文件,RT-Thread Nano離線安裝包下載,雙擊下載好的文件進行安裝:
圖3-3 Packs手動安裝
4 基礎工程準備
在開始創建RT-Thread小系統之前,我們需要準備一個能正常運行的裸機工程。作為示例,本文使用的是基于STM32L072-Discovery 和Low-Level Library的一個LED 閃爍程序。程序的主要截圖如下:
圖4-1 STM32L072-Discovery示例
在我們的例程中,編譯下載程序后,就可以看到3個LED交替閃爍了。讀者可以根據自己的需要使用其他芯片,完成一個簡單的類似裸機工程。
5 添加RT-Thread Nano到工程
基于一個可以運行的裸機程序,我們來添加RT-Thread到工程。如下圖,點擊Manage Run-Time Environment。
圖5-1 MDK RTE
在Manage Rum-Time Environment里”Software Component”欄找到RTOS,Variant欄選擇RT-Thread,然后勾選kernel,點擊”OK”就添加RT-Thread內核到工程了。
圖5-2 Nano內核添加
現在可以在Project看到RT-Thread RTOS已經添加進來了,展開RTOS,可以看到添加到工程的文件:
圖5-3 添加了RTOS的工程
Kernel文件包括:
clock.c components.c device.c idle.c ipc.c irq.c kservice.c mem.c object.c scheduler.c thread.c timer.c
Cortex-M芯片內核移植代碼:
應用代碼及配置文件:
board.c rtconfig.h
6 適配RTThread
RT-Thread會用到了異常處理函數HardFault_Handler()和懸掛處理函數PendSV_Handler(),以及Systick中斷服務函數SysTick_Handler(),所以用戶代碼需要保證這幾個函數沒有被使用,若編譯提示函數重復定義,請刪除自己定義的函數。
RT-Thread Nano 3.0.3 在 board.c 中默認完成了systick 的配置,用戶可以修改宏RT_TICK_PER_SECOND的值配置每秒systick數。
圖6-1 systick配置
RT-Thread Nano 3.0.3 默認是使用數組作為heap。
圖6-2 heap配置
替換例程中的delay函數:
1). 包含RT-Thread的相關頭文件
2). 將delay()函數替換成rt_thread_delay(RT_TICK_PER_SECOND)
下面是完成修改的代碼:
圖6-3 異常處理修改
編譯程序之后下載到芯片就可以看到基于RT-Thread的程序運行起來了。
7 RT-Thread Nano配置
RT-Thread是一個高度可配置的嵌入式實時操作系統,配置文件是rtconfig.h。Nano就是rtconfig.h配置下實現了2.5K ROM,1K RAM的內核應用。用戶可以根據自己的需要通過修改rtconfig.h文件里面的宏定義配置相應功能。
RT-Thread Nano默認未開啟宏RT_USING_HEAP,故只支持靜態方式創建任務及信號量。若要通過動態方式創建對象則需要在rtconfig.h文件里開啟RT_USING_HEAP宏定義。
MDK的配置向導configuration Wizard 可以很方便的對工程進行配置,Value一欄可以選中對應功能及修改相關值,等同于直接修改配置文件rtconfig.h。
圖7-1 Nano配置
8 BSP例程
目前有5個RT-Thread Nano 參考例程,2個基于stm32l0的例程,2個基于lpc824的例程,以及Nano 3.0.3 新增的基于V2M-MPS2的例程。所有例程都可以在MDK上通過Pack Installer找到。點擊Pack Installer圖標:
圖8-1 pack installer
在Search里輸入stm32l0,點擊Device里的STM32L0 Serials,然后點擊右側的Example,可以看到右側有基于stm32l0的兩個例程。
圖8-2 例程
V2M-MPS2 msh 例程簡介
V2M-MPS2是MDK提供的開發板,配合Fast Models Debugger(需要MDK-ARM Professional授權且只支持64位系統),就可以不依賴任何硬件,在Cortex-M平臺調試代碼。
使用V2M-MPS2需要打開windows的telnet客戶端:
win7打開telnet客戶端(https://jingyan.baidu.com/article/eb9f7b6d8701ae869364e826.html)
win10打開telnet客戶端(https://jingyan.baidu.com/article/ceb9fb10a9a1b48cad2ba0c4.html)
打開telnet后,在MDK的Pack Installer里面的Device選擇ARM,右側點擊example,可以看到一個基于V2M_MPS2的msh例程。
圖8-3 V2M_MPS2 msh例程
點擊Copy,導出該例子,編譯工程仿真運行,下面是運行成功的截圖。
圖8-4 V2M_MPS2 msh例程運行成功截圖
RT-Thread 同樣提供了基于RT-Thread完整版的V2M-MPS2的BSP(板級支持包)(https://github.com/RT-Thread/rt-thread/tree/master/bsp/v2m-mps2),用戶可以通過github獲取。
-
STM32
+關注
關注
2270文章
10910瀏覽量
356591 -
RT-Thread
+關注
關注
31文章
1294瀏覽量
40233
原文標題:RT-Thread Nano 3.0.3 快速入門指南
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論