實(shí)時操作系統(tǒng)應(yīng)用技術(shù) 課件 第1、2章-課程導(dǎo)引+RTOS的基本概念與線程基礎(chǔ)知識、RT-Thread第一個樣例工程_第1頁
實(shí)時操作系統(tǒng)應(yīng)用技術(shù) 課件 第1、2章-課程導(dǎo)引+RTOS的基本概念與線程基礎(chǔ)知識、RT-Thread第一個樣例工程_第2頁
實(shí)時操作系統(tǒng)應(yīng)用技術(shù) 課件 第1、2章-課程導(dǎo)引+RTOS的基本概念與線程基礎(chǔ)知識、RT-Thread第一個樣例工程_第3頁
實(shí)時操作系統(tǒng)應(yīng)用技術(shù) 課件 第1、2章-課程導(dǎo)引+RTOS的基本概念與線程基礎(chǔ)知識、RT-Thread第一個樣例工程_第4頁
實(shí)時操作系統(tǒng)應(yīng)用技術(shù) 課件 第1、2章-課程導(dǎo)引+RTOS的基本概念與線程基礎(chǔ)知識、RT-Thread第一個樣例工程_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

RTOS1.1實(shí)時操作0系統(tǒng)的基本含義課程導(dǎo)引第1章RTOS的基本概念與線程基礎(chǔ)知識1.2RTOS中的基本概念1.3線程的三要素、四種狀態(tài)及三種基本形式1.4本章小結(jié)RTOS課程導(dǎo)引1.學(xué)什么?第1頁共27頁本課程以國產(chǎn)實(shí)時操作系統(tǒng)RT-Thread為藍(lán)本,闡述RTOS的應(yīng)用與原理。

教材:王宜懷等編著,實(shí)時操作系統(tǒng)應(yīng)用技術(shù):基于RT-Thread與ARM的編程實(shí)踐,機(jī)械工業(yè)出版社,2024年4月。(內(nèi)含硬件板,定價89.90元,網(wǎng)上折扣后為70元左右。)RTOS全書包含基礎(chǔ)應(yīng)用篇(1~6章)、綜合實(shí)踐篇(7~8章)、原理剖析篇(9章)三大部分,只做實(shí)時操作系統(tǒng)下應(yīng)用開發(fā),可只閱讀基礎(chǔ)應(yīng)用篇與綜合實(shí)踐篇,希望了解原理,則通讀全書。電子資源下載地址:https:///RTwThreadwARMjc/list.htm第2頁共27頁RTOS2.為什么要學(xué)?(1)實(shí)時操作系統(tǒng)是嵌入式人工智能與物聯(lián)網(wǎng)終端的重要工具和運(yùn)行載體;(2)隨著微型計算機(jī)技術(shù)的不斷發(fā)展,RAM、Flash空間變大,價格降低,RTOS將逐步成為標(biāo)準(zhǔn)配置;(3)使用RTOS,可以把一個大工程分解成一個一個小工程,RTOS為應(yīng)用編程提供服務(wù),方便應(yīng)用程序開發(fā)、維護(hù)與程序移植。第3頁共27頁RTOS3.如何學(xué)?—“勤”(1)學(xué)習(xí)過程:課前預(yù)習(xí):花20分鐘左右瀏覽課本;聽課:帶好紙質(zhì)和筆,腦手聯(lián)動;課后:及時看書、梳理札記、完成作業(yè),當(dāng)天完成當(dāng)天任務(wù);實(shí)驗:勤動手;期中、期末復(fù)習(xí):收攏知識;(2)電子札記:按照模板,嚴(yán)格遵守排版格式,及時梳理知識要點(diǎn);(3)勤問:學(xué)問學(xué)問,一要學(xué),二要問,要克服“不問”之慣性,問老師、問同學(xué)。

