實時操作系統應用技術課件:RT-Thread第一個樣例工程_第1頁
實時操作系統應用技術課件:RT-Thread第一個樣例工程_第2頁
實時操作系統應用技術課件:RT-Thread第一個樣例工程_第3頁
實時操作系統應用技術課件:RT-Thread第一個樣例工程_第4頁
實時操作系統應用技術課件:RT-Thread第一個樣例工程_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

RTOS

RT-Thread第一個樣例工程本章導引:學習RTOS,首先要以一個芯片為基礎,按照“分門別類,各有歸處”的原則,從建立無操作系統開始,建立起RTOS的工程框架,讓幾個最簡單的線程“跑”起來。以此簡明理解線程被調度運行的基本過程,隨后就可以進行RTOS下程序設計的學習了。本章給出RT-Thread的工程框架及第一個樣例工程。2.1RT-Thread簡介RTOS

RT-Thread第一個樣例工程2.3第一個樣例工程2.4本章小結2.2軟硬件開發平臺第1頁共24頁RT-Thread(RealTime-Thread)是上海睿賽德電子科技有限公司于2006年開始推出的開源及社區化發展的一款實時操作系統,主要面向嵌入式人工智能與物聯網領域。RTOS2.1RT-Thread簡介(了解)2.1.1RT-Thread概述2.1.2RT-Thread的基本特點開源免費且有技術支持;淺顯易懂,方便移植;可裁剪性強;占用資源小(我們有4KB的RAM下運行案例)、功耗低。第2頁共24頁/download.html#download-rt-thread-nano如需更新工程內的RT-Thread的版本,本書附錄A(P222),給出了RT-Thread版本更新方法RTOS2.1.3下載與更新RT-Thread源碼

從2006年開始推出版本0.1.0后不斷升級和更新,本書用的是2017年后推出RT-ThreadNano精簡內核版,版本號是3.1.5。下載地址:第3頁共24頁RTOS2.2軟硬件開發平臺學習RTOS一定要以一個軟硬件開發平臺為藍本,學習共性技術,銜接個性,仿真達不到目的。本書的硬件開發平臺為:AHL-STM32L431(書中贈送)。軟件開發平臺為:金葫蘆集成開發環境AHL-GEC-IDE,對于本書例程,兼容ST的集成開發環境STM32CubeIDE。第4頁共24頁2.2.1網上電子資源RTOS網上電子資源內容索引文件夾主要內容01-Document文檔文件夾(AHL-STM32L431用戶手冊、參考等)02-Hardware硬件文件夾(硬件資源電子文檔)03-Software軟件文件夾(各章樣例源程序,按照章進行編號)04-Tool工具文件夾(編程實踐中可能使用的軟件工具)下載地址:

