www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]uC/OS-II在EP7312上的移植

 摘要:首先介紹μC/OS-II操作系統(tǒng)的特點(diǎn),重點(diǎn)分析μC/OS-II在EP7312上的移植方法,介紹μC/OS-II在EP7312中的開(kāi)發(fā)過(guò)程。

    關(guān)鍵詞:嵌入式操作系統(tǒng) μC/OS-II EP7312

引 言

  隨著Internet和后PC時(shí)代的到來(lái),嵌入式系統(tǒng)的應(yīng)用愈來(lái)愈廣泛,嵌入式產(chǎn)品在人們的生活中無(wú)處不在。今天,嵌入式系統(tǒng)帶來(lái)的工業(yè)年產(chǎn)值已超過(guò)1萬(wàn)億美元,已經(jīng)在IT產(chǎn)業(yè)中占有很大的比重。

  通常,應(yīng)用程序?qū)η度胧杰浖幕疽笫求w積小、執(zhí)行速度快、具有較好的裁減性和可移植性。嵌入式軟件的靈魂是嵌入式操作系統(tǒng)。在特定的操作系統(tǒng)之上開(kāi)發(fā)應(yīng)用軟件,可以讓程序開(kāi)發(fā)人員屏蔽掉很多低層硬件細(xì)節(jié),使得應(yīng)用程序調(diào)試方便、移植簡(jiǎn)單、易維護(hù),同時(shí)開(kāi)發(fā)周期也短。目前,實(shí)時(shí)操作系統(tǒng)很多,如VxWorks、Window CE、pSOS、QNX、LynxOS等等。這些操作系統(tǒng)都具有高可靠性、很強(qiáng)的實(shí)時(shí)性等特點(diǎn),但它們都是商業(yè)操作系統(tǒng),價(jià)格昂貴,人們往往很難接受。μC/OS-II的出現(xiàn)是對(duì)這些商業(yè)操作系統(tǒng)的一個(gè)很大的沖擊。μC/OS-II是源碼公開(kāi)的實(shí)時(shí)操作系統(tǒng),是一個(gè)自由操作系統(tǒng)。程序開(kāi)發(fā)人員可以改寫(xiě)源代碼,使之符合自己的要求。裁減掉不需要的部分,使操作系統(tǒng)變得小巧、靈活,并且能滿(mǎn)足用戶(hù)特定操作系統(tǒng)的需要。

1 μC/OS-II簡(jiǎn)介

  μC/OS-II并非一個(gè)完整的實(shí)時(shí)操作系統(tǒng),它只是一個(gè)實(shí)時(shí)內(nèi)核。μC/OS-II不像其它實(shí)時(shí)操作系統(tǒng)一樣,提供給用戶(hù)的是一個(gè)標(biāo)準(zhǔn)的API函數(shù),程序開(kāi)發(fā)人員利用操作系統(tǒng)提供的API函數(shù)進(jìn)行應(yīng)用程序的開(kāi)發(fā)。要想在μC/OS-II內(nèi)核上進(jìn)行應(yīng)用程序的開(kāi)發(fā),就需要程序開(kāi)發(fā)人員在實(shí)時(shí)內(nèi)核的基礎(chǔ)上建立自己的實(shí)時(shí)操作系統(tǒng)。首先,把μC/OS-II移植到自己的硬件目標(biāo)板上,寫(xiě)出相應(yīng)的驅(qū)動(dòng)程序以及用戶(hù)圖形界面等等;在這些接口函數(shù)之上,加上用戶(hù)自己的應(yīng)用程序,就構(gòu)成了嵌入式軟件。

