启动失败
内核无法启动,黑屏或无串口输出
首先检查:- 确认已配置串口控制台(内核命令行中包含
console=ttyMSM0,115200n8)。 - 通过重新运行
fastboot flash efi efi.bin验证efi.bin已成功烧写, 并检查是否有OKAY响应。 - 如果携带 EFI 变量的 RPMB 持久状态已损坏或错位,请擦除 RPMB 区域:
- 在内核命令行中添加
earlycon,以便在 UART 驱动初始化之前获得输出。
启动时内核 panic
启动期间的内核 panic 会在串口控制台上产生调用栈。捕获它并找出出错的函数:设备树问题
DTB 认证失败
UEFI 固件在将 DTB 传递给内核之前会对其进行认证。认证失败会导致内核 无法接收任何设备树。 日志特征:dtb.bin。
确保 efi.bin 和 dtb.bin 来自同一次构建。
未找到 DTB
-
验证 DTB 已包含在打包的
dtb.bin中: 如果使用传统的拼接式 dtb 打包:如果使用基于 FIT 的打包: -
检查开发板的 DTS 文件是否列在 Yocto machine 配置的
KERNEL_DEVICETREE中。 -
重新烧写
dtb.bin:
验证运行时加载了哪个 DTB
成功启动后,确认加载了正确的设备树:启动期间的 DTB 识别
有关设备树识别的更多信息,请参阅常见 DTB 问题。模块加载失败
Invalid module format,显示 vermagic 不匹配
.ko 文件中嵌入的 vermagic 字符串不匹配。
诊断:
KERNEL_SRC、相同的 defconfig 和片段)重新构建模块。如果使用 Yocto,
请使用 bitbake qcom-multimedia-image 重新构建,以保持模块与内核同步。
缺少 .ko 文件
obj-m += my_driver.o)
且已安装(通过 make modules_install 或 Yocto 的 module 类)。
模块未找到且未出现在 modules.dep 中
depmod 以重建模块依赖映射:
模块加载成功但不工作
在insmod 之后立即检查 dmesg 中的探测错误:
对于延迟探测(deferred probe),检查哪些设备仍处于挂起状态:
串口控制台不工作
如果烧写新内核后串口控制台没有输出:-
验证 Kconfig:
-
验证内核命令行:
-
**获取早期启动消息:**在内核命令行中添加
earlycon。这可以在 UART 驱动完全初始化之前启用输出。 - **检查线缆和波特率:**确认设备和主机终端两侧均为 115200 波特、8N1、 无硬件流控。
Remoteproc 故障
固件加载失败
/lib/firmware/qcom/<SoC>/ 中:
在子系统崩溃时捕获日志
为了防止 remoteproc 驱动自动恢复崩溃的子系统(这会清除崩溃日志), 请在复现崩溃之前禁用恢复功能:.elf 文件传输到主机,并使用 Qualcomm Crash Analysis Portal(QCAP)
进行分析。有关更多详细信息,请参阅
配置远程处理器子系统。
