通过串口将带有用户程序的 VxWorks 映像下载到目标板

VxWorks 版本:5.5.1(使用商家提供的 U-Boot 引导)

ARM 芯片:ARM 926EJ-S

PC 机操作系统:Windows XP

1、编写测试应用程序

(1)基于 .c 的静态链接方式

在BSP目录下建立用户程序文件夹 usrAPI,将用户源程序拷贝到此目录下,然后在 usrconfig.c 的usrroot()(或在 cpeAppInit.c 的 userAppInit())函数结尾处调用用户程序 ,需要在 usrconfig.c(或 cpeAppInit.c )程序开始添加声明:#include "usrAPI/demo.c"。

通过串口将带有用户程序的 VxWorks 映像下载到目标板
vxworks_src\bsp\usrAPI\demo.c

 

通过串口将带有用户程序的 VxWorks 映像下载到目标板
vxworks_src\bsp\cpeAppInit.c


 

(2)基于 .o 的静态链接方式

在BSP目录下新建用户源程序文件(demo.c,demo.h),并编写测试程序(参考 基于 .c 的静态链接方式)。然后给 Makefile 中的 MACH_EXTRA 添加新的定义。

通过串口将带有用户程序的 VxWorks 映像下载到目标板

 

最后在 usrconfig.c 的usrroot()(或在 cpeAppInit.c 的 userAppInit())函数结尾处调用用户程序 ,需要在 usrconfig.c(或 cpeAppInit.c )程序开始添加声明:#include "demo.h"。

因为商家提供了 VxWorks 5.5.1 版本的操作系统(For ARM)文件,所以使用在命令行下 make 的方法生成 VxWorks 映像文件。

 

2、将 VxWorks 映像下载到目标板

将商家提供的 U-Boot 烧写完成后,使用超级终端,和 Kermit 协议,通过串口下载 OS 到内存。

(1)超级终端的设置

打开系统自带的超级终端程序,串口设置为:115200  8-N-1,数据流控制:无。

超级终端设置完成后,打开硬件评估板的电源,3 秒内按键盘,终止启动操作系统,结果如下图所示。

通过串口将带有用户程序的 VxWorks 映像下载到目标板

 

(2)NAND Flash 的擦除

如果 NAND Flash 中存放 VxWorks Image(格式 BIN )的区域之前烧写过数据,则在下载新的 VxWorks Image 之前,要先把 NAND Flash 中存放 VxWorks Image 的区域擦除,否则在后续进行 OS 更新(将下载到内存中的 VxWorks Image 保存到 NAND Flash )的操作时会报错。这是因为 NAND Flash 的编程原理是只能将 1 写为 0,而不能将 0 写为 1,所以在下载新的 VxWorks Image 之前,必须将对应的区域擦除,而擦除的过程就是把所有位都写为 1 的过程,块内的所有字节变为 0xFF。NAND Flash 的擦除命令如下图所示。

通过串口将带有用户程序的 VxWorks 映像下载到目标板
NAND Flash 的擦除命令

 

由于博主手里的硬件评估板是从 1M 开始的地方存放 VxWorks Image 的,所以此硬件评估板 NAND Flash 的擦除命令为:

通过串口将带有用户程序的 VxWorks 映像下载到目标板

 

(2)通过超级终端(串口)下载 VxWorks Image

输入命令:loadb 0x40100000,即准备将 VxWorks Image 通过 Kermit 协议下载到内存,地址为 0x40100000。

点击超级终端的 “传送” 选项卡,选择 “发送文件”,弹出发送文件的窗口,选择文件和协议后,点击发送,弹出传送界面,等待传送完成。

通过串口将带有用户程序的 VxWorks 映像下载到目标板

 

通过串口将带有用户程序的 VxWorks 映像下载到目标板
正在传送界面

 

通过串口将带有用户程序的 VxWorks 映像下载到目标板
传送完成

 

(3)OS 更新(将下载到内存中的 VxWorks Image 保存到 NAND Flash )

将内存中起始地址为 0x40100000 的 OS 映像保存到偏移为 0x100000 的 NAND Flash。

通过串口将带有用户程序的 VxWorks 映像下载到目标板

 

(4)读取 OS

将 NAND Flash 中偏移为 0x100000 的 OS 映像读取到内存中。

通过串口将带有用户程序的 VxWorks 映像下载到目标板

 

(5)运行 OS

将 OS 从 NAND Flash 读到内存 0x42000000 处,通过命令 ”go 0x42000000” 运行。

通过串口将带有用户程序的 VxWorks 映像下载到目标板

 

参考文献

[1] vxWorks应用程序自启动以及库的使用方法