<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • uC/OS-II在EP7312上的移植

    時間:2024-09-29 16:29:32 理工畢業(yè)論文 我要投稿
    • 相關(guān)推薦

    uC/OS-II在EP7312上的移植

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

    引 言

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

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

    1 μC/OS-II簡介

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

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

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

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

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

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

     ② 用C語言可以打開和關(guān)閉中斷;

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

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

     ⑤ 處理器有將堆棧指針和其它寄存器讀出和存儲到堆棧或內(nèi)存中的指令。

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

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

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

    typedef unsigned char BOOLEAN;

    typedef unsigned char INT8U; /*無符號8位整數(shù) */

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

    typedef unsigned int INT16U; /*無符號16位整數(shù) */

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

    typedef unsigned long INT32U; /*無符號32位整數(shù) */

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

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

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

      μC/OS-II需要先禁止中斷訪問代碼的臨界區(qū),并且在訪問完畢后重新允許中斷。μC/OS-II定義了兩個宏來禁止和允許中斷: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() IRQF

    【uC/OS-II在EP7312上的移植】相關(guān)文章:

    uC/OS-II在配電監(jiān)測終端儀表中的應(yīng)用03-18

    uC/OS-II內(nèi)核超時等待機(jī)制的分析03-08

    μC/OS-II在凌陽單片機(jī)SPCE061A上的移植03-18

    uC/OS-II的任務(wù)切換機(jī)理及中斷調(diào)度優(yōu)化03-20

    uC/OS-II任務(wù)棧處理的一種改進(jìn)方法03-18

    實時嵌入式操作系統(tǒng)μC/OS-II在MPC555上的移植03-19

    μC/OS-II在80196KC單片機(jī)上的移植03-18

    使用uC/OS-II操作系統(tǒng)的短信息電話機(jī)03-18

    MiniGUI到EV44B0Ⅱ上的移植研究03-15

    主站蜘蛛池模板: 国产午夜精品一区二区| 91久久精品国产免费直播| 精品国产欧美一区二区三区成人 | 精品多毛少妇人妻AV免费久久 | 久久99精品国产麻豆蜜芽| 日韩精品无码永久免费网站| 中文字幕精品无码久久久久久3D日动漫 | 欧美精品色精品一区二区三区| 欧美激情视频精品一区二区| 在线观看自拍少妇精品| 国内精品久久久久久久97牛牛| 国产精品一级香蕉一区| 精品国产毛片一区二区无码| 亚洲精品国精品久久99热一| 精品国产一区二区三区色欲| 91精品国产91久久久久福利| 国产精品污WWW一区二区三区| 日韩精品人成在线播放| 国产麻豆精品久久一二三| 国产精品黄页免费高清在线观看| 午夜精品久久久内射近拍高清| 国产精品国产亚洲精品看不卡| 国产成人精品一区二区三区| 亚洲日韩精品一区二区三区 | 久久精品人人槡人妻人人玩AV| 亚洲第一精品在线视频| 亚洲国产成人精品91久久久| 中文字幕亚洲精品| 久久99国内精品自在现线| 国内精品久久久久久久涩爱| 99国产精品永久免费视频| 日韩精品无码免费视频| 99久久婷婷国产综合精品草原 | 免费精品国自产拍在线播放| 久久99精品国产麻豆宅宅| 国产午夜无码精品免费看动漫| 精品一区二区三区在线观看 | 国语精品一区二区三区| 亚洲精品线路一在线观看| 国内精品久久久久久麻豆| 国产成人精品a视频一区|