已开启
[任务]优化qemu代码仓dtb文件管理逻辑 #85
xuhaijun创建于  28 天前
xuhaijun
xuhaijun成员
28 天前 创建

背景

qemu_mockup 仓中的 src/lualib/mock/data/dtb/hi1711_9p8c.dtb 归档的是一个二进制文件。在 ../manifest 仓构建时,会从 rtos 基础 OS 中继承 dtb 文件 boot/hi1711_asic.dtb。hi1711_9p8c.dtb 的内容是在 boot/hi1711_asic.dtb 基础上增加了 3 个 virtio_mmio 配置(参见 src/lualib/mock/data/dtb/hi1711_9p8c.dts)。

现状问题

qemu 启动时指定了 qemu_mockup 的 dtb 文件,该文件无法自适应 hi1711_asic.dtb 的变化。

在社区版本 openUBMC 26.06 发布过程中,hi1711_asic.dtb 的设备树 gmac@cd000000 节点新增了 memory_region_rx 和 memory_region_tx 属性,而 hi1711_9p8c.dtb 没有配套变更,导致 qemu 镜像启动后网络故障。

实测差异(hi1711_asic.dtb vs hi1711_9p8c.dts)

将 rtos 基础 OS 的 /boot/hi1711_asic.dtb 反编译后与 hi1711_9p8c.dts 逐节点比对,共有 4 处差异——不只是 virtio_mmio:

# 位置 hi1711_asic.dtb(基础) hi1711_9p8c(mockup) 说明
1 memory@80000000 1 GB(0x40000000) 2 GB(0x80000000) qemu 镜像内存扩大一倍
2 cpus 4 核(cpu@0~3) 8 核(新增 cpu@4~7) qemu 模拟 8 个 vCPU
3 GIC interrupt-controller@24000000 redistributor 0x80000 0x100000 redistributor 空间随 CPU 数量加倍(每核 0x20000 × 8 = 0x100000)
4 soc/ 下新增 3 个节点 无 virtio_mmio@0/1/2 reg 0x5e681000~0x5e683000,中断 SPI 0x66/0x67/0x68

其中差异 1~3 是参数联动关系(内存/CPU 数/GIC 空间三者相关),virtio_mmio 才是 mockup 特有的设备。若 hi1711_asic.dtb 未来也改成 8 核,差异 2、3 会自然消失。

任务目标

优化 dtb 文件管理逻辑,使 hi1711_9p8c.dtb 能够自动跟随基础 OS 的 hi1711_asic.dtb 变化,避免手工维护二进制 dtb 文件导致的漂移问题。

基本思路

在 customization/customization.py 中注入产品化定制逻辑:

  1. 构建时从 boot/hi1711_asic.dtb 复制出基础 dtb 文件
  2. 将基础 dtb 文件反编译(dtc)为 dts 文件
  3. 基于 mockup 的定制参数修改 dts:
    • memory 大小调整为 2 GB(0x80000000)
    • cpus 扩展到 8 核(追加 cpu@4~7,GIC redistributor 同步扩到 0x100000)
    • 追加 3 个 virtio_mmio 配置
  4. 将修改后的 dts 重新编译(dtc)生成 dtb 文件
  5. 写回镜像的 /data/dtb/hi1711_9p8c.dtb

实现时建议将 CPU 数、内存大小、virtio 设备数等定制项做成 customization.py 中的显式配置,而不是硬编码的 sed/diff 修补,保证逻辑清晰且可自适应。

验收标准

likedislike
openUBMC-robotopenUBMC-robot成员
28 天前 添加了label:sig/sig-CICD
openUBMC-robot
openUBMC-robot成员
28 天前 评论:

欢迎来到 openUBMC 社区

Hey @xuhaijun , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 说明文档 或 论坛 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅机器人自助配置使用手册。

联系指引

有疑问可以联系 SIG: sig-CICD ,
维护者是: @DataSculptor, @xuhaijun, @zybwh ,
优秀贡献者是: @Larry_Li_006, @Polaris404 .

likedislike
openUBMC-robot
openUBMC-robot成员
28 天前 评论:

Issue 工作流介绍

社区的需求和缺陷的工作流状态处于纳管中。

类型 上个状态 下个状态 评论命令 谁可以操作
需求 待办的 已接纳 /todo2accepted SIG组: sig-release-management (maintainer)
需求 已接纳 开发中 /accepted2developing 仓库成员角色: Maintainer, Committer, Contributor, Owner
需求 开发中 待验收 /developing2UAT 仓库成员角色: Maintainer, Committer, Contributor, Owner
需求 待验收 已完成 /UAT2done SIG组: sig-QA (maintainer,committer)
需求 待办的 已挂起 /todo2suspended SIG组: sig-release-management (maintainer)
需求 已挂起 已接纳 /suspended2accepted SIG组: sig-release-management (maintainer)
需求 待办的 已拒绝 /todo2rejected SIG组: sig-release-management (maintainer)
需求 已拒绝 已接纳 /rejected2accepted SIG组: sig-release-management (maintainer)
likedislike
xuhaijunxuhaijun成员
28 天前 修改了issue 的描述
xuhaijunxuhaijun成员
14 天前 issue类型由 需求 改变为 任务
xuhaijunxuhaijun成员
14 天前 修改标题为 “[任务]优化qemu代码仓dtb文件管理逻辑”,原标题为“优化qemu代码仓dtb文件管理逻辑”