pushl $done_STI
S_IRET
done_STI:
当发生中断时,中断处理程序首先执行一些实时系统的必要代码,然后把中断传给Linux(如果“软中断使能”置1)。由于大多数I/O驱动都没有为实时系统专门设计,大多数实时驱动中断处理程序仅仅决定只是简单地通知Linux。另一方面,每次时钟中断发生时,给时间节拍变量增1,并且决定是否应该运行一个定时任务,在适当的时候将中断传给Linux。
如果软中断被禁止,直接通过IRET将控制返回,否则控制被返回到S_IRET,这个宏调用与该中断相应的处理程序。
同时,需要特别指出的是,必须在时钟中断速度和事件发生的不同步之间寻找一个折衷点。更高的时钟中断速度意味着可以对任务进行更多的采样,从而降低系统响应时间,但同时用于中断切换的时间也增多了。反之则可能导致事件的反应时间过长,从而影响系统响应时间,尽管这减少了中断的次数(时间)。
六.几点说明
1. 如何选择实时操作系统?
如果你要求你的系统的反应足够快,而且似乎目前的通用实时操作系统的响应时间都不能满足你的要求(或者是因为你要求越快越好,比如是一套雷达预警系统),你可以考虑使用专用实时系统,同时你可以考虑使用汇编语言甚至是机器语言,尽管这需要你付出巨大的工作量(如果这多出的工作量相较于系统的高速要求值得的话)。
如果你的系统是一个很简单的实时系统,比如一台洗衣机的单片机处理系统,可能你也没有必要去考虑通用实时操作系统,因为那里面有很多东西是你根本就用不到的,比如TCP/IP、内存管理、进程调度等,使用通用实时操作系统或许可以使写代码方便了一些,但代价却是整个系统的造价上升了许多。
总之,我认为,对于一个复杂系统,如果没有非常苛刻的要求,应该尽可能地使用通用实时操作系统,而如果要求更低,可以考虑实时Linux系统,因为这将是更节约的方式,而且其可维护性也将是最优的。
2. RT-Linux上的应用怎样才能真正可以投入使用?
必须提明的是,Linux操作系统并非是一个适合嵌入式的最佳平台。这主要是因为它的大小,一个完整的GUI系统必须以磁盘为基础,或者连接到网络使其能够引导。但是,目前大量嵌入式应用程序的运行需要磁盘以及Linux内置的GUI和网络特性,并且数量还在增长。例如,许多医疗设备必须使用有吸引力的用户界面才有竞争力,工业机器控制必须既有GUI又有网络。这时候似乎就可以直接使用RT-Linux上开发的应用而不必再花费其它的费用,而且由于Linux的开放性,可能会使得这样的系统所能支持的特性远远超过那些专门的实时系统。
但是,有着地方的实时应用就不是这样的,一台臃肿的PC已经显得太浪费,事实上这些应用所需的功能极其少,而使用RT-Linux作开发平台仅仅是因为它的方便,这样在开发完成后,还必须完成的任务就是使得它从EPROM引导。这时可以通过仅仅安装那些对特定应用必须的组件,从而构成一个无磁盘系统。例如,一个包括网络(但不包括X-Windows)的Linux系统已经成功地放置在仅2.7MB的EPROM上。因此,实践中独立的无磁盘嵌入式系统也可以用Linux来开发。另外,Linux具有从网络引导的能力,一个包括X-Windows的整个系统可以从位于网络上某个位置的磁盘引导。这样也提供了一种使得RT-Linux应用实用化的手段。
七.结束语
本文是笔者在阅读了几本(篇)关于实时操作系统的资料后对实时系统的一些认识,因而文中的很多观点都仅是笔者自己的看法,同时有一部分为笔者参考外文书籍的结果,由于笔者对实时操作系统的理解并不是很深,因而很难保证是正确的,甚至可能出现对某些单词翻译的不恰当,故本文仅供参考,欲了解实时Linux更详细的信息,请查阅参考文献。
参考文献
Linux用作嵌入式操作系统,操作系统开发者,http://os.silversand.net/
A Real-Time Linux,Victor Yodaiken And Michael Barabanov,New Mexico Institute of Technology
Linux操作系统内核分析,陈莉君,人民邮电出版社
[4] Linux内核源代码分析,冯锐、邢飞、刘隆国、陆丽娜译,机械工业出版社
[5]The Art of Programming Embedded Systems,Jack.J.Ganssle
[6]Real-Time UNIX Systems: Design and Application Guide,Borko Furht et al.,Kluwer Academic Publishers Group
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.

