>
首页 » 技术文章 » 基于PC104总线的VxWorksBSP设计

基于PC104总线的VxWorksBSP设计

作者:万凤琴,闫建国,王建飞,刘蕃  时间:2007-04-02 16:34  来源:

[摘要] 设计开发了嵌入式实时操作系统VxWorks的一种基于PC104总线的板载支持包完成了相关的外围驱动程序设计和调试工作。

[关键词] PC104总线VxWorks集成开发环境Tornado板载支持包BSP

1 引言

VxWorks是由美国的WindRiver推出的一种嵌入式强实时操作系统它存在多任务调度的方式可以管理多个外设而且它可根据应用程序的需求对操作系统进行裁剪最大程度的压缩代码实现程序的优化。

Intelx86系列处理器的嵌入式应用一般是以PC104的形式出现的PC104除包括PC/AT的所有标准功能外它的CPU模块还有一些独特的优点开发周期短、费用低、体积小、层叠连接、功耗小、模块化、抗冲击及震动能力强工作及存储温度范围宽、集成度高可靠性高。

PC/104总线设备上使用的数据存储设备通常有硬盘和基于闪存技术的固态电子盘。由于嵌入式系统工作环境一般比较恶劣硬盘在恶劣的震动条件下无法正常工作而固态电子盘的工作范围很宽可以选择相应环境下的器件(零下40到零上85)并且体积很小适合嵌入式应用。本嵌入式系统中数据存储设备采用了CE公司的CF(CompactFlash)而在此软硬件平台上设计开发了嵌入式实时操作系统VxWorks的并基于PC104总线的板载支持包。

2 VxWorks板载支持包BSP设计

2.1 基于PC104总线设备的VxWorks操作系统映像开发

在实时操作系统VxWorks硬件抽象层是以板载支持包BSP的形式出现的。针对不同的处理器体系结构以及硬件环境设计不同的板载支持包实时操作系统VxWorks就可以用于不同的硬件环境大大减少了资源浪费。因为板载支持包同时具有硬件相关性和操作系统相关性是一个介于硬件与软件之间的软件层次包括了系统中的大部分与硬件相关的软件模块。VxWorks板载支持包BSP的设计概念使嵌入式实时操作系统VxWorks成为一个通用的嵌入式软件开发包使得相关的高层的嵌入式应用能够有效地运行于特定的、应用相关的硬件设备之上使嵌入式实时操作系统VxWorks的可移植性大大加强。

BSPVxWorks操作系统的层次结构如下图1所示

1BSPVxWorks操作系统的层次结构图

基于PC104总线设备的VxWorks操作系统映像开发主要工作有3个方面

板载支持包设计与开发

VxWorks实时操作系统的板载支持包的开发通常提供一般模板程序选择一个相同处理器结构板载支持包进行设计。

相关外围硬件设备驱动程序

嵌入式系统是针对某一具体应用场合开发的专用系统因此常常会使用到一些非标准的硬件设备VxWorks操作系统并不提供相关的外设驱动程序使用时需自行开发相应的外设驱动程序。

操作系统映像配置与生成

VxWorks操作系统各个功能模块进行配置使其在满足功能需求的条件下达到代码量最小同时也减少出错的可能性。

2.2 BSP的基本功能及其启动过程分析

VxWorks板级支持包BSP在功能上包含两个部分初始化和驱动程序支持。BSP提供了VxWorks同硬件环境的基本接口界面并在上电时进行硬件初始化(包括中断向量的初始化、定时器初始化、核心内存映象的加载等)支持VxWorks对硬件驱动的访问VxWorks中软件集成到一体其功能相当于PC机的BIOS

VxWorks内核的加载分为两个步骤第一个步骤是PCBIOSbootrom的加载第二个步骤是BSP引导映像bootromVxWorks操作系统映像加载。基本流程如下所示

2.3 BSP中函数调用过程分析

BSP启动操作系统的过程中需要调用一列函数以完成对系统内存映像的加载整个过程分析如下RomInit函数初始化处理器关闭高速缓存关中断初始化内存。接着调用RomStart把映像的数据段拷贝到RAM中去然后调用usrInit()Bss段清零调用intVecBaseSet()设置矢量基地址表调用excVecInt()初始化中断以及异常的向量表初始化系统硬件调用usrKernelInit()初始化wind内核最后执行流程执行到kernelInit()kernelInit启动wind内核。Wind内核的第一个任务是usrRoot它通过调用usrAppInit启动用户的任务系统可真正启动。

