基于VxWorks的BSP技术分析

时间:2012-06-01来源:网络

VxWorks在ROM中运行,只要把VxWorks image的data段复制到RAM的RAM-LOW-ADRS,text部分留在ROM并在ROM执行。在ROM中运行VxWorks可以节省RAM空间,有利于应用程序有更大的空间运行,但是运行速度相对较慢。VxWorks在RAM中运行,写入ROM中的boot或VxWorks image是压缩的,需先解压并复制所有的text或data到RAM的RAM-LOW-ADRS,在RAM中运行。

图1 VxWorks加载映象启动顺序

3.2 VxWorks映像的启动流程

VxWorks应用系统的启动顺序,一般是先加载BootRom; BootRom再加载VxWorks应用,并跳转到VxWorks的入口SysInit执行。SysInit()复位CPU,执行最少而必要的硬件初始化,转而调用UserInit(),完成内核启动之前的初始化。UserInit()调用子程序激活VxWorks内核。首先子程序 SysHWInit()将硬件置于初始的安全状态,然后子程序 KernelInit()激活VxWorks内核,生成多任务环境,并产生一个任务来安装驱动程序以及创建设备、初始化VxWorks 库、调用应用程序启动代码,而用来生成这个任务的子程序是UserRoot()。可见,通用的设备驱动程序应该位于UserRoot()中,而 BSP专用的设备驱动程序则位于子程序SysHWInit()中。整个启动过程完成后,系统进入多任务环境运行[3]。VxWorks可加载映像的启动顺序如图1所示。

4 基于PC486BSP设计过程及应用程序加载

4.1 BSP设计过程

BSP开发处于整个嵌入式开发的前期,是后面系统上应用程序能够正常运行的保证。大体上,BSP的设计与开发可以分为以下几个步骤:

(1)建立开发环境。安装 VxWorks 集成开发环境 Tornado,采用宿主机目标机交叉开发。

(2)选择合适的BSP模板。一个合适相近的BSP模板可以大大减少开发周期。

(3)bootrom的运行。修改、添加WIND内核激活前的初始化代码。

(4)VxWorks的配置。修改或添加所需要组件及驱动程序,激活内核,实现基本的操作系统功能。

(5)测试与验证。正确实现bootrom及VxWorks的下载,根据不同需要,进行修改与测试。

结合实际中的工程,针对单串口的pc486目标机,在串口通信方式下,如何生成BSP及VxWorks系统的启动流程做一简单介绍。VxWorks主机工具与目标记交互关系如图2所示。

图2 VxWorks主机工具与目标机交互关系

(1)建立所需目录。

在c:Tornadotargetconfig中建立子目录all486,srl486,拷贝c:Tornadotarget configall中的全部文件到子目录all486中,拷贝c:Tornadotargetconfigpc486中的全部文件到子目录 srl486中以便修改且不影响其他人的使用。

(2)修改makefile。

修改或添加以下语句:

TARGET_DIR =srl486,TARGET_DIR为bsp目录名,将其指向要修改的bsp目录。

CONFIG_ALL=..all486,将缺省ALL的文件复制到all486目录,在all486目录下做自己的修改。

正确理解四个地址的含义,如下:

ROM_BASE_ADRS: rom的起始地址。

ROM_TEXT_ADRS: rom映象的起始地址。

ROM_SIZE: rom的大小。

RAM_HIGH_ADRS: VxWorks应用在存储器低端定位开始的地址。

上述地址根据目标机实际的硬件情况进行设置,在config.h,makefile和makefile.*文件中都要定义,且大小必须要保持一致。Makefile中的上述地址不以0X开头,与config.h中有所区别。

(3)修改config.h。这里config.h修改包括:

#define DEFAULT_BOOT_LINE

"tsfs(0,0)host:vxWorks h=192.168.0.66 e=192.168.0.98 u=target"

#if TRUE

#define INCLUDE_PC_CONSOLE

#endif

1 2 3

关键词: 嵌入式操作系统 VxWorks Tornado 板级支持包

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版