新闻  |   论坛  |   博客  |   在线研讨会
汽车远程信息处理和信息娱乐系统的即时启动技术
yanqin | 2009-04-16 14:29:26    阅读:1146   发布文章

来自:eetchina
%A
%A QNX软件系统公司开发出的被称为“迷你驱动程序(mini-driver)技术”的即时启动技术,可满足汽车远程信息处理和信息娱乐系统的启动时序要求。本文对这种技术的架构、无缝切换以及控制序列等进行了讨论,并给出应用实例。
%A
%A 汽车里的远程信息处理和信息娱乐系统正变得越来越复杂。如今,汽车制造商和第一梯队汽车供应商已经推出提供各种功能的设备,这些功能包括动态导航、实时交通报导、DVD回放、数字广播、语音控制操作以及救援电话自动拨号等。
%A
%A 为处理这种复杂性,系统设计工程师转而使用功能完备的保护模式实时操作系统(RTOS)。这些RTOS被安装在可片上支持各种汽车技术(包括J1850、CAN和MOST通信总线)的32位处理器上。尽管很复杂,但这些系统必须满足与以前硬件-软件解决方案同样的时序要求。例如,远程信息处理控制单元必须能在上电后的60到100毫秒内接收CAN消息。其问题在于,启动运行在这种设备上的复杂软件需要几百毫秒或更长时间。
%A
%A 启动过程中的关键步骤
%A
%A 汽车里的远程信息处理单元或信息娱乐单元一般是冷态(完全断电状态)启动或者在CPU重启状态下(从SDRAM关闭状态下返回)启动。启动过程中的关键事件可包括:上电后的30到100毫秒内接收CAN消息;在接收到这些消息的100毫秒内作出响应;从汽车总线读取Class 2的消息,并响应唤醒事件;初始化MOST收发器,并响应MOST请求。这些事件的大多数都必须在系统上电的数十毫秒内发生。
%A [ 相关贴图 ]
%A
%A 图1:CAN总线上远程信息处理系统的初始化时序序列示例。
%A 为满足这些时序要求,很多设计都依赖于辅助通信处理器或者外部电源模块。这个解决方案相对简单,但成本很高。由于QNX软件系统公司开发出的突破性技术,现在已不再需要那样的硬件。这种被称为“迷你驱动程序技术”的方法由小型高效的设备驱动程序组成,该驱动程序在OS内核初始化之前开始运行。迷你驱动程序在系统的启动加载程序中定义,可快速及时地响应上电消息,并确保在OS引导时,任何其它消息都不会丢失。一旦OS引导完成,迷你驱动程序可能继续运行,也可能将控制转交给功能完备的驱动程序,然后功能完备的驱动程序便可访问迷你驱动程序缓存的任何消息。
%A
%A 在本文的迷你驱动程序应用实例中,考虑一个连接到CAN总线的汽车远程信息处理设备。当汽车发动后,CAN总线主设备将在65毫秒内发送一个“Power On”消息给所有连接的设备(见图1)。远程信息处理设备中的软件必须准备好在更短的时间帧内(55毫秒或者更短),接收并响应此CAN消息,这是因为 CPU在上电后大约10毫秒时执行第一个指令。
%A
%A 此外,远程信息处理设备必须在接收到“Power On”消息后的100毫秒内,用“Device Up”消息予以回复,告诉总线主设备该设备可以使用了。如果远程信息处理设备没有在这个时间内作出响应,总线主设备则认为该设备还不能使用,并将其从总线中去除。在初始的上电握手序列后,远程信息处理设备还必须在剩余的启动序列期间,对从CAN总线接收到的任何其它消息进行缓存并作出可能的回复。如图1所示,这些消息每10毫秒就会达到1个。
%A
%A 在这种情形下,由于启动过程存在瓶颈,OS内核不可能在第一个“Power On”CAN消息到达之前完成全部的初始化,包括将OS镜像拷贝到RAM中、将CPU从物理模式切换到虚拟模式以及等待时钟稳定等。事实上,功能完备的保护模式RTOS的引导时间(从上电重启到执行第一个应用程序)一般为数百毫秒,因此迷你驱动程序必须在OS镜像被拷贝到RAM之前的系统初始化中开始工作。
%A
%A 迷你驱动程序的架构和运行
%A
%A QNX迷你驱动程序基于一个简单概念:使外围设备可在整个启动过程中可用。一旦外围设备完成初始化,启动过程的不同阶段必须通过读取并响应从外围设备总线接收到的消息,来满足系统的时序约束。
%A
%A 迷你驱动程序由两个基本元素组成:(1)句柄函数――对外围设备的硬件执行读写访问,并实现与迷你驱动程序相关的其它任何逻辑,如读、缓存以及消息响应;(2)消息数据存储――该存储块允许迷你驱动程序的句柄函数存储接收到的任何消息,这些消息可随后被用户应用程序或功能完备的设备驱动程序重新读取。
%A
%A 迷你驱动程序一旦被创建,句柄函数在整个启动过程中都被调用,以确保消息不会遗漏。为触发句柄函数,系统可能使用以下机制:
%A
%A (1) 轮询――系统在启动序列期间多次轮询迷你驱动程序的句柄函数,以确定外围设备是否收到数据。为实现这种轮询,启动代码以用户定义的时间间隔调用句柄函数。
%A
%A (2)基于定时器中断的轮询――将迷你驱动程序的句柄函数作为一种基于系统定时器的假中断句柄附在系统中,并以固定的时间间隔调用此句柄函数。迷你驱动程序仍处于轮询模式,但在这种情况下,系统不需要在整个启动代码中明确地调用句柄函数。
%A
%A (3)设备中断――设备中断机制将迷你驱动程序的句柄函数附在设备的中断源上,这可避免轮询,只需在硬件事件发生时调用中断句柄。
%A
%A 在很多情况下,设备中断是最理想的触发机制,但并不是在所有系统或者在整个启动过程中都可以采用设备中断。因此,当从启动过程的一个阶段转换到另一个阶段时,系统可能切换触发机制。
%A
%A 系统一旦启动完成,功能完备的设备驱动程序便可从迷你驱动程序那里把控制接管过来,而不会丢失数据或者产生封锁时间(blackout time)。功能完备的驱动程序可简单地附在设备中断上,而迷你驱动程序则适时退出。另外,功能完备的驱动程序可以访问迷你驱动程序缓存在数据存储器中的任何消息,这确保了两者的无缝转换。如果系统不需要功能完备的驱动程序,则迷你驱动程序可继续运行。
%A [ 相关贴图 ]
%A
%A 图2:使用迷你驱动程序,基于QNX Neutrino RTOS的具有丰富软件的远程信息处理系统可在40毫秒内响应一个CAN消息,而无需辅助通信处理器。
%A 迷你驱动程序的运行可总结为几个简单的步骤:
%A
%A (1)在初始的启动序列期间,迷你驱动程序以给定的时间间隔获得对系统的控制。这是一个轮询的方法,因为硬件中断尚未打开。迷你驱动程序具有一个与其关联的小的协议堆栈,它具有足够的逻辑来实现硬件初始化、在数据存储器中缓存收到的消息以及在需要时响应关键事件。
%A
%A (2) 在启动阶段的某一点,硬件中断被打开,于是系统基于中断来调用迷你驱动程序。(因为系统定时器本身就是一个中断,如果需要,仍可使用轮询的方法)。
%A
%A (3)OS被加载后,迷你驱动程序可将控制交给功能完备的驱动程序。
%A
%A (4)功能完备的驱动程序将具有与其相关的全部协议堆栈。一旦被启动,功能完备的驱动程序可以读取并处理在启动序列期间由迷你驱动程序收集的所有数据。
%A
%A 采用这些启动技术,通用CPU可以像专用处理器一样工作。例如,基于396MHz飞思卡尔MPC5200处理器的系统的实验室测试结果表明,迷你驱动程序可以轻而易举地处理时间间隔为1毫秒的消息。换言之,如果上电时,每1毫秒往设备发送一次数据,则迷你驱动程序可在系统启动的同时接收并处理所有的数据。在SH-4和ARM等架构上也能获得类似结果。
%A
%A 作者:Sheridan Ethier
%A 软件工程师
%A Email: sheridan@qnx.com
%A Randy Martin
%A 汽车工程部经理
%A Email: randy@qnx.com
%A QNX软件系统公司
%A%A
%A

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客