新聞中心

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

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

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

        *--stk=(unsigned int)task; /*lr*/

        *--stk=(unsigned int)task /*pc*/

        *--stk=0; /*r12*/

        *--stk=0; /*r11*/

        *--stk=0; /*r10*/

        *--stk=0; /*r9*/

        *--stk=0; /*r8*/

        *--stk=0; /*r7*/

        *--stk=0; /*r6*/

        *--stk=0; /*r5*/

        *--stk=0; /*r4*/

        *--stk=0; /*r3*/

        *--stk=0; /*r2*/

        *--stk=0; /*r1*/

        *--stk=(unsigned int)pdata; /*r0*/

        *--stk=(SVC32MODE0x0); /*cpsr IRQ,

        *--stk=(SVC32MODE0x0); /*spsr IRQ,關閉FIQ*/

        return((void*)stk);

        }

        后5個函數是鉤子函數,可以不加代碼:

        void OSTaskCreateHook(OS_TCB *ptcb)

        void OSTaksDelHool (OS_TCB *ptcb)

        void OSTaskSwHook(void)

        void OSTaskStatHook(void)

        (3)用匯編語言編寫4個與處理器相關的函數(OS_CPU.ASM)

        OSStartHighRdy() ;運行優先級最高的就緒任務

        LDR r4,addr_OSTCBCur ;得到當前任務的TCB地址

        LDR r5,addr_OSTCBHighRdy ;得到高優先級任務的TCB地址

        LDR r5,addr_OSTCBHighRdy ;得到高優先級任務的TCB地址

        LDR r5,[r5] ;得到堆棧指針

        LDR sp,[r5] ;切換到新的堆棧

        STR r5,[r4] ;設置新的當前任務的TCB地址

        LDMFD sp!,{r4}

        MSR CPSR_cxsf,r4

        LDMFD sp!,{r0-r12,lr,pc} ;開始新的任務

        END

        OSCtxsw() 任務級的任務切換函數

        STMFD sp!,{lr} ;保存PC指針

        STMFD sp!,{lr} ;保存lr指針

        STMFD sp!,{r0-r12} ;保存寄存器文件和返回地址

        MRS r4,CPSR

        STMFD sp!,{r4} ;保存當前PSR

        MRS r4,SPSR

        STMFD sp!,{r4}

        ;OSPrioCur=OSPrioHighRdy

        LDR r4,addr_OSPrioCur

        LDR r5,addr_OSPrioHighRdy

        LDRB r6,[r5]

        STRB r6,[r4]

        ;得到當前任務的TCB地址

        LDR r4,addr_OSTCBCur

        LDR r5,[r4]

        STR sp,[r5] ;保存棧指針在占先任務的TCB上

        ;取得高優先級任務的TCB地址



        關鍵詞: μCOS-II S3C44BOX 移植

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宜君县| 玉环县| 镇雄县| 开封市| 腾冲县| 香格里拉县| 山东省| 古田县| 新蔡县| 蛟河市| 介休市| 文山县| 淮阳县| 凤城市| 宜良县| 绵阳市| 阳曲县| 习水县| 玉环县| 临沧市| 武安市| 龙南县| 南木林县| 嵊州市| 巩义市| 麻江县| 哈巴河县| 准格尔旗| 鄄城县| 新余市| 莒南县| 项城市| 大田县| 芜湖县| 新干县| 禄劝| 高陵县| 抚州市| 林甸县| 岐山县| 郧西县|