新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > μC/OS-II系統(tǒng)在AVM處理器上的移植

        μC/OS-II系統(tǒng)在AVM處理器上的移植

        作者: 時間:2013-04-12 來源:網(wǎng)絡(luò) 收藏

        μC/OS-II功能強大,支持56個用戶任務(wù),其內(nèi)核為占先式,支持信號量、郵箱、消息隊列等多種常用的進(jìn)程間通信機制,現(xiàn)已成功應(yīng)用到眾多商業(yè)嵌入式系統(tǒng)中,是一個成熟穩(wěn)定的實時內(nèi)核。與大多商用RTOS不同的是,μC/OS-II公開所有的源代碼,90%的代碼使用標(biāo)準(zhǔn)的ANSI C語言書寫,程序可讀性強、性好;同時它可免費獲得,即使商業(yè)應(yīng)用也只收取少量的許可費用。因此,對μC/OS-II實時操作系統(tǒng)的學(xué)習(xí)研究、開發(fā)、應(yīng)用具有重要意義。

        Samsung S3C44B0X微處理器是三星公司專為手持設(shè)備和其它嵌入式應(yīng)用提供的高性價比的微控制器解決方案。它使用ARM公司的16位/32位RISC結(jié)構(gòu),內(nèi)核是ARM7TDMI,工作在66MHz,片上集成了以下部件:8K Cache、外部存儲器控制器、LCD控制器、4個DMA通道、2個UART、1個多主I2C總線控制器、1個I2C總線控制器,以及5通道PWM定時器和1個內(nèi)部定時器、8通道12位ADC等,能夠與常用的外圍設(shè)備實現(xiàn)無縫連接,功能強大。目前,國內(nèi)應(yīng)用較為廣泛。

        1 μC/OS-II實時操作系統(tǒng)結(jié)構(gòu)

        圖1說明了μC/OS-II的軟硬件體系結(jié)構(gòu)。應(yīng)用程序處于整個系統(tǒng)的頂層,每個任務(wù)都可以認(rèn)為自已獨占了CPU,因而可以設(shè)計成為一個無限循環(huán)。μC/OS-II處理器無關(guān)的代碼提供了μC/OS-II的系統(tǒng)服務(wù),應(yīng)用程序可以使用這些API函數(shù)進(jìn)行內(nèi)存管理、任務(wù)間通信及創(chuàng)建、刪除任務(wù)等。

        大部分的μC/OS-II代碼是使用ANSI C語言書寫的,因此μC/OS-II的可性好,然而仍需要使用C和匯編語言寫一些處理器相關(guān)代碼。μC/OS-II的需要滿足以下要求:

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

        ②可以使用C調(diào)用進(jìn)入和退出臨界區(qū)代碼;

        ③處理器必須支持硬件中斷,并且需要一個定時中斷源;

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

        ⑤處理器需要有能夠在CPU寄存器與內(nèi)核和堆棧交換數(shù)據(jù)的指令。

        S3C44B0X處理器完全滿足上述要求。

        2 實時內(nèi)核μC/OS-II在S3C44B0X上的移植

        我們使用ARM SDT編譯器,移植μC/OS-II主要包括以下幾個步驟。

        (1)設(shè)置OS_CPU.H中與處理器和編譯器相關(guān)的代碼

        *************************************************

        與編譯器相關(guān)的數(shù)據(jù)類型

        *************************************************

        typedef unsigned char BOOLEAN;

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

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

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

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

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

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

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

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

        typedef unsigned int OS_STK;/*堆棧入口寬度為16位*/與ARM處理器相關(guān)的代碼:

        #define OS_ENTER_CRITICAL () ARMEnableInt() /*開啟中斷*/

        #define OS_STK_GROWTH 1 /*堆棧由高地址向低地址增長*/

        (2)用C語言編寫6個操作系統(tǒng)相關(guān)的函數(shù)(OS_CPU_C.C)

        void OSTaskStkInit(void(task)(void *pd),void *pdata,void *ptos,INT16U opt)

        { unsigned int *stk;

        opt =opt; /*因“opt”變量沒有用到,防止編譯器產(chǎn)生警告*/

        stk =(unsigned int *)ptos; /*裝載堆棧指針*/

        /*為新任務(wù)創(chuàng)建上下文*/


        上一頁 1 2 3 下一頁

        關(guān)鍵詞: μCOS-II S3C44BOX 移植

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 新沂市| 望谟县| 调兵山市| 瓦房店市| 泉州市| 景宁| 苍山县| 通城县| 石河子市| 阿巴嘎旗| 桑日县| 乌鲁木齐县| 沾化县| 商南县| 都安| 丁青县| 泾阳县| 钦州市| 兴业县| 光山县| 逊克县| 阿巴嘎旗| 扎囊县| 舞阳县| 柳林县| 淳化县| 巨野县| 福海县| 招远市| 高雄市| 周宁县| 镇雄县| 突泉县| 浦城县| 盖州市| 平湖市| 清流县| 武义县| 宁阳县| 赫章县| 鲁甸县|