2.4 修改BSP设计概要

一般情况下Tornado提供一些评估板的板载支持包PC104主机板是根据工作实际需要购买的评估板的板载支持包不能够直接使用需要进行修改完善。可行的方法是基于pc586BSP作为模板进行适当修改以满足这款PC104主机板的特定硬件环境。

板载支持包通常存放在Tornado的安装目录下面其路径是Root/target/config/bspnameroot代表tornado的安装目录。设计一个可用的新的板载支持包必须对Tornado本身自带板载支持包作一定的分析。pc586板载支持包主要包括一些C文件和一些汇编文件它们是config.hconfigAll.hPc.hsysLib.cctdt.csysNetif.cmkboot.c。板载支持包的缺省配置是由configALL.h来确定的用户可通过config.h来改变缺省配置。缺省配置是按照处理器厂商的评估板外围硬件进行系统配置根据实际硬件环境一般需要做一定的改动通常会在config.h中进行通过一系列的定义宏完成系统配制工作。

要设计针对这个半物理仿真试验的所选用的PC104主机板板载支持包增加VxWorksCF卡支持需要做出较大改动的文件是config.hconfigAll.h以及sysLib.c3个文件具体如下

config/bspname/bspname.h中找到修改其CF卡的中断号因为一般中断号0x9是预留给硬盘接口为了避免产生中断冲突#define ATA1_INT_LVL0x9改为#define ATA1_INT_LVL0xf

config/bspname/sysLib.c中找到ATA_RESOURCEataResource[]={................PCMCIA................ }

修改为ATA_RESOURCEataResource[]={................IDE_LOCAL................. }

另外还需要改写其他的参数例如ATA1_CONFIG等。

config.h#define SYS_WARM_ATA_CTRL 0改为#define SYS_WARM_ATA_CTRL 1这样系统热启动后就会从CF卡上的引导区上引导。

config.h中将#define SYS_WARM_TYPE SYS_WARM_FD/*warmstartdevice*/改为#define SYS_WARM_TYPESYS_WARM_ATA

修改ataType数组使它和所选的CF卡的几何参数(磁道扇区柱面等)相等。

将原来的ataTypes数组ATA_TYPEataTypes[ATA_MAX_CTRLS] [ATA_MAX_DRIVES]= {................{{7618395120xff}/*ctrl1drive0*/...............}

改为ATA_TYPE ataTypes [ATA_MAX_CTRLS] [ATA_MAX_DRIVES]= {................{{9841645120xff}/*ctrl1drive0*/...............}

这个参数可以在主机板的BIOS中查找到进入BIOS后使用idedetection就可以查看到CF卡几何参数根据查到CF卡的几何参数就可以在sysLib.c中做出相应的修改。

2.5 BSP的调试

针对板载支持包的设计开发VxWorks并没有提供了非常好的调试手段这样就给调试BSP带来的很大困难。所以在对BSP进行调试之前尽量减少代码量通过改写BSP目录下Makefile来去除不需要的代码编译然后再对BSP调试。调试的方式一般采用闪灯的方式通过在有疑问的代码之间插入闪灯的代码通过对I/O端口的可视LED访问观察灯是否闪亮来判断BSP的执行流程。

3 结束语

通过多次试验的调试最终设计出了基于PC104总线的VxWorks板载支持包。并应用于某型飞机燃油系统的智能化管理实践结果表明这种方法是一种切实可行的方案。

相关推荐

Tornado Medical与Arjae Spectral合并

风河宣布对于未来机载性能环境联合体的承诺

风河  嵌入式  VxWorks  2012-02-29

基于Windows平台VxWorks交叉编译工具的设计

VxWorks  嵌入式  2011-09-05

嵌入式系统U盘实时启动技术

VxWorks  嵌入式系统  2011-09-01

基于VxWorks实时嵌入式PLC设计

PLC  VxWorks  2011-08-15

Wind River提供F1赛车专用数据撷取与传送系统

WindRive  VxWorks  遥测装置  2011-07-05
在线研讨会
焦点