3. 配置串口驱动

任务说明

在VxWorks 7 BSP中启用串口驱动并配置参数,使目标板通过串口输出控制台信息。本案例以典型16550 UART为例,完成从驱动使能到控制台输出的完整配置链路。

实现步骤

1. 在BSP的config.h中使能串口驱动——VxWorks 7使用DTS(Device Tree Source)描述硬件,需在DTS中声明串口节点并确保内核配置包含对应驱动。

// <BSP>/config.h 关键配置
#define INCLUDE_SERIAL_NS16550   /* 使能16550串口驱动 */
#define CONSOLE_BAUD_RATE       115200  /* 控制台波特率 */
#define CONSOLE_TTY             "/tyCo/0"  /* 控制台终端设备 */
#define CONSOLE_DEV_NAME        "/tyCo/0"

2. 在DTS文件中添加串口节点——编辑BSP的.dts或.dtsi文件,确保串口硬件地址与中断正确描述:

// <BSP>/hwConf.dts 片段
soc {
    serial@3f8 {
        compatible = "ns16550a";
        reg = <0x3f8 0x8>;       /* 基地址0x3F8,标准COM1 */
        interrupts = <4>;         /* IRQ4 */
        clock-frequency = <1843200>; /* 晶振频率 */
        current-speed = <115200>;
    };
};

3. 验证驱动编译链接——在BSP编译目录执行:

cd <workspace>/<BSP>
make clean
make   # 编译BSP,确认无串口驱动相关错误

运行与验证

启动目标板,通过串口线连接主机(波特率115200,8N1)。若配置正确,启动过程中VxWorks引导信息与shell提示符->将出现在串口终端。

验证控制台功能,在shell中执行:

-> i
  NAME        ENTRY       TID    PRI   STATUS      PC       SP    ERRNO  DELAY
  ----------  ----------  -----  ---   --------  --------  --------  -----  -----
  tExcTask    excTask      ...   0     PEND       ...       ...      0      0
  tLogTask    logTask      ...   0     PEND       ...       ...      0      0
  tShell      shell        ...   1     READY      ...       ...      0      0
  value = 0 = 0x0

任务列表正常输出即表明串口控制台工作正常。若需修改波特率,仅需更改CONSOLE_BAUD_RATE并重新编译BSP。

常见问题

  • 无输出:检查DTS中reg地址与硬件实际地址是否一致;确认clock-frequency与板载晶振匹配。
  • 乱码:主机终端波特率与CONSOLE_BAUD_RATE不一致。
  • 驱动未加载:在config.h中确认INCLUDE_SERIAL_NS16550已定义,且DTS节点compatible属性与驱动匹配。