999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

μC/OS-Ⅱ在C8051F系列單片機上的移植及其應用系統開發

2011-01-01 00:00:00王秀偉唐立偉
職業·下旬 2011年4期

隨著微處理器技術的飛速發展和嵌入式系統實時性要求的不斷提高,應用實時多任務操作系統(RTOS)作為嵌入式設計的開發平臺已逐步成為嵌入式應用設計的主流。本研究討論將μC/OS-Ⅱ移植到C8051F系列高性能8位單片機中,并以C8051F060為例闡述了其應用系統的開發過程。

一、μC/OS-Ⅱ的基本工作原理

1.任務管理

micro;C/OS-II中的任務可以是一個無限的循環,也可以在一次執行完畢后被“刪除”掉,即該任務可以認為CPU完全屬于該任務本身,實時應用程序的設計過程包括將問題分割為多個任務。micro;C/OS-II可以管理64個任務,每個任務有一定的優先級,且優先級不重復。

2.任務調度機制的實現

micro;C/OS-II是可剝奪型內核,優先級高的任務一旦就緒就能剝奪優先級較低任務的CPU使用權,這提高了系統的實時響應能力。在沒有中斷情況下,任務間的切換一般會調用OSSched()函數。micro;C/OS-II的中斷服務子程序和一般前/后臺的操作有所不同。

3.任務之間的通信

在micro;C/OS-II中,可以通過信號量、消息郵箱和消息隊列等機制,實現數據共享和任務通信。消息郵箱用一個指針型變量,一個任務或一個中斷服務子程序通過內核服務,將一則消息放入郵箱,一個或多個任務通過內核服務接受這則消息。每個郵箱有相應的等待消息任務表,等待消息的任務在無消息時被置掛起態,并記入郵箱等待消息任務表中。消息放入郵箱,內核將運行等待消息任務表中優先級最高的任務。

二、移植及應用

C8051F060系列單片機特別適用于任務繁重的小型化測控系統。當芯片具有的功能被較多地使用時,系統要處理的任務就較多,編程頭緒也多。為了簡化應用程序實現程序模塊化,提高應用程序的實時性和可靠性,將μCOS2Ⅱ移植到C8051F060中就成為一件很有意義的事。

1.micro;C/OS-II的移植

(1)修改INCLUDES.H文件:增加的頭文件放在頭文件列表的最后。

#include \"os_cpu.h\"

#include \"os_cfg.h\"

#include \"ucos_ii.h\"

(2)修改OS CPU.H文件:為確保系統在KEIL環境下正常運行,重新定義了一系列與C8051F060和KEIL編譯器相關的數據結構、宏和常數。

typedef unsigned char OS_STK;/*定義堆棧寬度為8位*/

typedef unsigned char OS_CPU_SR;

#define OS_ENTER_CRITICAL() EA=\"0\"

#define OS_EXIT CRITICAL()EA=\"1\"

(3)修改OS_CPU_A.ASM文件

①編寫OSSTartHihgRdy()函數:獲得將要恢復運行的就緒任務的堆棧映像的最低地址,并計算出堆棧長度,然后向系統堆棧復制數據、堆棧指針SP和堆棧映像指針?C_XBP,最后利用中斷返回。

②編寫OSCtxSw()函數:先從當前任務的TCB控制塊中獲得當前任務堆棧長度和堆棧映像指針,然后將系統堆棧的內容復制到任務堆棧映像,最后獲得將要恢復運行的就緒任務的TCB,程序跳至OSSTartHihgRdy()函數的入口,實現任務的切換。

③編寫OSIntCtxSw()函數:代碼大部分與OSCtxSw()相同,不同之處在于此處不需要再保存寄存器;需要調整堆棧指針(SP=SP-4),去掉在調用OSIntExit(),OSIntCtxSw()中壓入堆棧中的多余的內容,以使堆棧中只包含任務的運行環境。

④編寫OSTickISR()函數:用定時器0作中斷源,初始化定時器0使系統每秒中斷100次,節拍率Tick=100次/秒。

(4)修改OS_CPU_C.C文件:編寫OSTaskStkInit()函數用來初始化堆棧。

2. 基于micro;C/OS-II的C8051F060應用系統開發

移植了micro;C/OS-II的C8051F060的每個功能都可以作為一個獨立的任務,每個任務都有自己的堆棧空間,可以被其他任務和中斷服務程序掛起。在設計中,主函數均以OSInit()開始,以OSStart()結束,中間部分為與硬件相關的系統初始化函數。對于任務的建立,必須依照micro;C/OS-II系統中建立任務的格式,根據自己的需求來確定任務的個數,并且根據任務的重要程度和被調用的頻率來設置好優先級。創建好任務后,在主函數外面分別列出各個任務函數,每個任務函數都是一個無限循環程序,調用實現某些功能的應用程序函數,然后按設計的需求設置掛起方式和掛起時間。

