admin管理员组文章数量:1130349
amlogic-s9xxx-armbian串口调试教程:通过UART获取系统日志
【免费下载链接】amlogic-s9xxx-armbian amlogic-s9xxx-armbian: 该项目提供了为Amlogic、Rockchip和Allwinner盒子构建的Armbian系统镜像,支持多种设备,允许用户将安卓TV系统更换为功能强大的Armbian服务器系统。 项目地址: https://gitcode/GitHub_Trending/am/amlogic-s9xxx-armbian
1. 串口调试的价值与应用场景
你是否曾遇到Armbian系统启动失败却无从排查?固件刷写后黑屏无响应?内核崩溃无法获取堆栈信息?串口调试(UART,Universal Asynchronous Receiver/Transmitter)作为嵌入式开发的"救命稻草",能在网络失效、图形界面崩溃时提供底层访问通道。本教程将系统讲解如何通过UART接口获取amlogic-s9xxx-armbian设备的启动日志、内核消息和应用程序输出,解决90%以上的系统启动与运行故障。
读完本文你将掌握:
- 硬件准备与接线规范(含3种常见设备引脚定义)
- 跨平台调试工具配置(Windows/Linux/macOS)
- 内核日志分级过滤与实时监控技巧
- 常见故障排查案例与日志分析方法
2. 硬件准备与接线指南
2.1 必备工具清单
| 设备名称 | 推荐型号 | 关键参数 | 用途 |
|---|---|---|---|
| USB-TTL转换器 | CH340G/PL2303 | 支持3.3V电平 | 实现USB到UART信号转换 |
| 杜邦线 | 单股镀锡线 | 28AWG线径 | 连接开发板与转换器 |
| 螺丝刀套装 | 十字PH00+一字2mm | 带磁性刀头 | 拆卸设备外壳 |
| 万用表 | 数字式 | 支持通断测试 | 确认引脚定义 |
| 防静电手环 | 有线接地型 | 1MΩ电阻保护 | 防止静电损坏芯片 |
⚠️ 警告:Amlogic设备UART接口均为3.3V电平,严禁使用5V电平的USB-TTL转换器,可能永久损坏SoC!
2.2 引脚识别与连接
Amlogic S9xxx系列设备通常在PCB上预留UART测试点,标识为"UART"、"DEBUG"或丝印"TX/RX/GND"。常见设备引脚分布如下:
2.2.1 通用引脚定义(适用于大多数设备)
[设备PCB测试点]
GND o----o VCC (通常不接)
TX o----o RX
... (其他引脚忽略)
- TX (Transmit): 设备发送数据引脚 → 连接到USB-TTL的RX引脚
- RX (Receive): 设备接收数据引脚 → 连接到USB-TTL的TX引脚
- GND (Ground): 接地引脚 → 连接到USB-TTL的GND引脚
2.2.2 典型设备引脚位置
| 设备型号 | TX位置 | RX位置 | GND位置 |
|---|---|---|---|
| S905X3 | 靠近HDMI接口的测试点排针第2脚 | 第3脚 | 第1脚 |
| S922X | 主板边缘J4排针第4脚 | 第5脚 | 第2脚 |
| S905D | 散热片下方C123电容旁 | C124电容旁 | 金属屏蔽罩 |
技巧:使用万用表通断档,通过测量与GND测试点的连通性快速定位接地引脚。
2.3 接线示意图(文字版)
[USB-TTL转换器] [Amlogic设备]
TX -----------------> RX
RX <----------------- TX
GND ----------------> GND
(VCC悬空不连接)
3. 软件环境配置
3.1 驱动安装
Windows系统
- 下载CH340驱动:国内镜像
- 安装后插入USB-TTL,在设备管理器查看端口号(如COM3)
Linux系统
# 检查内核模块是否加载
lsmod | grep ch341
# 如未加载手动加载
sudo modprobe ch341
# 查看设备节点
dmesg | grep ttyUSB # 通常为/dev/ttyUSB0
macOS系统
# 使用Homebrew安装驱动
brew install --cask wch-ch34x-usb-serial-driver
# 重启系统后验证
ls /dev/tty.wchusbserial*
3.2 终端工具配置
3.2.1 Minicom(推荐Linux/macOS)
# 安装
sudo apt install minicom # Debian/Ubuntu
# 或
brew install minicom # macOS
# 配置串口
sudo minicom -s
# 在配置菜单中设置:
# Serial port setup → Serial Device: /dev/ttyUSB0
# → Bps/Par/Bits: 115200 8N1
# → Hardware Flow Control: No
# → Software Flow Control: No
# 保存为默认配置后退出
3.2.2 TeraTerm(推荐Windows)
- 下载安装:官方网站
- 启动后选择对应COM口,右键设置:
- 波特率:115200
- 数据位:8
- 停止位:1
- 校验位:无
- 流控:无
3.2.3 Screen(轻量Linux/macOS)
# 直接连接串口
sudo screen /dev/ttyUSB0 115200,cs8,-parenb,-cstopb,-hupcl
# 退出方法:按Ctrl+A,然后按K,确认后按Y
4. 内核配置验证
amlogic-s9xxx-armbian项目已默认启用UART支持,可通过以下方式验证:
4.1 内核配置检查
查看内核配置文件(以5.15版本为例):
# 进入项目目录
cd GitHub_Trending/am/amlogic-s9xxx-armbian
# 查看UART相关配置
grep -E "CONFIG_SERIAL_MESON|CONFIG_SERIAL_8250" compile-kernel/tools/config/config-5.15
预期输出应包含:
CONFIG_SERIAL_MESON=y
CONFIG_SERIAL_MESON_CONSOLE=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
4.2 启动参数验证
内核启动参数中应包含串口控制台配置:
grep "console=" compile-kernel/tools/script/armbian_compile_kernel_script.sh
典型配置:
# 内核命令行参数包含
console=ttyAML0,115200 console=tty0
ttyAML0: Amlogic UART设备节点115200: 波特率console=tty0: 同时保留视频控制台
5. 实战:获取系统日志
5.1 启动日志捕获
- 连接好硬件,打开终端工具
- 给设备上电,立即观察终端输出
成功连接后将看到类似日志:
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.15.100-aml-s9xxx (builder@armbian) (gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #23.02.2 SMP PREEMPT Wed Apr 12 17:54:22 UTC 2023
[ 0.000000] Machine model: Amlogic Meson G12B ODROID-N2Plus
[ 0.000000] earlycon: meson0 at MMIO 0x00000000ff803000 (options '115200n8')
[ 0.000000] printk: bootconsole [meson0] enabled
...
5.2 关键日志分析
5.2.1 启动阶段判断
| 日志特征 | 含义 | 故障排查方向 |
|---|---|---|
Uncompressing Linux... done, booting the kernel. | 内核解压完成 | 后续无输出可能是设备树错误 |
random: crng init done | 系统熵池初始化完成 | 启动基本成功 |
ALSA device list: ... | 音频驱动加载 | 可忽略,除非有音频问题 |
eth0: PHY [0.0:00] driver [RTL8211F Gigabit Ethernet] | 网络初始化 | 网络故障可从此处开始排查 |
5.2.2 错误日志识别
常见错误及解决方法:
# 1. 启动卡在USB枚举
[ 3.245123] usb 1-1.2: device descriptor read/64, error -110
→ 解决:拔掉USB设备或修改BIOS/UBOOT中USB配置
# 2. 文件系统错误
[ 5.678901] EXT4-fs error (device mmcblk0p2): ext4_find_entry:1463: inode #2: comm systemd: reading directory lblock 0
→ 解决:fsck /dev/mmcblk0p2 修复文件系统
5.3 实时日志监控
系统启动后,可通过以下命令持续监控日志:
# 查看内核环形缓冲区
dmesg -w
# 查看系统日志(需root权限)
journalctl -f
# 查看特定服务日志
journalctl -u sshd -f
6. 高级调试技巧
6.1 内核启动参数调整
如需修改串口配置,可在编译内核时调整armbian_compile_kernel_script.sh中的:
# 修改前
BOOT_CMDLINE="console=ttyAML0,115200 console=tty0 root=..."
# 增加调试输出
BOOT_CMDLINE="console=ttyAML0,115200 console=tty0 root=... debug earlyprintk=serial"
关键调试参数说明:
debug: 启用内核详细调试信息earlyprintk=serial: 在早期启动阶段就启用串口输出initcall_debug: 打印内核初始化调用过程ignore_loglevel: 忽略日志级别,显示所有消息
6.2 UART速率调整
部分设备可能使用不同波特率(如57600),可通过设备树调整:
/* 设备树示例(仅供参考)*/
uart_AO: serial@7800000 {
compatible = "amlogic,meson-gx-uart";
reg = <0x0 0x7800000 0x0 0x18>;
interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc CLKID_UART_AO>;
status = "okay";
pinctrl-0 = <&uart_ao_a_pins>;
pinctrl-names = "default";
};
6.3 远程日志转发
通过串口获取的日志可转发到网络:
# 在调试终端中执行
cat /dev/ttyAML0 | tee /tmp/serial.log & # 保存到文件
nc 192.168.1.100 5000 < /dev/ttyAML0 # 发送到远程主机
远程主机接收:
nc -l 5000 > serial_log.txt # 监听端口并保存日志
7. 常见问题解决
7.1 无任何输出
排查步骤:
7.2 输出乱码
解决方法:
- 确认波特率设置为115200(标准配置)
- 检查USB-TTL是否支持3.3V电平
- 尝试降低传输速率(如57600)
- 更换质量更好的杜邦线(减少电磁干扰)
7.3 启动后日志中断
可能原因及解决:
- 电源不足:使用独立供电的USB-TTL或设备外接电源
- 波特率不匹配:某些设备在启动过程中会切换波特率
- 内核配置问题:确保CONFIG_SERIAL_MESON_CONSOLE=y
8. 总结与扩展
通过UART串口调试,我们可以:
- 解决系统启动故障
- 获取内核崩溃堆栈信息
- 监控后台服务运行状态
- 调试自定义驱动程序
进阶学习路线:
- 学习使用
kdb/kgdb进行内核断点调试 - 掌握设备树(Device Tree)语法与UART节点配置
- 开发基于UART的自定义调试工具
提示:收藏本文以备后续调试使用,关注项目仓库获取最新调试技巧!如有疑问,请在项目Issues中提交问题并附上串口日志。
附录:常用调试命令速查表
| 功能 | 命令 |
|---|---|
| 查看串口设备 | ls /dev/tty* |
| 测试串口通信 | echo "test" > /dev/ttyAML0 |
| 设置串口参数 | stty -F /dev/ttyUSB0 115200 cs8 -parenb -cstopb |
| 十六进制查看 | hexdump -C /dev/ttyUSB0 |
| 监控串口数据 | cat /dev/ttyUSB0 | tee serial.log |
【免费下载链接】amlogic-s9xxx-armbian amlogic-s9xxx-armbian: 该项目提供了为Amlogic、Rockchip和Allwinner盒子构建的Armbian系统镜像,支持多种设备,允许用户将安卓TV系统更换为功能强大的Armbian服务器系统。 项目地址: https://gitcode/GitHub_Trending/am/amlogic-s9xxx-armbian
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
amlogic-s9xxx-armbian串口调试教程:通过UART获取系统日志
【免费下载链接】amlogic-s9xxx-armbian amlogic-s9xxx-armbian: 该项目提供了为Amlogic、Rockchip和Allwinner盒子构建的Armbian系统镜像,支持多种设备,允许用户将安卓TV系统更换为功能强大的Armbian服务器系统。 项目地址: https://gitcode/GitHub_Trending/am/amlogic-s9xxx-armbian
1. 串口调试的价值与应用场景
你是否曾遇到Armbian系统启动失败却无从排查?固件刷写后黑屏无响应?内核崩溃无法获取堆栈信息?串口调试(UART,Universal Asynchronous Receiver/Transmitter)作为嵌入式开发的"救命稻草",能在网络失效、图形界面崩溃时提供底层访问通道。本教程将系统讲解如何通过UART接口获取amlogic-s9xxx-armbian设备的启动日志、内核消息和应用程序输出,解决90%以上的系统启动与运行故障。
读完本文你将掌握:
- 硬件准备与接线规范(含3种常见设备引脚定义)
- 跨平台调试工具配置(Windows/Linux/macOS)
- 内核日志分级过滤与实时监控技巧
- 常见故障排查案例与日志分析方法
2. 硬件准备与接线指南
2.1 必备工具清单
| 设备名称 | 推荐型号 | 关键参数 | 用途 |
|---|---|---|---|
| USB-TTL转换器 | CH340G/PL2303 | 支持3.3V电平 | 实现USB到UART信号转换 |
| 杜邦线 | 单股镀锡线 | 28AWG线径 | 连接开发板与转换器 |
| 螺丝刀套装 | 十字PH00+一字2mm | 带磁性刀头 | 拆卸设备外壳 |
| 万用表 | 数字式 | 支持通断测试 | 确认引脚定义 |
| 防静电手环 | 有线接地型 | 1MΩ电阻保护 | 防止静电损坏芯片 |
⚠️ 警告:Amlogic设备UART接口均为3.3V电平,严禁使用5V电平的USB-TTL转换器,可能永久损坏SoC!
2.2 引脚识别与连接
Amlogic S9xxx系列设备通常在PCB上预留UART测试点,标识为"UART"、"DEBUG"或丝印"TX/RX/GND"。常见设备引脚分布如下:
2.2.1 通用引脚定义(适用于大多数设备)
[设备PCB测试点]
GND o----o VCC (通常不接)
TX o----o RX
... (其他引脚忽略)
- TX (Transmit): 设备发送数据引脚 → 连接到USB-TTL的RX引脚
- RX (Receive): 设备接收数据引脚 → 连接到USB-TTL的TX引脚
- GND (Ground): 接地引脚 → 连接到USB-TTL的GND引脚
2.2.2 典型设备引脚位置
| 设备型号 | TX位置 | RX位置 | GND位置 |
|---|---|---|---|
| S905X3 | 靠近HDMI接口的测试点排针第2脚 | 第3脚 | 第1脚 |
| S922X | 主板边缘J4排针第4脚 | 第5脚 | 第2脚 |
| S905D | 散热片下方C123电容旁 | C124电容旁 | 金属屏蔽罩 |
技巧:使用万用表通断档,通过测量与GND测试点的连通性快速定位接地引脚。
2.3 接线示意图(文字版)
[USB-TTL转换器] [Amlogic设备]
TX -----------------> RX
RX <----------------- TX
GND ----------------> GND
(VCC悬空不连接)
3. 软件环境配置
3.1 驱动安装
Windows系统
- 下载CH340驱动:国内镜像
- 安装后插入USB-TTL,在设备管理器查看端口号(如COM3)
Linux系统
# 检查内核模块是否加载
lsmod | grep ch341
# 如未加载手动加载
sudo modprobe ch341
# 查看设备节点
dmesg | grep ttyUSB # 通常为/dev/ttyUSB0
macOS系统
# 使用Homebrew安装驱动
brew install --cask wch-ch34x-usb-serial-driver
# 重启系统后验证
ls /dev/tty.wchusbserial*
3.2 终端工具配置
3.2.1 Minicom(推荐Linux/macOS)
# 安装
sudo apt install minicom # Debian/Ubuntu
# 或
brew install minicom # macOS
# 配置串口
sudo minicom -s
# 在配置菜单中设置:
# Serial port setup → Serial Device: /dev/ttyUSB0
# → Bps/Par/Bits: 115200 8N1
# → Hardware Flow Control: No
# → Software Flow Control: No
# 保存为默认配置后退出
3.2.2 TeraTerm(推荐Windows)
- 下载安装:官方网站
- 启动后选择对应COM口,右键设置:
- 波特率:115200
- 数据位:8
- 停止位:1
- 校验位:无
- 流控:无
3.2.3 Screen(轻量Linux/macOS)
# 直接连接串口
sudo screen /dev/ttyUSB0 115200,cs8,-parenb,-cstopb,-hupcl
# 退出方法:按Ctrl+A,然后按K,确认后按Y
4. 内核配置验证
amlogic-s9xxx-armbian项目已默认启用UART支持,可通过以下方式验证:
4.1 内核配置检查
查看内核配置文件(以5.15版本为例):
# 进入项目目录
cd GitHub_Trending/am/amlogic-s9xxx-armbian
# 查看UART相关配置
grep -E "CONFIG_SERIAL_MESON|CONFIG_SERIAL_8250" compile-kernel/tools/config/config-5.15
预期输出应包含:
CONFIG_SERIAL_MESON=y
CONFIG_SERIAL_MESON_CONSOLE=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
4.2 启动参数验证
内核启动参数中应包含串口控制台配置:
grep "console=" compile-kernel/tools/script/armbian_compile_kernel_script.sh
典型配置:
# 内核命令行参数包含
console=ttyAML0,115200 console=tty0
ttyAML0: Amlogic UART设备节点115200: 波特率console=tty0: 同时保留视频控制台
5. 实战:获取系统日志
5.1 启动日志捕获
- 连接好硬件,打开终端工具
- 给设备上电,立即观察终端输出
成功连接后将看到类似日志:
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.15.100-aml-s9xxx (builder@armbian) (gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #23.02.2 SMP PREEMPT Wed Apr 12 17:54:22 UTC 2023
[ 0.000000] Machine model: Amlogic Meson G12B ODROID-N2Plus
[ 0.000000] earlycon: meson0 at MMIO 0x00000000ff803000 (options '115200n8')
[ 0.000000] printk: bootconsole [meson0] enabled
...
5.2 关键日志分析
5.2.1 启动阶段判断
| 日志特征 | 含义 | 故障排查方向 |
|---|---|---|
Uncompressing Linux... done, booting the kernel. | 内核解压完成 | 后续无输出可能是设备树错误 |
random: crng init done | 系统熵池初始化完成 | 启动基本成功 |
ALSA device list: ... | 音频驱动加载 | 可忽略,除非有音频问题 |
eth0: PHY [0.0:00] driver [RTL8211F Gigabit Ethernet] | 网络初始化 | 网络故障可从此处开始排查 |
5.2.2 错误日志识别
常见错误及解决方法:
# 1. 启动卡在USB枚举
[ 3.245123] usb 1-1.2: device descriptor read/64, error -110
→ 解决:拔掉USB设备或修改BIOS/UBOOT中USB配置
# 2. 文件系统错误
[ 5.678901] EXT4-fs error (device mmcblk0p2): ext4_find_entry:1463: inode #2: comm systemd: reading directory lblock 0
→ 解决:fsck /dev/mmcblk0p2 修复文件系统
5.3 实时日志监控
系统启动后,可通过以下命令持续监控日志:
# 查看内核环形缓冲区
dmesg -w
# 查看系统日志(需root权限)
journalctl -f
# 查看特定服务日志
journalctl -u sshd -f
6. 高级调试技巧
6.1 内核启动参数调整
如需修改串口配置,可在编译内核时调整armbian_compile_kernel_script.sh中的:
# 修改前
BOOT_CMDLINE="console=ttyAML0,115200 console=tty0 root=..."
# 增加调试输出
BOOT_CMDLINE="console=ttyAML0,115200 console=tty0 root=... debug earlyprintk=serial"
关键调试参数说明:
debug: 启用内核详细调试信息earlyprintk=serial: 在早期启动阶段就启用串口输出initcall_debug: 打印内核初始化调用过程ignore_loglevel: 忽略日志级别,显示所有消息
6.2 UART速率调整
部分设备可能使用不同波特率(如57600),可通过设备树调整:
/* 设备树示例(仅供参考)*/
uart_AO: serial@7800000 {
compatible = "amlogic,meson-gx-uart";
reg = <0x0 0x7800000 0x0 0x18>;
interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc CLKID_UART_AO>;
status = "okay";
pinctrl-0 = <&uart_ao_a_pins>;
pinctrl-names = "default";
};
6.3 远程日志转发
通过串口获取的日志可转发到网络:
# 在调试终端中执行
cat /dev/ttyAML0 | tee /tmp/serial.log & # 保存到文件
nc 192.168.1.100 5000 < /dev/ttyAML0 # 发送到远程主机
远程主机接收:
nc -l 5000 > serial_log.txt # 监听端口并保存日志
7. 常见问题解决
7.1 无任何输出
排查步骤:
7.2 输出乱码
解决方法:
- 确认波特率设置为115200(标准配置)
- 检查USB-TTL是否支持3.3V电平
- 尝试降低传输速率(如57600)
- 更换质量更好的杜邦线(减少电磁干扰)
7.3 启动后日志中断
可能原因及解决:
- 电源不足:使用独立供电的USB-TTL或设备外接电源
- 波特率不匹配:某些设备在启动过程中会切换波特率
- 内核配置问题:确保CONFIG_SERIAL_MESON_CONSOLE=y
8. 总结与扩展
通过UART串口调试,我们可以:
- 解决系统启动故障
- 获取内核崩溃堆栈信息
- 监控后台服务运行状态
- 调试自定义驱动程序
进阶学习路线:
- 学习使用
kdb/kgdb进行内核断点调试 - 掌握设备树(Device Tree)语法与UART节点配置
- 开发基于UART的自定义调试工具
提示:收藏本文以备后续调试使用,关注项目仓库获取最新调试技巧!如有疑问,请在项目Issues中提交问题并附上串口日志。
附录:常用调试命令速查表
| 功能 | 命令 |
|---|---|
| 查看串口设备 | ls /dev/tty* |
| 测试串口通信 | echo "test" > /dev/ttyAML0 |
| 设置串口参数 | stty -F /dev/ttyUSB0 115200 cs8 -parenb -cstopb |
| 十六进制查看 | hexdump -C /dev/ttyUSB0 |
| 监控串口数据 | cat /dev/ttyUSB0 | tee serial.log |
【免费下载链接】amlogic-s9xxx-armbian amlogic-s9xxx-armbian: 该项目提供了为Amlogic、Rockchip和Allwinner盒子构建的Armbian系统镜像,支持多种设备,允许用户将安卓TV系统更换为功能强大的Armbian服务器系统。 项目地址: https://gitcode/GitHub_Trending/am/amlogic-s9xxx-armbian
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
版权声明:本文标题:amlogic-s9xxx-armbian串口调试教程:通过UART获取系统日志 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1763550982a2942497.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论