跳转至

03 - 6.1 内核首次运行时启动验证(2026-08-24)

这是 rockchip-6.1/ 路线首次实际运行时启动成功的记录,也是后续 6.1 并行维护与持续裁剪的运行基线。 原始折腾笔记在 SDK 树:/home/hyl/lubancat-linux-sdk/gec_6.1_折腾记录.md(未改动,本文件是其归档摘要 + 面板 bpc 根因分析)。 方向:只记 6.1,不删除、不覆盖之前内容。

文件名时点说明:本文保留 2026-08-24 当日的 rk3568-gec-v11-linux.dts / rk3568-gec-v11.dtsi 名称,不代表当前 6.1 构建结构。2026-08-28 起当前目标已改为 rk3568-evb1-gec-v11-linux.dtb,当前 include 层级见 01_dts_override.md;旧文件名已从当前内核树清理。

1. 编译链路(实测可用的组合)

SDK ~/lubancat-linux-sdk
板型配置 device/rockchip/.chips/rk3566_rk3568/rockchip_rk3568_gec_defconfig
切内核版本 rm kernel && ln -s kernel-6.1 kernel(软链接切 6.1)
defconfig 选择 ./build.sh defconfig 选 20 (gec) → 提示 Using current kernel version(6.1)
工具链 aarch64 GCC 10.3.1(prebuilts/gcc/.../gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu
生效内核 defconfig rockchip_linux_defconfig(gec config 未设 RK_KERNEL_CFG,落到 Kconfig 默认)
dtb 生成 make rk3568-gec-v11-linux.img(通配规则找 .dts不需要rockchip/Makefile 加 dtb-y)

2. DTS 文件关系(6.1)

rk3568-gec-v11-linux.dts
  └─ #include "rk3568-gec-v11.dtsi"
        └─ #include "rk3568-evb-gec.dtsi"   ← 从 5.10 复制覆盖过来的
  • rk3568-evb-gec.dtsi5.10 版本(8/23 修改版)直接 cp 覆盖到 6.1(8/24 执行)
  • 覆盖前 diff 显示 5.10 与 6.1 两份已分叉:
  • 5.10 写法:simple-audio-card / #sound-dai-cells=<0> / pwm11 / vp1
  • 6.1 原版:multicodecs-card + hp-det-gpio / #sound-dai-cells=<1> / pwm7 / vp0
  • 用户确认:直接覆盖(5.10 写法为准)

3. 启动结果:成功 ✅

Linux version 6.1.99 ... #8 SMP Mon Aug 24 13:12:20 CST 2026
Machine model: Rockchip RK3568 GEC DDR4 V10 Board
4 核全起,根文件系统挂载,shell 可用。

4. 报错分类

4.1 功能受影响(需修)

(1) MIPI DSI 屏不显示 / framebuffer 打不开 ⭐最高优先级

panel-simple-dsi fe060000.dsi.0: not found firmware desc data, using defaults
panel-simple-dsi fe060000.dsi.0: Expected bpc in {6,8} but got: 0
Starting launcher: Error: cannot open framebuffer device: No such file or directory

根因分析(对照 6.1 内核代码):

面板节点(rk3568-evb-gec.dtsi:409 dsi0_panel)写法为:

dsi0_panel: panel@0 {
    status = "okay";
    compatible = "simple-panel-dsi";   // Rockchip BSP 私有 compatible
    reg = <0>;
    backlight = <&backlight>;
    reset-gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_LOW>;
    ...
    dsi,format = <MIPI_DSI_FMT_RGB888>;
    dsi,lanes  = <4>;
    panel-init-sequence = [ ... ];     // Rockchip 私有属性
};

6.1 内核 drivers/gpu/drm/panel/panel-simple.c"simple-panel-dsi" 仍被支持(panel-simple.c:5167),走 panel_simple_dsi_probepanel_simple_dsi_of_get_desc_data 动态建 desc

关键在 panel_simple_dsi_of_get_desc_data(约 panel-simple.c:4857):

if (desc->num_modes || desc->num_timings) {        // ← 守卫
    of_property_read_u32(np, "bpc", &desc->bpc);   // 只有有 timing 才读 bpc
    ...
}

GEC 面板节点没有 panel-timing / display-timings 子节点desc->num_modes == 0of_property_read_u32(np, "bpc", ...) 不执行desc->bpc 保持默认 0。

之后 probe 的 DRM_MODE_CONNECTOR_DSI 分支(panel-simple.c:994):

if (desc->bpc != 6 && desc->bpc != 8)
    dev_warn(dev, "Expected bpc in {6,8} but got: %u\n", desc->bpc);
→ 报 bpc=0,且 connector->display_info.bpc 不被设置(第 504 行 if (panel->desc->bpc) 跳过),framebuffer 创建失败。

对比 5.10:5.10 同类路径没有 if (num_modes) 守卫,或 Rockchip 分支直接给 simple-panel-dsi 默认 bpc=8,所以 5.10 不报错、屏正常。

修复方向(待板上验证,未改 DTS): - 方案 A:给面板节点补 panel-timing(或 display-timings)子节点,让代码走到读 bpc 的分支,同时在节点加 bpc = <8>(RGB888 → 8 bpc)。 - 方案 B:若 panel-init-sequence 已内含时序,需在 6.1 找到对应的 Rockchip 补丁逻辑(6.1 上游 simple-panel-dsi 是否仍解析 panel-init-sequence 并自动推断 timing,需进一步核对 panel_simple_dsi_of_get_desc_data 全函数)。 - 注意:bpc = <8> 单独加不够——没有 timing 时它不会被读取(被 if (num_modes) 挡住)。

(2) 耳机检测丢失

rockchip_headset rk-headset: Can not read property hook_gpio
rockchip_headset rk-headset: have not set adc chan
因覆盖了 6.1 原版 multicodecs-card+hp-det-gpio+hp_det pinctrl,换成 5.10 的 simple-audio-card。音频本身可用(#1: rockchip,rk809-codec),耳机插拔检测不可用。修复需恢复 6.1 的耳机检测节点(或把 5.10 的 headset 检测方案迁过来)。

(3) USB gadget 复合功能创建失败

mkdir: cannot create directory '.../functions/uac1.gs0': No such file or directory
(uac2.gs0 / mtp.gs0 / rndis.gs0 / hid.usb0 同样)
内核未编入对应 USB 功能(或模块未加载)。adb/mtp/rndis 等不可用。不需要可忽略。

4.2 无害噪声(不影响启动,常见)

日志 含义
fiq_debugger ... IRQ fiq not found 未用 FIQ 调试
gpio-regulator ... active low - ignored 某 fixed regulator active-low 被忽略
rtc rtc1: invalid alarm value: 2026-08-24T33:42:00 pcf8563 闹钟越界
Goodix-TS ... I2C communication failure: -6 触摸 IC 未应答
rk817-battery/charger: Failed to locate of_node dts 无电池节点
VOP ... failed to init opp info / no regulator (vop) 显示 DVFS 未配
RKNPU ... IRQ npu_irq not found NPU 中断未配
dw-mipi-dsi ... failed to find panel or bridge: -517 deferred probe,后续绑定成功
cfg80211: failed to load regulatory.db 无 WiFi 国家码库
mali ... power_model DT node matching ... 未配 GPU 功耗模型
reserved logo memory should be aligned kernel logo 不显示
EXT4 ... Wrong fs type(ext2) for mmcblk0p7/p9 fstab 类型写错
S36load_wifi_modules: can't create .../rfkill1/state WiFi 脚本路径问题

6. 二次验证(2026-08-24 15:37,内核 #9):覆盖 DTS 后重编

在首次验证(#8)后,把 5.10 的 rk3568-gec-v11.dtsi 复制到 6.1(覆盖 6.1 原版 V10 写法),连同之前已覆盖的 rk3568-evb-gec.dtsi,重新 make rk3568-gec-v11-linux.img(实编出 boot.img/resource.img/dtb)。本次启动即为覆盖后的实采结果。

6.1 覆盖生效的证据

首次验证(#8) 本次(#9) 结论
Machine model ... V10 Board ... V11 Board ✅ gec-v11.dtsi 的 V11 改动生效
WIFI,host_wake_irq gpio2 RK_PD3 (irq 83) gpio2 RK_PC3 (irq 83) ✅ 5.10 唤醒脚改动生效
编译者/工具链 hyl@HYL / GCC 10.3 同一工具链

6.2 屏 / framebuffer 问题依旧(根因已代码级确认)

[    3.451254] panel-simple-dsi fe060000.dsi.0: not found firmware desc data, using defaults
[    3.451767] panel-simple-dsi fe060000.dsi.0: Expected bpc in {6,8} but got: 0
...
Starting launcher: Error: cannot open framebuffer device: No such file or directory

与 #8 完全一致,印证 §4.1(1) 分析:面板节点无 panel-timing/display-timingsof_property_read_u32(np,"bpc",...)if (num_modes) 守卫挡住 → bpc 保持 0。

新观察(重要):显示子系统本身绑定成功,问题仅在 bpc=0 使 framebuffer console 创建失败:

[    3.465969] rockchip-drm display-subsystem: bound fe060000.dsi (ops ...)
[    3.466907] [drm] Initialized rockchip 4.0.0 ... for display-subsystem on minor 0
/dev/dri/card0 应存在,屏"接上了但没出图",纯属 bpc 属性缺失。

6.3 功能性报错(同 #8 三项)

  1. 屏不亮bpc=0/framebuffer 打不开)—— 未解,最高优先级
  2. 耳机检测丢失 —— 本次日志未出现 Can not read property hook_gpio(因 5.10 写法把 rk_headset 注释掉,自然不报);音频 #1: rockchip,rk809-codec 正常
  3. USB gadget 失败 —— mkdir .../functions/uac1.gs0 ... No such file or directory(uac2/mtp/rndis/hid 同),内核未编对应功能

6.4 无害噪声(与 #8 清单一致)

fiq_debugger IRQ fiq not found · gpio-regulator active low - ignored · rtc rtc1 invalid alarm · Goodix-TS I2C failure: -6 · rk817-battery/charger Failed to locate of_node · VOP failed to init opp info / no regulator (vop)(出现两次)· RKNPU IRQ npu_irq not found · dw-mipi-dsi failed to find panel or bridge: -517(deferred 后绑定成功)· cfg80211 failed to load regulatory.db · mali power_model DT node matching · Reserved logo memory should be aligned · EXT4 Wrong fs type(ext2) for mmcblk0p7/p9 · S36load_wifi_modules rfkill1/state

6.5 确认正常工作的部分

  • ✅ 4 核全起;内核 + Buildroot 2018.02 根文件系统挂载
  • ✅ 以太网 eth0(RTL8211F)注册,dhcpcd 启动
  • ✅ WiFi WLAN_RFKILL 上电、BT BT_RFKILL 注册、SDIO mmc2 识别 rtl8723ds
  • ✅ GPU(mali-g52)、NPU(RKNPU rknpu 0.9.8)、VPU/RGA/ISP 全部 probe 成功
  • ✅ I2C:AT24 EEPROM(at24 2-0050: 256 byte 24c02)、MPU6050(inv-mpu6050-i2c 2-0069)、RK809 codec
  • ✅ USB hub 3-1 识别;全部 regulator 正常

6.6 本次结论

  1. DTS 覆盖成功:V11 板型名、WiFi 唤醒脚生效,板子正确识别为 GEC V11。
  2. 屏不亮是唯一"用户可见"硬伤,根因确认为 panel-simple-dsibpc=0(§4.1(1) 代码级定位)。显示 pipeline 绑定正常,只差 bpc 属性。
  3. 其余报错均为已知无害项或可选功能(USB gadget / 耳机检测)。

7. 下一步待办

  • 修面板 bpc=0 / framebuffer 打不开(见 §4.1(1) 根因,最高优先级)
  • 视需要恢复 6.1 的 multicodecs-card+hp-det-gpio 耳机检测
  • 视需要开启 USB gadget 功能(uac2/mtp/rndis)

注:本次验证证明“板子 + 6.1 能启动”。BSP 6.1 与 BSP 5.10 当前同等维护;NPU warm-reset、DSI LCD 和其他未完成项继续按独立证据跟踪。