新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > μC/OS-II系統在AVM處理器上的移植

        μC/OS-II系統在AVM處理器上的移植

        作者: 時間:2013-04-12 來源:網絡 收藏

        LDR r6,addr_OSTCBHighRdy

        LDR r6,[r6]

        LDR sp,[r6] ;得到新任務的堆棧指針

        ;OSTCBCur=OSTCBHighRdy

        STR r6,[r4]

        ;得到當前新任務的TCB地址

        LDMFD sp!,{r4}

        MSR SPSR_cxsf,r4

        LDMFD sp!,{r4}

        MSR SPSR_cxsf,r4

        LDMFD sp!,{r0-r12,lr pc}

        OSIntCtxSw() ;中斷級的任務切換函數

        LDMIA sp!,{al-vl,lr}

        SUBS pc,lr,#4

        SUB lr,lr,#4

        MOV r12,lr

        MRS lr,SPSR

        AND lr,lr,#0XFFFFFE0

        ORR lr,lr,#0XD3

        MSR CPSR_CXSF,lr

        OSTickISR() ;中斷服務函數

        STMDB sp!,{r0-r11,lr}

        MRS r0,CPSR

        ORR r0,r0,#0x80; ;設置中斷禁止標志

        MSR CPSR_cxsf,r0 ;中斷結束

        LDR r0,I_ISPC

        LDR r1,=BIT_TIMER0

        STR r1,{r0}

        BL IrqStart

        BL osTimeTick

        BL IrqFinish

        LDR r0,=need_to_swap_context

        LDR R2,[R0]

        CMP r2,#1

        LDREQ pc,=_CON_SW

        完成上述工作后,μC/OS-II就可以運行在ARM處理器上了。

        3 使用μC/OS-II系統應注意的問題

        ①μC/OS-II和Linux等分時操作系統不同,不支持時間片輪轉法。它是一個基于優先級的實時操作系統。每一個任務的優先級必須不同(分析它的源碼會發現,μC/OS-II把任務的優先級當作任務在標識來使用,如果優先級相同,任務將無法區分)。進入就緒態的優先級最高的任務首先得到CPU的使用權,只有等它交出CPU的使用權后,其它任務才可以被執行。所以,它只能就是多任務,不能就是多進程,至少不是我們所熟悉的那種多進程。

        ②μC/OS-II對共享資源提供了保護的機制。μC/OS-II是一個支持多任務的操作系統。我們可以把一個完整的程序劃分成幾個任務,不同的任務執行不同的功能。對于共享資源(比如串口),μC/OS-II也提供了很好的解決辦法,一般情況下使用的是信號量方法。我們創建一個信號量并對它進行初始化,當一個任務需要使用一個共享資源時,它必須先申請得到這個信號量。在這個過程中即使有優先權更高的任務進入了就緒態,因為無法得到信號量,也不能使用該資源。在μC/OS-II中稱為優先級反轉。簡單地說,就是高優先級任務必須等待低優先級任務的完成。在上述情況下,在兩個任務之間發生優先級后轉是無法避免的。所以不在使用μC/OS-II時,必須對所開發的系統了解清楚才能選擇對于某種共享資源是否使用信號量。

        ③μC/OS-II內存管理不夠完善。在分析許多μC/OS-II的應用實例中發現,任務棧空間和內存分區的創建采用了定義全局數組的方法,這樣實現起來固然簡單,但不夠靈活有效。

        編譯器會將全局數組作為未初始化的全局變量,放到應用程序映像的數據段。數組的大小是固定的,生成映像后不可能在使用中動態地改變。對于任務棧空間來說,數組定義大了會造成內存浪費;定義小了任務棧溢出,會造成系統崩潰。對于內存分區,在不知道系統初始化后給用戶留下了多少自由內存空間的情況下,很難定義內存分區所使用數組的大小。此外,現在μC/OS-II只支持固定大小的內存分區,容易造成內存浪費。μC/OS-II將來應該被改進以支持可變大小的內存分區。因此,系統初始化后能清楚地掌握自由內存空間的情況是很重要的。所以,應避免使用全局數組分配內存空間,關鍵是要知道整個應用程序在編譯、鏈接后代碼段和數據段的大小,在目標板內存中是如何定位,以及目標板內存的大小。

        總之,隨著各種智能嵌入式系統的復雜化和系統實時性需求的提高,伴隨應用軟件朝著系統化發展的加速,功能強大的實時操作系統μC/OS-II將會有更大的發展。


        上一頁 1 2 3 下一頁

        關鍵詞: μCOS-II S3C44BOX 移植

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 彩票| 苍梧县| 收藏| 贵德县| 金乡县| 深水埗区| 曲麻莱县| 师宗县| 临沭县| 西乌珠穆沁旗| 会宁县| 繁昌县| 旅游| 竹山县| 三门县| 温泉县| 虞城县| 大宁县| 枣庄市| 皋兰县| 枣强县| 博兴县| 柯坪县| 康保县| 竹溪县| 修文县| 桃园县| 梨树县| 明光市| 玉山县| 通山县| 贵溪市| 鹿邑县| 磐安县| 绍兴市| 甘孜| 竹溪县| 南京市| 普陀区| 寻甸| 平原县|