只看关键的函数,在OS任务创建函数里的两个关键函数:
psp = OSTaskStkInit(task, p_arg, ptos, opt); //初始化任务堆栈
err = OS_TCBInit(prio, psp, pbos, id, stk_size, pext, opt);//TCB 初始化
psp = OSTaskStkInit(task, p_arg, ptos, opt); //初始化任务堆栈
err = OS_TCBInit(prio, psp, pbos, id, stk_size, pext, opt);//TCB 初始化
第一个是初始化任务堆栈,C语言的特点,任务切换需要保存r0到r15这些寄存器,之后栈顶地址返回给psp
第二个把psp作为传入参数,赋值给TCB结构体中的一个变量: