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.dtsi由 5.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. 报错分类¶
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_probe → panel_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 == 0 → of_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
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 同样)
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-timings → of_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 三项)¶
- 屏不亮(
bpc=0/framebuffer 打不开)—— 未解,最高优先级 - 耳机检测丢失 —— 本次日志未出现
Can not read property hook_gpio(因 5.10 写法把rk_headset注释掉,自然不报);音频#1: rockchip,rk809-codec正常 - 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上电、BTBT_RFKILL注册、SDIOmmc2识别 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 本次结论¶
- DTS 覆盖成功:V11 板型名、WiFi 唤醒脚生效,板子正确识别为 GEC V11。
- 屏不亮是唯一"用户可见"硬伤,根因确认为
panel-simple-dsi的bpc=0(§4.1(1) 代码级定位)。显示 pipeline 绑定正常,只差bpc属性。 - 其余报错均为已知无害项或可选功能(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 和其他未完成项继续按独立证据跟踪。