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

基于LPC1343的UCOS-II移植

2013-04-29 00:00:00朱東亮
中國新通信 2013年17期

【摘要】本文首先介紹了LPC1343的硬件架構(gòu)和UCOS-II實時操作系統(tǒng)的特點,最后介紹了UCOS-II在LPC1343上移植的方法和注意事項。

【關(guān)鍵詞】LPC1343UCOS-II實時操作系統(tǒng)

[Abstract]The document introduced the hardware structure of LPC1343 and character of real-time Operating system、UCOS-II,then discussed the measures and matters needing attention to transplanting ucos-II.

[Key word]LPC1343, UCOS-II, real-time OS

本文以實時多任務操作系統(tǒng)UCOS-II為例,介紹了UCOS-II在LPC1343上的移植和應用,本文首先介紹了LPC1343的體系機構(gòu),然后對UCOS-II的架構(gòu)進行了簡單的描述,最后介紹了UCOS-II在LPC1343上的移植和使用方法。

一、系統(tǒng)的硬件架構(gòu)

LPC1343是飛利浦公司生產(chǎn)的基于第二代ARM Cortex-M3內(nèi)核的微控制器。最高運行頻率達到72M. LPC1343配置有32KB的Flash存儲器、8KB的數(shù)據(jù)存儲器、集成了USB設(shè)備、1個快速模式I2 C接口、1個UART、4個通用定時器。

內(nèi)嵌NVIC控制器,該中斷控制器可對低優(yōu)先級中斷進行延時,對外部中斷進行有效控制。中斷向量表可重定位,具有軟中斷向量,適合于在使用操作系統(tǒng)時進行模式切換。

System Tick定時器,可產(chǎn)生固定的10ms中斷,適合于作為操作系統(tǒng)的時鐘信號。

二、UCOS-II簡介

UCOS-II是一個可裁減的、搶占式、實時多任務內(nèi)核,具有高度可移植性,特別適合于微處理器和控制器。UCOS-II絕大多數(shù)代碼使用ANSI C語言進行開發(fā)。僅與CPU硬件相關(guān)部分是用匯編語言編寫的,總量約200行,目的是便于移植到任何一種CPU上。UCOS-II僅僅包含了任務調(diào)度,任務管理,時間管理,內(nèi)存管理和任務間的通信和同步等基本功能。不提供輸入輸出管理,文件系統(tǒng),網(wǎng)絡等額外的服務。用可戶根據(jù)需要自行實現(xiàn)。

UCOS-II的架構(gòu)可以分為三層,底層為物理層,主要是嵌入式系統(tǒng)硬件的驅(qū)動包括系統(tǒng)的時鐘信號。中間層為系統(tǒng)層,用于對任務的管理,它提供了郵箱,信號量,消息隊列同步信號。可以根據(jù)需要通過配置os_cfg_r.h里定義的宏對UCOS-II進行裁剪。最高層為應用層,使用者可根據(jù)系統(tǒng)提供的API函數(shù)創(chuàng)建任務完成應用工作。

三、移植的主要工作

移植UCOS-II時主要解決以下幾個問題:第一.系統(tǒng)時鐘信號怎么產(chǎn)生;第二.初始的任務堆棧是什么結(jié)構(gòu),任務堆棧是遞增堆棧還是遞減堆棧;第三.哪些變量需要保存到堆棧;第四.怎么處理臨界段代碼;第五.任務之間如何切換。

我們使用System Tick定時器作為系統(tǒng)的時鐘,時鐘頻率為100Hz,當系統(tǒng)的任務已知時,可以對該值進行調(diào)節(jié)使系統(tǒng)的負荷和響應速度達到一個平衡。發(fā)生中斷時,系統(tǒng)對當前的任務狀態(tài)進行裁決,以決定是否要進行任務切換。時鐘的初始化代碼可用C語言編寫。