第4頁共27頁RTOS嵌入式系統(tǒng),即嵌入式計算機(jī)系統(tǒng),它是不以計算機(jī)形式出現(xiàn)的“計算機(jī)”。這類計算機(jī)隱含在各種具體產(chǎn)品之中,在這些產(chǎn)品中,計算機(jī)程序發(fā)揮關(guān)鍵核心作用。嵌入式處理器按其應(yīng)用范圍可以分為電子系統(tǒng)智能化(微控制器MCU)和計算機(jī)應(yīng)用延伸(應(yīng)用處理器MAP)兩大類。1.1實(shí)時操作系統(tǒng)的基本含義1.1.1無操作系統(tǒng)與實(shí)時操作系統(tǒng)第5頁共27頁RTOS1.無操作系統(tǒng)下程序運(yùn)行流程無操作系統(tǒng)(NoOperatingSystem,NOS)的嵌入式系統(tǒng)中,在系統(tǒng)復(fù)位后,首先進(jìn)行堆棧、中斷向量、系統(tǒng)時鐘、內(nèi)存變量、部分硬件模塊等初始化工作,然后進(jìn)入“無限循環(huán)”,在這個無限循環(huán)中,CPU一般根據(jù)一些全局變量的值決定執(zhí)行各種功能程序(線程),這是第一條運(yùn)行路線。若發(fā)生中斷,將響應(yīng)中斷,執(zhí)行中斷服務(wù)例程(InterruptServiceRoutines,ISR),這是第二條運(yùn)行路線,執(zhí)行完ISR后,返回中斷處繼續(xù)執(zhí)行。從操作系統(tǒng)的調(diào)度功能角度理解,NOS中的主程序,可以被簡單地理解為一個RTOS內(nèi)核,這個內(nèi)核負(fù)責(zé)系統(tǒng)初始化和調(diào)度其它線程。注:NOS實(shí)例演示(

..\03-Software\CH02\NOS)第6頁共27頁RTOS2.RTOS下程序運(yùn)行流程本書主要闡述面向嵌入式人工智能與物聯(lián)網(wǎng)領(lǐng)域的實(shí)時操作系統(tǒng)(RTOS)的應(yīng)用方法與原理。在基于RTOS的編程模式下,同樣有兩條線路:一條是線程線,編程時把一個較大工程分解成幾個較小的工程(被稱為線程或任務(wù)),有個調(diào)度者負(fù)責(zé)這些線程的執(zhí)行;另一條線路是中斷線,與NOS情況一致,若發(fā)生中斷,將響應(yīng)中斷,執(zhí)行中斷服務(wù)程序(ISR),然后返回中斷處繼續(xù)執(zhí)行。注:RT-Thread實(shí)例演示(..\03-Software\CH02\NOSRT-Thread)第7頁共27頁RTOS3.RTOS的基本功能線程管理與調(diào)度、線程間的同步與通信、存儲管理、時間管理、中斷管理等。4.RTOS的應(yīng)用場合將成為未來MCU應(yīng)用開發(fā)的標(biāo)準(zhǔn)配置。(選擇具體的RTOS時,注意避免收費(fèi)陷阱)第8頁共27頁RTOS1.1.2實(shí)時操作系統(tǒng)與非實(shí)時操作系統(tǒng)嵌入式操作系統(tǒng)有實(shí)時與非實(shí)時之分。應(yīng)用處理器使用的嵌入式操作系統(tǒng)EOS對實(shí)時性要求不高,主要關(guān)心功能,這類操作系統(tǒng)主要有標(biāo)準(zhǔn)鴻蒙、Android、iOS、嵌入式Linux等。(多進(jìn)程操作系統(tǒng))而以微控制器為核心的嵌入式系統(tǒng),期望能夠在較短的確定時間內(nèi)完成特定的系統(tǒng)功能或中斷響應(yīng),應(yīng)用于這類系統(tǒng)中的操作系統(tǒng)就是實(shí)時操作系統(tǒng),這類操作系統(tǒng)主要有RT-Thread、輕量級鴻蒙、μC/OS、MQX、FreeRTOS等。(單進(jìn)程操作系統(tǒng))第9頁共27頁RTOS1.2RTOS中的基本概念1.2.1線程與調(diào)度的基本含義1.線程的基本含義(重點(diǎn))線程是RTOS中最重要概念之一。在RTOS下,把一個復(fù)雜的嵌入式應(yīng)用工程按一定規(guī)則分解成一個個功能清晰的小工程,然后設(shè)定各個小工程的運(yùn)行規(guī)則,交給RTOS管理,這就是基于RTOS編程的基本思想。這一個個小工程被稱為“線程(Thread)”,RTOS管理這些線程,被稱為“調(diào)度(Scheduling)”。第10頁共27頁RTOS1)從線程調(diào)度角度理解:RTOS中的線程是一個功能清晰的小程序,是RTOS調(diào)度的基本單元;2)從RTOS的軟件設(shè)計角度來理解:線程就是在軟件設(shè)計時,需要根據(jù)具體應(yīng)用,劃分出獨(dú)立的、相互作用的程序集合。這樣的程序集合就被稱為線程,每個線程都被賦予一定的優(yōu)先級;3)從CPU角度理解:在單CPU下,某一時刻CPU只會處理(執(zhí)行)一個線程,或說只有一個線程占用CPU。RTOS內(nèi)核關(guān)鍵功能就是以合理的方式為系統(tǒng)中的每個線程分配時間(即調(diào)度),使之得以運(yùn)行。第11頁共27頁RTOS2.調(diào)度的基本含義(重點(diǎn))調(diào)度就是決定該輪到哪個線程運(yùn)行了,它是內(nèi)核最重要的職責(zé)。例如,一臺晚會有小品、相聲、唱歌、詩朗誦等節(jié)目,而舞臺只有一個,在晚會過程中導(dǎo)演會指揮每個節(jié)目什么時間進(jìn)行候場、什么時間上臺進(jìn)行表演、表演多長時間等,這個過程就可以看做是導(dǎo)演在對各個獨(dú)立的節(jié)目進(jìn)行調(diào)度,通過導(dǎo)演的調(diào)度各個節(jié)目有序演出,觀眾就能看到一臺精彩的晚會。優(yōu)先級的調(diào)度算法算法的核心思想是:總是讓處于就緒態(tài)的、優(yōu)先級最高的線程先運(yùn)行,優(yōu)先級相同的按照先進(jìn)就緒隊列先運(yùn)行,同優(yōu)先級的可各運(yùn)行一定時間片。第12頁共27頁RTOS1.2.2