2 μC/OS-II在EP7312上的移植

  μC/OS-II的移植條件是:只要該處理器有堆棧,有CPU內(nèi)部寄存器入棧、出棧指令;使用的C編譯器支持內(nèi)嵌匯編(inline assembly)或者該C語(yǔ)言可擴(kuò)展,可連接匯編模塊,使得關(guān)中斷、開(kāi)中斷能在C語(yǔ)言程序中實(shí)現(xiàn)。Cirrus Logic公司生產(chǎn)的EP7312芯片內(nèi)部采用的是ARM720T處理器,內(nèi)部有37個(gè)寄存器。其中R13通常用作堆棧指針。堆棧尋址是隱含的,堆棧指針?biāo)付ǖ拇鎯?chǔ)單元就是堆棧的棧頂,堆棧尋址通常有兩種方式向上生長(zhǎng)和向下生長(zhǎng)。ARM處理器有ARM和Thumb兩種指令集。每種指令集都有豐富的指令可以對(duì)堆棧進(jìn)行操作。堆棧指針指向最后壓入堆棧的有效數(shù)據(jù),稱(chēng)為滿(mǎn)堆棧(full stack);堆棧指針指向下一個(gè)數(shù)據(jù)項(xiàng)放入的空位置,稱(chēng)為空堆棧(empty stack)。根據(jù)堆棧的生長(zhǎng)方向不同,可以生成4種類(lèi)型的堆棧,即滿(mǎn)遞增、空遞增、滿(mǎn)遞減、空遞減。我們所使用的ARM SDT(ARM Software Development Kit)開(kāi)發(fā)系統(tǒng)內(nèi)含的編譯器,同樣也支持內(nèi)嵌匯編,所以μC/OS-II完全可以移植到EP7312上。

  μC/OS-II核心代碼很小,程序開(kāi)發(fā)人員要把它移植到自己的目標(biāo)板中只需做少量的工作。圖1是μC/OS-II硬件和軟件的體系結(jié)構(gòu)。

  雖然μC/OS-II大部分源代碼是用C語(yǔ)言寫(xiě)的,但是完成和處理器一些有關(guān)的代碼時(shí),還是必須要用匯編語(yǔ)言來(lái)實(shí)現(xiàn)的。寄存器的讀、寫(xiě)只能通過(guò)匯編語(yǔ)言的存儲(chǔ)和加載指令來(lái)實(shí)現(xiàn)。要使μC/OS-II能夠正常工作, 處理器必須滿(mǎn)足以下要求:

?、?處理器的C編譯器能產(chǎn)生可重入代碼;

?、?用C語(yǔ)言可以打開(kāi)和關(guān)閉中斷;

?、?處理器支持中斷,并且能夠產(chǎn)生定時(shí)中斷(通常在10~100Hz之間);

?、?處理器能夠支持容納一定量數(shù)據(jù)的硬件堆棧;

?、?處理器有將堆棧指針和其它寄存器讀出和存儲(chǔ)到堆?;騼?nèi)存中的指令。

  μC/OS-II的移植包括以下幾個(gè)部分。

    (1)設(shè)置與編譯器有關(guān)的代碼[OS_CPU.H]

  在不同的處理器中有不同的字長(zhǎng),所以必須定義一系列數(shù)據(jù)類(lèi)型以確保移植的正確性。另外,在μC/OS-II中,不使用C的short、int和long等數(shù)據(jù)類(lèi)型,這些都是和編譯器相關(guān)的。下面就是μC/OS-II定義的一部分?jǐn)?shù)據(jù)類(lèi)型。

typedef unsigned char BOOLEAN;

typedef unsigned char INT8U; /*無(wú)符號(hào)8位整數(shù) */

typedef signed char INT8S; /*有符號(hào)8位整數(shù) */

typedef unsigned int INT16U; /*無(wú)符號(hào)16位整數(shù) */

typedef signed int INT16S; /*有符號(hào)16位整數(shù) */

typedef unsigned long INT32U; /*無(wú)符號(hào)32位整數(shù) */

typedef signed long INT32S; /*有符號(hào)32位整數(shù) */

typedef float FP32; /*單精度浮點(diǎn)數(shù) */

typedef double FP64; /*雙精度浮點(diǎn)數(shù) */

  μC/OS-II需要先禁止中斷訪(fǎng)問(wèn)代碼的臨界區(qū),并且在訪(fǎng)問(wèn)完畢后重新允許中斷。μC/OS-II定義了兩個(gè)宏來(lái)禁止和允許中斷:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。

#define OS_ENTER_CRITICAL() IRQFIQDE

#define IRQFIQDE __asm

{

mrs r0, CPSR;

stmfd sp!, {r0};

orr r0, r0, #NOINT;

msr CPSR_c, r0;

}

#define OS_EXIT_CRITICAL() IRQFIQRE

#define IRQFIQRE __asm

