Skip to content

image: assemble per-DDR-binning full NOR images for hi3516cv610/cv608 (#2208)#2210

Merged
widgetii merged 1 commit into
masterfrom
feat/cv610-per-ddr-nor-images
Jun 27, 2026
Merged

image: assemble per-DDR-binning full NOR images for hi3516cv610/cv608 (#2208)#2210
widgetii merged 1 commit into
masterfrom
feat/cv610-per-ddr-nor-images

Conversation

@widgetii

Copy link
Copy Markdown
Member

Closes #2208 for cv6xx (cv610/cv608).

Root cause

The cv6xx u-boot is published per DDR binning (boot-hi3516cv610-{10b,20s,20g,00s,00g}-nor.bin, boot-hi3516cv608-nor.bin) because the boot-ROM DDR init table (reg_info.bin) is baked into each boot image. CONFIG_CMD_DDR_TRAINING is a runtime PHY-timing calibration command — it can't detect DDR type/size — so hi3516cv610 has three genuinely different topologies (DDR2-64M-QFN / DDR3-128M-QFN / DDR3-512M-BGA) and there is no single universal image.

The create() assembly loop in image.yml only iterated Sigmastar/Ingenic/Allwinner and assumed one u-boot-<soc>-nor.bin + separate uImage/rootfs.squashfs at fixed offsets. cv6xx ships neither (its .tgz is a single pre-packed firmware.bin.<soc> = FIT + squashfs), so no full flashable NOR image was produced for cv6xx at all — the gap behind #2208.

Change

Add create_hisi() and a cv6xx loop. Per DDR topology, assemble: u-boot at offset 0, firmware.bin.<soc> at the firmware partition (0x50000 / 320 KiB, per the cv6xx u-boot MTDPARTS "256k(boot),64k(env),…,7168k@0x50000(firmware),…"). Produces:

  • openipc-hi3516cv610-ddr2-64m-nor-ultimate.bin
  • openipc-hi3516cv610-ddr3-128m-nor-ultimate.bin
  • openipc-hi3516cv610-ddr3-512m-nor-ultimate.bin
  • openipc-hi3516cv608-nor-ultimate.bin

(The 20g/00g u-boots carry the same DDR table as 20s/00s, differing only in the socmodel env tag, so one image per DDR suffices.) Missing artifacts/manifest entries are skipped gracefully — no broken images.

Validation

Assembled from the live latest-release artifacts: boot-hi3516cv610-20s-nor.bin (236 KiB) + firmware.bin.hi3516cv6xx (9.94 MiB) at 0x50000 → fits the 16 MiB NOR with the squashfs magic landing at 0x310000 (the post-image internal offset), u-boot reset vector at 0.

Not included: Hi3519DV500

dv500's NOR boot path is not yet wired in u-boot (# CONFIG_USE_BOOTCOMMAND is not set, CONFIG_MTDPARTS_DEFAULT="", bootcmd bootm 0x42000000 with no sf read), so a full NOR image can't boot. Deferred until that lands.

Follow-up candidates: QEMU full-flash-boot of an assembled cv610 image; repack_firmware.sh hisilicon support (manual flow).

Refs #2208.

The cv6xx u-boot is published per DDR binning (boot-hi3516cv610-<code>-nor.bin):
the boot-ROM DDR init table is baked into each boot image, and DDR training
only calibrates PHY timing — it cannot detect DDR type/size. So hi3516cv610
spans three distinct topologies (DDR2-64M / DDR3-128M / DDR3-512M) with no
single universal image. The create() assembly loop only handled Sigmastar/
Ingenic/Allwinner, so no full flashable NOR image was produced for cv6xx at all.

Add create_hisi(): u-boot at offset 0, the pre-packed kernel+rootfs blob
firmware.bin.<soc> at the firmware partition (0x50000 / 320 KiB, per the cv6xx
u-boot MTDPARTS). Emit one image per DDR topology:
  openipc-hi3516cv610-ddr2-64m-nor-ultimate.bin
  openipc-hi3516cv610-ddr3-128m-nor-ultimate.bin
  openipc-hi3516cv610-ddr3-512m-nor-ultimate.bin
  openipc-hi3516cv608-nor-ultimate.bin

Validated against the live latest-release artifacts: u-boot (236K) +
firmware.bin (9.94M) at 0x50000 fit the 16 MiB NOR, squashfs landing at the
post-image offset.

Hi3519DV500 is intentionally not included yet: its NOR boot path is not wired
in u-boot (CONFIG_USE_BOOTCOMMAND off, empty MTDPARTS, bootcmd "bootm <ram>"),
so a full NOR image cannot boot.

Refs #2208.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@widgetii
widgetii merged commit 26c0d4f into master Jun 27, 2026
100 checks passed
@widgetii
widgetii deleted the feat/cv610-per-ddr-nor-images branch June 27, 2026 11:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

u-boot names for hisi 3519dv500 3516cv6xx

1 participant