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属性与驱动匹配。