內(nèi)核類其他基本概念1.時鐘節(jié)拍時鐘節(jié)拍:時鐘節(jié)拍(ClockTick),有時也直接譯為時鐘嘀嗒,它是一個定時器產(chǎn)生的周期性中斷,調(diào)度功能重要來源之一。

2.代碼臨界段代碼臨界段:也稱為臨界區(qū),是指部分代碼開始執(zhí)行則不允許任何中斷打擾。在進(jìn)入時關(guān)中斷,出來時開中斷。3.不可搶占型內(nèi)核與可搶占型內(nèi)核不可搶占型內(nèi)核:要求每個線程主動放棄CPU的使用權(quán)??蓳屨夹蛢?nèi)核:一個正在運(yùn)行的線程可以被打斷,而讓另一個優(yōu)先級更高、且變?yōu)榫途w態(tài)的線程運(yùn)行。一般為可搶占型內(nèi)核。第13頁共27頁RTOS4.實(shí)時性相關(guān)概念及RTOS實(shí)時性指標(biāo)(了解)實(shí)時性:實(shí)時性可以理解為在規(guī)定時間內(nèi)系統(tǒng)的反應(yīng)能力,可分為硬實(shí)時和軟實(shí)時。硬實(shí)時:要求在規(guī)定的時間內(nèi)必須完成操作。軟實(shí)時:只要按照線程的優(yōu)先級盡可能快地完成操作即可。評價一個RTOS一般可從以下幾個方面來衡量

