隨著嵌入式系統(tǒng)應(yīng)用的日益廣泛,RTOS越來(lái)越受到嵌入式系統(tǒng)開發(fā)人員的青睞,特別是進(jìn)入20世紀(jì)90年代后,RTOS更是逐步確立了在嵌入式系統(tǒng)設(shè)計(jì)中的主導(dǎo)地位。使用RTOS所帶來(lái)的好處是可提高嵌入式系統(tǒng)的可靠性,同時(shí)也提高了軟件的開發(fā)效率,縮短了開發(fā)周期。由于商業(yè)化RTOS軟件較高的價(jià)格和使用成本(版權(quán)費(fèi)、維護(hù)費(fèi)等)的限制,RTOS在國(guó)內(nèi)的應(yīng)用并不普遍。
μC/OS-II是一個(gè)的源碼免費(fèi)的嵌入式RTOS,具有源碼公開、可移植、可固化、可裁減、穩(wěn)定性和可靠性高的特點(diǎn)。μC/OS-II是基于優(yōu)先級(jí)的占先式(Preemptive)實(shí)時(shí)多任務(wù)內(nèi)核,多可支持64個(gè)任務(wù)(其中系統(tǒng)保留8個(gè)自用)。由于μC/OS-II是為嵌入式應(yīng)用編寫的通用軟件,故在具體應(yīng)用時(shí)需根據(jù)不同單片機(jī)的特點(diǎn)進(jìn)行移植。μC/OS-II的大部分代碼是用ANSI C編寫的,只有與處理器相關(guān)的一部分代碼用匯編語(yǔ)言編寫,所以具有很強(qiáng)的可移植性,可以在大多數(shù)8位、16位、32位單片機(jī)及數(shù)字信號(hào)處理器上運(yùn)行。本文介紹μC/OS-II在Infineon C167CR單片機(jī)上的移植技術(shù)。
1 Infineon C167CR單片機(jī)簡(jiǎn)介
C167CR單片機(jī)是Infineon公司80C166系列單片機(jī)中的一款高性能16位微處理器,其時(shí)鐘頻率可達(dá)25 MHz,片內(nèi)ROM多達(dá)128K,尋址能力16M。C167CR單片機(jī)集成度高,具有豐富的片內(nèi)資源:111個(gè)I/O引腳、16級(jí)56個(gè)中斷、32個(gè)捕捉/比較通道、16個(gè)A/D轉(zhuǎn)換通道、4個(gè)PMW通道、兩組通用定時(shí)器單元、8通道外圍事件控制器、同步/異步串行接口和高速同步串行接口、CAN模塊等。C167CR單片機(jī)的內(nèi)部資源及其C編譯器滿足μC/OS-II的移植條件。
2 μC/OS-II在C167CR單片機(jī)上的移植
在μC/OS-II的移植中需要修改五個(gè)文件:主頭文件INCLUDES.H、系統(tǒng)配置文件OS_CFG.H以及與CPU相關(guān)的三個(gè)文件(OS_CPU.H、OS_CPU_A.ASM以及OS_CPU_C.C)。移植中使用的編譯器是Keil公司的Keil C166編譯器。五個(gè)文件具體內(nèi)容請(qǐng)見本刊網(wǎng)絡(luò)補(bǔ)充版(http://www.dpj.com.cn)。
3 移植示例
示例中,共創(chuàng)建了二個(gè)任務(wù),其中發(fā)送任務(wù)SenderTask()以發(fā)送消息的形式連續(xù)地向發(fā)送郵箱中傳送0~9這10個(gè)數(shù),當(dāng)收到接收郵箱的消息之后,就開始發(fā)送下一個(gè)數(shù)字;接收任務(wù)ReceiverTask()從發(fā)送郵箱中取出數(shù)字,從P2口輸出,再延時(shí)5 s,而后向接收信箱回送消息。程序清單如下:
#include "includes.h""
#define TASK_STK_SIZE 512 /*任務(wù)堆棧為1KB*/
#define N_TASKS 2 /*任務(wù)數(shù)*/
OS_STK TaskStk[N_TASKS][TASK_STK_SIZE];
/*任務(wù)堆棧*/
OS_EVENT pReceiverMailBox; /*接收郵箱*/
OS_EVENT pSenderMailBox; /*發(fā)送郵箱*/
void ReceiverTask(void *data);
void SenderTask(void *data);
/*主程序*/
void main (void){
DP2 = 0xffff; /*設(shè)置P2口為輸出*/
OSInit(); /*系統(tǒng)初始化*/
pReceiverMailBox = OSMboxCreate((void*)0);
/*創(chuàng)建接收郵箱*/
pSenderMailBox = OSMboxCreate((void*)0);
/*創(chuàng)建發(fā)送郵箱*/
OSTaskCreate(ReceiverTask, (void *)0, (void *)&TaskStk[0][TASK_STK_SIZE - 1], 3); /*創(chuàng)建接收任務(wù)*/
OSTaskCreate(SenderTask, (void *)0, (void *)&TaskStk[1][TASK_STK_SIZE - 1], 4); /*創(chuàng)建發(fā)送任務(wù)*/
OSStart(); /*啟動(dòng)系統(tǒng)*/
}
/*發(fā)送任務(wù)*/
void SenderTask (void *data){
INT8U count = 0;
INT8U error;
data = data;
while (1){
for (count=0;count<10;count++){
OSMboxPost(pSenderMailBox, (void*)&count);
OSMboxPend(pReceiverMailBox, 0, &error);
}
}
}
/*接收任務(wù)*/
void ReceiverTask (void *data){
INT8U *count;
INT8U error;
data = data;
OSTickISRInit();
while (1) {
count = (INT8U*)OSMboxPend(pSenderMailBox, 0, &error);
P2 = *count;
OSTimeDlyHMSM(0, 0, 5, 0);
OSMboxPost(pReceiverMailBox, (void*)1);
}
}
uC/OS-Ⅱ在C167CR單片機(jī)上的移植
更新時(shí)間: 2006-02-15 19:17:55來(lái)源: 粵嵌教育瀏覽量:3554
粵嵌動(dòng)態(tài)
推薦閱讀
- ·摩通傳動(dòng)(深圳)有限公司專場(chǎng)招聘會(huì)
- ·廣州2515嵌入式開發(fā)就業(yè)班
- ·嵌入式系統(tǒng)代碼功耗與內(nèi)存優(yōu)化策略
- ·粵嵌科技深度參與第二屆全國(guó)大學(xué)生職業(yè)規(guī)劃大賽,以產(chǎn)教融合助力高質(zhì)量就業(yè)
- ·移遠(yuǎn)通信科技有限公司專場(chǎng)招聘會(huì)
- ·嵌入式系統(tǒng)設(shè)計(jì)的核心技術(shù)挑戰(zhàn)與創(chuàng)新實(shí)踐
- ·嵌入式實(shí)時(shí)操作系統(tǒng)的任務(wù)調(diào)度優(yōu)化策略與實(shí)踐
- ·湖北精實(shí)機(jī)電科技有限公司專場(chǎng)招聘會(huì)(長(zhǎng)沙校區(qū))
- ·信號(hào)量與互斥鎖在資源競(jìng)爭(zhēng)中的協(xié)同控制機(jī)制
- ·粵嵌科技2025年中總結(jié)大會(huì)召開——擘畫產(chǎn)教融合新藍(lán)圖