news 2026/6/15 22:50:53

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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命令查看当前配置

准备好以下工具和文件:

  1. Tina Linux SDK完整源码
  2. 串口调试工具(推荐使用picocom或minicom)
  3. 开发板原理图PDF
  4. 终端文本编辑器(vim或nano)

2. 系统级配置修改

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:PD21<4><1><default><default> uart_debug_rx = port:PD22<4><1><default><default>

关键参数解析

参数说明
<4>功能号表示UART功能,不同SoC可能不同
<1>上拉/下拉1表示上拉,0表示下拉
default驱动强度保持默认即可

2.2 设备树文件修改

设备树文件需要两处修改,首先是board.dts

Tina-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: uart1@0 { pins = "PD21", "PD22"; function = "uart1"; drive-strength = <10>; bias-pull-up; }; uart1_pins_b: uart1@1 { 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_INDEX=2 CONFIG_DEBUG_UART=y CONFIG_DEBUG_UART_SUNXI=y CONFIG_DEBUG_UART_BASE=0x02500400 CONFIG_DEBUG_UART_CLOCK=24000000

3.2 环境变量配置

修改env.cfg文件:

vim Tina-Linux/config/device/config/chips/t113/configs/mq_r/env.cfg

更新以下参数:

console=ttyS1,115200 earlycon=sunxi-uart,0x02500400

波特率对照表

频率寄存器值实际波特率
24MHz13115200
24MHz2657600
24MHz5228800

4. 内核配置与编译

4.1 Linux内核配置

修改内核配置文件:

vim Tina-Linux/config/device/config/chips/t113/configs/mq_r/linux-5.4/config-5.4

确保以下选项正确设置:

CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_NR_UARTS=4 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_SHARE_IRQ=y CONFIG_SUNXI_UART=y CONFIG_EARLY_PRINTK=y

4.2 编译与烧录

执行完整编译流程:

make -j$(nproc) mboot pack

常见编译问题排查:

  1. 设备树语法错误:使用dtc -I dtb -O dts反编译验证
  2. 引脚冲突警告:检查pinctrl相关dts节点
  3. 串口驱动缺失:确认make kernel_menuconfig中的串口配置

5. 测试与验证

5.1 启动日志分析

正常启动流程应该显示以下关键节点:

[BOOT0] → [U-Boot] → [Linux内核]

使用以下命令测试串口功能:

# 在开发板上 echo "UART1 Test" > /dev/ttyS1 # 在主机上 picocom -b 115200 /dev/ttyUSB1

5.2 常见故障排除

现象1:只有Boot0输出,无U-Boot打印

  • 检查sys_config.fexuart_debug_port设置
  • 验证U-Boot的CONFIG_CONS_INDEX

现象2:内核启动后无控制台输出

  • 确认env.cfg中的console参数
  • 检查内核earlycon参数地址是否正确

现象3:输入字符无响应

  • 测量UART1 TX/RX引脚电压(正常应为3.3V)
  • 确认终端软件波特率设置(115200 8N1)

6. 高级调试技巧

6.1 多串口并行调试

当需要同时监控多个串口时,可以使用socat工具:

socat -d -d pty,raw,echo=0 pty,raw,echo=0 & cat /dev/pts/1 | tee uart1.log & cat /dev/pts/2 | tee uart2.log &

6.2 内核早期打印优化

修改earlycon参数可以获取更早的启动信息:

chosen { bootargs = "earlycon=sunxi-uart,0x02500400,115200n8 console=ttyS1,115200"; };

6.3 性能调优参数

UART驱动参数优化表

参数默认值推荐值作用
fifo_size64128增大FIFO缓冲区
timeout30001000减少传输延迟
rx_trig14提高接收灵敏度

在实际项目中,我发现最常出错的环节是设备树引脚配置与sys_config.fex的不一致。建议每次修改后使用sunxi-pio工具验证引脚状态:

sunxi-pio -p PD21 -m 4 -v
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 22:47:52

3个简单步骤掌握AMD Ryzen调试工具:免费开源硬件性能调优利器

3个简单步骤掌握AMD Ryzen调试工具&#xff1a;免费开源硬件性能调优利器 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: htt…

作者头像 李华
网站建设 2026/6/15 22:47:52

2026年企业级AI大模型API中转服务选型指南:企业如何选择稳定、透明且可持续的模型接入方案

进入2026年后&#xff0c;AI应用的发展重心已经从模型能力竞争逐步转向工程化落地。对于企业技术团队而言&#xff0c;影响项目长期运行质量的往往不只是模型本身&#xff0c;而是模型接入层是否具备稳定性、治理能力以及持续运维支撑能力。随着Claude、GPT、Gemini、DeepSeek、…

作者头像 李华
网站建设 2026/6/15 22:46:50

告别Keil!用Matlab Simulink+STM32CubeMX给STM32F407点灯,保姆级避坑指南

从Keil到Simulink&#xff1a;STM32图形化开发的效率革命与实践指南当LED灯在开发板上第一次闪烁时&#xff0c;那种成就感是每个嵌入式开发者都熟悉的喜悦。但传统开发方式中&#xff0c;我们往往需要花费大量时间在寄存器配置、编译错误和硬件调试上。如今&#xff0c;基于模…

作者头像 李华
网站建设 2026/6/15 22:36:50

5秒拯救你的B站缓存视频:m4s-converter无损转换全攻略

5秒拯救你的B站缓存视频&#xff1a;m4s-converter无损转换全攻略 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经看着B站缓存目录里那…

作者头像 李华
网站建设 2026/6/15 22:34:56

ROS Noetic/Melodic下MAVROS安装全记录:从踩坑到验证的完整指南

ROS Noetic/Melodic下MAVROS安装实战&#xff1a;避坑指南与功能验证 在无人机与机器人开发领域&#xff0c;ROS与MAVLink协议的结合已成为行业标配。MAVROS作为两者间的桥梁&#xff0c;其安装过程却常让开发者陷入依赖地狱和配置迷局。本文将带您穿越安装全流程&#xff0c;从…

作者头像 李华