22787|4

613

帖子

2

TA的资源

纯净的硅(初级)

楼主
 

UCOS与普通任务结构比较的一个突出处!! [复制链接]

        以前玩汇编,明白两种程序结构,一种是顺序型的,就是从头到尾.尾巴上跳到头上,一直循环运行.还有一种就是定时,一个时间段一个标志位了,也就是时间片轮询,另外一个就是中断处理,中断主要是处理突发状况,像按键,像外部信号突然过来要处理等等 ,就是突发的事件.
        今天看网上一些对UCOS的评论,发现系统可以运行得更有效率,上面两种结构有一个问题,当A任务运行后,运行完,检测B有没有就绪,没有就一直在检测标志位,或者A任务运行中,突然中断了,有突发事件了,这时处理突发事件,处理完了,要回到A任务,但是这时B任务更紧急了,这时在汇编中也有处理的方法,直接把A任务的标志位给撤了,但是这样其实他返回的时候,虽然标志位撤了,但是还是先回到A任务的,只不过这次的A任务执行完了,下一个A任务才不做.但是我看UCOS可以直接就去处理更紧急的B任务,这种操作就更人性化了,汇编中我是在A任务中有加一段B任务是否更紧急的判断代码,来判断是不是要跳到B任务去,同样B任务也有一段代码来判断A是否更紧急,现在还没看懂UCOS是如何做到从中断返回,直接去处理B任务的,但是UCOS在中断返回直接就跳到B任务,这个操作有点秀,当然代码如何实现我没看明白,汇编至少要把本轮的A执行完才能跳到B,就是加了B的判断,也得汇编走到判断处才能跳到B,所以返回就直接跳到B,这个操作很秀,继续努力,看懂代码对自己是有一个提升.
  A任务,中断,返回直接执行B任,如何实现返回直接就跳转了,难道是改变了返回的地址?

最新回复

UCOS里是调度,不是跳转。  详情 回复 发表于 2019-1-27 15:19
点赞(1) 关注(1)
个人签名我是一头搞电子的猪,猪是一种好色的动物,猪八戒就是代表.       

回复
举报

1382

帖子

2

TA的资源

五彩晶圆(初级)

沙发
 
每个任务有独立的堆栈,任务切换首要的是切换堆栈。
 
 

回复

6040

帖子

202

TA的资源

版主

板凳
 
每个任务都有一个上下文,上下文包含了程序的运行相关信息,根据这个信息就可以轻易切换进程,如果对这方面的知识感兴趣,可以看看操作系统的书。
 
 
 

回复

7230

帖子

195

TA的资源

五彩晶圆(高级)

4
 

OSCtxSw()上下文切换过程

(1)OSCtxSw() 首先保存当前任务的 SR 和 PC 到任务栈中,保存顺序依赖于 CPU 在中断发生时对于栈帧的要求。这里,假设先保存 SR,再保存 PC,然后保存剩余寄存器。
(2)OSCtxSw() 保存寄存器栈指针到 TCB 的 StkPtr 中,开始上下文切换。简言之, OSTCBCurPtr->StkPtr = R14。
(3)OSCtxSw() 然后加载待执行任务的任务栈指针到 R14 中,即 R14 = OSTCBHighRdyPtr->StkPtr。
(4)最后, OSCtxSw() 恢复 CPU 的寄存器为新任务栈中的寄存器帧。SR 和 PC 通常时 CPU 在退出 ISR 时自动完成加载。

 
 
 

回复

606

帖子

20

TA的资源

一粒金砂(高级)

5
 
UCOS里是调度,不是跳转。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表