还是嵌入式编程

[复制链接]
2611|12
 楼主| jadetang 发表于 2008-5-8 10:40 | 显示全部楼层 |阅读模式
OS是UCOSII,在任务A的运行中间可能会发生一个中断,中断点是不确定的,有由上行发一个信号过来。执行完这个中断以后想跳到任务A的开始处,重新执行任务A,不知道可行不?还是我的编程思路有问题?
 楼主| jadetang 发表于 2008-5-8 10:51 | 显示全部楼层

刚刚想用goto语句试一下的

结果编译错误。是不是不能用这种笨方法?
computer00 发表于 2008-5-8 10:51 | 显示全部楼层

进入中断后,将任务A杀死,然后重新创建任务A。

  
 楼主| jadetang 发表于 2008-5-8 10:54 | 显示全部楼层

恩。是想这么试试。

实践一下。<br />00做什么工作的啊?什么都懂。
 楼主| jadetang 发表于 2008-5-8 10:57 | 显示全部楼层

00的方法好像行不通啊。

OSTaskDel()应确保不是在中断服务子程序ISR中试图删除一个任务,因为这是不允许的。
HWM 发表于 2008-5-8 11:00 | 显示全部楼层

拿本《操作系统原理》看看,弄清楚程序,线程和进程的关

千万别听别人的忽悠。
 楼主| jadetang 发表于 2008-5-8 11:02 | 显示全部楼层

我只是向有经验的人请教一下吧。

自己也在很努力的解决吧,谈不上忽悠吧。
computer00 发表于 2008-5-9 01:08 | 显示全部楼层

那你可以退出中断时,切换到另外一个任务,然后将其杀死

(类似驱动程序中的延迟调用),然后再重新创建任务A。<br /><br />
xplore 发表于 2008-5-9 12:38 | 显示全部楼层

SetJump()好像就解决了

  
McuPlayer 发表于 2008-5-10 05:32 | 显示全部楼层

圈圈真是举一反二啊“类似驱动程序中的延迟调用”

  
xwj 发表于 2008-5-10 07:07 | 显示全部楼层

OS下更应该考虑权限继承、外界未知等方面

中断中创建任务、&nbsp;SetJump()等就是软件系统不可靠、BUG的罪魁祸首<br /><br /><br />正确的应该方法是在同一层面上创建所有任务,并多创建一个守护进程,<br />中断中只发送时间信息或改变标志,由守护进程去杀死和创建真正的任务
computer00 发表于 2008-5-10 09:32 | 显示全部楼层

10楼的,我没有搞错吧?我没有实际用ucos,所以只能提供个

在驱动程序中,因为优先级比较高,所以很多工作不适合在驱动程序中做,因此可以安排一个延迟处理调用(DPC),<br />等CPU的优先级降下来之后再来处理。楼主说不能在中断中直接处理,那就回到任务中再来处理。
McuPlayer 发表于 2008-5-10 16:55 | 显示全部楼层

技术上向来是殊途同归的(注:不是同归于尽)

DPC是个非常有用的东西<br />其实跟单片机终端设置flag背景程序执行动作,是一个道理,但是OS提供DPC可以简化Application的设计。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

108

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部