串行控制台
Qualcomm® Linux 内核使用 Qualcomm 通用接口(GENI)串行驱动,在 Qualcomm SoC 上支持 UART 控制台。所需的内核配置
验证以下 Kconfig 选项已启用:.cfg 片段中启用它们并重新构建。
将串行控制台添加到内核命令行
在meta-qcom/conf/machine/include/qcom-<SoC>.conf 的 KERNEL_CMDLINE_EXTRA 中添加 console= 参数:
连接硬件
在设备与主机之间连接 USB 转 UART 线缆:早期启动消息(earlycon)
earlycon 内核参数在完整 UART 驱动初始化之前启用一个最小化的早期控制台。它提供从启动序列最开始的内核消息,包括 initramfs 的解包和早期设备树处理,这些消息否则将不可见。
添加到内核命令行:
ttyMSM0 UART。消息从 start_kernel() 的第一行开始立即显示。
earlycon 和 console=ttyMSM0,... 是相互独立的。同时使用两者可以获得从早期启动到登录提示符之间不间断的输出。printk 日志级别
printk 是内核的日志函数。每条消息都带有一个日志级别,控制它是否显示在控制台上。
表:printk 日志级别
数值低于当前控制台日志级别的消息会打印到控制台。Qualcomm Linux 上默认的控制台日志级别为 7(打印所有消息)。在默认控制台日志级别为 7 的情况下,级别 0–6(Emergency 到 Info)的消息会到达控制台。将级别设置为 8 可包含调试输出。
运行时日志级别控制
通过/proc/sys/kernel/printk 在运行时读取和设置控制台日志级别。
该文件包含四个以空格分隔的值:
<current> <default> <minimum> <boot-time-default>。
启动时日志级别
在内核命令行上设置日志级别,以在/proc 挂载之前控制详细程度:
读取内核日志缓冲区
dmesg
读取内核环形缓冲区最常用的方式:/proc/kmsg
提供内核消息实时流的虚拟 proc 文件。每次读取只返回新消息:跨重启的持久化日志
在运行 systemd-journald 的系统上,内核消息会被持久化存储,并可跨启动查询:禁用控制台日志
在生产环境或性能测试中让控制台静默:调试构建
要在 Yocto 镜像中包含调试符号和额外的调试 Kconfig,请在 bitbake 调用时传递DEBUG_BUILD=1。这会在内核构建中启用 debug.config 片段:
build/conf/local.conf:

