joystring 发表于 2013-12-5 12:47:58

RTOS任务初始化时通用寄存器的内存管理问题?

本帖最后由 joystring 于 2013-12-5 12:49 编辑

OS_STK *OSTaskStkInit (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT16U opt)


{



OS_STK *stk;



INT32U task_addr;


opt= opt;



stk= ptos;





task_addr = (INT32U)task & ~1;




*(stk)= (INT32U)task_addr;//PC



*(--stk)= (INT32U)0x14141414L;//R14




*(--stk)= (INT32U)0x12121212L;//R12




*(--stk)= (INT32U)0x11111111L;//R11




*(--stk)= (INT32U)0x10101010L;//R10




*(--stk)= (INT32U)0x09090909L;//R9




*(--stk)= (INT32U)0x08080808L;//R8




*(--stk)= (INT32U)0x07070707L;//R7




*(--stk)= (INT32U)0x06060606L;//R6




*(--stk)= (INT32U)0x05050505L;//R5




*(--stk)= (INT32U)0x04040404L;//R4




*(--stk)= (INT32U)0x03030303L;//R3




*(--stk)= (INT32U)0x02020202L;//R2




*(--stk)= (INT32U)0x01010101L;//R1



RTOS初始化任务有这么一段,通用寄存器内存地址据说是可以随便指定


这我里有个问题,指定的这个地址是不是要根据不同的CPU的RAM实际地址做出相应的更改,例如有些MCU RAM地址是0x20000000----0x200003FF,上面程序中那个地址为什么能指定在这个地址之外呢,知道的兄弟请解答一下,谢谢!
页: [1]
查看完整版本: RTOS任务初始化时通用寄存器的内存管理问题?