


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)時(shí)操作系統(tǒng) uSmartX 及其在 LPC2132 上的應(yīng)用(部分供參考).微內(nèi)核的設(shè)計(jì)令它不僅摘要 :uSmartX 是一個(gè)免費(fèi)的源碼公開的輕量級(jí)嵌入式實(shí)時(shí)操作系統(tǒng)性能優(yōu)良、功能齊全而且只占用很少的系統(tǒng)資源,并且使用非常簡(jiǎn)單 .本文主要闡述uSmartX,然后以 uSmartX 在的任務(wù)調(diào)度策略、時(shí)間控制機(jī)制以及一些相關(guān)的系統(tǒng)模塊的實(shí)現(xiàn)原理LPC2132 上的應(yīng)用為例介紹 uSmartX 的使用方法 .一、前言隨著人們對(duì)智能化的要求越來越高 ,嵌入式系統(tǒng)的發(fā)展也越來越迅速,嵌入式實(shí)時(shí)操作系統(tǒng) (RTOS) 正得到越來越廣泛的應(yīng)用 .采用 RTOS 可以簡(jiǎn)化應(yīng)用軟件的設(shè)計(jì) ,縮短系統(tǒng)開發(fā)時(shí)間
2、 , 更合理的利用 CPU 的資源 ,更好地保證系統(tǒng)的可靠性 .由于 RTOS 需要消耗一定的 RAM 和ROM,可以用于小型系統(tǒng)得RTOS并不多,目前國(guó)內(nèi)比較流行的是卩C/OSII,因?yàn)橼郈/OSII的資料豐富,非常便于學(xué)習(xí)但卩C/OSII本身是商業(yè)操作系統(tǒng),在商業(yè)場(chǎng)合使用需要交納一定的 費(fèi)用 .uSmartX 是一個(gè)完全免費(fèi)的嵌入式實(shí)時(shí)操作系統(tǒng) ,它幾乎完全由 C 語言編寫 ,已經(jīng)通過許多場(chǎng) 合的測(cè)試 ,具有功能齊全、性能優(yōu)良、使用方便、占用系統(tǒng)資源少等特點(diǎn).二、uSmartX 的基本特點(diǎn)uSmartX是一個(gè)非先占式、多任務(wù)、基于優(yōu)先級(jí)的RTOS,作為一個(gè)輕量級(jí)的操作系統(tǒng),它提供了任務(wù)間相
3、互通信的機(jī)制和基本的任務(wù)及時(shí)間控制功能 .uSmartX 專門為小型嵌入式系統(tǒng) 而設(shè)計(jì) ,非先占式內(nèi)核只消耗極少的存儲(chǔ)空間 ,并且使用起來非常簡(jiǎn)便 .uSmartX 主要有以下特性 :任務(wù)控制時(shí)間控制郵箱/亠口 曰信號(hào)量 帶觸發(fā)功能的環(huán)形緩存 內(nèi)存管理平臺(tái)無關(guān)在使用 uSmartX 前,一般先將其所有源文件編譯為"庫(kù)"的形式 .在正式的應(yīng)用中只需包含必要的頭文件 ,并在編譯時(shí)將庫(kù)連接到工程中即可,這比較類似于 KEIL 自帶 RTX51, 這種方法相對(duì)于直接操作源文件 ,不僅能有效的減少代碼的體積,還能使文件結(jié)構(gòu)顯得更加簡(jiǎn)潔,管理更加方便 .三、uSmartX 的任務(wù)調(diào)度策
4、略任務(wù)調(diào)度是嵌入式實(shí)時(shí)操作系統(tǒng)的靈魂 在uSmartX初始化期間,內(nèi)核將需要運(yùn)行的任務(wù)建立 成一張任務(wù)表 ,任務(wù)的調(diào)度是基于優(yōu)先級(jí)的 ,如果所有任務(wù)優(yōu)先級(jí)相同 ,則調(diào)度策略降低為時(shí) 間片輪番調(diào)度 .每當(dāng)一個(gè)任務(wù)開始運(yùn)行 ,內(nèi)核就會(huì)得到來自任務(wù)的一個(gè) "系統(tǒng)事件 "以表明任務(wù)的行為 . uSmartX 內(nèi)核提供了以下系統(tǒng)事件 .SYS_NONE : 任務(wù)未得到任何來自內(nèi)核的事件 ;SYS_ERROR:任務(wù)正在掛起(等待)一個(gè)資源而且資源被復(fù)位 這種情況的一個(gè)例子就是當(dāng)任 務(wù)在等待一個(gè)信號(hào)量而信號(hào)量正在被復(fù)位 ;SYS_TOUT: 任務(wù)在運(yùn)行時(shí)被中斷延時(shí)且出現(xiàn)超時(shí) ;SYS_M
5、BX: 任務(wù)在掛起一個(gè)郵箱 ,或發(fā)送了一個(gè)帶超時(shí)限制的郵箱;SYS_MBX_TOUT: 任務(wù)正在掛起郵箱且出現(xiàn)超時(shí) ;SYS_SEM: 任務(wù)正在掛起信號(hào)量且發(fā)送了一個(gè)帶超時(shí)限制的信號(hào)量 ;SYS_SEM_TOUT: 任務(wù)正在掛起郵箱且出現(xiàn)超時(shí) ;SYS_IDLE: 調(diào)度器返回待機(jī)狀態(tài) ,表示當(dāng)時(shí)沒有任何任務(wù)處于就緒狀態(tài)SYS_OK:系統(tǒng)的調(diào)用者(任務(wù))或調(diào)度器成功返回uSmartX 內(nèi)核保證正在運(yùn)行的任務(wù)具有最高優(yōu)先級(jí)并處于準(zhǔn)備就緒狀態(tài).如果沒有任何任務(wù)準(zhǔn)備就緒的任務(wù)需要運(yùn)行 ,則調(diào)度器將返回 "SYS_IDLE" 事件代碼 ,用戶可以根據(jù)需要處理 .任 務(wù)在運(yùn)行時(shí)可以被掛
6、起或延時(shí) ,既可以通過調(diào)用一個(gè)專用的系統(tǒng)函數(shù)來實(shí)現(xiàn)精確的延時(shí),也可以用掛起資源的方式間接延時(shí) .但在掛起資源時(shí)必須特別注意 ,一種典型的情況就是當(dāng)一個(gè)任 務(wù)等待郵箱和超時(shí) ,由于這是一個(gè)非先占式內(nèi)核 ,即使當(dāng)時(shí)的資源 (郵箱或超時(shí) )不可用 ,任務(wù)也 必須結(jié)束并返回系統(tǒng)事件 .由于這是一個(gè)非先占式內(nèi)核 ,故上下文切換只發(fā)生在一個(gè)任務(wù)運(yùn)行結(jié)束時(shí).這一點(diǎn)至關(guān)重要 ,因?yàn)橐坏┮粋€(gè)任務(wù)總是不結(jié)束 ,那么它將中斷整個(gè)系統(tǒng) .四、uSmartX功能模塊簡(jiǎn)介uSmartX 主要包含以下模塊 :FIFO 緩存郵箱內(nèi)存管理/亠口 曰信號(hào)量?jī)?nèi)核任務(wù)控制定時(shí)器下面簡(jiǎn)要介紹各個(gè)模塊的功能與特點(diǎn) .4.1. FIFO
7、緩存uSmartX 中實(shí)現(xiàn)的緩存結(jié)構(gòu)是帶一些附加特性的標(biāo)準(zhǔn) FIFO 循環(huán)緩存 .它與郵箱基本類似 ,除了一點(diǎn) :任務(wù)在請(qǐng)求或存放數(shù)據(jù)到緩存中的時(shí)候不能夠掛起.緩存的結(jié)構(gòu)是在編譯的時(shí)候定義的 ,特別是緩存的大小和元素的大小.盡管緩存的一些默認(rèn)參數(shù)是在編譯的時(shí)候輸入的 ,其他的參數(shù)可以在運(yùn)行時(shí)改變 .有兩個(gè)系統(tǒng)事件與緩存有關(guān) ,一個(gè)是當(dāng)緩存填充到某個(gè)程度的時(shí)候調(diào)用,另一個(gè)是在緩存中有超時(shí)元素時(shí)執(zhí)行 .4.2. 郵箱郵箱是一種任務(wù)間互相通信的機(jī)制,它也用于中斷與任務(wù)的通信 .uSmartX 中每個(gè)郵箱都有自己的控制結(jié)構(gòu).不同的任務(wù)和中斷可以發(fā)送同一個(gè)郵箱,但只能有一個(gè)確定的任務(wù)在掛起某個(gè)特定的郵箱
8、.任務(wù)還可以通過超時(shí)來發(fā)送或掛起一個(gè)郵箱.4.3. 內(nèi)存管理uSmartX 實(shí)現(xiàn)了一個(gè)固定容量的內(nèi)存分配器,其分配機(jī)制是優(yōu)先填充 ,內(nèi)存通常是來自于預(yù)定義的內(nèi)存堆 .每一個(gè)內(nèi)存堆都有最小的可分配區(qū),在實(shí)際應(yīng)用中這就是內(nèi)存塊的大小.4.3. 信號(hào)量 信號(hào)量是一種任務(wù)之間以及中斷與任務(wù)之間通訊的機(jī)制.每一個(gè)信號(hào)量都有自己的控制塊,它通常被用來將調(diào)用者的請(qǐng)求與信號(hào)量聯(lián)系起來.任務(wù)和中斷都可以發(fā)送信號(hào)量 ,但只有任務(wù)才能掛起信號(hào)量 .掛起信號(hào)量時(shí)可以設(shè)置一個(gè)超時(shí)值. 每一個(gè)信號(hào)量都有一個(gè)計(jì)數(shù)器,信號(hào)量可以有多個(gè)發(fā)送源 ,發(fā)送源的數(shù)目只受計(jì)數(shù)器的最大值限制,這個(gè)值是在創(chuàng)建信號(hào)量的時(shí)候確定的,如果計(jì)數(shù)器的
9、值為 0 則信號(hào)量不可用 .4.4. 內(nèi)核內(nèi)核實(shí)現(xiàn)了任務(wù)調(diào)度 ,并提供了一些常用的功能 . 內(nèi)核提供了一些供用戶調(diào)用的函數(shù),如下所示 :void uSMARTX_Init (task_entry_t *ptbl)說明 :uSmartX 內(nèi)核初始化函數(shù) .必須在調(diào)度器開始運(yùn)行以前調(diào)用.STATUS uSMARTX_Scheduler(void)說明 :uSmartX 的任務(wù)調(diào)度器 .void uSMARTX_Tick(void)說明 :uSmartX 的系統(tǒng)節(jié)拍函數(shù) ,如果要用到與定時(shí)器相關(guān)的功能就需要周期性的調(diào)用這個(gè)函 數(shù).例如放在定時(shí)器中斷里 .size_t INT_Disable(void
10、)說明 :全局中斷禁止 .void INT_Enable(void)說明 :全局中斷開啟 .void INT_Restore(size_t flags)說明 :恢復(fù)中斷狀態(tài)寄存器 ,通常與 INT_Disable() 協(xié)同使用 .4.5. 任務(wù)控制uSmartX 提供了一些基本的任務(wù)控制函數(shù) .#define TSK_CREATE(name)說明 :建立一個(gè)任務(wù)HANDLE *TSK_Self(void)說明 :獲得當(dāng)前正在運(yùn)行的任務(wù)的句柄 .void TSK_Sleep(HANDLE *ph,uint16 tout)說明:任務(wù)休眠函數(shù) ,tout 為休眠的系統(tǒng)節(jié)拍數(shù) ,超時(shí)之后任務(wù)將再次運(yùn)行
11、void TSK_Suspend(HANDLE *ph)說明 :任務(wù)掛起函數(shù)void TSK_Resume(HANDLE *ph)說明 :任務(wù)復(fù)原函數(shù)4.6. 定時(shí)器 為了增強(qiáng)任務(wù)中的時(shí)間控制能力 ,uSmartX 內(nèi)核使用了軟件定時(shí)器 .軟件定時(shí)器在每個(gè)系統(tǒng)節(jié) 拍來臨時(shí)更新 .當(dāng)軟件定時(shí)器終止時(shí)會(huì)運(yùn)行與軟件定時(shí)器相關(guān)的回調(diào)函數(shù).內(nèi)核將定時(shí)器放在一個(gè)叫做 " 相對(duì)時(shí)間隊(duì)列 " 的地方 .當(dāng)只剩下 0 個(gè)相對(duì)節(jié)時(shí)拍定時(shí)器就會(huì)終 止 ,每一個(gè)系統(tǒng)節(jié)拍后只更新一個(gè)軟件定時(shí)器的值.這種方法大大增強(qiáng)了系統(tǒng)的定時(shí)控制性能.有關(guān)更詳細(xì)的資料請(qǐng)參看參考文獻(xiàn) 1.五、uSmartX 的應(yīng)用L
12、PC2132 是 PHILIPS 公司新推出的基于 ARM7TDMI-S 的 32 位微處理器 ,功能相當(dāng)強(qiáng)大 ,具有 極高的性價(jià)比 .LPC2132 具有以下基本特征 : 內(nèi)置 64K 的高速 FLASH 和 16K 靜態(tài) RAM 通過片內(nèi) PLL 可實(shí)現(xiàn)最大為 60MHz 的 CPU 操作頻率 并且具有 ISP 功能 ,只需通過串行口就可以下載程序.有內(nèi)部 AD(10 位 6 路 )和 DA 實(shí)時(shí)時(shí)鐘具有獨(dú)立的電源和時(shí)鐘源,在節(jié)電模式下極大地降低了功耗.本文就以 LPC2132 為例闡述 uSmartX 的使用方法 .本應(yīng)用中使用的是 Keil卩Visio n3 +gccARM3.31 開
13、發(fā)環(huán)境.將 Keil卩Visio n3 作為IDE,gccARM3.31 是一個(gè)針對(duì) ARM 的 GCC 開發(fā)包 ,里面的編譯器是 arm-uclibc-gcc, 由 Keil公司提供 ,可以與 Keil 的 IDE 無縫結(jié)合 .這兩個(gè)程序都可以到 KEIL 的網(wǎng)站上下載 ,它們都完全 免費(fèi)且沒有任何使用限制 .圖 1 是工程文件的結(jié)構(gòu) ,其中的 libusmartx.lib 是將 uSmartX 源文件編譯之后創(chuàng)建出來的庫(kù)文 件,在工程中直接鏈接之后就可以調(diào)用里面的函數(shù)了,這種方法使工程結(jié)構(gòu)顯得非常清晰而簡(jiǎn)潔.系統(tǒng)所需要的時(shí)鐘節(jié)拍函數(shù)一般在定時(shí)器中斷里調(diào)用,利用卩Vision3自帶的”配置向?qū)?quot;可以制作一個(gè)很方便實(shí)用的時(shí)鐘配置文件,如圖 2所示 .程序的結(jié)構(gòu)很簡(jiǎn)單 ,必需的函數(shù)有創(chuàng)建任務(wù)、系統(tǒng)初始化和任務(wù)調(diào)度器,其余的可以根據(jù)需要決定由于uSmartX是非先占式內(nèi)核,故它的任務(wù)不能像 卩C/OSII的任務(wù)那樣死循環(huán) 且每個(gè) 任務(wù)運(yùn)行完畢后必須返回 SYS_OK 系統(tǒng)時(shí)間 ,以便調(diào)度器處理 . 系統(tǒng)程序的基本架構(gòu)如下所示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 組網(wǎng)技術(shù)應(yīng)用知到課后答案智慧樹章節(jié)測(cè)試答案2025年春成都工業(yè)職業(yè)技術(shù)學(xué)院
- 吉林省“五地六?!焙献黧w2025年高三語文試題5月統(tǒng)一考試試題含解析
- 工程竣工驗(yàn)收?qǐng)?bào)告土壤污染治理效果評(píng)估
- 第13課 遼宋夏金元時(shí)期的對(duì)外交流 教案2024-2025學(xué)年七年級(jí)歷史下冊(cè)新課標(biāo)
- 2025年全球半導(dǎo)體產(chǎn)業(yè)新動(dòng)態(tài):關(guān)鍵數(shù)據(jù)與未來趨勢(shì)解析
- 2025年白酒行業(yè)資訊:A股市場(chǎng)動(dòng)態(tài)與頭部企業(yè)表現(xiàn)(附關(guān)鍵數(shù)據(jù))
- 山東省德州市第二中學(xué)2024-2025學(xué)年高三上學(xué)期第四次學(xué)情檢測(cè)數(shù)學(xué)試題(解析版)
- 長(zhǎng)沙屋面改造施工方案
- 6年級(jí)上冊(cè)25課筆記
- 2025年?duì)I銷資格考試試題及答案
- 2025年公園綠化樹木維護(hù)合同
- 2023年高考真題全國(guó)乙卷物理試卷
- 運(yùn)梁車培訓(xùn)教材
- 節(jié)后復(fù)工復(fù)產(chǎn)安全教育培訓(xùn)資料
- 軸承基礎(chǔ)知識(shí)測(cè)試
- 《體驗(yàn)微視頻拍攝樂趣》第一課時(shí)初中七年級(jí)勞動(dòng)教育課件
- 主水管改造合同范例
- 《電工技術(shù)》課件-戴維南定理
- 力與運(yùn)動(dòng)的關(guān)系(專題訓(xùn)練)【三大題型】(原卷版)-八年級(jí)物理下冊(cè)
- DB4205T70-2024 既有住宅加裝電梯技術(shù)規(guī)范
- 耳穴壓豆治療便秘
評(píng)論
0/150
提交評(píng)論