系统启动问题
文档版本:V1.0 | 适用系统:Android14 / Linux | 适用硬件:C-3576BQ V10 核心板 + M4-R2(ShimetaPi)底板 | 更新日期:2026-10-23
1. 概述
本文档汇总 M4-R2(RK3576)平台在 Android14 与 Linux 系统下的启动阶段常见问题与处理方法,涵盖上电启动、U-Boot 引导、内核启动、文件系统挂载及系统烧录等环节。
2. 启动流程概述
M4-R2 平台的启动流程:
上电(5V 电源)
↓
BootROM(片上 ROM 引导)
↓
U-Boot(引导加载程序)
↓
Kernel(内核启动)
↓
文件系统挂载(rootfs)
↓
系统服务启动(Android: init/Zygote;Linux: systemd)各阶段故障可通过调试串口日志定位(调试串口 1500000bps)。
3. 常见问题与处理方法
3.1 上电无任何反应
| 现象 | 原因 | 处理方法 |
|---|---|---|
| 上电后指示灯不亮 | 电源未接通 | 确认电源适配器连接,Type-C 或 DC 供电正常 |
| 上电后指示灯不亮 | 电源规格不符 | M4-R2 使用 5V 电源(典型 5V,最大 5.5V,纹波 50mV,电流 4A) |
| 上电后串口无输出 | 串口接线或波特率错误 | 检查调试串口接线(TX→RXD、RX→TXD、GND),波特率 1500000 |
| 上电后反复重启 | 电源功率不足 | 确认电源电流能力满足整板功耗需求(详见电源管理) |
3.2 U-Boot 阶段问题
| 现象 | 原因 | 处理方法 |
|---|---|---|
| U-Boot 无输出 | 烧录内容损坏 | 重新烧录 U-Boot 分区(详见系统烧录指南) |
| U-Boot 卡在加载内核 | 内核镜像缺失或损坏 | 检查 boot 分区内容,重新烧录 |
| U-Boot 环境变量异常 | 环境变量损坏 | 在 U-Boot 命令行执行 env default -a 后 saveenv 恢复默认 |
| 无法进入 U-Boot 命令行 | 按键时序错误 | 开机时持续按对应按键(以实际 U-Boot 配置为准)进入命令行 |
3.3 内核启动阶段问题
| 现象 | 原因 | 处理方法 |
|---|---|---|
| 内核启动日志停在早期阶段 | DTS 配置错误 | 检查设备树配置,确认内存/电源节点正确 |
| 内核崩溃(Kernel Panic) | 驱动/内存问题 | 分析崩溃日志,定位问题驱动 |
| 内核启动慢 | 存储/驱动初始化慢 | 检查 eMMC/TF 卡读取速度,检查异常驱动 |
| 启动后无法进入系统 | rootfs 挂载失败 | 检查 rootfs 分区与文件系统完整性 |
3.4 文件系统挂载问题
| 现象 | 原因 | 处理方法 |
|---|---|---|
| rootfs 挂载失败 | 分区表错误 | 检查分区表(Parameter 文件)与烧录是否一致 |
| rootfs 挂载失败 | 文件系统损坏 | 使用烧录工具重新烧录,或使用 fsck 修复(Linux) |
| 用户数据分区无法挂载 | data 分区损坏 | 进入 recovery(Android)或单用户模式修复 |
| 只读文件系统报错 | 文件系统写保护 | 检查挂载参数(rw/ro),检查 eMMC 写保护 |
3.5 Android 系统启动问题
| 现象 | 原因 | 处理方法 |
|---|---|---|
| 卡在开机 Logo | boot 分区或 vendor 异常 | 重新烧录 boot/vendor 分区 |
| 一直停留在开机动画 | 系统服务启动失败 | 抓取 logcat 日志定位失败服务 |
| 进入 recovery 模式 | 系统异常引导 | 正常重启或使用按键组合进入正常模式 |
| Android 系统反复重启 | data 分区损坏 | 进入 recovery 执行 factory reset / wipe data |
3.6 Linux 系统启动问题
| 现象 | 原因 | 处理方法 |
|---|---|---|
| 卡在 initramfs | 根文件系统未找到 | 检查内核 cmdline 中 root= 参数与根文件系统位置 |
| systemd 服务启动失败 | 服务配置错误 | 查看 systemctl status <service> 定位失败服务 |
| 网络服务无法启动 | 网卡驱动未加载 | 检查 GMAC 驱动与设备树网络节点(详见以太网GMAC) |
| 登录后无图形界面 | 显示服务未启动 | 检查显示驱动与桌面环境配置(详见显示DRM驱动) |
4. 故障定位方法
4.1 调试串口日志分析
- 连接调试串口(1500000bps,3.3V 电平)
- 复位开发板并完整抓取启动日志
- 定位日志停止的位置,判断故障阶段
常见日志关键词:
| 关键词 | 含义 | 处理方向 |
|---|---|---|
Kernel Panic | 内核崩溃 | 分析栈回溯,定位问题驱动 |
Unable to mount rootfs | 根文件系统挂载失败 | 检查 root= 参数与分区 |
Failed to start | 系统服务启动失败 | 定位对应服务 |
mmc0: error | eMMC 读写错误 | 检查 eMMC 分区与硬件 |
rcu_sched self-detected stall | CPU 长时间停滞 | 检查中断/驱动卡死 |
4.2 烧录验证
- 确认使用正确的烧录工具与固件(见系统烧录指南)
- 烧录完成后执行整机复位验证
- 如异常,尝试重新烧录全部镜像
5. 常见问题
Q1: 上电后完全没有反应,指示灯也不亮?
- 确认电源适配器与连接线正常(M4-R2 使用 5V 电源,典型 5V,最大 5.5V)
- 检查电源接口是否插紧
- 使用万用表测量供电电压是否正常
- 若仍无反应,联系技术支持确认硬件状态
Q2: 串口完全没有输出?
- 确认 USB 转 TTL 模块接线(TX→RXD、RX→TXD、GND→GND)
- 确认模块为 3.3V 电平(调试串口为 3.3V 电平,不可接 5V)
- 确认串口终端波特率 1500000
- 确认系统已烧录
Q3: 启动卡在 U-Boot 阶段?
- 检查 U-Boot 是否烧录正确
- 尝试恢复默认环境变量(
env default -a && saveenv) - 检查 U-Boot 加载的内核镜像是否存在
Q4: 内核启动后无法进入系统?
- 查看完整内核日志,定位停止位置
- 检查 rootfs 分区烧录是否正确
- 检查内核 cmdline 中根文件系统参数
Q5: Android 系统卡在开机动画?
- 抓取 logcat 日志(
adb logcat)定位失败服务 - 检查 vendor/boot 分区烧录内容
- 尝试 wipe data 后重启
Q6: Linux 系统启动失败,如何排查?
- 抓取完整启动日志
- 检查
root=内核参数与根文件系统位置 - 使用单用户模式或 initramfs 进入排查
6. 相关文档
| 文档 | 说明 |
|---|---|
| 系统烧录指南 | 烧录工具、LOADER 模式、镜像说明 |
| 系统启动与基础操作 | Linux 系统启动与基础操作 |
| Android系统烧录与启动 | Android 系统烧录与启动 |
| Linux SDK编译 | Linux SDK 编译与构建 |
| 核心板参数 | 调试串口引脚、存储配置等硬件事实 |
| 电源管理 | 电源规格(5V 典型,最大 5.5V) |
| 40PIN引脚定义 | 底板接口清单 |