第5頁共24頁2.2.2硬件平臺:AHL-STM32L431RTOS1.為什么需要硬件平臺?1)嵌入式軟件開發有別于PC軟件開發的一個顯著的特點在于,它需要一個交叉編譯和調試環境,即工程的編輯和編譯所使用的軟件通常在PC上運行,而編譯生成的嵌入式軟件的機器碼文件則需要通過寫入工具下載到目標機上執行。2)“仿真”不真,無法達到實際學習目標。3)有硬件條件,當然好!(本書內直接夾帶)第6頁共24頁RTOS2.AHL-STM32L431開發板的引出腳3.AHL-STM32L431開發板的特點1)核心芯片。64引腳LQFP封裝的STM32L431RC芯片。內含256KBFlash(共有128個扇區)、64KBRAM,包含SysTick、GPIO、串口、A/D、D/A、I2C、SPI等模塊。2)硬件功能。由硬件最小系統、紅綠藍三色燈、觸摸按鍵、溫度傳感器、兩路TTL-USB串口等構成。3)Type-C接口。方便程序下載與printf輸出進行跟蹤調試。4)可擴展應用。不僅可以用于RT-Thread實時操作系統的學習,也通過板的引出腳,外接其他接口模塊進行創新性實驗與實踐。引出腳的含義參見附錄B(P222)第7頁共24頁2.2.3軟件平臺:金葫蘆集成開發環境RTOS1.AHL-GEC-IDE2.STM32CubeIDE蘇州大學嵌入式實驗室于2018年開始逐步推出的免費嵌入式集成開發環境,集成了GNU編譯器、匯編器等,具有編輯、編譯、程序下載、printf打樁調試等功能,為設計人員提供了一個簡捷易用的嵌入式開發工具。主要特點有:1)兼容常用開發環境;2)支持串口下載調試;3)具有外接軟件功能;4)包含豐富的常用工具;5)簡化工程配置;6)提供可擴展功能。該集成開發環境是適用于ST公司的MCU。本書提供的例程兼容AHL-GEC-IDE與STM32CubeIDE。第8頁共24頁2.3.1樣例程序功能2.3第一個樣例工程RTOS樣例程序的硬件是紅、綠、藍三色一體的發光極管(小燈),由三個GPIO引腳控制其亮暗。軟件控制紅、綠、藍各燈每5秒、10秒、20秒狀態變化,對外表現為三色燈的合成色,其實際效果如右圖所示。第9頁共24頁2.3.2工程框架設計原則RTOS所謂工程框架是指工程內文件夾的命名、文件的存放位置、文件內容的放置規則。軟件工程與一件建筑作品、一件畫作等是一致的,軟件工程框架是整個工程的脊梁,其主要線程不是完成一個單獨的模塊功能,而是指出工程應該包含哪些文件夾、這些文件夾里面應該放置什么文件、各個文件的內容又是如何定位等。因此,工程框架設計的基本原則應該是:分門別類,各有歸處,建立工程文件夾,并考慮隨后內容安排及內容定位,建立其下級子文件夾。第10頁共24頁2.3.3NOS工程框架RTOS1.NOS工程框架的樹形結構

文檔文件夾:文檔作為工密切相關部分,是軟件工程的基本要求CPU文件夾:存放CPU相關文件,由ARM提供給MCU廠家MCU文件夾:含有linker_file、startup、MCU_drivers下級文件夾GEC文件夾:引入通用嵌入式計算機(GEC)概念,預留該文件夾用戶板文件夾:含有硬件接線信息的User.h文件及應用驅動軟件構件文件夾:含有與硬件無關的軟件構件應用程序文件夾:應用程序主要在此處編程NOS工程框架樹型模板第11頁共24頁RTOS2.NOS樣例工程的main函數及isr函數線程線(main函數):程序通過判斷全局變量gSec來控制三色小燈的開關狀態,實現紅燈每5s閃爍一次,綠燈每10s閃爍一次,藍燈每20s閃爍一次,同時通過串口輸出開關信息。中斷線(isr.c中斷服務例程):當定時器到達定時時間1s時,會執行定時器中斷服務例程。在定時器中斷服務例程中,首先判斷是否是由TIMER_USER觸發的中斷,如果是,對變量gSec累加,最后清除中斷標志位。第12頁共24頁RTOS3.NOS樣例工程運行測試..\03-Software\CH02-First-Example\NOS編譯樣例工程,通過TTL-USB串口線連接調試串口與PC,進入AHL-GEC-IDE中的“下載”→“串口更新”,點擊“連接GEC”成功后,導入編譯出的.hex文件,點擊“一鍵自動更新”將程序下載到目標板上,可以觀察紅燈、藍燈和綠燈的閃爍情況,若與右圖所示一致,則正確。第13頁共24頁RTOS第14頁共24頁2.3.4RT-Thread工程框架RTOS

