日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
在51系列單片機(jī)上實(shí)現(xiàn)非搶先式消息驅(qū)動(dòng)機(jī)制的RTOS
在51系列單片機(jī)上實(shí)現(xiàn)非搶先式消息驅(qū)動(dòng)機(jī)制的RTOS
 更新時(shí)間:2008-8-18 10:02:18  點(diǎn)擊數(shù):21
【字體: 字體顏色
在51系列單片機(jī)上實(shí)現(xiàn)非搶先式消息驅(qū)動(dòng)機(jī)制的RTOS 廈門大學(xué)許俊許克平 摘要針對(duì)51系列單片機(jī)的特點(diǎn),用面向?qū)ο蟮乃季S方法,構(gòu)造一個(gè)基于非搶先式消息驅(qū)動(dòng)機(jī)制的RTOS。具體闡述RTOS中消息的封裝和消息隊(duì)列、主循環(huán)、消息的獲取和發(fā)送、定時(shí)處理以及核心管理模塊的構(gòu)成。 關(guān)鍵詞單片機(jī)RTOS面向?qū)ο笙㈥?duì)列定時(shí)處理 8051單片機(jī)在中小型應(yīng)用場(chǎng)合相當(dāng)常見。在20世紀(jì)80年代中期,Intel公司將8051內(nèi)核使用權(quán)以專利互換或出售的形式轉(zhuǎn)讓給世界上許多著名的IC制造商,使得8051成為眾多廠商支持的、發(fā)展出上百種品種的大家族;同時(shí)由于8051單片機(jī)是進(jìn)入中國(guó)市場(chǎng)最早的單片機(jī)之一,在國(guó)內(nèi)有眾多的仿真器開發(fā)商支持51系列單片機(jī),大多數(shù)的終端產(chǎn)品公司也大量應(yīng)用51系列單片機(jī)作為產(chǎn)品的開發(fā),使得51系列單片機(jī)在國(guó)內(nèi)成為開發(fā)中小嵌入式系統(tǒng)的首選單片機(jī)之一。由于一些知名的軟件開發(fā)商開發(fā)出比較可靠的面向51系列單片機(jī)的C級(jí)編譯器和RTOS,在RTOS的支持下,可以應(yīng)用51系列單片機(jī)開發(fā)出可靠性高、實(shí)時(shí)性強(qiáng)的較大型程序代碼,應(yīng)用于更多要求較高的場(chǎng)合。 商品化的51系列RTOS中,有代表性的是Franklin公司設(shè)計(jì)的RTX51。它根據(jù)RTOS內(nèi)核的大小分為迷你版本、標(biāo)準(zhǔn)版本和專業(yè)版本。RTX51是一種搶先式的多任務(wù)操作系統(tǒng),可以設(shè)置0~3共4級(jí)優(yōu)先級(jí),實(shí)時(shí)性很強(qiáng),功能齊全?梢怨┯脩粽{(diào)用的服務(wù)(函數(shù))有3類:系統(tǒng)服務(wù)、信息服務(wù)和功能服務(wù)。各個(gè)任務(wù)之間的參數(shù)傳遞是通過郵箱操作(包含在功能服務(wù)中)來實(shí)現(xiàn)的。但是這樣的一個(gè)操作系統(tǒng)對(duì)于大多數(shù)應(yīng)用,過于復(fù)雜,特別是對(duì)于各個(gè)任務(wù)之間的參數(shù)傳遞必須使用郵箱操作來實(shí)現(xiàn),需要使用外部數(shù)據(jù)存儲(chǔ)器和300字節(jié)左右的額外代碼量。迷你版本(含標(biāo)志傳送功能)就有700字節(jié)左右的代碼量,而且分配給每個(gè)任務(wù)的內(nèi)部RAM默認(rèn)為8個(gè)字節(jié)。TINY版本的RTX51最多可以允許16個(gè)任務(wù)運(yùn)行,這樣對(duì)于內(nèi)部RAM的分配變得非常困難。 筆者在某刊物上看到另外一種51單片機(jī)的RTOS,實(shí)際上是設(shè)置幾個(gè)標(biāo)志位。將中斷產(chǎn)生的標(biāo)志作為消息,在主程序中不斷地查詢這些標(biāo)志位。當(dāng)查詢到某個(gè)標(biāo)志位改變時(shí),就調(diào)用相應(yīng)的模塊。首先,這種方式不是嚴(yán)格意義上的消息驅(qū)動(dòng)機(jī)制,而且對(duì)于各個(gè)模塊之間的參數(shù)傳遞沒有定義,不利于功能模塊的劃分;此外,由于標(biāo)志位的查詢是順序進(jìn)行的,例如當(dāng)某個(gè)中斷發(fā)生,設(shè)置了標(biāo)志位BIT0和BIT4,假設(shè)標(biāo)志位的查詢順序是從BIT0開始的,本來按照正常次序要先執(zhí)行模塊0和模塊4,但是在運(yùn)行模塊0時(shí)有另一個(gè)中斷發(fā)生,設(shè)置了標(biāo)志位BIT2,造成模塊2比模塊4先執(zhí)行,這樣就有可能造成不可預(yù)料的后果。 基于非搶先式消息驅(qū)動(dòng)機(jī)制的RTOS是采用面向?qū)ο蟮乃季S方法,把各個(gè)功能模塊看成是不同的對(duì)象,對(duì)象之間的通信稱為發(fā)送消息。對(duì)象包含自己的數(shù)據(jù)和代碼,數(shù)據(jù)表征對(duì)象的特征,代碼用于相應(yīng)消息,使對(duì)象進(jìn)行某些動(dòng)作。對(duì)象響應(yīng)消息進(jìn)行處理時(shí)不被中斷,消息沒有優(yōu)先級(jí)之分,除非是中斷到來,即消息驅(qū)動(dòng)是非搶先式的。OS嚴(yán)格按照消息隊(duì)列的順序來“喚醒”相應(yīng)的對(duì)象;诜菗屜仁较Ⅱ(qū)動(dòng)機(jī)制的RTOS的系統(tǒng)運(yùn)行框圖如圖1所示。 圖1基于非搶先式消息驅(qū)動(dòng)機(jī)制的 RTOS的系統(tǒng)運(yùn)行框圖這樣做有幾個(gè)好處: (1) 絕大多數(shù)的應(yīng)用場(chǎng)合下,“實(shí)時(shí)性”只是體現(xiàn)在對(duì)外部事件的及時(shí)響應(yīng)和對(duì)數(shù)據(jù)的即時(shí)接收或者發(fā)送。這可借助于51單片機(jī)的中斷來實(shí)現(xiàn)。在中斷處理程序中,單片機(jī)只對(duì)外部事件作必要的處理或者只是將接收數(shù)據(jù)放到預(yù)定的緩沖區(qū)立即返回,同時(shí)向消息隊(duì)列發(fā)送一條消息通知操作系統(tǒng)。 (2) 采用面向?qū)ο蟮乃季S方法有利于模塊的劃分。在多人協(xié)同編寫1個(gè)軟件的時(shí)候顯得尤為重要。它使得負(fù)責(zé)單個(gè)模塊的軟件設(shè)計(jì)人員只需要關(guān)心自己的那一個(gè)部分(當(dāng)然管理模塊除外),各個(gè)功能模塊的交互是透明的。 (3) 具備相當(dāng)?shù)耐ㄓ眯浴H绻枰黾有碌墓δ苣K,只需要編寫新模塊的代碼,在OS中增加新模塊的標(biāo)志ID號(hào),而其他部分可以保持不變。 下面詳細(xì)闡述RTOS的構(gòu)成。 1 消息的封裝和消息隊(duì)列 基于非搶先式消息驅(qū)動(dòng)機(jī)制的RTOS,消息由4個(gè)部分組成:TASKID、COMMAND、PARA1、PARA2。其中,TASKID標(biāo)志功能模塊號(hào),OS中的消息循環(huán)根據(jù)TASKID來確定這個(gè)消息是發(fā)送給哪個(gè)功能模塊的,占用1個(gè)字節(jié);COMMAND指示該功能模塊執(zhí)行什么樣的操作,占用1個(gè)字節(jié);PARA1和PARA2是向該功能模塊傳遞的參數(shù)(如果需要的話),各占用1個(gè)字節(jié)的空間。 這樣一個(gè)消息占用4個(gè)字節(jié)的內(nèi)部RAM,消息隊(duì)列可以容納10條消息(消息隊(duì)列的大小可以視具體情況而定),借助2個(gè)指針:WPTR、RPTR。當(dāng)WPTR=RPTR時(shí),表示此時(shí)消息隊(duì)列中沒有消息,一旦WPTR≠RPTR時(shí),表明此時(shí)消息隊(duì)列非空。消息隊(duì)列的存儲(chǔ)位置可以根據(jù)具體使用場(chǎng)合來確定:當(dāng)需要使用的RAM空間較多時(shí),例如進(jìn)行大量數(shù)據(jù)采集一類的應(yīng)用,那么消息隊(duì)列可以位于外部RAM的空間,消息隊(duì)列可以相應(yīng)設(shè)置大一些;如果消息隊(duì)列位于內(nèi)部RAM區(qū),消息隊(duì)列就要盡量小,而且要合理安排所處的區(qū)域,對(duì)于51單片機(jī)來說可以位于30H~58H。 2 RTOS主循環(huán) RTOS的主循環(huán)最主要的任務(wù)就是定時(shí)查詢消息隊(duì)列。若消息隊(duì)列非空,則取出最“舊”的那一條消息,并喚醒相應(yīng)的任務(wù)。為此,RTOS還設(shè)置了1個(gè)“當(dāng)前消息區(qū)”的區(qū)域MSGARA,占用3個(gè)字節(jié)的內(nèi)部RAM空間。這3個(gè)字節(jié)的內(nèi)容由當(dāng)前取出的那一條消息來填充,分別是COMMAND、PARA1、PARA2,同時(shí)TASKID放在寄存器A中。當(dāng)調(diào)用外部函數(shù)TBL_JMP時(shí),外部函數(shù)TBL_JMP根據(jù)A中的TASKID喚醒相應(yīng)的任務(wù),同時(shí)把MSGARA區(qū)域中的參數(shù)傳遞給這個(gè)任務(wù)。OS的主循環(huán)程序代碼詳列如下: OS: LCALL〖〗TASK_0ms〖〗;清看門狗〖〗JB〖〗F_1ms, OS_GETMSG〖〗; 1ms定時(shí)到否?〖〗CLR〖〗F_1ms〖〗; 1ms定時(shí)到〖〗LCALL〖〗OS_CYCLE〖〗;定周期處理OS_GETMSG: ACALL〖〗GET_MSG;從消息隊(duì)列中取消息〖〗JC〖〗OS;消息隊(duì)列為空,則跳轉(zhuǎn)回循環(huán)頭部〖〗MOV〖〗DPTR, #TASK_TBL;任務(wù)列表首地址〖〗LCALL〖〗TBL_JMP;喚醒相應(yīng)的任務(wù)〖〗AJMP〖〗OS;跳轉(zhuǎn)回循環(huán)頭部注1:定周期處理函數(shù)OS_CYCLE在第四部分“RTOS的定時(shí)處理”中有詳細(xì)的介紹。 注2:TBL_JMP為外部函數(shù),入口參數(shù)有兩個(gè):一個(gè)是寄存器A,另一個(gè)是函數(shù)散轉(zhuǎn)表的首地址。TBL_JMP根據(jù)寄存器A中的內(nèi)容執(zhí)行相應(yīng)的任務(wù)。 注3:原則上1個(gè)任務(wù)的完成時(shí)間不應(yīng)該超過1ms。如果1個(gè)任務(wù)超過1ms,則必須進(jìn)行任務(wù)的分割,具體辦法在第四部分“RTOS的定時(shí)處理”中有詳細(xì)的介紹。 3 消息的獲取和發(fā)送 消息獲取函數(shù)僅僅由RTOS使用。主要功能是檢查消息隊(duì)列:如果消息隊(duì)列為空,則置CY=1后立即返回;若消息隊(duì)列非空,則取出最“舊”的那一條消息(消息隊(duì)列的排隊(duì)規(guī)則遵循先入先出的規(guī)則FIFO)。TASKID放在寄存器A中;COMMAND、PARA1、PARA2放在“當(dāng)前
  • 上一篇: 在單片機(jī)平臺(tái)上建立規(guī)范化的液晶顯示接口
  • 下一篇: VxWorks操作系統(tǒng)及實(shí)時(shí)多任務(wù)程序設(shè)計(jì)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1