以下是uc/os-II在iar for arm 上的OS_CUP_A.asm文件的一段,是针对于cortex M3的。我有几个问题<br />1,为什么要在尾部定义__OS_Running: .long OSRunning 啊(指针)?不能直接对OSRunning等寻址吗?<br />2,如果一定要重新这样定义,怎么样移植到keil(RV) 中啊?<br /><br /><br /> .extern OSRunning // ; External references<br /> .EXTERN OSPrioCur<br /> .EXTERN OSPrioHighRdy<br /> .EXTERN OSTCBCur<br /> .EXTERN OSTCBHighRdy<br /> .EXTERN OSIntNesting<br /> .EXTERN OSIntExit<br /> .EXTERN OSTaskSwHook<br /><br /> .<br /> .<br /> .<br /> .<br /> .<br /> .<br /><br /><br />OSStartHighRdy:<br /><br /> LDR R4, =NVIC_SYSPRI2 <br /> LDR R5, =NVIC_PENDSV_PRI<br /> STR R5, [R4]<br /> MOV R4, #0 <br /> MSR psp, R4<br /> LDR R4, __OS_Running <br /> //通过 __OS_Running访问OSRunning<br /> MOV R5, #1<br /> STRB R5, [R4]<br /><br /> LDR R4, =NVIC_INT_CTRL <br /> LDR R5, =NVIC_PENDSVSET<br /> STR R5, [R4]<br /><br /> CPSIE I <br /> .<br /> .<br /> .<br /> .<br /> .<br /> .<br /><br /> .DATA<br /><br />__OS_TaskSwHook: <br /> .word OSTaskSwHook<br /><br />__OS_IntExit:<br /> .long OSIntExit<br /><br />__OS_IntNesting:<br /> .long OSIntNesting<br /><br />__OS_PrioCur:<br /> .long OSPrioCur<br /><br />__OS_PrioHighRdy:<br /> .long OSPrioHighRdy<br /><br />__OS_Running:<br /> .long OSRunning<br /><br />__OS_TCBCur:<br /> .long OSTCBCur<br /><br />__OS_TCBHighRdy:<br /> .long OSTCBHighRdy<br /><br /> .END<br /> |
|