[ZLG-ARM] 请教菜农、汽车电子等,Keil ARM-RTL的OS时钟优先级问题?

[复制链接]
3017|1
 楼主| mqhu 发表于 2007-2-12 20:43 | 显示全部楼层 |阅读模式
在Keil&nbsp;ARM的RTL范例中(以NXP的LPC2000为例的),有关OS的时钟初始化,有如下一段:<br />VIC-&gtDefVectAddr&nbsp;=&nbsp;31;/*(U32)os_def_interrupt*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />VIC-&gtVectAddrs[15]&nbsp;&nbsp;=&nbsp;15;/*(U32)os_clock_interrupt*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />VIC-&gtVectCntls[15]&nbsp;&nbsp;=&nbsp;0x20&nbsp;|&nbsp;OS_TID_;<br /><br />那就意味着系统时钟中断优先级在IRQ向量中是最低的,那它如何保证实现实时任务切换呢?<br /><br />它这一点与uC/OS中,把系统时钟设置为IRQ中断的最高优先级刚好相反!<br /><br />菜农说这样设置是合理的,请说说原因?<br /><br />也请使用过RTL的老鸟们指点一下!谢谢!
hotpower 发表于 2007-2-12 23:34 | 显示全部楼层

这个问题不难说明

大家知道OS是靠定时器中断来步进节拍的,OS节拍中断后会在最快的时间内完成<br />任务的切换回到用户级的,这时任何高于OS节拍中断级别的中断都会打断当前正在执行的任务.<br />相对于用户中断,OS切换任务的时间往往都高于用户执行中断的时间.<br />因为用户程序都主张在中断中应该用最短的时间完成主要工作,其他活动可以交给OS任务处理.<br />再者LPCARM不直接支持中断嵌套,因为一般没这个必要,它可以在中断中发送任务消息,退出中断后交OS处理.<br />对于任务和中断来说,即使OS节拍中断级别最高,但OS完成任务切换后,都会进行<br />&quot;中断隐身&quot;,放弃特权级别回到用户级别,故任务处理时都会被任何最低级别的中断打断.<br />OS节拍中断级别的高低实际没多少意思,因为没中断嵌套,再低级别的中断程序<br />运行时也不会为OS节拍中断让位!!!<br />OS节拍中断级别的高时只能在某个中断执行时,又有低级别中断在等待时,OS中断才能起作用.<br />综合以上菜论,只要合理安排各个中断的处理时间和处理方法,OS的实时任务才能做的好一些.<br /><br />下面请汽车老师做报告吧~~~菜农闪了~~~<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

9

帖子

0

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