與NOS工程框架一致07_AppPrg文件夾:操作系統應用程序主要在此處編程RT-Thread工程框架樹型模板1.RT-Thread工程框架的樹形結構第15頁共24頁RTOS本工程框架是在NOS工程框架的基礎上修改了兩個文件夾:“05_UserBoard”、“07_AppPrg”,補充說明如下:05_UserBoard文件夾:增加了Os_Self_API.h、OS_United_API.h兩個頭文件。Os_Self_API.h給出了RT-Thread對外接口函數API,如事件、消息隊列、信號量、互斥量等有關函數,實際函數代碼駐留于BIOS中。Os_United_API.h給出了RTOS的統一對外接口API,目的是實現不同的RTOS應用程序可移植。07_AppPrg文件夾:是用戶自定義線程的函數體文件,其中threadauto_appinit.c是主線程文件,其他前綴名帶thread的都是用戶線程文件。第16頁共24頁RTOS2.RT-Thread的啟動在該樣例工程(..\CH02-First-Example\RT-Thread)中,先后共創建了5個線程,如下表所示:第17頁共24頁RTOS3.主線程的執行過程(1)主線程過程概述1)在主線程中依次創建藍燈線程、綠燈線程和紅燈線程,紅燈線程實現紅燈每5s閃爍一次,綠燈線程實現綠燈每10s閃爍一次,藍燈線程實現藍燈每20s閃爍一次,創建完這些用戶線程之后主線程被終止。2)此時,在就緒列表中剩下紅燈線程、綠燈線程、藍燈線程和空閑線程這四個線程。第18頁共24頁RTOS3)由于就緒列表優先級最高的第一個線程是thread_redlight,它優先得到激活運行。thread_redlight線程每隔5000ms控制一次紅燈的亮暗狀態,當thread_redlight線程調用系統服務delay_ms執行延時,調度系統暫時剝奪該線程對CPU的使用權,將該線程從就緒列表中移出,并將該線程的定時器放入延時列表中。4)thread_greenlight線程和thread_bluelight線程被系統依次調度執行,根據延時時長將線程從就緒列表中移出,并將線程的定時器放到延時列表中。5)當這三個線程的定時器都被放到延時列表時,就緒列表中只剩下空閑線程,此時空閑線程會得到運行。第19頁共24頁RTOS從工作原理角度來說,調度切換是基于每1ms(時鐘嘀嗒)的SysTick中斷,在SysTick中斷服務例程中,查看延時列表中的線程的定時器是否到期,若有線程的定時器到期,則將線程的定時器從延時列表移出,并將線程放到就緒列表中。同時,由于到期線程的優先級大于空閑線程的優先級,會搶占空閑線程CPU使用權,通過上下文切換激活,再次得到運行。這些工作屬于RTOS內核,應用層面只要了解即可。本樣例工程中,由于SysTick中斷相關程序屬于RT-Thread內核,被駐留于BIOS中,直接運行源碼,可以看到SysTick中斷服務例程,這里先初略了解一下。第20頁共24頁RTOS(2)主線程源碼解析1)創建用戶線程。把函數變為線程。2)啟動用戶線程。放入就緒隊列。3)app_init函數代碼剖析。參見工程源碼。第21頁共24頁RTOS4.紅燈、綠燈、藍燈線程函數首先將小燈初始設置為暗,然后在while(1)的永久循環體內,通過delay_ms()函數實現延時,每隔指定的時間間隔切換燈的亮暗一次。delay_ms()延時操作并非停止其他操作的空跑等待,而是通過延時列表與線程定時器管理延時線程,從而實現對線程的延時。在延時期間,線程被放入到延時列表中,RTOS可以調度執行其他的線程。第22頁共24頁RTOS5.RT-Thread樣例工程運行測試第23頁共24頁RTOS2.4本章小結學習RTOS的第一要素就是實踐,在實踐中體會其基本機制。要進行實踐,必須有軟硬件基礎平臺,本章給出的硬件平臺AHL-STM32L431及軟件平臺AHL-GEC-IDE的介紹,可以滿足RTOS學習與實踐的基本要求

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論