T113-S3开发板调试串口不够用?手把手教你将Tina Linux的调试输出从UART0切换到UART1

发布时间:2026/6/15 22:50:54

T113-S3开发板调试串口不够用?手把手教你将Tina Linux的调试输出从UART0切换到UART1 T113-S3开发板调试串口切换实战从UART0迁移到UART1的完整指南当你在T113-S3开发板上进行嵌入式开发时可能会遇到一个常见但棘手的问题默认的调试串口UART0被其他外设比如LCD占用导致无法正常输出调试信息。这种情况就像在漆黑的房间里找不到电灯开关——你明明知道系统在运行却看不到任何反馈。本文将带你一步步解决这个问题将调试输出从UART0切换到UART1让你重获调试的眼睛。1. 问题诊断与前期准备在开始修改配置之前我们需要先确认几个关键点。首先使用万用表或示波器检查UART0的TX引脚通常是PD18是否有信号输出。如果确实被LCD占用你会看到持续的波形而非串行数据。常见冲突场景检查清单LCD显示屏是否使用了PD18-PD21引脚蓝牙模块是否占用了UART1开发板原理图上UART1的引脚是否被其他功能复用提示全志芯片的引脚复用功能寄存器通常位于0x0300B000地址空间可以通过uboot的md命令查看当前配置准备好以下工具和文件Tina Linux SDK完整源码串口调试工具推荐使用picocom或minicom开发板原理图PDF终端文本编辑器vim或nano2. 系统级配置修改2.1 sys_config.fex文件调整这个文件相当于全志平台的硬件抽象层位于Tina-Linux/config/device/config/chips/t113/configs/mq_r/sys_config.fex找到[uart_para]段落后修改为以下配置[uart_para] uart_debug_port 1 uart_debug_tx port:PD2141defaultdefault uart_debug_rx port:PD2241defaultdefault关键参数解析参数值说明4功能号表示UART功能不同SoC可能不同1上拉/下拉1表示上拉0表示下拉default驱动强度保持默认即可2.2 设备树文件修改设备树文件需要两处修改首先是board.dtsTina-Linux/config/device/config/chips/t113/configs/mq_r/board.dts添加或修改以下节点uart1 { pinctrl-names default, sleep; pinctrl-0 uart1_pins_a; pinctrl-1 uart1_pins_b; status okay; }; uart1_pins_a: uart10 { pins PD21, PD22; function uart1; drive-strength 10; bias-pull-up; }; uart1_pins_b: uart11 { pins PD21, PD22; function gpio_in; };然后是uboot-board.dts路径为Tina-Linux/config/device/config/chips/t113/configs/mq_r/uboot-board.dts这里需要特别注意与LCD等外设的引脚冲突典型修改如下/ { aliases { serial0 uart0; serial1 uart1; }; }; uart1 { pinctrl-names default; pinctrl-0 uart1_pin; status okay; };3. Bootloader配置调整3.1 U-Boot主配置首先确认当前使用的配置文件cd Tina-Linux/lichee/brandy-2.0/u-boot-2018 make sun8iw20p1_defconfig然后修改配置文件vim configs/sun8iw20p1_defconfig找到并修改串口配置CONFIG_CONS_INDEX2 CONFIG_DEBUG_UARTy CONFIG_DEBUG_UART_SUNXIy CONFIG_DEBUG_UART_BASE0x02500400 CONFIG_DEBUG_UART_CLOCK240000003.2 环境变量配置修改env.cfg文件vim Tina-Linux/config/device/config/chips/t113/configs/mq_r/env.cfg更新以下参数consolettyS1,115200 earlyconsunxi-uart,0x02500400波特率对照表频率寄存器值实际波特率24MHz1311520024MHz265760024MHz52288004. 内核配置与编译4.1 Linux内核配置修改内核配置文件vim Tina-Linux/config/device/config/chips/t113/configs/mq_r/linux-5.4/config-5.4确保以下选项正确设置CONFIG_SERIAL_8250y CONFIG_SERIAL_8250_CONSOLEy CONFIG_SERIAL_8250_NR_UARTS4 CONFIG_SERIAL_8250_EXTENDEDy CONFIG_SERIAL_8250_SHARE_IRQy CONFIG_SUNXI_UARTy CONFIG_EARLY_PRINTKy4.2 编译与烧录执行完整编译流程make -j$(nproc) mboot pack常见编译问题排查设备树语法错误使用dtc -I dtb -O dts反编译验证引脚冲突警告检查pinctrl相关dts节点串口驱动缺失确认make kernel_menuconfig中的串口配置5. 测试与验证5.1 启动日志分析正常启动流程应该显示以下关键节点[BOOT0] → [U-Boot] → [Linux内核]使用以下命令测试串口功能# 在开发板上 echo UART1 Test /dev/ttyS1 # 在主机上 picocom -b 115200 /dev/ttyUSB15.2 常见故障排除现象1只有Boot0输出无U-Boot打印检查sys_config.fex的uart_debug_port设置验证U-Boot的CONFIG_CONS_INDEX值现象2内核启动后无控制台输出确认env.cfg中的console参数检查内核earlycon参数地址是否正确现象3输入字符无响应测量UART1 TX/RX引脚电压正常应为3.3V确认终端软件波特率设置115200 8N16. 高级调试技巧6.1 多串口并行调试当需要同时监控多个串口时可以使用socat工具socat -d -d pty,raw,echo0 pty,raw,echo0 cat /dev/pts/1 | tee uart1.log cat /dev/pts/2 | tee uart2.log 6.2 内核早期打印优化修改earlycon参数可以获取更早的启动信息chosen { bootargs earlyconsunxi-uart,0x02500400,115200n8 consolettyS1,115200; };6.3 性能调优参数UART驱动参数优化表参数默认值推荐值作用fifo_size64128增大FIFO缓冲区timeout30001000减少传输延迟rx_trig14提高接收灵敏度在实际项目中我发现最常出错的环节是设备树引脚配置与sys_config.fex的不一致。建议每次修改后使用sunxi-pio工具验证引脚状态sunxi-pio -p PD21 -m 4 -v

相关新闻