任務堆棧有兩種結(jié)構(gòu),遞減堆棧和遞增堆棧,遞減堆棧就是堆棧從高地址向低地址方向增長,遞增堆棧就是堆棧從低地址向高地址方向增長。LPC1343的堆棧為遞減堆棧。

LPC1343在發(fā)生中斷時,需要保存的寄存器依次有堆棧指針,xPSR狀態(tài)寄存器,鏈接寄存器R14,R12,R3-R0, R11-R4。當然這些寄存器是否保存到堆棧里在實際中與中斷程序的內(nèi)容有關(guān),但我們在移植UCOS時。必須假設(shè)新的任務將會使用到這些寄存器,因為操作系統(tǒng)要處理的任務對于我們來說是未知的。這個將在OSTaskStkInit函數(shù)中用到。

UCOS-II的任務有5種狀態(tài),分別為睡眠態(tài),掛起態(tài),就緒態(tài),運行態(tài),中斷態(tài)。任務一旦創(chuàng)建即進入就緒態(tài),如果處于就緒態(tài)的任務優(yōu)先級比正在運行的任務優(yōu)先級高,則發(fā)生中斷,優(yōu)先級高的任務得以運行,而被中斷的任務則處于中斷態(tài),當該高優(yōu)先級的任務執(zhí)行完畢且就緒任務的優(yōu)先級沒有中斷態(tài)任務的優(yōu)先級高時,中斷態(tài)的任務重新進入運行態(tài)。當運行態(tài)的任務等待某事件發(fā)生時則進入掛起態(tài)。處于掛起態(tài)的任務當某事件發(fā)生時進入就緒態(tài)。當任務被刪除時,進入休眠態(tài)。處于中斷態(tài)的任務不能被刪除,否則將引起系統(tǒng)崩潰。

任務的切換有兩種情況,第一種是高優(yōu)先級的任務因等待某事件的發(fā)生而請求掛起,使低優(yōu)先級的任務得以運行,這種情況下通過調(diào)用OSCtxSw函數(shù)進行任務切換。這種任務稱為任務級任務;第二種情況是高優(yōu)先級的任務出現(xiàn),在System Tick中斷服務程序中直接切換到高優(yōu)先級的任務,這種任務稱為中斷級任務。中斷級任務的切換通過OSIntCtxSw函數(shù)實現(xiàn)。OSCtxSw的示例代碼如下:

OSCtxSw

PUSH {R4, R5}

LDR R4, =NVIC_INT_CTRL

LDR R5, =NVIC_PENDSVSET;觸發(fā)軟件中斷

STR R5, [R4]

POP {R4, R5}

BX LR

OSIntCtxSw函數(shù)也由匯編語言實現(xiàn),由于代碼同OSCtxSw類似,這里不再列出。

臨界段代碼指的是系統(tǒng)執(zhí)行的不可分割的代碼,這些代碼一旦執(zhí)行就不允許從中打斷,所以在執(zhí)行臨界段代碼前必須關(guān)中斷,在臨界段代碼執(zhí)行結(jié)束后必須立即開中斷,所以臨界段代碼必須精簡,以確保系統(tǒng)的運行效率。進入和退出臨界段代碼的例程如下:

OS_ENTER_CRITICAL;進入臨界段的示例代碼

CPSID I;禁止所有中斷

PUSH {R1,R2}

LDR R1, =OsEnterSum;OsEnterSum++

LDRB R2, [R1]

ADD R2, R2, #1

STRB R2, [R1]

POP {R1,R2}

BXLR

OS_EXIT_CRITICAL;退出臨界段的示例代碼

PUSH {R1, R2}

LDR R1, =OsEnterSum;OsEnterSum--

LDRB R2, [R1]

SUB R2, R2, #1

STRB R2, [R1]

MOV R1, #0

CMP R2, #0;如果OsEnterSum=0,使能中斷

MSREQ PRIMASK, R1;恢復PRIMASK寄存器的值

POP {R1, R2}

BX LR