(1)線程調(diào)度的時間指標(biāo)調(diào)度延時、線程切換時間、恢復(fù)時間。

(2)中斷禁止時間、中斷延遲時間。

(3)最小內(nèi)存開銷。第14頁共27頁RTOS1.線程的上下文及線程切換(重點(diǎn)、難點(diǎn))線程的上下文是指某一時間點(diǎn)CPU內(nèi)部寄存器的內(nèi)容。當(dāng)多線程內(nèi)核決定運(yùn)行另外的線程時,它保存正在運(yùn)行線程的上下文,保存在線程自己的堆棧之中。入棧工作完成以后,就把下一個將要運(yùn)行線程的上下文,從其線程堆棧中重新裝入CPU的寄存器,開始下一個線程的運(yùn)行,這一過程叫作線程切換或上下文切換。上下文的英文單詞是context,這個詞具有場景、語境、來龍去脈的含義。要點(diǎn):線程棧、SP、PC1.2.3線程類其他基本概念第15頁共27頁RTOS2.線程優(yōu)先級(了解)在一個多線程系統(tǒng)中,每個線程都有一個優(yōu)先級,RTOS根據(jù)線程的優(yōu)先級等進(jìn)行線程調(diào)度,一般情況下優(yōu)先級高的線程先運(yùn)行。了解有關(guān)概念:優(yōu)先級驅(qū)動、優(yōu)先級反轉(zhuǎn)、優(yōu)先級繼承。3.線程間通信(后面重點(diǎn)學(xué)習(xí)的內(nèi)容,RTOS為我們服務(wù)的)線程間通信是指線程間的信息交換,其作用是實(shí)現(xiàn)線程間同步及數(shù)據(jù)傳輸。同步是指根據(jù)線程間的合作關(guān)系,協(xié)調(diào)不同線程間的執(zhí)行順序。線程間通信的方式主要有事件、消息隊列、信號量、互斥量等。4.資源(了解)RTOS中的資源是指任何被線程所占用的實(shí)體,可以是輸入/輸出設(shè)備,例如顯示器,也可以是一個變量、結(jié)構(gòu)或數(shù)組等。涉及資源的主要概念有:共享資源、互斥與死鎖等。第16頁共27頁RTOS1.3線程的三要素、四種狀態(tài)及三種基本形式從線程的存儲結(jié)構(gòu)上看,線程由三個部分組成:線程函數(shù)、線程堆棧、線程描述符,這就是線程的三要素。線程函數(shù):線程要完成具體功能的程序;線程堆棧:每個線程擁有自己獨(dú)立的線程堆??臻g,用于保存線程在調(diào)度時的上下文信息及線程內(nèi)部使用的局部變量;線程描述符:關(guān)聯(lián)了線程屬性的程序控制塊,記錄le線程的各個屬性。1.3.1線程的三要素:線程函數(shù)、線程堆棧、線程描述符(重點(diǎn))第17頁共27頁RTOS1.線程函數(shù)一個線程,對應(yīng)一段函數(shù)代碼,完成一定功能,可被稱之為線程函數(shù)。RTOS內(nèi)核如何知道哪個該先運(yùn)行呢?由于任何時刻只能有一個線程在運(yùn)行(處于激活態(tài)),當(dāng)RTOS內(nèi)核使一個線程運(yùn)行時,之前的運(yùn)行線程就會退出激活態(tài)。CPU被處于激活態(tài)的線程所獨(dú)占,從這個角度看,線程函數(shù)與無操作系統(tǒng)(NOS)中的“main”函數(shù)性質(zhì)相近,一般被設(shè)計為“永久循環(huán)”,認(rèn)為線程一直在執(zhí)行,永遠(yuǎn)獨(dú)占處理器。但也有一些特殊性,將在第6章中討論。第18頁共27頁RTOS2.線程堆棧(重點(diǎn)、難點(diǎn))線程堆棧是獨(dú)立于線程函數(shù)之外的RAM,是按照“先進(jìn)后出”策略組織的一段連續(xù)存儲空間,是RTOS中線程的重要組成部分。在RTOS中被創(chuàng)建的每個線程都有自己私有的堆??臻g,在線程的運(yùn)行過程中,堆棧用于保存線程程序運(yùn)行過程中的局部變量、線程調(diào)用普通函數(shù)時會為線程保存返回地址等參數(shù)變量、保存線程的上下文等等。第19頁共27頁RTOS3.線程描述符(重點(diǎn)、難點(diǎn))線程被創(chuàng)建時,系統(tǒng)會為每個線程創(chuàng)建一個唯一的線程描述符TD,它相當(dāng)于線程在RTOS中的一個“身份證”,RTOS就是通過這些“身份證”來管理線程和查詢線程信息的。在RTOS中,一般情況下使用列表來維護(hù)線程描述符。在RT-Thread中阻塞列表用于存放因等待某個信號而終止運(yùn)行的線程;延時列表用于存放通過延時函數(shù)或等待某個信號指定的時間而終止運(yùn)行的線程;就緒列表則按優(yōu)先級的高低存放準(zhǔn)備要運(yùn)行的線程。第20頁共27頁RTOS1.線程狀態(tài)的基本含義(重點(diǎn)、難點(diǎn))1)終止態(tài):線程已經(jīng)完成,或被刪除,不再需要使用CPU。2)阻塞態(tài):又可稱為“掛起態(tài)”。線程未準(zhǔn)備好,不能被激活。當(dāng)?shù)却龝r間到或等待的情況發(fā)生時,該線程才變?yōu)榫途w態(tài)。3)就緒態(tài):線程已經(jīng)準(zhǔn)備好可以被激活,但未進(jìn)入激活態(tài)。一旦獲取CPU的使用權(quán)就可以進(jìn)入激活態(tài),處于就緒態(tài)的線程描述符存放于就緒列表中。4)激活態(tài):即“運(yùn)行態(tài)”,線程在運(yùn)行中,線程擁有CPU使用權(quán)。在任一時刻,線程被創(chuàng)建后所處的狀態(tài)一定是四種狀態(tài)之一。1.3.2線程的四種狀態(tài):終止態(tài)、阻塞態(tài)、就緒態(tài)和激活態(tài)第21頁共27頁RTOS2.線程狀態(tài)之間的轉(zhuǎn)換(了解)RTOS線程的四種狀態(tài)是動態(tài)轉(zhuǎn)換的

