基于PC104总线的VxWorksBSP设计
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的可移植性大大加强。
BSP与VxWorks操作系统的层次结构如下图1所示:
图1BSP与VxWorks操作系统的层次结构图
基于PC104总线设备的VxWorks操作系统映像开发主要工作有3个方面:
①板载支持包设计与开发
VxWorks实时操作系统的板载支持包的开发通常提供一般模板程序,选择一个相同处理器结构板载支持包进行设计。
②相关外围硬件设备驱动程序
嵌入式系统是针对某一具体应用场合开发的专用系统,因此常常会使用到一些非标准的硬件设备,而VxWorks操作系统并不提供相关的外设驱动程序,使用时需自行开发相应的外设驱动程序。
③操作系统映像配置与生成
对VxWorks操作系统各个功能模块进行配置,使其在满足功能需求的条件下达到代码量最小,同时也减少出错的可能性。
2.2 BSP的基本功能及其启动过程分析
VxWorks板级支持包BSP在功能上包含两个部分:初始化和驱动程序支持。BSP提供了VxWorks同硬件环境的基本接口界面,并在上电时进行硬件初始化(包括中断向量的初始化、定时器初始化、核心内存映象的加载等),支持VxWorks对硬件驱动的访问,将 VxWorks中软件集成到一体,其功能相当于PC机的BIOS。
VxWorks内核的加载分为两个步骤,第一个步骤是PCBIOS对bootrom的加载,第二个步骤是BSP引导映像bootrom对VxWorks操作系统映像加载。基本流程如下所示:
2.3 BSP中函数调用过程分析
BSP启动操作系统的过程中,需要调用一列函数以完成对系统内存映像的加载,整个过程分析如下,RomInit函数初始化处理器,关闭高速缓存,关中断,初始化内存。接着调用RomStart,把映像的数据段拷贝到RAM中去,然后调用usrInit()对Bss段清零,调用intVecBaseSet()设置矢量基地址表,调用excVecInt()初始化中断以及异常的向量表,初始化系统硬件,调用 usrKernelInit()初始化wind内核,最后执行流程执行到kernelInit(),kernelInit启动wind内核。Wind内核的第一个任务是usrRoot它通过调用usrAppInit启动用户的任务,系统可真正启动。
2.4 修改BSP设计概要
一般情况下,Tornado提供一些评估板的板载支持包,而PC104主机板是根据工作实际需要购买的,评估板的板载支持包不能够直接使用,需要进行修改完善。可行的方法是:基于pc586的BSP作为模板进行适当修改,以满足这款PC104主机板的特定硬件环境。
板载支持包通常存放在Tornado的安装目录下面,其路径是Root/target/config /bspname,root代表tornado的安装目录。设计一个可用的新的板载支持包,必须对Tornado本身自带板载支持包作一定的分析。 pc586板载支持包主要包括一些C文件和一些汇编文件,它们是:config.h,configAll.h,Pc.h,sysLib.c,ctdt.c,sysNetif.c,mkboot.c。板载支持包的缺省配置是由configALL.h来确定的,用户可通过config.h来改变缺
PC104总线 VxWorksBSP Tornado 相关文章:
- DSP HPI口与PC104总线接口的FPGA设计(04-14)
- 工控机总线——PC/104总线、PC/104Plus(12-16)
- 基于PC104 总线的实时信号采集处理系统(07-31)
- PC104总线运动控制卡的性能要点与应用(09-04)
- 工控机PC/104总线(07-23)
- 基于PC104总线的雷达信号显示卡的设计与实现(05-11)