打印

请问移植uc-os的时候为什么要写软中断?

[复制链接]
2235|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jack.king|  楼主 | 2008-7-26 17:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
John_Lee| | 2008-7-26 17:50 | 只看该作者

谁说必须要软中断?

使用特权

评论回复
板凳
jack.king|  楼主 | 2008-7-26 17:58 | 只看该作者

我也不知道,我看好多例都是这样,

那请您告诉我一个好的方法可以吗?

使用特权

评论回复
地板
Swd21ic| | 2008-7-26 18:45 | 只看该作者

re

只要获得了PC的地址就可以了.

有一些办法啊.官方就没有用软中断.用了个跳转把PC保存了LR,再保存LR就相当于保存了PC

使用特权

评论回复
5
程序匠八| | 2008-7-26 20:27 | 只看该作者

UCOS必须要支持C语言开/关中断的CPU才能移植

临界代码要关中断

使用特权

评论回复
6
zbo210| | 2008-7-27 18:02 | 只看该作者

看跑在什么模式了

一直跑系统模式不需要用软中断

使用特权

评论回复
7
jack.king|  楼主 | 2008-7-27 18:56 | 只看该作者

普通用户一般跑什么模式呢?在什么情况下要用别的模式?

使用特权

评论回复
8
wxj1952| | 2008-7-28 09:00 | 只看该作者

关于软中断。

概念上说,只有两种模式可以调用调度器切换任务,一种如6楼所说:系统模式。也即通过时钟(T1/T2)节拍产生的硬中断ISR启动调度器来完成就绪任务的切换。

另一种是用户模式。
由用户通过系统服务函数(例如OS_wait( )等等)通过软中断指令去启动内核调度器以执行切换任务操作,因为用户主动放弃了CPU资源,所以它要通过调度器才能把CPU资源让给其他任务。
    
    这种设计是把调度器设计在ISR中断服务程序中,好像只有进入中断服务才能启动调度器。所以用户如果要启动调度器,只能通过软中断指令。

   实际上没有软中断指令的CPU不是这样设计,如4楼所说,任务通过系统函数直接启动调度器即可,这种OS的调度器设计为独立函数,用户模式也可以单独调用的(不是用户直接调用)。

无论系统模式还是用户模式,都是OS内部控制,用户不可能直接控制OS内核!
所以,不能企图跨越OS去调用内核函数!

使用特权

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

本版积分规则

488

主题

2158

帖子

1

粉丝