1)終止態(tài)轉(zhuǎn)為就緒態(tài):線程重新被開始,根據(jù)線程優(yōu)先級進(jìn)入就緒態(tài)。2)阻塞態(tài)轉(zhuǎn)為就緒態(tài):阻塞條件被解除。3)就緒態(tài)轉(zhuǎn)為激活態(tài)、終止態(tài)。就緒線程被調(diào)度而獲得CPU資源進(jìn)入運(yùn)行;也可以直接調(diào)用函數(shù)進(jìn)入激活態(tài)。4)激活態(tài)轉(zhuǎn)為就緒態(tài)、阻塞態(tài)、終止態(tài)。5)激活態(tài)轉(zhuǎn)為就緒態(tài)、阻塞態(tài)。第22頁共27頁RTOS線程函數(shù)一般分為兩個部分:初始化部分和線程體部分初始化部分實(shí)現(xiàn)對變量的定義、初始化以及設(shè)備的打開等線程體部分負(fù)責(zé)完成該線程的基本功能。線程一般結(jié)構(gòu)如下:voidthread_a(uint32_tinitial_data){

//初始化部分

//線程體部分}線程的基本形式:單次執(zhí)行線程、周期執(zhí)行線程和事件驅(qū)動線程。1.3.3線程的三種基本形式:單次執(zhí)行、周期執(zhí)行、資源驅(qū)動第23頁共27頁RTOS1.單次執(zhí)行線程指在創(chuàng)建后只會被執(zhí)行一次,執(zhí)行完后就會被銷毀或阻塞的線程。如自動線程。voidthread_a(uint32_tinitial_data){//初始化部分//線程體部分//線程函數(shù)銷毀或阻塞}初始化:包括對變量的定義和賦值,打開需要使用的設(shè)備等等;線程函數(shù)的執(zhí)行:該線程的基本功能實(shí)現(xiàn);線程函數(shù)的銷毀或阻塞:即調(diào)用線程銷毀或者阻塞函數(shù)將自己從線程列表中刪除。第24頁共27頁RTOS2.周期執(zhí)行線程指需要按照一定周期執(zhí)行的線程,大部分線程如此,與NOS下main.c一致。voidthread_a(uint32_tinitial_data){//初始化部分……

//線程體部分while(1){ //循環(huán)體部分}}線程函數(shù)的執(zhí)行是放在永久循環(huán)體中執(zhí)行的。線程需要按照一定周期執(zhí)行,執(zhí)行完該線程之后可能需要調(diào)用延時函數(shù)wait將自己放入延時列表中,等時間到了之后重新進(jìn)入就緒態(tài)。第25頁共27頁RTOS3.資源驅(qū)動線程資源:主要指信號量、事件等線程通信與同步中的方法。資源驅(qū)動線程是操作系統(tǒng)特有的線程類型。執(zhí)行時間不確定,所要等待的資源可用時才轉(zhuǎn)入就緒態(tài),否則會被加入到等待該資源的等待列表中。voidthread_a(uint32_tinitial_data)){//初始化部分……while(1){

//調(diào)用等待資源函數(shù)//線程體部分}}第26頁共27頁RTOS1.4本章小結(jié)在RTOS下編程與NOS下編程相比有顯著優(yōu)點(diǎn),這個優(yōu)點(diǎn)就是有個調(diào)度者,指揮協(xié)調(diào)著各個線程的運(yùn)行,這樣編程者可以把一個大工程分解成一個個小工程,交由RTOS管理,這符合軟件工程的基本原理。線程是RTOS中最重要概念之一。在RTOS下,把一個復(fù)雜的應(yīng)用工程按一定規(guī)則分解成一個個功能清晰的小工程,然后設(shè)定各個小工程運(yùn)行規(guī)則,交給RTOS管理,這就是基于RTOS編程的基本思想。這一個個小工程被稱為線程,RTOS管理這些線程,被稱為調(diào)度。線程可以分別從線程調(diào)度、軟件設(shè)計、占用CPU等不同視角來理解。調(diào)度就是以合理方式為每個線程分配時間,使之得以運(yùn)行。一個函數(shù)只有在給出其線程描述符及線程堆棧的情況下,才可以被稱為線程,才能夠被調(diào)度運(yùn)行。線程一般有四種狀態(tài),分別為:終止態(tài)、阻塞態(tài)、就緒態(tài)和激活態(tài)。線程有三種基本形式,分別是單次執(zhí)行、周期執(zhí)行及資源驅(qū)動等形式。第27頁共27頁RTOS第2章RT-Thread第一個樣例工程本章導(dǎo)引:學(xué)習(xí)RTOS,首先要以一個芯片為基礎(chǔ),按照“分門別類,各有歸處”的原則,從建立無操作系統(tǒng)開始,建立起RTOS的工程框架,讓幾個最簡單的線程“跑”起來。以此簡明理解線程被調(diào)度運(yùn)行的基本過程,隨后就可以進(jìn)行RTOS下程序設(shè)計的學(xué)習(xí)了。本章給出RT-Thread的工程框架及第一個樣例工程。2.1RT-Thread簡介RTOS第2章RT-Thread第一個樣例工程2.3第一個樣例工程2.4本章小結(jié)2.2軟硬件開發(fā)平臺第29頁共24頁RT-Thread(RealTime-Thread)是上海睿賽德電子科技有限公司于2006年開始推出的開源及社區(qū)化發(fā)展的一款實(shí)時操作系統(tǒng),主要面向嵌入式人工智能與物聯(lián)網(wǎng)領(lǐng)域。RTOS2.1RT-Thread簡介(了解)2.1.1RT-Thread概述2.1.2RT-Thread的基本特點(diǎn)開源免費(fèi)且有技術(shù)支持;淺顯易懂,方便移植;可裁剪性強(qiáng);占用資源?。ㄎ覀冇?KB的RAM下運(yùn)行案例)、功耗低。第30頁共24頁/download.html#download-rt-thread-nano如需更新工程內(nèi)的RT-Thread的版本,本書附錄A(P222),給出了RT-Thread版本更新方法RTOS2.1.3下載與更新RT-Thread源碼

從2006年開始推出版本0.1.0后不斷升級和更新,本書用的是2017年后推出RT-ThreadNano精簡內(nèi)核版,版本號是3.1.5。下載地址:第31頁共24頁RTOS2.2軟硬件開發(fā)平臺學(xué)習(xí)RTOS一定要以一個軟硬件開發(fā)平臺為藍(lán)本,學(xué)習(xí)共性技術(shù),銜接個性,仿真達(dá)不到目的。本書的硬件開發(fā)平臺為:AHL-STM32L431(書中贈送)。軟件開發(fā)平臺為:金葫蘆集成開發(fā)環(huán)境AHL-GEC-IDE,對于本書例程,兼容ST的集成開發(fā)環(huán)境STM32CubeIDE。第32頁共24頁2.2.1網(wǎng)上電子資源RTOS網(wǎng)上電子資源內(nèi)容索引文件夾主要內(nèi)容01-Document文檔文件夾(AHL-STM32L431用戶手冊、參考等)02-Hardware硬件文件夾(硬件資源電子文檔)03-Software軟件文件夾(各章樣例源程序,按照章進(jìn)行編號)04-Tool工具文件夾(編程實(shí)踐中可能使用的軟件工具)下載地址:https:///RTwThreadwARMjc/list.htm第33頁共24頁2.2.2硬件平臺:AHL-STM32L431RTOS1.為什么需要硬件平臺?1)嵌入式軟件開發(fā)有別于PC軟件開發(fā)的一個顯著的特點(diǎn)在于,它需要一個交叉編譯和調(diào)試環(huán)境,即工程的編輯和編譯所使用的軟件通常在PC上運(yùn)行,而編譯生成的嵌入式軟件的機(jī)器碼文件則需要通過寫入工具下載到目標(biāo)機(jī)上執(zhí)行。2)“仿真”不真,無法達(dá)到實(shí)際學(xué)習(xí)目標(biāo)。3)有硬件條件,當(dāng)然好?。ū緯鴥?nèi)直接夾帶)第34頁共24頁RTOS2.AHL-STM32L431開發(fā)板的引出腳3.AHL-STM32L431開發(fā)板的特點(diǎn)1)核心芯片。64引腳LQFP封裝的STM32L431RC芯片。內(nèi)含256KBFlash(共有128個扇區(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í)時操作系統(tǒng)的學(xué)習(xí),也通過板的引出腳,外接其他接口模塊進(jìn)行創(chuàng)新性實(shí)驗與實(shí)踐。引出腳的含義參見附錄B(P222)第35頁共24頁2.2.3軟件平臺:金葫蘆集成開發(fā)環(huán)境RTOS1.AHL-GEC-IDEhttp:///AHLwGECwIDE/list.htm2.STM32CubeIDEhttps:///zh/development-tools/stm32cubeide.html#get-software蘇州大學(xué)嵌入式實(shí)驗室于2018年開始逐步推出的免費(fèi)嵌入式集成開發(fā)環(huán)境,集成了GNU編譯器、匯編器等,具有編輯、編譯、程序下載、printf打樁調(diào)試等功能,為設(shè)計人員提供了一個簡捷易用的嵌入式開發(fā)工具。主要特點(diǎn)有:1)兼容常用開發(fā)環(huán)境;2)支持串口下載調(diào)試;3)具有外接軟件功能;4)包含豐富的常用工具;5)簡化工程配置;6)提供可擴(kuò)展功能。該集成開發(fā)環(huán)境是適用于ST公司的MCU。本書提供的例程兼容AHL-GEC-IDE與STM32CubeIDE。第36頁共24頁2.3.1樣例程序功能2.3第一個樣例工程RTOS樣例程序的硬件是紅、綠、藍(lán)三色一體的發(fā)光極管(小燈),由三個GPIO引腳控制其亮暗。軟件控制紅、綠、藍(lán)各燈每5秒、10秒、20秒狀態(tài)變化,對外表現(xiàn)為三色燈的合成色,其實(shí)際效果如右圖所示。第37頁共24頁2.3.2工程框架設(shè)計原則RTOS所謂工程框架是指工程內(nèi)文件夾的命名、文件的存放位置、文件內(nèi)容的放置規(guī)則。軟件工程與一件建筑作品、一件畫作等是一致的,軟件工程框架是整個工程的脊梁,其主要線程不是完成一個單獨(dú)的模塊功能,而是指出工程應(yīng)該包含哪些文件夾、這些文件夾里面應(yīng)該放置什么文件、各個文件的內(nèi)容又是如何定位等。因此,工程框架設(shè)計的基本原則應(yīng)該是:分門別類,各有歸處,建立工程文件夾,并考慮隨后內(nèi)容安排及內(nèi)容定位,建立其下級子文件夾。第38頁共24頁2.3.3NOS工程框架RTOS1.NOS工程框架的樹形結(jié)構(gòu)

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

與NOS工程框架一致07_AppPrg文件夾:操作系統(tǒng)應(yīng)用程序主要在此處編程RT-Thread工程框架樹型模板1.RT-Thread工程框架的樹形結(jié)構(gòu)第43頁共24頁RTOS本工程框架是在NOS工程框架的基礎(chǔ)上修改了兩個文件夾:“05_UserBoard”、“07_AppPrg”,補(bǔ)充說明如下:05_UserBoard文件夾:增加了Os_Self_API.h、OS_United_API.h兩個頭文件。Os_Self_API.h給出了RT-Thread對外接口函數(shù)API,如事件、消息隊列、信號量、互斥量等有關(guān)函數(shù),實(shí)際函數(shù)代碼駐留于BIOS中。Os_United_API.h給出了RTOS的統(tǒng)一對外接口API,目的是實(shí)現(xiàn)不同的RTOS應(yīng)用程序可移植。07_AppPrg文件夾:是用戶自定義線程的函數(shù)體文件,其中threadauto_appinit.c是主線程文件,其他前綴名帶thread的都是用戶線程文件。第44頁共24頁RTOS2.RT-Thread的啟動在該樣例工程(..\CH02-First-Example\RT-Thread)中,先后共創(chuàng)建了5個線程,如下表所示:第45頁共24頁RTOS3.主線程的執(zhí)行過程(1)主線程過程概述1)在主線程中依次創(chuàng)建藍(lán)燈線程、綠燈線程和紅燈線程,紅燈線程實(shí)現(xiàn)紅燈每5s閃爍一次,綠燈線程實(shí)現(xiàn)綠燈每10s閃爍一次,藍(lán)燈線程實(shí)現(xiàn)藍(lán)燈每20s閃爍一次,創(chuàng)建完這些用戶線程之后主線程被終止。2)此時,在就緒列表中剩下紅燈線程、綠燈線程、藍(lán)燈線程和空閑線程這四個線程。第46頁共24頁RTOS3)由于就緒列表優(yōu)先級最高的第一個線程是thread_redlight,它優(yōu)先得到激活運(yùn)行。thread_redlight線程每隔5000ms控制一次紅燈的亮暗狀態(tài),當(dāng)thread_redlight線程調(diào)用系統(tǒng)服務(wù)delay_m

溫馨提示

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

最新文檔

評論

0/150

提交評論