牛欣源 孟慶昌
摘 要:通過研究實(shí)時(shí)操作系統(tǒng)內(nèi)核及應(yīng)用技術(shù),分析實(shí)時(shí)操作系統(tǒng)性能指標(biāo);基于實(shí)時(shí)操作系統(tǒng)μC/OS Ⅱ內(nèi)核接口和任務(wù)運(yùn)行原理,提取實(shí)時(shí)任務(wù)的構(gòu)成要素,構(gòu)建實(shí)時(shí)任務(wù)模型。運(yùn)用任務(wù)模型進(jìn)行實(shí)時(shí)任務(wù)、實(shí)時(shí)應(yīng)用程序的設(shè)計(jì)和實(shí)現(xiàn)。根據(jù)任務(wù)模型設(shè)計(jì)實(shí)現(xiàn)一個(gè)范例程序的基本功能和性能需求,將模型設(shè)計(jì)思想應(yīng)用于實(shí)時(shí)軟件開發(fā),任務(wù)模型為實(shí)時(shí)程序研發(fā)和相關(guān)教學(xué)活動(dòng)提供了一個(gè)簡便的解決方案。
關(guān)鍵詞:實(shí)時(shí)任務(wù);實(shí)時(shí)應(yīng)用程序;任務(wù)模型;實(shí)時(shí)性能
中圖分類號(hào):TP316文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2009)05-108-04
Research and Application of Real-Time Task Model Based on μC/OS Ⅱ
NIU Xinyuan,MENG Qingchang
(Computer School,Beijing Information Science and Technology Univesity,Beijing,100101,China)
Abstract:By researching the Real-Time(RT) kernel and application developing techniques,analyzing RT system and application performance.Based on the kernal interface of RT operating system μC/OS Ⅱ and task control mechanism,this paper abstracts the constructed elements of the RT task,and produces the RT task model.Appling the task model to the design and implementation of the RT task and the application.An instance which applies the model is given to satisfy requirement of the function and the performance.This model and the instance prove that it can be used in developing the RT application and teaching practice activity easily.
Keywords:RT task;RT application programme;task model;RT performance
0 引 言
由于實(shí)時(shí)程序運(yùn)行機(jī)制與傳統(tǒng)程序相比具有獨(dú)特性,在實(shí)時(shí)應(yīng)用程序開發(fā)和相關(guān)教學(xué)實(shí)踐中,如何根據(jù)應(yīng)用需求和系統(tǒng)功能設(shè)計(jì),確立實(shí)時(shí)程序結(jié)構(gòu),完成代碼的設(shè)計(jì)與實(shí)現(xiàn)則是一個(gè)首要的、關(guān)鍵的問題。軟件設(shè)計(jì)者常因缺乏簡易、實(shí)用的實(shí)時(shí)軟件開發(fā)基本方法,難以快速建立全面、系統(tǒng)的開發(fā)思路和實(shí)施步驟?,F(xiàn)有實(shí)時(shí)內(nèi)核技術(shù)及其應(yīng)用軟件開發(fā)資料篇幅較大,技術(shù)細(xì)節(jié)多,學(xué)習(xí)周期長,可操作性較差,一定程度上影響軟件開發(fā)者的工作進(jìn)度。需要一種簡便易行、行之有效、可操作性強(qiáng)的開發(fā)方法,以便為快速全面了解、掌握實(shí)時(shí)軟件開發(fā)流程提供指南。
為此,通過分析實(shí)時(shí)軟件核心技術(shù),結(jié)合μC/OS Ⅱ?qū)崟r(shí)操作系統(tǒng)內(nèi)核,提出一個(gè)實(shí)時(shí)程序任務(wù)模型。依據(jù)該模型,確立實(shí)時(shí)任務(wù)功能及處理流程,調(diào)用實(shí)時(shí)內(nèi)核,確立一個(gè)實(shí)時(shí)應(yīng)用程序基本結(jié)構(gòu),實(shí)現(xiàn)實(shí)時(shí)程序運(yùn)行機(jī)制,最終完成一個(gè)實(shí)時(shí)應(yīng)用軟件的設(shè)計(jì)與實(shí)現(xiàn),并提供一個(gè)簡單范例應(yīng)用該任務(wù)模型。
1 實(shí)時(shí)軟件技術(shù)及實(shí)時(shí)軟件構(gòu)成
實(shí)時(shí)軟件開發(fā)環(huán)境一般采用實(shí)時(shí)操作系統(tǒng)(RTOS)作為系統(tǒng)開發(fā)和運(yùn)行支持平臺(tái),支持模塊化開發(fā),提高開發(fā)效率,縮短開發(fā)周期,便于程序的調(diào)試、維護(hù),使實(shí)時(shí)性能得到保證,系統(tǒng)穩(wěn)定可靠。RTOS為每個(gè)任務(wù)建立一個(gè)可執(zhí)行環(huán)境,并可方便地在任務(wù)間傳遞消息,在中斷處理程序和任務(wù)間傳遞事件,根據(jù)任務(wù)優(yōu)先級(jí)實(shí)施搶占調(diào)度。
從實(shí)時(shí)操作系統(tǒng) (Real-time OS)的內(nèi)核功能、實(shí)現(xiàn)方法和運(yùn)行機(jī)制可得其目標(biāo)包括:按照搶占優(yōu)先級(jí)策略控制管理實(shí)時(shí)應(yīng)用程序每個(gè)并發(fā)任務(wù)的運(yùn)行;每個(gè)任務(wù)在多長時(shí)限可以完成或得到響應(yīng)。任務(wù)時(shí)限(deadline)是實(shí)現(xiàn)每個(gè)實(shí)時(shí)任務(wù)必備的性能指標(biāo)。
時(shí)限可以分為硬時(shí)限(Hard Deadline)和軟時(shí)限(Soft Deadline)。具有硬截止時(shí)間的任務(wù)即為關(guān)鍵任務(wù),如果不能滿足時(shí)限,則視為系統(tǒng)錯(cuò)誤。根據(jù)任務(wù)設(shè)置的重要程度,將擁有關(guān)鍵任務(wù)的實(shí)時(shí)系統(tǒng)稱為硬實(shí)時(shí)系統(tǒng),否則稱為軟實(shí)時(shí)系統(tǒng)。
硬實(shí)時(shí)技術(shù)應(yīng)用廣泛。例如:航空導(dǎo)航、武器控制等應(yīng)用系統(tǒng),必須使用實(shí)現(xiàn)硬實(shí)時(shí)技術(shù)的操作系統(tǒng),將計(jì)算、存儲(chǔ)、顯示和機(jī)電控制系統(tǒng)以嚴(yán)格時(shí)限組合為一個(gè)系統(tǒng)。
軟實(shí)時(shí)系統(tǒng)運(yùn)行方式與硬實(shí)時(shí)系統(tǒng)基本相同,區(qū)別在于只須滿足統(tǒng)計(jì)意義上的實(shí)時(shí)要求。軟實(shí)時(shí)系統(tǒng)一般要求滿足時(shí)限的概率達(dá)到90%。比如,媒體播放系統(tǒng)一般要求1 s播放24幀圖像。如果數(shù)據(jù)在數(shù)據(jù)嚴(yán)重負(fù)載的情況下,不能在1 s內(nèi)處理24幀,造成播放失真。如果DVD播放正確率達(dá)到95%,用戶就能基本滿意。
實(shí)時(shí)應(yīng)用系統(tǒng)能否滿足實(shí)時(shí)性能的要求,可從以下指標(biāo)進(jìn)行考察。
1.1 中斷延遲
從一個(gè)外部事件發(fā)生到響應(yīng)中斷處理函數(shù)的第一條指令開始執(zhí)行,這段時(shí)長稱為中斷延遲。很多實(shí)時(shí)任務(wù)由中斷驅(qū)動(dòng)執(zhí)行,中斷事件必須在限定的時(shí)限內(nèi)處理,否則將產(chǎn)生嚴(yán)重后果。
例如,設(shè)定烤箱溫度達(dá)到300 ℃時(shí)自動(dòng)切斷電源。從傳感器探測(cè)到該極限溫度,到系統(tǒng)進(jìn)入切斷電源的中斷處理程序,其間系統(tǒng)處理這個(gè)時(shí)長即為中斷延遲。顯然,這個(gè)時(shí)長對(duì)烤箱設(shè)備的使用安全至關(guān)重要。
1.2 搶占延遲
從一個(gè)外部事件發(fā)生到處理該事件任務(wù)的第一條指令開始執(zhí)行,這段時(shí)長稱為搶占延遲。大多數(shù)實(shí)時(shí)系統(tǒng)都是處理一些周期性或非周期性的重復(fù)事件,事件觸發(fā)任務(wù)執(zhí)行。每當(dāng)事件發(fā)生,相應(yīng)的處理任務(wù)必須及時(shí)得到調(diào)度執(zhí)行,否則將無法滿足時(shí)限。搶占延遲反映系統(tǒng)響應(yīng)的及時(shí)程度。
例如:μC/OS Ⅱ某實(shí)時(shí)應(yīng)用程序有如下功能,按照設(shè)定周期,需要運(yùn)行統(tǒng)計(jì)任務(wù)對(duì)程序運(yùn)行部分結(jié)果進(jìn)行統(tǒng)計(jì),從時(shí)鐘到時(shí),事件發(fā)生,到統(tǒng)計(jì)任務(wù)開始運(yùn)行這段時(shí)間即為搶占延遲,這個(gè)時(shí)長決定統(tǒng)計(jì)結(jié)果誤差的大小。
圖1表示實(shí)時(shí)軟件設(shè)計(jì)編程和運(yùn)行層次結(jié)構(gòu)。該圖對(duì)實(shí)現(xiàn)實(shí)時(shí)應(yīng)用程序功能設(shè)計(jì)接口和運(yùn)行機(jī)制進(jìn)行層次劃分。指明基于操作系統(tǒng)內(nèi)核進(jìn)行應(yīng)用開發(fā)的編程層次和接口。從而形成實(shí)時(shí)應(yīng)用程序內(nèi)部結(jié)構(gòu)。
實(shí)現(xiàn)具體實(shí)時(shí)應(yīng)用業(yè)務(wù)邏輯一般采用分解任務(wù)的方法。將一個(gè)實(shí)時(shí)應(yīng)用功能劃分為多個(gè)并發(fā)執(zhí)行的任務(wù)。分配任務(wù)不同的優(yōu)先級(jí),賦予任務(wù)自主延遲功能,進(jìn)行必要的任務(wù)通信,設(shè)置關(guān)鍵任務(wù)的中斷響應(yīng)。明確任務(wù)的執(zhí)行條件、中斷條件和掛起條件等因素。每個(gè)任務(wù)是系統(tǒng)中一個(gè)獨(dú)立的執(zhí)行調(diào)度單位和資源分配單位。如圖1所示,調(diào)用RTOS內(nèi)核系統(tǒng)函數(shù)接口,創(chuàng)建實(shí)時(shí)任務(wù);任務(wù)的運(yùn)行從接受內(nèi)核調(diào)度開始,按照自身流程設(shè)計(jì)循環(huán)執(zhí)行,直至系統(tǒng)運(yùn)行結(jié)束。
通過對(duì)實(shí)時(shí)應(yīng)用功能劃分及運(yùn)行技術(shù)分析研究,總結(jié)出實(shí)時(shí)應(yīng)用的基本構(gòu)成單位和基本功能實(shí)現(xiàn)方法,如圖2所示。
2 基于μC/OS Ⅱ內(nèi)核的實(shí)時(shí)任務(wù)模型
μC/OS Ⅱ嵌入式操作系統(tǒng)是一個(gè)多任務(wù)、優(yōu)先級(jí)搶占、可移植、可裁減的實(shí)時(shí)內(nèi)核。具有時(shí)間、內(nèi)存、信號(hào)量、郵箱和信息隊(duì)列等各類功能函數(shù),各任務(wù)間可以互相通訊,適用于小型CPU,開源代碼簡練,應(yīng)用領(lǐng)域廣泛。
μC/OS Ⅱ操作系統(tǒng)以系統(tǒng)函數(shù)形式提供各類管理功能,以任務(wù)為單位對(duì)應(yīng)用代碼進(jìn)行管理。應(yīng)用程序調(diào)用系統(tǒng)函數(shù)編碼,并進(jìn)行編譯、鏈接、運(yùn)行。應(yīng)用代碼與內(nèi)核構(gòu)成一個(gè)整體。實(shí)時(shí)軟件編碼的核心問題在于將應(yīng)用軟件的具體功能轉(zhuǎn)化為系統(tǒng)中一個(gè)個(gè)并發(fā)執(zhí)行的實(shí)時(shí)任務(wù),接受操作系統(tǒng)內(nèi)核調(diào)度程序的調(diào)度和管理,使應(yīng)用功能最終實(shí)現(xiàn)。
基于μC/OS Ⅱ?qū)崟r(shí)操作系統(tǒng)內(nèi)核進(jìn)行應(yīng)用程序開發(fā),首要的工作在于如何將應(yīng)用程序中的功能進(jìn)行模塊分解,使每個(gè)模塊轉(zhuǎn)換為可并發(fā)執(zhí)行的任務(wù);調(diào)用內(nèi)核完成任務(wù)流程的設(shè)計(jì)與實(shí)現(xiàn);啟動(dòng)操作系統(tǒng)內(nèi)核的任務(wù)調(diào)度程序,并發(fā)執(zhí)行任務(wù)。
由于實(shí)時(shí)應(yīng)用程序的開發(fā)既要考慮內(nèi)核功能及接口,也要設(shè)計(jì)應(yīng)用邏輯功能。設(shè)計(jì)一個(gè)任務(wù)模型,直接服務(wù)于實(shí)時(shí)應(yīng)用程序的設(shè)計(jì)與實(shí)現(xiàn)。該模型對(duì)設(shè)計(jì)與實(shí)現(xiàn)的全過程進(jìn)行簡要分解,對(duì)各個(gè)環(huán)節(jié)進(jìn)行功能設(shè)計(jì)與實(shí)現(xiàn),引導(dǎo)用戶將設(shè)計(jì)功能轉(zhuǎn)換為應(yīng)用程序。
圖3提供了任務(wù)模型框架與構(gòu)建基本步驟。
2.1 任務(wù)分解
任務(wù)分解是將一個(gè)實(shí)時(shí)應(yīng)用業(yè)務(wù)邏輯,按照任務(wù)的管理和控制接口劃分為若干獨(dú)立的任務(wù),并發(fā)運(yùn)行,實(shí)現(xiàn)應(yīng)用功能。簡單地分為設(shè)計(jì)階段和編碼階段。
2.1.1 設(shè)計(jì)階段
(1) 根據(jù)應(yīng)用程序功能需求,將應(yīng)用程序功能劃分為若干并發(fā)任務(wù)。首先將需要并發(fā)執(zhí)行的子功能確立為任務(wù),任務(wù)優(yōu)先級(jí)按響應(yīng)的迫切程度確定。
(2) 確定每個(gè)任務(wù)處理流程,確保完成任務(wù)功能。
(3) 確定任務(wù)功能實(shí)現(xiàn)是否與其他任務(wù)的執(zhí)行有關(guān)聯(lián)。
2.1.2 編碼階段
(1) 完成每個(gè)任務(wù)的程序設(shè)計(jì)。將任務(wù)流程使用C語言編寫為獨(dú)立的函數(shù)。根據(jù)應(yīng)用需求,不同的任務(wù)也可共用同一個(gè)函數(shù)的代碼段。
(2) 實(shí)時(shí)任務(wù)需確定優(yōu)先級(jí)。為確保低優(yōu)先級(jí)任務(wù)有機(jī)會(huì)運(yùn)行,每個(gè)任務(wù)函數(shù)中需包括睡眠、掛起、等待指定時(shí)間等一些自主放棄CPU的語句,調(diào)用內(nèi)核函數(shù)實(shí)現(xiàn)。
2.2 任務(wù)通信
實(shí)時(shí)任務(wù)間存在互相合作或競爭關(guān)系。μC/OS Ⅱ?qū)崟r(shí)操作系統(tǒng)內(nèi)核允許并發(fā)任務(wù)間通過事件、信號(hào)量、消息郵箱、消息隊(duì)列進(jìn)行通信。實(shí)現(xiàn)分為兩步:定義通信事件數(shù)據(jù)類型及初始化;任務(wù)編碼中適時(shí)調(diào)用發(fā)送和接收函數(shù)。
(1) 創(chuàng)建任務(wù)前,調(diào)用內(nèi)核,定義需要的通信機(jī)制數(shù)據(jù)結(jié)構(gòu)。
(2) 發(fā)送任務(wù)和接收任務(wù)調(diào)用內(nèi)核任務(wù)通信函數(shù)實(shí)現(xiàn)編碼,發(fā)送任務(wù)和接收任務(wù)可有多個(gè)。
2.3 任務(wù)創(chuàng)建
將編碼完成的任務(wù)函數(shù),通過調(diào)用內(nèi)核函數(shù),轉(zhuǎn)換為內(nèi)核可調(diào)度的任務(wù)。系統(tǒng)函數(shù)
INT8U OSTaskCreate (void (*task)(void *pd),void *pdata,OS_STK *ptos,INT8U prio)的輸入數(shù)據(jù)為:任務(wù)代碼指針——任務(wù)函數(shù)名;創(chuàng)建任務(wù)運(yùn)行時(shí)傳遞的指針——可為空值;任務(wù)堆棧棧頂指針——任務(wù)現(xiàn)場(chǎng)數(shù)據(jù);任務(wù)優(yōu)先級(jí)——確定任務(wù)關(guān)鍵程度。
2.4 任務(wù)性能
為確保實(shí)時(shí)應(yīng)用程序的實(shí)時(shí)特性,滿足實(shí)時(shí)軟件的性能需求,必須要求實(shí)時(shí)內(nèi)核能夠控制每個(gè)實(shí)時(shí)任務(wù)的響應(yīng)時(shí)間和執(zhí)行時(shí)間。
任務(wù)的響應(yīng)時(shí)間可利用系統(tǒng)內(nèi)部定時(shí)器計(jì)算,根據(jù)任務(wù)的執(zhí)行順序,在起始任務(wù)開啟定時(shí)器,在結(jié)束任務(wù)停止計(jì)時(shí),經(jīng)反復(fù)調(diào)試,可以測(cè)定實(shí)時(shí)任務(wù)的響應(yīng)時(shí)間,一般設(shè)為計(jì)時(shí)最大值,可為確定任務(wù)搶占延遲時(shí)間提供直接數(shù)據(jù)。
任務(wù)執(zhí)行時(shí)間的測(cè)定方法類似。在任務(wù)執(zhí)行代碼起始位置開啟定時(shí)器;在一個(gè)任務(wù)周期結(jié)束時(shí)停止計(jì)時(shí)。反復(fù)調(diào)試,測(cè)得的最大值計(jì)為任務(wù)的執(zhí)行時(shí)間,又為一個(gè)任務(wù)最長的一個(gè)執(zhí)行周期,也為控制單個(gè)任務(wù)功能的執(zhí)行提供依據(jù)。
2.5 任務(wù)與μC/OS Ⅱ?qū)崟r(shí)內(nèi)核連接
實(shí)時(shí)應(yīng)用程序主函數(shù)是整個(gè)應(yīng)用程序的執(zhí)行入口。該函數(shù)將應(yīng)用代碼和操作系統(tǒng)內(nèi)核代碼進(jìn)行連接,形成一個(gè)完整的應(yīng)用代碼。主函數(shù)一般由以下步驟組成,μC/OS Ⅱ內(nèi)核均提供系統(tǒng)函數(shù)支持。
(1) 初始化μC/OS Ⅱ操作系統(tǒng)內(nèi)核;
(2) 保存DOS環(huán)境;
(3) 安裝μC/OS Ⅱ中斷等環(huán)境參數(shù);
(4) 根據(jù)需要?jiǎng)?chuàng)建信號(hào)量集;
(5) 創(chuàng)建多個(gè)應(yīng)用程序任務(wù);
(6) 啟動(dòng)多任務(wù)管理(任務(wù)調(diào)度程序)運(yùn)行。
3 μC/OS Ⅱ?qū)崟r(shí)任務(wù)模型的應(yīng)用
交通信號(hào)燈控制系統(tǒng)是一個(gè)常見的實(shí)時(shí)應(yīng)用系統(tǒng)。該系統(tǒng)根據(jù)時(shí)間控制十字路口信號(hào)燈的自動(dòng)轉(zhuǎn)換,其基本功能具有實(shí)時(shí)系統(tǒng)的基本特點(diǎn)。應(yīng)用實(shí)時(shí)任務(wù)模型進(jìn)行該系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。
3.1 系統(tǒng)功能、任務(wù)分解、任務(wù)通信
(1) 應(yīng)用程序功能說明
十字路口交通信號(hào)燈控制十字路口的車輛通過或停止。篇幅所限,控制方式簡述如下:東西向綠燈亮?xí)r,南北向紅燈亮,反之亦然,車輛按同方向燈控制通過。
(2) 任務(wù)分解說明
設(shè)置兩個(gè)任務(wù)分別表示東西向燈task_ew和南北向燈task_sn。東西向燈任務(wù)和南北向燈任務(wù)優(yōu)先級(jí)不同。東西向燈任務(wù)功能:申請(qǐng)南北向燈任務(wù)的同步信號(hào)量s_sn,顯示綠燈指定時(shí)間,設(shè)定顯示紅燈指定時(shí)間,向南北任務(wù)發(fā)送同步信號(hào)量;南北向燈任務(wù)功能:申請(qǐng)東西向燈任務(wù)的同步信號(hào)量s_ew,顯示綠燈指定時(shí)間,設(shè)定顯示紅燈指定時(shí)間,向東西向任務(wù)發(fā)送同步信號(hào)量;兩個(gè)任務(wù)通過兩個(gè)信號(hào)量保持同步切換機(jī)制。
(3) 任務(wù)間通信
根據(jù)任務(wù)分解得知,創(chuàng)建兩個(gè)信號(hào)量,南北向燈信號(hào)量s_sn,初值=1;東西向燈信號(hào)量s_ew,初值=0。這樣,通過任務(wù)代碼申請(qǐng)信號(hào)量的順序,可以將十字路口信號(hào)燈控制為如下順序和變化周期:東西向信號(hào)燈綠燈→東西向信號(hào)燈紅燈→南北向信號(hào)燈綠燈→南北向信號(hào)燈紅燈。
(4) 任務(wù)代碼
東西向燈任務(wù)代碼task_ew()簡要流程如下,以下代碼為無限循環(huán)代碼。
① 調(diào)用內(nèi)核系統(tǒng)函數(shù)申請(qǐng)南北向燈信號(hào)量;
② 東西向顯示綠燈,南北向顯示紅燈;
③ 調(diào)用內(nèi)核函數(shù),任務(wù)睡眠指定時(shí)間;
④ 調(diào)用內(nèi)核系統(tǒng)函數(shù)發(fā)送東西向燈信號(hào)量。
南北向燈任務(wù)代碼task_sn()簡要流程如下:以下代碼為無限循環(huán)代碼。
① 調(diào)用內(nèi)核系統(tǒng)函數(shù)申請(qǐng)東西向燈信號(hào)量;
② 南北向顯示綠燈,東西向顯示紅燈;
③ 調(diào)用內(nèi)核函數(shù),任務(wù)睡眠指定時(shí)間;
④ 調(diào)用內(nèi)核系統(tǒng)函數(shù)發(fā)送南北向燈信號(hào)量。
3.2 任務(wù)創(chuàng)建
(1) 任務(wù)函數(shù)代碼編碼完成后,調(diào)用系統(tǒng)函數(shù)OSTaskCreate()創(chuàng)建任務(wù)task_sn和task_ew。
(2) 每個(gè)應(yīng)用任務(wù)的優(yōu)先級(jí)不同,為了使任務(wù)按照設(shè)定的時(shí)間進(jìn)行紅綠燈顯示切換,每個(gè)任務(wù)自動(dòng)設(shè)定睡眠若干時(shí)間,任務(wù)在睡眠狀態(tài)下顯示狀態(tài)保持不變。
3.3 任務(wù)與μC/OS Ⅱ?qū)崟r(shí)內(nèi)核連接
應(yīng)用程序主函數(shù)的主要流程設(shè)計(jì)如下:
OSInit();
PC_DOSSaveReturn();
PC_VectSet(uCOS,OSCtxSw);
task_sn = OSSemCreate(1);task_ew= OSSemCreate(0);
OSTaskCreate (task_sn,&TasksnData;,TasksnStk[TASK_STK_SIZE - 1],30);
OSTaskCreate (task_ew,&TaskewData;,TasksnStk[TASK_STK_SIZE - 1],35);
OSStart();
3.4 實(shí)時(shí)任務(wù)性能指標(biāo)
若該應(yīng)用系統(tǒng)具有信號(hào)燈自動(dòng)控制改為手動(dòng)控制,再由手動(dòng)改為自動(dòng)控制功能,需要進(jìn)行如下設(shè)計(jì):
(1) 中斷延遲
設(shè)置一個(gè)實(shí)時(shí)任務(wù)代表手動(dòng)控制狀態(tài)。當(dāng)按下按鍵時(shí)產(chǎn)生中斷,中斷事件必須在時(shí)限內(nèi)處理,睡眠上述兩個(gè)紅綠燈任務(wù),將執(zhí)行切換到手動(dòng)實(shí)時(shí)任務(wù)。當(dāng)需要切換到自動(dòng)狀態(tài)時(shí),按下對(duì)應(yīng)按鍵時(shí)產(chǎn)生中斷,處理該中斷,睡眠手動(dòng)實(shí)時(shí)任務(wù),喚醒兩個(gè)紅綠燈任務(wù)。這兩個(gè)中斷延遲時(shí)間對(duì)信號(hào)燈控制系統(tǒng)是很重要的性能指標(biāo),直接影響路口控制方式的切換是否順暢。
(2) 搶占延遲
有時(shí)根據(jù)交通流量變化,需要調(diào)整十字路口雙方向紅綠燈的切換時(shí)間。設(shè)置一個(gè)時(shí)間調(diào)整任務(wù),該任務(wù)優(yōu)先級(jí)較高,可根據(jù)每星期各天、各時(shí)段路口情況進(jìn)行周期性動(dòng)態(tài)時(shí)間調(diào)整。按指定時(shí)間觸發(fā)事件,調(diào)度該任務(wù)執(zhí)行。事件產(chǎn)生的頻度就確定了該任務(wù)的執(zhí)行時(shí)限,因此每次事件發(fā)生時(shí),相應(yīng)的處理任務(wù)必須及時(shí)響應(yīng)處理,否則不滿足時(shí)限要求,路口將陷于無控
制狀態(tài)。搶占延遲就反映了系統(tǒng)的響應(yīng)及時(shí)程度。
4 結(jié) 語
提出的根據(jù)實(shí)時(shí)任務(wù)模型構(gòu)建實(shí)時(shí)應(yīng)用程序的方法,為基于嵌入式實(shí)時(shí)內(nèi)核μC/OS Ⅱ構(gòu)建應(yīng)用程序,提供了一個(gè)簡明、方便的技術(shù)思路和實(shí)現(xiàn)方法,該模型為實(shí)時(shí)應(yīng)用程序開發(fā)提供一個(gè)實(shí)用解決方案。從應(yīng)用程序范例的設(shè)計(jì)實(shí)現(xiàn)可得到隨應(yīng)用系統(tǒng)需求的改變;實(shí)時(shí)任務(wù)可動(dòng)態(tài)進(jìn)行增刪;模塊可拆卸。該方案已在我校計(jì)算機(jī)學(xué)院的教學(xué)實(shí)踐中使用,具有較好的可操作性,開拓了軟件開發(fā)的新視角。
參考文獻(xiàn)
[1]王蘇峰,肖儂,唐玉華,等.嵌入式系統(tǒng)的多樣性教學(xué)探討.計(jì)算機(jī)教育,2008(14):53-54.
[2]杜承烈,譚峰.一種面向環(huán)境可配置嵌入式系統(tǒng)軟件模型研究.計(jì)算機(jī)應(yīng)用研究,2008,25(8):2 369-2 370,2 398.
[3]王宜懷,劉曉升.嵌入式系統(tǒng)——使用HCS12微控制器的設(shè)計(jì)與應(yīng)用.北京:北京航空航天大學(xué)出版社,2008.
[4]Jean J Labrosse.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS Ⅱ.北京:北京航空航天大學(xué)出版社,2005.
[5]戴亮,戴勝華.μC/OS Ⅱ?qū)崟r(shí)性能測(cè)試與研究.單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2007(7):5-7.
[6]宋凱,甘嵐,嚴(yán)麗平,等,嵌入式Linux內(nèi)核實(shí)時(shí)性研究及改進(jìn).微計(jì)算機(jī)信息,2008,23(24):16-18.
[7]Wayne Wolf.High-performance Embedded Computing.北京:機(jī)械工業(yè)出版社,2007.
[8]Judit Bar-Ilan ,Tatyana Gutman.How to Search Engines Respond to Some Non-English Queries .Journal Information Science,2005,31(1):13-28.
[9]劉良華.教育研究方法專題與案例.上海:華東師范大學(xué)出版社,2007.
[10]康一梅.嵌入式軟件設(shè)計(jì).北京:機(jī)械工業(yè)出版社,2008.
作者簡介 牛欣源 女,1965年出生,黑龍江哈爾濱市人,工學(xué)學(xué)士,講師。研究方向?yàn)椴僮飨到y(tǒng)軟件技術(shù)、程序設(shè)計(jì)方法。
孟慶昌 男,1945年出生,河北人,學(xué)士,教授。研究方向?yàn)椴僮飨到y(tǒng)理論與技術(shù),軟件技術(shù)。