丁汉清 韩雪琴 杨永双
(郑州轻工业学院计算机与通信工程学院,郑州 450002)
摘要:使用WindRiver公司提供的Torrnado集成开发工具,将VxWorks移植到PowerPC处理器上,将移植结果应用在跑马灯的实现上,运行正常,表明移植成功。
DING han-qing HAN xue-qin Yang yong-shuang
College of Comp. and com. Eng., Zhengzhou Univ. of Light Industry, Zhengzhou, 450002, China
Abstract: The integrated development kit which WindRiver Corporation provides is used, and VxWorks is transplanted to the PowerPC processor, and the result is applied to the lantern. The normal running indicates successful transplant.
1 引言
VxWorks操作系统是美国Wind River公司设计开发的一种嵌入式实时操作系统(RTOS)。1983 年成功推出以来,已顺利应用到航空、航天、医疗、通信等领域,目前,已成为实际上的工业标准和军用标准[1]。
Motorola 公司的PowerPC 系列微处理器种类繁多,而且性能优越,系统集成度高,扩展能力强,可以广泛应用于各类嵌入式系统中,因此,成为当今嵌入式系统应用的主流。而在国内,尤其是在高校,VxWorks 系统方面的研究与应用尚处在起步阶段,知识储备较少,为使教学和实际应用紧密结合,我们开发了一套基于VxWorks/PowerPC 的嵌入式教学系统,开发过程中,研究的内容主要包括[2]:
- VxWorks 操作系统技术特征的分析。
- 以PowerPC 860(或其他合适的CPU)为核心的实验板的硬件设计。
- VxWorks 系统的移植,其关键是基于PowerPC 860 的VxWorks BSP 驱动程序包的开发。
- 实例程序的开发。主要涉及VxWorks 中的多任务调度、任务间通信机制以及所支持的网络协议的应用。
其中,VxWorks 系统的移植是整个系统开发的关键,下面主要就这方面的问题进行一些探讨。
2 VxWorks 操作系统的移植
要使得 VxWorks 操作系统能够在以PowerPC 860(CPU)为核心的硬件系统上正常运行,也就是进行操作系统移植,必须首先编写BSP 软件。由BSP 软件利用Tornado2.2 集成开发环境生成bootrom 程序和VxWorks 操作系统内核。系统首先运行bootrom 程序,初始化开发板上的硬件资源,然后通过串口或网口下载VxWorks 操作系统内核。当VxWorks 操作系统在硬件系统上正常运行后,操作系统移植工作完成[3]。
2.1 编写 BSP 软件
开发 BSP 时,主要是以目标板CPU 的BSP 文件为模板,在tornado\target\config 目录下创建用户的BSP 目录bspname (例如, 我们创建的目录名为860bsp)把tornado\target\config\all 下的文件和BSP 模版文件( 我们这里的摸版为C:\Tornado\target\config\ads860 目录下的文件)拷贝到该目录下,建立工程,并修改相关的源文件,根据具体情况选择合适的VxWorks 镜像类型。其中,config\all 目录下的文件是独立于目标系统的用户可修改的公共执行模块,config\ads860 目录下的文件是与目标系统相关的模块。下面以本项目设计的实验系统为例,详细介绍BSP 软件包中几个主要源文件不同的配置方法以及相应的运行过程。
1、config.h
config.h 文件是BSP 软件包中比较重要的一个文件,也是要修改的最关键的基本配置文件。该文件使得用户可以根据需要配置bootrom 程序中一些与实际目标主板硬件资源联系非常密切的参数,使得bootrom 可以正常地在实际目标主板上运行。config.h 文件中配置的参数是在configAll.h 文件内容的基础上根据实际目标主板的硬件资源设置的,其中包括系统启动方式、各种类型存储空间的范围、硬件接口的使用情况等。
2、ads860.h
该文件是参数配置头文件,其内容包括实验板上所有硬件资源的配置参数,主要包括860 微控制器中系统寄存器的配置参数、目标板存储区的配置参数、目标板串行通信接口的配置参数、系统中断的定义和优先级的分配、操作系统所需实时时钟的配置参数(包括系统时钟和辅助时钟),以及目标板网络地址等配置参数。
3、romInit.s
Bootrom 程序中运行的第一部分是用汇编语言编写的romInit.s 文件。该文件和sysAlib.s文件是BSP 软件包中的两个必须用汇编语言编写的程序。在这两个文件中,作为系统启动运行的最初程序,虽然文件内容和所处的运行环境不同,但主要完成以下几项工作:对实验板上MPC860 微控制器中几个特殊寄存器进行配置,使微控制器能够开始工作;对系统的存储空间进行划分;初始化C 语言程序的运行环境;跳至C 语言程序段。
4、其它与设备相关的文件
在 BSP 软件包中还包括与硬件资源联系的非常紧密的一些文件,即通常所说的设备驱动程序。这些文件无论是在bootrom 中还是在随后生成的VxWorks操作系统中都起了非常重要的作用。
编写设备驱动程序要求程序员不但要十分了解硬件系统的工作原理,还要求程序员对设备驱动程序在VxWorks 操作系统中的调用十分清楚。
每一种设备分别由不同的设备驱动程序控制,不同设备之间没有紧密的联系,因此不同设备的驱动文件可以分别编写和调试。
5、makefile
makefile 文件在BSP 软件包进行编译时起到关键作用。Tornado2.2 集成开发环境根据makefile 文件中的内容对BSP 进行条件编译、链接,生成可执行文件。
由于 VxWorks 操作系统的源文件中大量采用条件编译语句,因此在makefile 文件中需要定义BSP 软件在生成bootrom 程序过程中所需配置的硬件、软件参数,如:开发板所采用 的CPU 类型,存储区的配置情况以及编译时采用的工具,编译过程中所需系统文件和头文件存放的路径,最终生成可执行文件的格式等重要信息。
在 VxWorks 系统中开发BSP 时不必自行编写makefile,只要在现成的makefile 上做一定的定制,主要工作集中在对宏定义的修改。
需要注意的是,在makefile 文件中有一些参数已经在config.h 文件中定义过了,必须保证两处的定义一致,否则会出现编译错误。
2.2 编译和烧写 bootrom 程序
在完成 BSP 软件包编写工作后,由集成开发环境Tornado2.2 将其编译链接生成bootrom程序和VxWorks 操作系统核。
1、编译 bootrom 程序
首先在编译链接生成bootrom 程序时,用户需要选择开发板系统启动方式和通信方式。在本实验系统中,bootrom 选用的是压缩方式的bootrom 程序。该程序在运行时先由ROM中复制到RAM 中,自动解压缩,然后运行。
2、bootrom 烧写方式有多种,对于在线系统调试,为方便修改,现在使用较多的是JTAG调试器和BDM 调试器。我们的系统采用的是MPC 系列的CPU MPC860,它提供有BDM接口。因此可以很方便的使用BDM 调试工具编程。MPC BDM 调试工具通过宿主机的打印口与MPC BDM 接口电缆相连,然后加到目标板的BDM 接口上。连接BDM 和目标板的电源,(此时也可以将串口线和网线连接到主机上)。烧写程序之前,将以上编写的程序编译成二进制目标代码拷贝到c:\sds74\cmd\init 下。打开 SDS74 调试软件,首先要下载烧写boot 的文件,然后执行run/go 命令,大约需要几分钟,bootrom 烧写完成。将 bootrom 烧好后,拔掉BDM 和目标板的电源以及BDM 电缆,然后再插上目标板的电源,bootrom 将运行,正常时会在主机的串口超级终端显示如下信息:BOOT>,此时可以说明bootrom 烧写成功。
2.3 编译和下载VxWorks 操作系统映像在 bootrom 运行成功后,由同一个BSP 软件包在Tornado2.2 集成开发环境中建立一个bootable 的工程。在工程中编译生成VxWorks 操作系统映像。
用户可以根据需要更改操作系统中所包含的组件,然后编译生成VxWorks 操作系统映像。这里,我们编译生成的操作系统映像(VxWorks 的ram 镜像)文件名为sharenet.img。
在成功地编译生成VxWorks 操作系统映像后,就可以向实验板下载VxWorks 操作系统映像了。下载步骤如下:
第一步,当开发板上电启动后,它首先运行保存在启动ROM 中的bootrom 程序,并通过串行通信接口与计算机通信,向计算机的超级终端发送系统运行信息,并接收控制命令;通过网口下载操作系统映像
第二步 , 启 动和配置ftp server 设置: 运行程序tornado 2.0->ftp server , 选择Security->user/rights 中添加一个用户target,密码target,主目录C:\。然后点击Done,ftp server配置完成。这些设置和编写的BSP 程序中的设置有关。
第三步,将主机 IP 设为192.168.1.1,子网掩码255.255.255.0。将sharenet.img 拷贝到C:\。这些设置也和编写的BSP 程序中的设置有关。目标板上电后,3 秒以内按回车键进入boot shell,如图1:
图 1 boot shell 界面
在主机的串口超级终端中输入@,实验系统目标板开始从主机的ftp server下载sharenet.img(VxWorks 的ram 镜像)。下载完成,sharenet.img 自动运行,出现如图2 所示的界面,表示VxWorks 镜像在目标板启动完成,此时VxWorks 内核已经装载到目标板,可以同主机tornado(VxWorks 的集成开发环境)进行连接了。
图2 VxWorks 启动界面
3 应用程序在开发板上的实现移植工作完成以后,我门就可以在实验板上进行应用程序的开发,例如在实验板上开发运行一个点灯程序:启动Tornado II 集成开发环境,使用工程向导创建一个可下载工程(downloadable application modules)项目project1,在创建过程中选择工具链(toolchain)为PPC860gnu。在工程项目中编写或添加应用程序源文件,RunLight.c 文件。
#include "vxworks.h" #include "drv/multi/ppc860Siu.h" #define PD10 (0x0020) #define PD09 (0x0040) #define RUNLIGHT PD10 #define LINKLIGHT PD09 void RunLight(void) { int immrVal = vxImmrGet(); *PDDIR(immrVal)|=RUNLIGHT; while(1) { *PDDAT(immrVal) ^=RUNLIGHT; taskDelay(sysClkRateGet()/2);/*delay 0.5 second*/ } } void run() { taskSpawn ("RunLight", 100,0 /*switchTaskOptions*/,0x1000, (FUNCPTR)RunLight, 0,0,0,0,0,0,0,0,0,0); }/*通过以上函数添加任务,点亮系统指示灯*/
实验证明系统指示灯按程序的设置正常运行。
4 总结
我们已经利用基于 VxWorks 的BSP 开发包和Tornado 集成开发环境成功进行了VxWorks在PowerPc 系统上的移植与实现。在开发过程中深感BSP 在整个系统软件中的重要性——没有正确的BSP 软件,整个系统的启动和运行也不会正确。另外需要强调的是:对同一目标板 而言,不同操作系统的BSP 在本质上是一样的,但是不同的操作系统将提供不同的支持库,另外在BSP 结构上也可能会有所不同,在做系统移植的时候应该注意。
本文作者创新点:对VxWorks 操作系统在PowerPC 系统上的移植过程进行了具体而实用的描述,此过程是嵌入式系统开发的关键步骤,必将为电信级通信设备或医疗仪器等高科技产品的研发打下基础,有一定的应用价值。
参考文献
- 王学龙. 嵌入式VxWorks 系统开发与应用. 人民邮电出版社
- 丁汉清韩雪琴等基于 VxWork/ PowerPC 的嵌入式实验系统的开发项目申请书. 2006-3
- 王金刚等. 基于VxWorks 的嵌入式实时系统设计. 清华大学出版社, 2004-10.
- 王建许毅平周曼丽. ARM7 嵌入式系统中Bootloader 分析与设计.