實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)課件:RT-Thread第一個(gè)樣例工程_第1頁(yè)
實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)課件:RT-Thread第一個(gè)樣例工程_第2頁(yè)
實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)課件:RT-Thread第一個(gè)樣例工程_第3頁(yè)
實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)課件:RT-Thread第一個(gè)樣例工程_第4頁(yè)
實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)課件:RT-Thread第一個(gè)樣例工程_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

RTOS

RT-Thread第一個(gè)樣例工程本章導(dǎo)引:學(xué)習(xí)RTOS,首先要以一個(gè)芯片為基礎(chǔ),按照“分門(mén)別類(lèi),各有歸處”的原則,從建立無(wú)操作系統(tǒng)開(kāi)始,建立起RTOS的工程框架,讓幾個(gè)最簡(jiǎn)單的線程“跑”起來(lái)。以此簡(jiǎn)明理解線程被調(diào)度運(yùn)行的基本過(guò)程,隨后就可以進(jìn)行RTOS下程序設(shè)計(jì)的學(xué)習(xí)了。本章給出RT-Thread的工程框架及第一個(gè)樣例工程。2.1RT-Thread簡(jiǎn)介RTOS

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論