vxWork Image Type

vxWorks 镜像可以大致分为三类:

1. 可加载的vxWorks(由单独的bootrom等引导程序加载启动):

VxWorks映像类型旨在在开发期间使用,通常称为可加载镜像。在开发环境中,映像通常存储在主机系统(或网络上的服务器)上,由引导加载程序下载到目标系统,然后加载到RAM中。符号表在主机上维护(在文件vxWorks.sym中),主机开发工具在其中使用它。将符号表保留在主机上可以减小映像大小并减少启动时间。如果使用INCLUDE_STANDALONE_SYM_TBL组件重新配置了VxWorks,则符号表将包含在VxWorks映像中。

2. vxWorks_rom (存储在ROM且运行于RAM)

(注意:该类型镜像还有压缩过的vxWorks_romCompress)

该镜像存储在目标上的ROM中。它将自身复制到RAM,然后使处理器将执行切换到RAM。由于该映像未压缩,因此它比其他基于ROM的映像大,因此启动时间较慢。但是它的执行时间比vxWorks_romResident更快。

3. vxWorks_romResident(存储在ROM且运行在ROM)

该映像存储在目标上的ROM中。它在启动时仅将数据段复制到RAM;代码段段保留在ROM中。因此,它被描述为驻留在ROM中。它具有最快的启动时间并且使用最少的RAM,但是它比其他映像类型运行得慢,因为获取指令所需的ROM访问要比从RAM中获取指令慢 P2020RDB 实例固化教程

玩过vxWork BSP的朋友大致都清楚bootrom的大小很多都固定为1M的大小,但是很多时候vxWorks_rom都远远大于1M,压缩类型的也不能解决此问题。当vxWorks_romCompress大于1M时则会出现下面错误:


D:/opt/WindRiver/windriver6.9.4.9_powerpc/vxworks-6.9/host/x86-win32/bin/romsize ppc -b 00100000 vxWorks_romCompress
vxWorks_romCompress: 15568(t) + 1061632(d) = 1077200 (28624 over)
Error: image is larger than 1048576 bytes!
make.exe[1]: *** [vxWorks_romCompress] Error 1
解决过程

下面则围绕此问题展开:

1. 如何生成rom类型的镜像

在镜像工程中设置build Options

P2020 VxWorks

2. 如何解决上面错误

两张方案:

2.1 修改BSP
方法

修改config.h和makefile中的ROM_SIZE(新建镜像工程)2.2 修改镜像工程的属性配置

P2020 VxWorks

P2020 VxWorks

3. 如何烧写vxWorks_rom到flash

参考下面这篇文章:

用codeWarrior TAP下载bootrom.bin到P2020_RDB开发板

烧写文件为elf类型时,不用选择应用地址偏移量

思考下面编译选项由什么控制

P2020 VxWorks

P2020 VxWorks