车辆显控系统是对车辆工作状态信息进行显示、控制,并完成人机交互的系统。车辆显控系统需要在显示文字、图形和视频的同时响应按键操作,并对车辆控制系统进行操控。这就要求系统具有实时响应、并行处理多个任务的能力。本文在以PowerPC MPC8548E为处理器的控制主板上应用实时操作系统VxWorks,实现了实时响应系统操作、显示相应信息的功能。以此主板为核心控制主板的显控系统,具有高性能、高稳定性和良好的兼容性。
1 PowerPC MPC8548及其控制主板概述
PowerPC MPC8548是Freescale公司开发的新一代PowerQUICC III系列的高性能处理器。其内部工作频率可达1.33 GHz,在该工作频率上处理性能可达3065 MIPS。一级缓存有指令缓存和数据缓存各32 KB,二级缓存为512 KB,支持DDR1和DDR2存储器控制器,支持PCI、PCIX和PCIE接口,支持SRapid IO接口和4个GbE接口。MPC8548不仅拥有强大的数据处理能力,还具有很强的通信处理能力,可靠性高,抗恶劣环境能力好,特别适合对网络性能要求较高及有多个接口的场合。
车辆显控系统的核心控制主板是以PowerPC MPC8548E为处理器的嵌入式系统。该系统通过扩展显示器、内存、Flash存储器以及其他接口控制电路,构成了高性能、高可靠性的核心控制主板。以此控制主板为硬件平台,移植嵌入式实时操作系统VxWorks,对接口设备驱动进行二次开发,继而以VxWorks为软件开发平台,开发应用程序,实现显示和控制任务。
2 PowerPC控制主板硬件设计
如图1所示,PowerPC控制主板硬件系统由处理器、外围电路和外部接口设备组成。外围电路包括电源、晶振和复位电路;外部接口电路包括串口、网口、EL/LVDS液晶显示、16位PCI总线、USB接口、Flash、鼠标和键盘等。
图1 PowerPC控制主板硬件结构图
3 PowerPC控制主板软件设计
车辆显控系统是一个多任务的复杂的实时嵌入式系统,采用操作系统对所有软硬件资源进行分配、调度、控制和协调,尤其是协调并发活动,如任务调度、内存管理、同步机制、异常和中断处理、任务间通信等。WindRiver公司(现被Intel收购)的VxWorks是一个实时嵌入式操作系统。VxWorks操作系统已经广泛应用于航空、汽车等行业,鉴于VxWorks对PowerPC处理器体系结构的支持,使得应用PowerPC处理器的嵌入式系统大多以其作为操作系统。因此,车辆显控系统也采用VxWorks作为操作系统。
嵌入式系统是根据实际要求对硬件资源进行配置和裁减而成的系统。由于嵌入式产品是软硬件的结合体,且随着产品的研制完成,软件就已固化在硬件环境中,因此,软硬件综合开发是嵌入式系统的一大特点,而软件设计是在紧密联系硬件的基础上完成的。
PowerPC控制主板的软件设计遵循嵌入式软件的体系结构设计方法,分为如下两部分:
- 特殊设备驱动的开发,通用设备驱动程序的集成,即板级支持包BSP的开发
- 应用程序的开发,即显控任务的实现
3.1 设备驱动开发
由于本系统的硬件平台是根据实际需要设计的,故必须根据实际的接口对设备驱动进行开发。在VxWorks提供的通用设备驱动的架构上,结合每个具体设备的工作原理和功能,以数据流为中心,在掌握设备与CPU及外接设备的通信方式后,对具体设备的驱动进行逐一开发。设备驱动程序开发完成后,最终形成MPC8548E的板级支持包BSP。硬件设备程序的集成包括如下几个方面。
(1) 特殊设备驱动
一些特殊设备的驱动程序不在VxWorks配备的标准设备清单中,因此需自行开发,例如PCI线驱动、DDR内存驱动和显示驱动等。
(2) 通用设备驱动
通用设备的驱动程序可以直接应用VxWorks标准驱动,或在标准驱动的基础上稍作改动即可,例如鼠标、键盘、串口、以太网接口和USB接口等。
3.2 应用程序开发
首先将车辆显控系统要完成的任务分解为多个任务:按键查询、界面切换、数据显示、视频显示和参数存储。应用程序保证各任务按照规定的方式实时完成。PowerPC控制主板软件结构图如图2所示。
按键查询:定时查询是否有键按下,如有,则向界面切换、数据显示、视频显示和参数存储发送消息,完成相应的任务。
- 界面切换:切换到相应界面
- 数据显示:显示车辆控制系统在不同工作模式下的状态
- 视频显示:切换视频通道,调节图像的亮度、对比度,并进行相关操作
- 参数存储:根据指令保存参数,或等间隔地将参数保存到缓存
图2 PowerPC控制主板软件结构图
3.2.1 I2C接口控制的软件实现
I2C总线是一种两线式串行总线,主要应用于微处理器外围芯片的扩展。它只需两根线——串行数据线和串行时钟线,即可实现微处理器与总线上具有I2C总线接口的设备进行数据交换。
I2C总线设备以其简单性和有效性被广泛使用。车辆显控系统中用于模拟视频显示的视频解码器CCX25836就是其中之一。CCX25836的寄存器需要用I2C总线进行配置,系统设计采用FPGA构建了硬件I2C电气结构,在PowerPC控制主板上用软件模拟视频解码器所需的I2C读写流程,设置其寄存器,从而实现视频通道的切换、亮度和对比度的调整等视频显示功能。I2C读、写流程如图3、图4所示,通过I2C总线设置亮度、对比度的流程如图5所示。
3.2.2 通过PCI局部总线实现设备间通信
PCI局部总线是微型计算机中处理器/存储器与外围控制部件、扩展卡之间的互联接口,PCI局部总线规范是互联机构的协议,也是电气和机械配置的规范。PCI局部总线具有总线主设备支持和自动配置功能,提供了3类地址空间,即存储器、I/O和配置地址空间。这些特点为总线上各设备间的通信奠定了基础。
图3 I2C读流程 图4 I2C写流程
车辆显控系统中存在多个PCI设备,鉴于PowerPC较强的处理能力和实时操作系统的实时多任务处理功能,使得PowerPC控制主板成为“主设备”,负责设备间的协调,其他设备作为“从设备”。由“主设备”根据“从设备”的设备识别号和供应商识别号对其进行配置,根据地址空间的存储映射访问方式进行数据通信。PCI设备间的通信流程如图6所示。
图5 亮度、对比度设置流程 图6 PCI设备间通信流程
3.3 应用程序与设备驱动的连接
应用程序是通过调用设备驱动程序来访问设备的。调用设备驱动有3种方式:直接调用、通过操作系统内核调用和通过操作系统的扩展模块调用。直接调用方式可以使应用程序高效地访问设备,但移植性差,且用户需自行管理设备;通过内核调用,由操作系统管理,移植性好,但增加了系统开销;通过扩展模块调用的优缺点与通过内核调用类似。
车辆显控系统是一个复杂的实时操作系统,需要良好的可移植性,且存在扩展模块,因此应用程序同时使用通过内核和扩展模块两种方式来调用设备驱动程序。通过内核调用通用设备驱动程序,通过扩展模块调用特殊驱动程序。
3.4 应用程序与设备的直接连接
针对一些特殊设备的控制要求,PowerPC控制主板对其采用直接控制的方式,而不通过设备驱动。
I2C总线是一种两线式串行总线,主要应用于微处理器外围芯片的扩展。它只需两根线——串行数据线和串行时钟线,即可实现微处理器与总线上具有I2C总线接口的设备进行数据交换。
I2C总线设备以其简单性和有效性被广泛使用。车辆显控系统中用于模拟视频显示的视频解码器CCX25836就是其中之一。CCX25836的寄存器需要用I2C总线进行配置,系统设计采用FPGA构建了硬件I2C电气结构,在PowerPC控制主板上用软件模拟视频解码器所需的I2C读写流程(详见图3~4),设置其寄存器,从而实现视频通道的切换、亮度对比度的调整等视频显示功能,如图5所示。
结语
PowerPC MPC8548E 微处理器以其丰富的接口、较强的运算能力、较快的处理速度、稳定性和易扩展性受到嵌入式系统开发者们的青睐。车辆显控系统的主板采用此芯片为核心处理器,配备必要的外围接口,并采用VxWorks作为运行在其上的操作系统,使其具备了实时处理多任务的能力。通过扩展PCI设备,实现了显控系统设备间、显示系统与其他系统设备间的数据交换和控制。