新聞中心

        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 移植

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 手游| 军事| 丰镇市| 峡江县| 当阳市| 岳普湖县| 年辖:市辖区| 丹江口市| 凉山| 长岛县| 德庆县| 大竹县| 威远县| 合作市| 景泰县| 东光县| 民和| 安国市| 太保市| 翼城县| 娱乐| 乐至县| 江都市| 石门县| 建昌县| 广西| 湖北省| 通州区| 横峰县| 深泽县| 湛江市| 馆陶县| 安达市| 临高县| 康乐县| 科技| 农安县| 南汇区| 锦州市| 南康市| 将乐县|