发新帖我要提问
12
返回列表
打印
[应用相关]

尝试两个任务的切换

[复制链接]
楼主: dingbo95
手机看帖
扫描二维码
随时随地手机跟帖
21
dingbo95|  楼主 | 2019-6-16 20:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
使用F11进入到FirstTask()函数内部,接着按F11将PSP的值设置为0

使用特权

评论回复
22
dingbo95|  楼主 | 2019-6-16 20:06 | 只看该作者
使用F11 触发PendSV异常,执行完毕后会进入PendSV_Hander函数中

使用特权

评论回复
23
dingbo95|  楼主 | 2019-6-16 20:07 | 只看该作者
接着F11,MRS R0, PSP指令后,R0的值将会刷新为0

使用特权

评论回复
24
dingbo95|  楼主 | 2019-6-16 20:07 | 只看该作者
接着F11,由于CBZ R0,PendSVHander_nosave指令,此时R0的值为0,会被跳转到PendSVHander_nosave代码段。

使用特权

评论回复
25
dingbo95|  楼主 | 2019-6-16 20:08 | 只看该作者
接着F11,执行LDR R0, = currentTask  LDR R1, = nextTask  LDR R2,[R1]  STR R2,[R0] 四条指令后,会完成nextTask向currentTask赋值操作。

使用特权

评论回复
26
dingbo95|  楼主 | 2019-6-16 20:08 | 只看该作者
接着F11,执行LDR R0,[R2],从currentTask取出堆栈的地址给R0

使用特权

评论回复
27
dingbo95|  楼主 | 2019-6-16 20:08 | 只看该作者
接着F11,执行LDMIA R0!,{R4-R11} 从堆栈取值批量加载R4-R11寄存器中。

使用特权

评论回复
28
dingbo95|  楼主 | 2019-6-16 20:09 | 只看该作者
接着F11,执行MSR PSP,R0 更改PSP值,为进程间切换做准备。

使用特权

评论回复
29
dingbo95|  楼主 | 2019-6-16 20:09 | 只看该作者
最后程序会跳转到第一个要执行中,实现了从FirstTask()任务到任务1的跳转。

使用特权

评论回复
30
dingbo95|  楼主 | 2019-6-16 20:10 | 只看该作者
下面就是任务1与任务2的切换,FirstTask()任务已经完成了它的使命。接着F11到umTaskSched()

使用特权

评论回复
31
dingbo95|  楼主 | 2019-6-16 20:10 | 只看该作者
F10进入umTaskSched()任务调度函数中,这里完成了任务的切换,最终会进入umTaskSwitch()函数。

使用特权

评论回复
32
dingbo95|  楼主 | 2019-6-16 20:11 | 只看该作者
再次F10 进入umTaskSwitch()函数,在umTaskSwitch()函数中只是完成了PendSV异常的触发,再一次回到了汇编执行区域,这个难缠的家伙!

使用特权

评论回复
33
dingbo95|  楼主 | 2019-6-16 20:11 | 只看该作者
这次PSP的值已经不再是0的,我们将PSP的值传给R0寄存器,需要注意的是PSP的值是当前任务的堆栈地址。这样我们就可以轻松保存当前任务的状态了。

使用特权

评论回复
34
dingbo95|  楼主 | 2019-6-16 20:11 | 只看该作者
接着F11 ,保存当前任务状态,将R4-R11批量存入R0中。

使用特权

评论回复
35
dingbo95|  楼主 | 2019-6-16 20:12 | 只看该作者
接着F11,接着将R0的值写入该任务堆栈的地址中。

896985d063221731ef.png (129.55 KB )

896985d063221731ef.png

使用特权

评论回复
36
dingbo95|  楼主 | 2019-6-16 20:13 | 只看该作者
后面就是重复了,一路F11过去,看是否进入任务2中。

使用特权

评论回复
37
dingbo95|  楼主 | 2019-6-16 20:13 | 只看该作者
按照我们的计划已经进入任务2中,在逻辑分析仪中已经看到任务2中变量产生的波形。

使用特权

评论回复
38
dingbo95|  楼主 | 2019-6-16 20:13 | 只看该作者
最后就是验证,能否从任务2切换回任务1,所以一路F11过去。很幸运,已经可以实现了两个任务之间的切换了。

使用特权

评论回复
39
dingbo95|  楼主 | 2019-6-16 20:14 | 只看该作者
最后来展示一个全速运行的逻辑分析仪的波形,以此纪念我打字的辛苦!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则