3. UART 串口回环测试

实验目的

学习在 Linux 应用层通过 C 语言操作串口,掌握 UART 通信参数(波特率、数据位等)的配置,并通过硬件短接回环验证串口底层驱动的收发能力。

硬件准备与特别说明

硬件短接:请使用一根杜邦线,短接 40 Pin 排针的 第 8 针(UART2_TX) 与 第 10 针(UART2_RX)。

特别说明:出厂默认固件未开启 UART2。若在终端输入 ls /dev/ttyAS* 未发现 ttyAS2,请参考《BSP 开发指南》修改板级设备树(board.dts),将 &uart2 的 status 改为 "okay",并确保引脚复用为 PB0/PB1,重新编译内核并烧录。

源码获取

请在网盘 软件资料/demo/base-demos/uart_rw 目录下获取 uart_rw.c。

核心代码解析

本程序利用 termios 结构体将串口配置为 115200 波特率、8 位数据位、无校验、1 位停止位。在回环测试中,程序生成随机数据通过 write() 发出,延时后用 read() 读回,并通过 memcmp() 比对数据一致性。

交叉编译

在 Ubuntu 源码目录下执行:

make clean
make CC=arm-linux-gnueabihf-gcc

运行程序

将生成的 uart_rw 传至开发板:

scp uart_rw root@192.168.5.10:/root/

请根据实际的ip地址进行修改
在开发板终端执行:

chmod +x uart_rw
./uart_rw -d /dev/ttyAS2 -l -s 1024

预期现象
终端打印如下信息,证明底层物理链路与数据收发完美一致:

附:底层配置指南 —— 修改设备树开启 UART2

由于出厂默认固件未开启 40 Pin 排针上的 UART2 节点,若需进行串口测试,请按以下步骤修改底层配置并重新编译烧录固件:

定位板级设备树文件

在 SDK 根目录下,找到 T153 核心板的板级设备树文件:
device/config/chips/t153/configs/t153_nand_base/linux-5.10-origin/board.dts

修改 UART2 状态与引脚复用

使用文本编辑器(如 vim 或 nano)打开该文件,进行以下两处修改:

1.开启节点:搜索 &uart2,找到类似以下代码段,确保其 status 为 “okay”,且引脚复用指向 PB0 和 PB1:

&uart2 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&uart2_pins_active>;
pinctrl-1 = <&uart2_pins_sleep>;
status = "okay";
};

2.注释覆盖节点:在全文件末尾附近(约 2018 行),全志 SDK 默认添加了一个强制关闭的节点,请将其注释掉或删除:

//&uart2 {
// status = "disabled";
//};

3.重新编译内核并打包

回到 SDK 根目录,执行编译脚本:

1.单独编译内核与设备树

./yz_build.sh kernel

2.打包完整固件

./yz_build.sh pack

烧录验证

将新生成的固件通过全志烧录工具(PhoenixSuit)烧录至开发板。重启后登录终端,执行:

ls /dev/ttyAS*

若列表中出现 ttyAS2,则代表底层驱动修改成功,即可使用短接线进行回环测试。

作者:林晓燕  创建时间:2026-10-22 11:34
最后编辑:林晓燕  更新时间:2026-11-05 14:56