举报
嗯, 楼主分析得很仔细. 所有的分析都很正确, 就一个地方. osintctxsw(), 这个函数执行后还会回过来继续往下执行的. OS_ENTER(EXIT)_CRITICAL 还是会成对的. 这两个函数不仅要成对出现, 而且通常执行次数都必须完全 ... airwill 发表于 2011-10-15 14:03
既然程序已经在中断中了,显然中断是开放的,那么中断切换任务后,直接开中断即可,速度还更快,显然也绝对不会出错 有些OS会保存各个任务的中断情况,不成对也行的,切换任务时通过堆栈恢复中断开关,当然USOS-II本身不是这 ... ayb_ice 发表于 2011-10-15 14:39
任意中断的优先级其实都高于最高优先级的任务,所以任务切换必须等到中断退出后才能进行,否则RTOS就没有意义了,因为任何任务,哪怕他是最高级,其实时响应性能还是不能和中断相比的,所以有很多RTOS根本不管理中断,由用 ... ayb_ice 发表于 2011-10-15 15:49
您需要 登录 才可以下载或查看,没有账号?注册
OSIntCtxSw(); /* Perform interrupt level ctx switch */ 执行完必然返回到上面循环,直到 ((OSIntNesting == 0) && (OSLockNesting == 0)) 为止。 刘前辈 发表于 2011-10-16 11:09
少说了一句。中断嵌套挂起了很多待处理的中断任务 ISR,排成OSUnMapTbl[OSRdyGrp]队列; OSIntCtxSw(); 切换的是从这个队列中查找出的中断优先级任务 ISR(上下文)。(是中断优先级任务队列,不是用户任务。别一 ... 刘前辈 发表于 2011-10-16 14:36
那么在中断里面就算使某一用户级任务高于被中断用户任务的话,也没办法在中断退出的时候立即调度,而是需要在返回被中断用户任务里面,然后才能调度?
在中断里面使某一个用户级任务高于被此中断的另外一个用户任务。刘前辈 发表于 2011-10-16 21:01
15# 1、只有一个中断ISR。 用户任务优先级task1 <task2 ,task2获取信号量不到而被挂起2、首先task1执行时,被中断进入ISR,ISR给task2信号量而激活他 …………
基本概念:中断ISR,或者说内核任务里不允许使用信号量。 首先感谢你,能提出问题。 13#讲的有错误,以后来修改。 、、 刘前辈 发表于 2011-10-17 09:08
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
等级类勋章
发帖类勋章
时间类勋章
人才类勋章
0
308
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号