任務切換時首先將當前正在執(zhí)行的任務的狀態(tài)保存到當前任務的任務堆棧中,從待運行的新任務的任務堆棧中獲取該任務的運行狀態(tài),執(zhí)行新任務。CPU的內(nèi)部寄存器越多,需要保存和獲取任務狀態(tài)時消耗的時間也越多,因此System Tick的最短時間不得小于這個切換所要消耗的時間。

本文定義了3個任務,分別為USB接收幀處理任務,應用處理任務,USB發(fā)送幀任務處理。當USB接收到應用層的命令時,進行接收幀處理;提取有效命令,進行應用命令處理;回送響應數(shù)據(jù)。任務之間通過郵箱進行同步。

OSTaskCreate (TaskUSBRecvFrameProcess, (void *)0,UsbRecvBuf[TASK_STK_SIZE-1], TASK_PRIO+5);

OSTaskCreate (TaskFrameProcess,(void *)0,CmdProcessBuf[TASK_STK_SIZE×2],TASK_PRIO+7);

OSTaskCreate(TaskUsbSendFrameProcess, (void *)0,UsbSendBuf[TASK_STK_SIZE-1], TASK_PRIO+4);

經(jīng)過整體測試和壓力測試,系統(tǒng)運行穩(wěn)定,達到預期功能。

主站蜘蛛池模板: 精品综合久久久久久97| 国产91线观看| 亚洲国产综合第一精品小说| 99久久精品国产自免费| 一级黄色网站在线免费看| 国产凹凸视频在线观看| 香蕉eeww99国产精选播放| 天天综合网色| 免费在线不卡视频| 亚洲天堂视频在线观看免费| 91黄视频在线观看| 欧美精品黑人粗大| 亚洲欧洲日产国码无码av喷潮| 老色鬼欧美精品| 极品私人尤物在线精品首页| 日韩av电影一区二区三区四区| 国产午夜精品一区二区三区软件| 啊嗯不日本网站| 精品成人免费自拍视频| 亚洲欧美日韩动漫| 全免费a级毛片免费看不卡| 国产毛片基地| 日韩国产另类| 精品国产一区91在线| 国产精品手机在线观看你懂的| 亚洲欧美另类日本| 免费欧美一级| 日韩区欧美区| 国产男女免费完整版视频| 国产一级裸网站| 国产成人无码AV在线播放动漫 | 国产日韩精品欧美一区喷| 久久国产亚洲偷自| 欧洲精品视频在线观看| 亚洲第一成年网| 手机在线免费不卡一区二| 色婷婷在线影院| 人人91人人澡人人妻人人爽 | 97成人在线视频| 重口调教一区二区视频| 国产成人亚洲欧美激情| 五月婷婷伊人网| 又污又黄又无遮挡网站| 欧美激情福利| AV熟女乱| 国模视频一区二区| 亚洲黄网在线| 19国产精品麻豆免费观看| 四虎在线观看视频高清无码 | 欧美啪啪网| 国产网站免费看| 国产无遮挡裸体免费视频| 久久a毛片| 欧美日韩国产在线观看一区二区三区| 成年女人a毛片免费视频| 亚洲人成网站18禁动漫无码| 中文成人无码国产亚洲| 久久精品国产电影| 欧类av怡春院| 美女一级毛片无遮挡内谢| 亚洲一级毛片| 在线色国产| 玖玖精品视频在线观看| 91精品国产无线乱码在线| 国产在线观看第二页| 国产视频只有无码精品| 日韩精品视频久久| 99久久无色码中文字幕| 免费看一级毛片波多结衣| 综合天天色| 亚洲精品高清视频| 美女内射视频WWW网站午夜| 高清不卡一区二区三区香蕉| 欧美爱爱网| 国产精品视频第一专区| 久久婷婷六月| 视频二区国产精品职场同事| 色噜噜在线观看| 色老二精品视频在线观看| 青青草久久伊人| 免费又爽又刺激高潮网址| 在线看片中文字幕|