{

ldmfd sp!, {r0};

msr CPSR_c, r0;

}

#endif

  (2)編寫(xiě)4個(gè)匯編語(yǔ)言函數(shù)[OS_CPU_A.S]

  μC/OS-II的移植實(shí)例要求用戶(hù)編寫(xiě)4個(gè)簡(jiǎn)單的匯編語(yǔ)言函數(shù):

OSStartHighRdy()

OSCtxSw()

OSIntCtxSw()

UCOS_IRQHandler

詳細(xì)內(nèi)容見(jiàn)本刊網(wǎng)絡(luò)補(bǔ)充版(http://www.dpj.com.cn)。

  (3)用C語(yǔ)言編寫(xiě)6個(gè)與操作系統(tǒng)有關(guān)的函數(shù)[OS_CPU_C.C]

這6個(gè)函數(shù)是:

OSTaskStkInit()

OSTaskCreatHook()

OSTaskDelHook()

OSTaskSwHook()

OSTaskStatHook()

OSTaskTickHook()

  這6個(gè)函數(shù)只對(duì)OSTaskStkInit()編寫(xiě)代碼,后5個(gè)函數(shù)必須聲明,但是內(nèi)部并沒(méi)有代碼。OSTaskCreate()和OSTaskCreateExt()通過(guò)調(diào)用OSTaskStkInit()來(lái)初始化任務(wù)的堆棧結(jié)構(gòu)。這個(gè)函數(shù)的移植代碼,可參考文獻(xiàn)[3]。

3 測(cè)試、編寫(xiě)驅(qū)動(dòng)和應(yīng)用程序

  做完以上工作以后,就要測(cè)試移植的是否正確。測(cè)試一個(gè)μC/OS-II實(shí)時(shí)內(nèi)核并不復(fù)雜,就是讓這個(gè)實(shí)時(shí)內(nèi)核在自己的目標(biāo)板上跑起來(lái)。開(kāi)始時(shí),可以運(yùn)行一些簡(jiǎn)單的任務(wù)和時(shí)鐘節(jié)拍中斷任務(wù),如果調(diào)試成功就可以在上面添加應(yīng)用程序。

  μC/OS-II移植完成以后,就要在這個(gè)實(shí)時(shí)內(nèi)核之上編寫(xiě)接口驅(qū)動(dòng)程序。由于嵌入式操作系統(tǒng)體積更小,功能更強(qiáng),且快速、穩(wěn)定,更具有針對(duì)性,因此不像其它操作系統(tǒng)那樣,對(duì)系統(tǒng)的所有接口設(shè)備都需要驅(qū)動(dòng)、管理、調(diào)度和監(jiān)視。由于嵌入式產(chǎn)品是針對(duì)特殊的用途而設(shè)計(jì)的,有很強(qiáng)的專(zhuān)一性,因此,在編寫(xiě)驅(qū)動(dòng)程序時(shí)內(nèi)容更精簡(jiǎn),更具有穩(wěn)定性,編寫(xiě)出的驅(qū)動(dòng)模塊更小。編寫(xiě)驅(qū)動(dòng)程序應(yīng)完成以下基本功能:①對(duì)設(shè)備初始化和釋放;②把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù);③讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請(qǐng)求的數(shù)據(jù);④檢測(cè)和處理設(shè)備出現(xiàn)的錯(cuò)誤。實(shí)現(xiàn)了以上功能以后,一個(gè)嵌入式操作系統(tǒng)就基本構(gòu)成了。

  完成了μC/OS-II的移植和驅(qū)動(dòng)程序的編寫(xiě)以后,利用操作系統(tǒng)提供的API函數(shù)編寫(xiě)應(yīng)用程序,調(diào)用μC/OS-II中與應(yīng)用程序相關(guān)的系統(tǒng)服務(wù)。調(diào)試通過(guò)后,固化到目標(biāo)板上,這個(gè)嵌入式應(yīng)用軟件就完成了。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

μC/OS-II以其可移植、可固化、可裁剪的特性著稱(chēng),適用于需要實(shí)時(shí)性的項(xiàng)目。

關(guān)鍵字: μC/OS-II

