nu-lb-nuc140 RTX 流程 分析(五)
nu-lb-nuc140 RTX 流程 分析(五)
t_phaseA = os_tsk_create (phaseA, 1); /* start task phaseA */
#define os_tsk_create(tsk,prio) _os_tsk_create((U32)rt_tsk_create,tsk,prio,NULL,NULL)
extern OS_TID _os_tsk_create (U32 p, void (*task)(void), U32 prio_stksz,
void *stk, void *argv) __SVC_0;
r12 中保存的是p 函数的地址 ----- rt_tsk_create
r0 中保存的是task 函数的地址 ----- phaseA
r1 中保存的是 prio_stksz的值 ----- 1
r2 中保存的是stk
r3中保存的是argv
R0是作为函数的返回值,写到PSP栈中。
PSP 的内容只是 修改了 R0的值,其他的没有修改。
SVC 0 之后 ,会把r0 ,r1,r2,r3,r12,返回地址依次存入PSP堆栈中
SVC 0 返回的时候,