基于Pentium4处理器的VxWorks板级支持包设计
2011-03-31王柯
王 柯
(中国电子科技集团公司第20研究所通信事业部,陕西西安 710068)
VxWorks操作系统是美国风河公司于1983年设计开发的一套具有微内核、高性能、可伸缩的嵌入式实时操作系统(RTOS)VxWorks良好的可靠性和卓越的实时性被广泛地应用在实时性要求较高的领域[1]。实时嵌入式操作系统VxWorks已经在国内的嵌入式系统开发中占据着重要地位。
1 BSP概念
在嵌入式系统中,板极支持包BSP(Board Support Package)是介于底层硬件和操作系统之间的一个接口,主要作用是初始化硬件和软件系统。设备驱动程序旨在隐藏底层硬件细节,为上层应用程序提供统一的API函数接口。在嵌入式系统的研发过程中,BSP和设备驱动程序的设计是关键环节,它的设计质量直接影响到整个系统的可靠性和稳定性[1]。BSP具体功能包括:(1)单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持。(2)为操作系统提供设备驱动程序和系统中断服务程序。(3)定制操作系统的功能,为软件系统提供一个实时多任务的运行环境。(4)初始化操作系统,为操作系统的正常运行做好准备。
BSP主要的两部分组成为:初始化代码,硬件驱动程序。
BSP的初始化是指从上电复位开始直到Wind内核和usrRoot()函数启动的这段时间内系统的执行过程。具体包括:CPU初始化;设备初始化以及系统初始化;CPU初始化CPU内部寄存器;设备初始化智能I/O的寄存器,将板上设备接口与系统接口连通;系统初始化为系统的运行准备数据结构,进行数据初始化[2]。
2 BSP开发环境及BSP移植目的
Tornado是风河公司推出的集成开发调试环境,包含3部分:交叉开发工具和实用程序;运行在目标机上的实时操作系统VxWorks;连接宿主机和目标机的多种通讯方式,如以太网,串口线,仿真器等[2]。
开发环境及开发工具:开发板使用研华6186P4级主板,硬件配置为1 GB内存、2.8 GHz双核Pentium4 CPU、80 GB 5400转IDE硬盘、板载VGA图形控制器、双 10/100Base-T网络控制器、RTL81x9控制芯片网卡、开发软件使用Tornado 2.2,宿主机安装目录为“C:Tornado 2.2“。
Tornado 2.2带有PcPentium标准板级支持包,需要对其进行移植。移植目的为:(1)支持Pentium4处理器。(2)支持IDE硬盘。(3)支持以太网接口(Intel 82557/RTL81X9)。(4)支持PS2键盘、鼠标。(5)支持VGA图形控制器。
BSP移植需要熟悉并掌握VxWorks映像种类,系统的启动顺序和过程,以及BSP软件包中各文件的组成和作用以及相应的设置文件的修改[1]。
3 BSP移植实施步骤
实现BSP的移植有两大步骤:
(1)修改VxWorks的配置头文config.h中定义的相应参数,使编译出来的系统引导程序Bootrom映象符合开发板的硬件条件[3]。本例中为修改硬盘、键盘、鼠标、网卡、控制台及启动条件等相关参数。
(2)在config.h添加原BSP中没有的硬件定义,在BSP中添加相应的VxWorks版本驱动程序包,并修改相关文件。本例中需要添加RTL81X9网络控制芯片的驱动。
修改config.h中定义的相应参数时应复制一份纯净未作修改的C:Tornado2.2 argetconfig下的pcPentium文件夹,改名为6186,其后步骤如下:
1)打开目录 C: ornado2.2 argetconfig6186下config.h文件。
2)指定 CPU类型:定位到“CPU auto detection with sysCpuProbe()that support Intel CPUs for now“,将CPU定义改为PENTIUM4。
#define CPU PENTIUM4/* for CPU conditionals in BSP*/
#define X86CPU_DEFAULT X86CPU_PENTIUM4/*for sysProcessor set in BSP*/
3)指定启动行命令:定位到“DEFAULT_BOOT_LINE”,修改启动命令行CPU==PENTIUM4分支定义如下
#elif(CPU==PENTIUM4)
#define DEFAULT_BOOT_LINE“ata=0,0(0,0)host:/ata0/vxWorks h = 192.168.1.3 e =192.168.1.4 u=target pw=target tn=target o=fei0”
其意义是:使用第0个ata控制器和第0个驱动;主机名称为host;VxWorks映象下载的完整路径是/ata0/vxWorks;宿主机IP为192.168.1.3;目标机IP为192.168.1.4;下载VxWorks映象的FTP服务器的用户名为target;FTP密码为target;目标机名称为target;通过网口1(fei0,Intel 82557芯片控制)使用WDB(WindDebug)协议。
4)指定启动映象路径:定位到”BOOTROM_BIN”,指定 Bootrom映象路径为“/ata0/vxworks/bootrom.bin”。
5)指定网卡驱动程序:定位到“Network driver options”设置 INCLUDE_END处于定义状态;设置INCLUDE_FEI_END(Intel 82557芯片)处于定义状态(define);添加RTL81X9芯片相应定义如下
#define INCLUDE_END/*Enhanced Network Driver Support*/
#define INCLUDE_FEI_END/*(END)Intel 8255[7/8/9]PCI interface*/
#define INCLUDE_RTL_81X9_END/*(END)Realtek 81x9Fast Ethernet Controller*/
定位到“/* Include PCI support for drivers&libraries that require it.*/”,添加 define(INCLUDE_RTL_81X9_END)分支条件。
6)指定硬盘及文件系统:定位到“/* driver and file system options*/”修改文件系统及硬盘相应参数如下
#define INCLUDE_DOSFS/* include dosFs file system*/
#undef INCLUDE_FD/* include floppy disk driver*/
#define INCLUDE_ATA/* include IDE/EIDE(ATA)hard disk driver*/
定位到“/* ATA controller one ataResources[]parameters*/”修改IDE硬盘相关参数如下:
#define ATA1_CTRL_TYPE(IDE_LOCAL)/*ATA 1 logical type*/
#define ATA1_NUM_DRIVES(0)/* ATA 1number drives present*/
#define ATA1_INT_LVL(0x0f)/*ATA 1 interrupt level*/
定位到“/* Warm boot(reboot)devices and parameters*/”,修改 SYS_WARM_TYPE值为 SYS_WARM_ATA使系统由硬盘热启动。
7)指定外部输入设备定义:定位到“INCLUDE_PC_CONSOLE”,设置为定义状态(define)。VxWorks缺省状态不接受外部输入,该设置用于对控制台的支持,也是使用键盘、鼠标等外部输入设备的前提。
8)指定图形接口定义:添加 INCLUDE_WINDML、INCLUDE_WINDML_PS2_KEYBOARD、INCLUDE_WINDML_PS2_POINTER3个选项并设置为定义状态。该项设置用于使用WINDML(Wind Media Library)提供基本的图形、视频和声频技术以及提供设计标准设备驱动程序框架,后两个设置用于在图形界面下使用PS2键盘及鼠标。
经上述操作后,config.h中定义的相应参数已修改完毕,并添加了RTL81x9芯片定义,下一步需要添加相应的VxWorks版本驱动程序包,步骤如下:
①在Realtek主页上有提供for VxWorks的81X9系列的驱动,下载后解压缩得到驱动程序包。
②将驱动程序包中的configNet.h和sysLib.c覆盖6186中原有文件,congfig.h需要修改的部分在前一步中已经添加了相应定义。
③将srcdrvendunsupported下的rtl81x9.c和hdrvendunsupported下的rtl81x9.h拷贝到当前BSP目录下。
④修改sysRtl81x9End.c和rtl81x9.c对rtl81x9.h头文件引用的路径为#include“drv/end/unsupported/rtl81x9.h”。修改为#include“rtl81x9.h”。
⑤修改BSP文件夹中的Makefile文件,修改文件内容为
TARGET_DIR=6186
MACH_EXTRA=rtl81x9.o
将rtl81x9.o作为外部输入加入系统。
上述修改完成打开Torando,选择“Build”菜单的“Build Boot ROM”选择BSP为6186,Image选择“bootrom.bin”,选择“OK”生成映象文件。将该映象文件导入VxWorks目标机中启动系统。输入“devs”命令,可以看到系统连接的外设名称及驱动,其中”/pcConsole/1”为键盘、”/ata0“为硬盘、”/pointer/0”为鼠标。输入“ifShow”可以看到3个网络接口,分别为fei<unit number 0>、rtl<unit number 0>、fei<unit number 1>及各个接口的参数,至此各设备驱动正常,BSP移植成功。
4 结束语
在介绍BSP的概念和作用的基础上,重点介绍了VxWorks的BSP设计中需要注意的问题及移植时的具体步骤。以研华6186系列Pentium4开发板为例,进行了BSP的移植及外设驱动的添加。尽管目标板硬件不同,处理器类型、BSP的实现也不尽相同,但基本思想是一致的。
[1] 周伯平,张杨,吴琼.VxWorks下设备驱动程序及BSP开发指南[M].北京:中国电力出版社,2004.
[2] 乔从连.VxWorks系统的BSP概念及启动过程[J].舰船电子对抗,2005(1):120-125.
[3] 高超,郝燕玲,吴润.VxWorks下网卡驱动程序的开发[J].微计算机信息,2004(9):78-80.