應用系統測試程序實現了6個任務:Task1是每1s發送CAN數據包,Task2是處理CAN接收到的數據,Task3是每3s發送串口數據,Task4是處理串口接收到的數據,Task5是處理按鍵信息,Task6是顯示數據。CAN總線接收采用中斷方式,其優先級高于其他任務,為了保證系統的實時性,在中斷程序中不處理數據,只是發送一個信號量,在Task2中處理CAN數據。串口數據接收亦采用中斷方式,其優先級低于CAN高于其他任務。串口數據發送采用的是查詢方式,按字節發送。程序中設置6個任務的優先級依次為13,11,14,12,15,16。

在主程序中,首先初始化C8051F060和CAN,調用OsInit();然后調用API函數,創建6個任務(不包括空閑任務);再創建一個信號量CAN_EVENT,為中斷與Task2通信所用;最后調用OSStart(),OS系統開始運行優先級最高的任務。Task2的優先級最高,但是在沒收到CAN_EVENT之前,任務一直處于休眠狀態,當CAN接收器收到數據包后,Task2進入就緒態,在中斷返回時,進行任務切換,執行優先級最高Task2。在Task2還未收到信號量之前,Task1、Task3、Task4、Task5和Task6根據時間延時和優先級的不同各自獨立運行。

三、結束語

將編寫的測試程序下載到C8051F060應用系統中進行了實際的運行測試,測試表明,基于micro;C/OS-II的C8051F060應用系統中的各任務工作穩定可靠,取得了滿意的效果,為進行嵌入式應用系統的進一步設計奠定了基礎。

(作者單位:黑龍江省大慶職業學院)

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 国产乱人伦偷精品视频AAA| 综合亚洲色图| 麻豆精品久久久久久久99蜜桃| 日韩国产亚洲一区二区在线观看| 狠狠躁天天躁夜夜躁婷婷| 久久综合色天堂av| 亚洲黄色片免费看| 日韩在线成年视频人网站观看| Aⅴ无码专区在线观看| 97在线公开视频| 福利一区三区| 日韩在线成年视频人网站观看| 国产一级视频久久| 中文字幕在线免费看| 国产区91| 一本大道在线一本久道| 欧美黄色a| 伊人成人在线| 亚洲综合色婷婷| 亚洲一区二区约美女探花| 玖玖免费视频在线观看| 免费看a毛片| 亚欧美国产综合| 91精品人妻一区二区| 欧美国产另类| 天天摸夜夜操| 精品久久综合1区2区3区激情| 欧美人与牲动交a欧美精品 | 亚洲精品国产综合99| 无遮挡国产高潮视频免费观看| 五月天综合网亚洲综合天堂网| 特级aaaaaaaaa毛片免费视频| 在线观看免费人成视频色快速| 久久婷婷五月综合色一区二区| 国产精品九九视频| 青青草原国产av福利网站| 亚洲国产日韩视频观看| 一级不卡毛片| 99这里只有精品在线| 欧美区一区二区三| 无码国产偷倩在线播放老年人| 国产成人无码AV在线播放动漫| 成AV人片一区二区三区久久| 国产亚洲欧美在线专区| 国产尤物在线播放| 老司国产精品视频91| 久久夜色精品| 波多野结衣一区二区三区四区视频 | 日本三级欧美三级| 国产欧美精品一区aⅴ影院| AV色爱天堂网| 国产激情国语对白普通话| 99er精品视频| 91福利免费视频| 欧亚日韩Av| 丝袜美女被出水视频一区| 亚洲无限乱码| 一级毛片无毒不卡直接观看| 亚洲人成人伊人成综合网无码| 久久免费视频播放| 18禁影院亚洲专区| 国产精品成人一区二区不卡| 91成人免费观看| 国产精品漂亮美女在线观看| 国产永久无码观看在线| 伊人国产无码高清视频| 狠狠色丁香婷婷| 三级毛片在线播放| 综合网天天| 狠狠五月天中文字幕| 欧美性精品| 亚洲成人免费在线| 婷婷激情五月网| 亚洲精品久综合蜜| 蜜桃臀无码内射一区二区三区| 日本少妇又色又爽又高潮| 亚洲人成网站在线播放2019| 国产主播在线一区| 日本在线亚洲| 色婷婷天天综合在线| 一级黄色欧美| 国产天天射|