1. 环境准备与背景理解第一次拿到T113-S3开发板时发现默认调试串口是UART0但实际项目中由于硬件设计变更需要改用UART1。这个需求在嵌入式开发中很常见比如UART0可能被其他外设占用或者PCB布局需要调整。Tina Linux作为全志平台的主流开源系统修改调试串口涉及多个配置环节需要系统性地修改Bootloader、内核和设备树。在开始前建议准备好以下环境安装好交叉编译工具的Ubuntu系统推荐18.04或20.04完整的Tina Linux SDK源码T113-S3开发板及串口调试工具万用表或逻辑分析仪用于引脚信号检测特别要注意的是不同版本的Tina Linux目录结构可能略有差异本文基于较新的Tina-Linux-202208版本。如果你用的是其他版本可能需要适当调整文件路径。2. 系统配置文件修改首先找到系统核心配置文件路径通常是Tina-Linux/config/device/config/chips/t113/configs/mq_r/sys_config.fex这个文件定义了硬件的基本参数。找到[uart_para]字段原始配置可能是这样的[uart_para] uart_used 1 uart_port 0 uart_type 2 uart_tx port:PD184 uart_rx port:PD194需要修改为UART1的配置[uart_para] uart_used 1 uart_port 1 # 关键修改点 uart_type 2 uart_tx port:PD214 # T113-S3的UART1_TX引脚 uart_rx port:PD224 # UART1_RX引脚这里有几个易错点uart_port的值从0改为1表示使用UART1引脚配置要准确PD21和PD22是T113-S3的UART1默认引脚4表示引脚功能复用编号不同SoC可能不同修改后建议用grep -n uart sys_config.fex命令检查所有uart相关配置避免冲突。3. U-Boot启动配置U-Boot的串口配置需要同步修改。首先确认当前使用的配置文件cd Tina-Linux/lichee/brandy-2.0/u-boot-2018/ make sun8iw20p1_defconfig关键配置文件路径Tina-Linux/lichee/brandy-2.0/u-boot-2018/configs/sun8iw20p1_defconfig找到Serial drivers部分修改或添加CONFIG_CONS_INDEX2 # 1对应UART02对应UART1 CONFIG_DEBUG_UART_BASE0x02500400 # UART1寄存器基地址全志平台的UART寄存器地址是连续分配的通常UART0: 0x02500000UART1: 0x02500400UART2: 0x02500800以此类推每个间隔0x400修改后建议执行make menuconfig可视化确认配置在Device Drivers - Serial下检查激活的串口设备。4. 设备树文件调整设备树是Linux内核识别硬件的关键。需要修改两个主要文件4.1 主设备树文件路径Tina-Linux/config/device/config/chips/t113/configs/mq_r/board.dts修改内容检查uart1的引脚配置uart1 { pinctrl-names default, sleep; pinctrl-0 uart1_pins_a; pinctrl-1 uart1_pins_b; status okay; // 确保是okay不是disabled };确认引脚复用配置uart1_pins_a: uart10 { pins PD21, PD22; // 与sys_config.fex保持一致 function uart1; // 功能选择 drive-strength 10; bias-pull-up; // 上拉使能 };4.2 U-Boot专用设备树路径Tina-Linux/config/device/config/chips/t113/configs/mq_r/uboot-board.dts这里需要特别注意引脚冲突问题。比如开发板的LCD可能和UART1共用引脚/ { soc { lcd0: lcd001c0c000 { status disabled; // 如果与UART1冲突则禁用 }; }; };建议用dmesg | grep conflict命令检查内核启动时的引脚冲突警告。5. 内核启动参数修改内核启动时需要通过命令行参数指定调试串口配置文件路径Tina-Linux/config/device/config/chips/t113/configs/mq_r/env.cfg原始配置可能是bootargsconsolettyS0,115200 earlyprintksunxi-uart,0x02500000修改为bootargsconsolettyS1,115200 earlyconsunxi-uart,0x02500400关键变化ttyS0→ttyS1Linux内核中的串口设备编号0x02500000→0x02500400寄存器基地址earlyprintk→earlycon新内核推荐使用earlycon注意不同内核版本参数语法可能不同。可以通过cat /proc/cmdline验证最终生效的参数。6. 内核配置确认内核配置需要同步更新路径Tina-Linux/config/device/config/chips/t113/configs/mq_r/linux-5.4/config-5.4检查以下配置项CONFIG_SERIAL_8250_CONSOLEy CONFIG_SERIAL_8250_NR_UARTS4 CONFIG_SERIAL_8250_RUNTIME_UARTS4 CONFIG_SERIAL_8250_DWy CONFIG_DEBUG_LLy CONFIG_DEBUG_SUNXI_UART1y # 确保UART1调试使能建议通过make kernel_menuconfig可视化配置Device Drivers → Character devices → Serial drivers确认8250/16550串口支持检查选中的具体UART端口7. 完整编译与测试完成所有修改后执行完整编译make -j8 # 编译内核 mboot # 编译U-Boot pack # 打包固件编译成功后会生成tina_t113-mq_r_uart1.img之类的镜像文件。烧录后通过UART1连接调试终端应该能看到完整的启动日志[BOOT0] Starting... [U-Boot] DRAM: 64 MiB [Kernel] Starting linux 5.4.61...常见问题排查如果Boot0有输出但U-Boot无输出检查U-Boot的CONFIG_CONS_INDEX配置如果内核启动后无输出确认earlycon参数和设备树status如果完全无输出用万用表测量UART1_TX引脚是否有波形我在实际项目中遇到过引脚冲突导致配置不生效的情况后来发现是LCD的背光控制引脚和UART1_RX复用了。通过设备树禁用LCD后问题解决。建议修改配置后保留多个版本备份方便快速回退测试。