USB to UART in VxWorks

如何让VxWorks 7支持“USB转串口”适配器

1 简介

VxWorks是由风河(Wind River)提供的实时操作系统(RTOS),VxWorks下的USB堆栈是支持USB串行适配器设备的,可以通过“USB转串口”适配器访问VxWorks目标机控制台。

本文将描述如何创建和部署VxWorks系统以支持“USB转串口”适配器,以及如何将VxWorks系统的控制台(console)重定向到该“USB转串口”适配器。

2 前提条件

本文说明的前提条件是假设你正在使用:

  • Wind River VxWorks 7,SR0660
  • 从UEFI BIOS启动的Intel平台目标机
  • 一个USB闪存驱动器(最小4 GB)
  • 一个USB转串口适配器,支持3种类型的USB转串口适配器:
    • FTDI 232
    • Prolific 2303
    • 支持USB CDC协议的适配器

3 创建并编译VxWorks源码编译(VxWorks Source Build – VSB)项目

打开一个DOS shell,配置编译环境,然后编译项目:


cd <WIND_HOME>              // your installation directory
wrenv -p vxworks-7
cd <YOUR_WORKSPACE>         // your workspace
vxprj vsb create adapter_vsb -bsp itl_generic -smp -force -S
cd adapter_vsb              // your workspace
vxprj vsb add USB_CLASS     // add the USB class to the VSB
vxprj vsb add USB_HELPER    // add the USB helper to the VSB
vxprj vsb add USB_SERIAL    // add the USB serial class to the VSB
make -j 32                  // build the VSB

4 创建和编译一个基本的VxWorks镜像项目(VIP)

按照下面的步骤创建一个基本的VxWorks镜像项目(VIP)


cd ..
vxprj create -smp itl_generic adapter_vip -profile PROFILE_INTEL_GENERIC -vsb adapter_vsb
cd adapter_vip
vxprj vip component add INCLUDE_MULTI_STAGE_WARM_REBOOT
vxprj vip bundle add BUNDLE_STANDALONE_SHELL
                            // add support for all supported USB serial adapters
vxprj vip component add INCLUDE_USB_GEN2_SER_FTDI232
vxprj vip component add INCLUDE_USB_GEN2_SER_PL2303
vxprj vip component add INCLUDE_USB_GEN2_SER_WRS_CDC
vxprj vip component add INCLUDE_USB_GEN2_SERIAL_INIT
vxprj build

5 启动目标机上的VxWorks并测试“USB转串口”的适配器

5.1部署UEFI Bootloader和VxWorks内核映像

有关如何编译并在USB闪存驱动器上部署UEFI引导加载程序(bootloader)以及VxWorks映像文件的说明,请参考itl_generic BSP自述(readme)文件,在下面路径找到此自述(readme)文件:

<WIND_HOME>\vxworks-7\pkgs_v2\os\board\intel\itl_generic-a.b.c.d\itl_generic_readme.md

在按照以下说明部署UEFI引导加载程序(bootloader)和vxWorks内核映像之后,你将在USB闪存驱动器上找到以下文件:

  • EFI BOOT
    • bootapp.sys
    • BOOTIA32.EFI
    • BOOTX64.EFI

5.2 准备Intel的目标机

配置目标机的BIOS,然后从USB闪存驱动器引导目标机。

将USB闪存驱动器连接到Intel目标机。

将”USB转串口“适配器链接到Intel目标机。

5.3 启动目标机

给目标机上电,目标启动后,你将看到内核shell的提示符,你还将看到一条消息,表明”USB转串口“适配器的驱动程序已经初始化该设备。


Target Name: vxTarget



                 VxWorks 7 SMP 32-bit

 Copyright 1984-2021 Wind River Systems, Inc.

      Core Kernel version: 3.2.0.0
               Build date: Jan 31 2021 11:44:04
                    Board: x86 Processor (ACPI_BOOT_OP) SMP/SMT PAE
                CPU Count: 8
           OS Memory Size: ~16224MB
         ED&R Policy Mode: Permanently Deployed



Adding 8849 symbols for standalone.

-> Find USB-to-Serial adapter device: FTDI USB-to-Serial Adapter
Added new USB-to-Serial adapter device as /usb2ttyS/0

-> devs
drv refs name
...
12 [ 3] /usb2ttyS/0
...
->

6 将VxWorks的控制台重定向到/usb2ttyS/0

添加VxWorks控制台组件INCLUDE_USB_GEN2_SERIAL_PCCONSOLE_INIT时,将创建一个名为/ttyUSB0的新设备,该设备代表VxWorks I/O系统下的/usb2ttyS/0


vxprj vip component add INCLUDE_USB_GEN2_SERIAL_PCCONSOLE_INIT
vxprj vip component add INCLUDE_USB_GEN2_HELPER
vxprj vip parameter setstring CONSOLE_NAME "/ttyUSB0"
                          // check that the console name is /ttyUSB0
vxprj vip parameter value CONSOLE_NAME
CONSOLE_NAME = "/ttyUSB0"
                          // check that the console baud rate is 9600
vxprj vip parameter value CONSOLE_BAUD_RATE
CONSOLE_BAUD_RATE = (9600)

重新编译VxWorks内核并部署镜像文件到目标机上的USB闪存驱动器上。

7 重启目标机让控制台重定向到“USB转串口”适配器

用串口线将连接到目标机USB端口的“USB转串口”适配器和一个工作机的串口连接起来,将USB闪存驱动器连接到目标机,然后重新启动目标机。


-> devs
drv refs name
...
 3 [ 3] /ttyUSB0
...
 2 [ 3] /tyCo/1  ==>  /ttyUSB0
12 [ 3] /usb2ttyS/0
->

现在VxWorks的控制台可通过PC控制台(PC Console)和“USB转串口”适配器连接来工作。