初级会员

- 积分
- 106
- 金钱
- 106
- 注册时间
- 2018-9-19
- 在线时间
- 15 小时
|
1金钱
本帖最后由 tc2544 于 2019-5-21 21:11 编辑
战舰V3的ucosii移植,初始化任务栈函数中,为什么要给任务栈的R14(LR)赋值0xFFFFFFFEL???
而探索者F4的ucosii移植,初始化任务栈函数中,为什么要给任务栈的R14(LR)赋值函数OS_TaskReturn ???
战舰V3的初始化任务栈函数:
战舰V3的PendSV中断函数:
以下是我的错误分析,求纠正:
先创建任务A,运行任务A,再创建任务B,切换到任务B运行 (任务B的优先级高于任务A)
1:运行第一个任务A时,PendSV中断结束后,通过汇编BX LR送合法的LR(位2=1)给PC完成中断返回,使用PSP出栈,硬件自动把第一个任务的R0-R3,R12,LR,PC,xPSR赋值给CPU。其中,任务A的LR取值0xFFFFFFFE(非法值)并赋值给CPU的LR。2:任务A切换到任务B,PendSV中断返回时,通过汇编BX LR送非法的LR(0xFFFFFFFE)给PC,由于LR非法引起INPVC最终产生用法Fault异常。
|
|