1 介绍

VxWorks是美国风河公司制作的一个实时操作系统,U-Boot是一个广为人知的通用启动加载器,它是嵌入式系统加电后运行的最早的代码。U-Boot通常被用于嵌入式系统,比如PowerPC或者ARM设备,这些设备上没有X86的BIOS。

尽管VxWorks可以有它自己的bootloader(VxWorks Bootrom或者Bootapp),U-Boot具有更多的功能,如果硬件板子已经提供了U-Boot的支持,那我们更有道理去直接使用它。

U-boot : http://www.denx.de/wiki/U-Boot/WebHome

VxWorks : https://www.windriver.com/products/vxworks/

现在最新的VxWorks版本(VxWorks 7)已经比过去的VxWorks版本(我在VxWorks 6.9上遇到了好多问题)更加简单地和U-Boot集成了。

这篇文章讲述了我们为最近的VxWorks 7 BSP进行设置的细节,我们选择使用一个独立于VxWorks镜像文件的DTB文件,而不是将DTB文件嵌入到VxWorks镜像里面。这将给我们更好的灵活性,让启动行能够从U-Boot上进行修改,而不需要重新编译DTB。

具体地,VxWorks镜像需要将U-Boot头编译进去,然后U-Boot需要配置传递命令行参数以及MAC地址给VxWorks。

2 编译VxWorks镜像文件

一个支持U-Boot的VxWorks镜像文件需要编译(将把U-Boot的头加入到VxWorks二进制中)

Cobham Gaisler 提供了一个LEON SPARC架构的板卡以及针对Windriver的VxWorks 7(SR0620)的板级支持包(BSP),可以基于Linux和Windows平台进行开发。

Sparc VxWorks 7 SMP

LEON SPARC板卡提供了基于VxWorks SR0620发布的源代码,VxWorks 7需要一个有效的WindRiver 源码许可。

VxWorks有多种类型的系统Image,可用于不同的引导、存储、加载或执行场景。不同的Image,会包含不同的组件。
vxWorks

只有这种类型的Image(有时称为可下载镜像)需要引导程序。它在开发阶段最常用(也是最实用的),因为不需要在每次修改时就复制到Target的本地存储设备(例如重新烧写Flash)。因为这种Image通常就存储在Host里,或Networks上。它通过引导程序下载到Target,并加载到RAM中。而符号表可以保存在Host的文件vxWorks.sym中,Host的开发工具可以直接使用它。这种方法可以减小Image的尺寸,缩短引导时间。

其他类型的Image(有时称为独立镜像)不需要单独的引导程序。它们通常用于产品阶段,存储在Target的Flash等设备中。可能还需要使用非默认启动参数配置独立映像。

vxWorks_rom

存储在Target的非易失性设备中的一种Image。它将自身复制到RAM,然后将处理器切换到RAM执行。这种Image不需要压缩,比其它基于ROM的Image大,因此启动时间稍慢;但是它的执行速度比vxWorks快。

vxWorks_romCompress

存储在Target的非易失性设备中的Image。它几乎是完全压缩的,仅在开机时/重启时处理器会立即执行少量未压缩部分。这个小部分负责将ROM中Image的压缩部分解压到RAM中,并使处理器跳转到RAM执行。这种压缩使它比其他Image小得多。但是,解压操作会增加引导时间。它比vxWorks_rom需要更长的启动时间,但比其它基于ROM的Image占用更少的空间。运行时的执行速度与vxWorks_rom相同。

vxWorks_romResident

存储在Target的ROM中的Image。它只在启动时将数据段复制到RAM,而文本段留在ROM中,因此被描述为ROM常驻类型。它有最快的启动时间,并使用最小数量的RAM,但它比其它Image类型运行得要慢,因为从ROM中获取指令比从RAM获取要慢很多。它显然适用于内存资源受限的系统。

下载地址

Files:

如何在VmWare上运行VxWorks 7

Date 2020-05-18
File Size 991.88 KB
Download 41

使用VxWorks 7 VxBus具体设备参数

使用具体设备参数给你的设备配置增加灵活性

几年前,我们给Renesas R-Car H3 SIP评估板开发了一个VxWorks 7的BSP,这包括给主要的SoC接口:串口,网络,MMC,I2C,GPIO以及PCI Express设计开发驱动。

我写了PCE Express控制器的驱动并插入了一张Intel i210的PCIe卡到R-Car H3评估板的PCIe插槽上测试了驱动。然后我将VxWorks 7下的Intel前兆以太网驱动加入到了内核镜像并成功找到了i210的设备。i210被挂接到网络协议栈并且作为这块开发板上的第二个网络接口。

这个BSP被我们位于Leamington的开发团队使用,也被全球多个客户的团队使用。有一天,我们收到了一个问题反馈,说一个PCIe的CAN控制器在目标系统启动后没有被初始化。经过一些调试后发现PCIe主控制和PCIe终端之间的连接没有被创建。

这个PCIe控制器驱动有一个硬编码的1毫秒的链接建立超时时间,但是这个CAN控制器卡的链接需要最多5毫秒来才可稳定建立。我们可以简单地增加超时时间到一个更大的数值,但是如果没有PCIe外设存在,这将会没有必要地增加启动时间。

方案是将链接超时时间作为一个具体设备的参数,此参数可以在默认的超时时间对于某一个特别的使用情况不够时为板子在设备树中进行设置。