加利福尼亞庫(kù)爾弗城2024年7月16日 /美通社/ --?Snail, Inc. (納斯達(dá)克股票代碼: SNAL) (以下簡(jiǎn)稱(chēng)"蝸牛游戲"或"公司")是一家領(lǐng)先的全球獨(dú)立開(kāi)發(fā)商和發(fā)行商,專(zhuān)注于互動(dòng)數(shù)字娛樂(lè),今日宣布方舟:...

關(guān)鍵字: iOS 安卓系統(tǒng) 移植 移動(dòng)平臺(tái)

上海2023年2月16日 /美通社/ -- 近日,諾華中國(guó)宣布與中國(guó)紅十字基金會(huì)正式啟動(dòng)"中國(guó)地中海貧血救助項(xiàng)目"廣西地區(qū)專(zhuān)項(xiàng)援助,將在當(dāng)?shù)囟ㄏ蛸Y助困難家庭地中海貧血患兒,同時(shí)通過(guò)相關(guān)醫(yī)生培...

關(guān)鍵字: BSP 控制 移植 大眾

北京2022年12月7日 /美通社/ -- 2022年12月3日,由高博醫(yī)學(xué)(血液?。V東研究中心南方春富(兒童)血液病研究院、南方醫(yī)科大學(xué)南方醫(yī)院共同主辦的高博醫(yī)學(xué)論壇·華南造血干細(xì)胞移植論壇通過(guò)線(xiàn)下線(xiàn)上...

關(guān)鍵字: 移植 HD PID 血細(xì)胞

捐款近4000萬(wàn) 上海2022年12月7日 /美通社/ -- 2022年12月7日下午,中芯國(guó)際"芯肝寶貝計(jì)劃"十年紀(jì)念暨2022年度捐贈(zèng)儀式在上海仁濟(jì)醫(yī)院舉行。十年來(lái),該項(xiàng)目捐贈(zèng)善款總額近4000...

關(guān)鍵字: 中芯國(guó)際 移植

北京2022年11月14日 /美通社/ -- 2022年10月,高博醫(yī)學(xué)(血液?。┍本┭芯恐行谋本└卟┎┤梳t(yī)院造血干細(xì)胞移植科迎來(lái)了五周歲"生日"。在吳彤主任帶領(lǐng)下,移植科于2017年從無(wú)到有,歷經(jīng)五...

關(guān)鍵字: 移植 OS MT CD

上海2022年11月6日 /美通社/ -- 在第五屆中國(guó)國(guó)際進(jìn)口博覽會(huì)期間,武田制藥攜5款創(chuàng)新產(chǎn)品亮相武田罕見(jiàn)遺傳與血液疾病領(lǐng)域?qū)?chǎng)發(fā)布會(huì)。用于移植后抗巨細(xì)胞病毒(CMV)感染或疾病治療[1]的馬立巴韋[2]迎來(lái)&quo...

關(guān)鍵字: 移植 BSP CD FDA

亙喜生物科技集團(tuán)宣布正在中國(guó)開(kāi)展的、旨在全面評(píng)估GC007g治療復(fù)發(fā)/難治性急性B淋巴細(xì)胞白血病效果的1/2期注冊(cè)性臨床試驗(yàn)順利進(jìn)入2期研究階段,首例入組患者已給藥。GC007g是亙喜生物旗下的一款靶向CD19的供者來(lái)源...

關(guān)鍵字: 移植 CD

北京2022年9月9日 /美通社/ -- 諾誠(chéng)健華(香港聯(lián)交所代碼:09969)今天宣布,tafasitamab (Minjuvi®)聯(lián)合來(lái)那度胺治療不適合自體干細(xì)胞移植 (ASCT) 條件的復(fù)發(fā)/難治彌漫性大B...

關(guān)鍵字: VI NJU BSP 移植

蘇州2022年8月19日 /美通社/ -- 近日,華中科技大學(xué)同濟(jì)醫(yī)學(xué)院附屬協(xié)和醫(yī)院心外科董念國(guó)教授團(tuán)隊(duì)運(yùn)用與心擎醫(yī)療聯(lián)合研發(fā)的短中期體外全磁懸浮心室輔助裝置MoyoAssist®,成功救治三例危重的終...

關(guān)鍵字: 磁懸浮 移植 IC 靜脈
關(guān)閉