基于OSEK/VDX标准的Trampoline操作系统研究
来源: 作者: 发布时间:2014-12-19 13:39:07 浏览量:2.3 中断管理
在OSEK操作系统中,ISR(Interrupt Service Routine)分成了两类,即ISRl和ISR2。ISRl不使用操作系统服务,也不能调用其他的用户定义函数。该类中断服务例程执行完了以后直接执行中断发生位置后的下一条指令,因此ISRl对任务管理没有影响,运行时消耗的资源也比较少。ISR2是可以调用其他用户定义的函数或使用部分OSEK服务的中断例程,OSEK操作系统专门为它准备了一个堆栈Frame,用作调用其他函数的执行环境。在系统生成阶段,由用户指定ISR2要电感生产调用的用户定义函数或系统调用。ISR2能够和任务之间共享资源,而这可能会造成死锁:当ISR2启动后试图获得一个已经被一个任务占用的资源时,该任务也在等待中断完成,因此ISR2和任务之间共享资源时需要使用同步机制。OSEK操作系统提供了用于资源访问的GetResource和Rele什么是电感器aseResouree系统调用,任务和ISR2之间可以使用它们来共享资源,但是这种方法需要关闭访问资源的中断,可能使中断长时间关闭,降低了操作系统的实时响应能力。另一种任务和ISR2之间共享资源的方法是OSEK标准所建议的方法,也就是使用OSEK PCP协议。使用这种方法时,当一个任务要获取同ISR2共享的资源时,会把它的优先级提升到比ISR2更高的优先级,当任务执行完成之后,再把优先级恢复到原来的优先级。这时ISR2更像任务,但是比普通任务有更高的优先级。
Trampoline实现了一种延迟的ISRl和ISR2,从而使操作系统内核更小。任务和ISR的描述符都继承自一个tpl_exec_common结构,如图2所示。任务描述符在tpl_exec_common结构里增加了事件管理的数据成员,也就是evl_set和evt_wait数据成员;而ISR描述符在tpl_exec_common结构里增加了一个指向附加数据的指针,也就是static_isr_desc数据成员,static_isr_desc指向的内容可以放到ROM中,以减少RAM的使用。一个ISR对应着一个中断向量。当一个中断触发时,T插件电感rampoline激活对应的ISR中断服务例程并且返回。如果是ISRl,插件电感执行完了以后将执行触发中断位置后面的代码;如果是ISR2,ISR2将运行预先定义的用户定义函数或者系统服务,然后像普通任务一样由调度器根据任务级的调度策略来调度执行。
另外,Trampoline为ISR增加了一个抽象层。这样,一方面几个硬件中断可以共享相同的中断向量偏移,另一方面对应到一个中断向量偏移的,有一个ISR的集合,而不是一个ISR。当一个硬件中断触发时,为了找到一个与该硬件中断匹配的ISR,每组共享中断偏移的ISR都必须提供一个函数来测试它对应的设备中断标志是否为真。如果函数返回TRUE,该ISR将被激活。Trampoline设计了一种GIH(General Interrupt Handler)函数来完成这种测试工作。
而这样做有两个问题。第一,由于ISR2的后期执行是在任务态运行,这时如果有一个硬件中断触发,就会由GIH来确定一个ISR来执行,从而打断了原来的ISR2。即使后来触发的ISR的优先级比原来ISR2的优先级低,这种情况也能发生。这就造成了一个低优先级的硬件中断抢占了高优先级的中断,而这种情况是不应该发生的,因此是一个很大的问题。第二,根据OSEK操作系统标准,当ISR运行时,不能进行重新调度。在Trampoline中,ISR2作为高优先级的普通任务进行调度,当一个高优先级ISR2到来时,任务调度器会重新调度一次,从而打断了原来的ISR2的执行。另外,在OSEK操作系统标准中,重新调度是在任务之间的重新调度;而在Trampoline中,只要有一个ISR2在运行,重新调度只能在有比普通任务更高优先级的ISR2之间进行。当最后运行的ISR2结束时,CPU的重新调度才给了有最高优先级的任务,因此,Trampoline的中断管理部分的实现还有待改进。
3 在Linor/x86上开发TramooIine应用程序
Trampoline目前可以在四种目标平台上使用:带有Keil编译器的Infineon C167、Darwin/PowerPC、FreesealeS12x和POSIX系列操作系统平台。前三种平台的硬件不常见,如果没有就不能运行;而POSIX系列的Linux/x86平台则很容易得到。下面以Linux/x86平台为例,说明开发一个Trampoline应用插件电感器程序的步骤和方法:
①生成应用程序的OIL配置文件。OSEK/VDX 0S是一个静态操作系统,系统对象需要在系统生成时定义。OIL是书写这种定义的标准语言。它可以定义所有的应用程序使用的各种对象(任务、中断、警报、计数器、资源、事件等)。OIL配置文件可以手工编写,也可以使用图形化开发配置工具来生成。目前Trampoline没有图形化配置工具,只能手工编写OIL配置文件。
遥控抢答器的简单制作 下面介绍的简单电路使抢答器实现了遥控化,控制电路不使用单片机,仅使用几片74系列数字IC完成控制功能,制作非常简单,电路原理介绍如下。 一、遥控发射与接收 1)遥控发射器: 遥控发射器选用集成电路P
有大神知道MKAC S8L8是什么器件吗 丝印MKAC S8L8 的10引脚器件是什么器件啊?
建议上传器件图片,这样方便识别。
有 已经发私信给你了 你去看下
网络与CDN联合打造双重加速智能网络 随着网络技术的发展,网络运营商可提供给用户的带宽越来越高,但收入却没有得到相应的增长,宽带用户的ARPU值一直在下降。电信运营商一直在探索差异化运营,为用户提供差异化
大电流电感