nu-lb-nuc140 RTX 流程 分析(五)

nu-lb-nuc140 RTX 流程 分析(五)
nu-lb-nuc140 RTX 流程 分析(五)

t_phaseA = os_tsk_create (phaseA, 1); /* start task phaseA */
nu-lb-nuc140 RTX 流程 分析(五)
nu-lb-nuc140 RTX 流程 分析(五)
#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

nu-lb-nuc140 RTX 流程 分析(五)
nu-lb-nuc140 RTX 流程 分析(五)

nu-lb-nuc140 RTX 流程 分析(五)

nu-lb-nuc140 RTX 流程 分析(五)

nu-lb-nuc140 RTX 流程 分析(五)

nu-lb-nuc140 RTX 流程 分析(五)

nu-lb-nuc140 RTX 流程 分析(五)
R0是作为函数的返回值,写到PSP栈中。

nu-lb-nuc140 RTX 流程 分析(五)

nu-lb-nuc140 RTX 流程 分析(五)

nu-lb-nuc140 RTX 流程 分析(五)

nu-lb-nuc140 RTX 流程 分析(五)
PSP 的内容只是 修改了 R0的值,其他的没有修改。

nu-lb-nuc140 RTX 流程 分析(五)

nu-lb-nuc140 RTX 流程 分析(五)

nu-lb-nuc140 RTX 流程 分析(五)

SVC 0 之后 ,会把r0 ,r1,r2,r3,r12,返回地址依次存入PSP堆栈中
SVC 0 返回的时候,

nu-lb-nuc140 RTX 流程 分析(五)
nu-lb-nuc140 RTX 流程 分析(五)