Skip to content

Catalogue: the hi3516ev200 family and hi3516cv300 on the split NOR layout - #491

Merged
widgetii merged 3 commits into
masterfrom
catalogue/ev300-split-only
Oct 22, 2026
Merged

widgetii merged 3 commits into
masterfrom
catalogue/ev300-split-only

Conversation

@widgetii

Copy link
Copy Markdown
Member

The firmware now publishes split NOR packages for these SoCs, and the catalogue did not know:

All get nor_split: true, so each edition uses its split package where no plain one is published, and its fixed-slot one where it is. Not nor_split_only: that would drop hi3516ev300's fixed-slot neo from the installer.

Test data: the release index carries the two hi3516ev300 split packages and no plain lite/ultimate; the golden is regenerated (hi3516ev300 still offers NOR lite, ultimate, neo and NAND ultimate, lite and ultimate as split images). Two firmware tests and a wizard test that used hi3516ev300 as their fixed-slot NOR example now use hi3516ev200. go test ./... passes (uncached).

Effect order: for hi3516ev300 and hi3518ev300 the change shows once their plain openipc.<soc>-nor-{lite,ultimate}.tgz are gone from OpenIPC/firmware latest (the next nightly publishes the split ones; the stale plain ones then need deleting).

hi3516ev300's lite and ultimate builds now ship only the split NOR
package (OpenIPC/firmware split/hi3516ev300): its kernel fills the 2 MiB
slot, so no fixed-slot package can ship beside a split one. neo keeps
its own fixed-slot build.

nor_split, without nor_split_only: SplitOnlyEdition then takes the split
package for every edition that has one and no plain package, and keeps
neo on fixed slots; nor_split_only would have dropped neo from the
installer. That needs the stale plain openipc.hi3516ev300-nor-
{lite,ultimate}.tgz gone from the release once the split packages
publish; until then the site keeps offering them as fixed slots, as
today.

Tests: the fixture release index is moved to that state (the two
-split packages in, the plain lite/ultimate out; neo kept), and the
golden regenerated: hi3516ev300 still offers nor lite, ultimate, neo and
nand ultimate, lite and ultimate as split images. The two firmware
tests and the wizard test that used hi3516ev300 as a fixed-slot NOR SoC
use hi3516ev200 (same bootloaders and NAND layout, fixed slots kept).
go test ./... passes.
…dv200 on the split NOR layout

They ship -split packages since OpenIPC/firmware#2645, #2655 and #2656
(hi3518ev300 split-only, like hi3516ev300); nor_split lets each edition
use its split package where no plain one is published, and keeps the
fixed-slot one where it is. go test ./... (uncached) passes.
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Catalogue split NOR packages for six HiSilicon SoCs

✨ Enhancement ⚙️ Configuration changes 🧪 Tests 🕐 10-20 Minutes

Grey Divider

AI Description

• Enable split NOR packages for six HiSilicon SoCs without removing fixed-slot editions.
• Use split-only packages for hi3516ev300 lite and ultimate while retaining fixed-slot neo.
• Update release fixtures and test baselines for the new package availability.
Diagram

graph TD
  CAT["SoC catalogue"] --> SELECT["Edition selection"] --> CHOICE{"Plain package present?"} -->|"No, split available"| SPLIT["Split NOR package"] --> OUTPUT["Installer and images"]
  INDEX["Release index"] --> SELECT
  CHOICE -->|"Yes"| PLAIN["Fixed-slot package"] --> OUTPUT
Loading
High-Level Assessment

Use the existing nor_split flag and edition-aware package selection. Marking these SoCs nor_split_only would incorrectly discard hi3516ev300's fixed-slot neo; adding explicit per-edition mappings would duplicate selection already driven by the release index. The split-only behavior for hi3516ev300 lite and ultimate depends on stale plain packages being removed upstream.

Files changed (5) +20 / -14

Tests (4) +14 / -14
firmware_test.goUse hi3516ev200 for fixed-slot firmware tests +4/-4

Use hi3516ev200 for fixed-slot firmware tests

• Moves the concurrent-build and version-retention tests from hi3516ev300 to hi3516ev200, retaining a fixed-slot NOR example.

service/internal/firmware/firmware_test.go

release-index.jsonModel hi3516ev300 split-only lite and ultimate assets +7/-7

Model hi3516ev300 split-only lite and ultimate assets

• Replaces the fixture's plain hi3516ev300 NOR lite and ultimate tarballs with split packages and their asset metadata. The fixture still retains the separate fixed-slot neo package.

service/internal/firmware/testdata/release-index.json

documents.jsonRefresh the hi3516ev300 wizard golden hash +1/-1

Refresh the hi3516ev300 wizard golden hash

• Updates the expected document hash for hi3516ev300 after the release fixture changes its lite and ultimate NOR packages.

service/internal/wizard/testdata/documents.json

wizard_test.goUse hi3516ev200 for missing NAND bootloader coverage +2/-2

Use hi3516ev200 for missing NAND bootloader coverage

• Switches the missing-NAND-bootloader test to hi3516ev200, preserving a fixed-slot NOR example while checking that NAND installs are not offered without their bootloader.

service/internal/wizard/wizard_test.go

Other (1) +6 / -0
hisilicon.ymlEnable split NOR support for six HiSilicon SoCs +6/-0

Enable split NOR support for six HiSilicon SoCs

• Sets nor_split for hi3516cv300, hi3516dv200, hi3516ev100, hi3516ev200, hi3516ev300, and hi3518ev300. Leaves nor_split_only unset so editions with published fixed-slot packages remain available.

data/catalogue/hisilicon.yml

@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. Split-only editions get a missing link ✓ Resolved
Description
For hi3516cv300 and hi3516ev100, camera() requires scansLayout() before selecting a split
package, but their universal bootloaders never satisfy that check. If an edition is published only
as a split package, the wizard offers its split bundle while the installation page links to the
absent plain package and presents fixed-slot instructions.
Code

data/catalogue/hisilicon.yml[96]

+  nor_split: true
Evidence
Both flagged entries name universal bootloaders. The index includes split-only editions in NOR
releases and the image builder selects their split package, while the wizard's bootloader-suffix
gate leaves its combination on the plain filename and fixed-slot commands.

data/catalogue/hisilicon.yml[93-96]
data/catalogue/hisilicon.yml[229-234]
service/internal/firmware/layout.go[204-232]
service/internal/firmware/build.go[95-99]
service/internal/wizard/camera.go[263-269]
service/internal/wizard/export.go[387-392]
service/internal/wizard/camera.go[391-395]
service/internal/wizard/export.go[419-423]
service/internal/wizard/lines.go[339-348]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
A split-only NOR edition on hi3516cv300 or hi3516ev100 is offered, but the wizard links a nonexistent plain package because its split-install path excludes universal bootloaders.
## Fix Focus Areas
- data/catalogue/hisilicon.yml[93-96]
- data/catalogue/hisilicon.yml[229-234]
- service/internal/wizard/export.go[387-392]
- service/internal/firmware/layout.go[204-232]
## Recommended Fix
Make the wizard's offered editions, package link and installation instructions agree with the package selected by the firmware builder. If a universal bootloader cannot support a split install, do not offer its split-only editions until a supported installation path exists.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Catalogue bundles fail wizard flashing 🐞 Bug ≡ Correctness
Description
For the newly flagged boards with -nor.bin bootloaders, camera() selects split instructions
whenever a split package exists, whereas packageName() and the image builder retain the plain
package when both are published. A visitor downloading that edition from the catalogue receives the
fixed-slot bundle, but its wizard instructions try to flash firmware.bin, which belongs to the
different split bundle.
Code

data/catalogue/hisilicon.yml[250]

+  nor_split: true
Evidence
The catalogue renders published links, which use packageName(); with both assets present that
function chooses plain. The wizard instead sets c.split from the mere presence of the split asset
and generates a split-package link and firmware.bin flash command. The builder chooses plain under
the same condition.

data/catalogue/hisilicon.yml[244-250]
service/internal/wizard/export.go[70-80]
service/internal/wizard/export.go[265-270]
service/internal/wizard/export.go[387-392]
service/internal/wizard/lines.go[319-335]
service/internal/firmware/layout.go[204-216]
service/internal/firmware/build.go[95-99]
frontend/apps/site/src/components/wizard/Form.tsx[389-399]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
When plain and split packages coexist for a newly flagged NOR edition, the catalogue links the plain bundle but the wizard generates commands for the split bundle.
## Fix Focus Areas
- service/internal/wizard/export.go[265-270]
- service/internal/wizard/export.go[387-392]
- service/internal/firmware/layout.go[204-216]
## Recommended Fix
Use the same edition-level package decision for the wizard's catalogue link, installation link and flash commands as the image builder. Keep fixed-slot instructions for editions with a published plain package, and add coverage for an edition with both packages.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Tip of the day
💡 Did you know, you can ask Qodo to dismiss a finding you disagree with, with your reason on record

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread data/catalogue/hisilicon.yml
Comment thread data/catalogue/hisilicon.yml
From review: their bootloader was still the -universal U-Boot 2010.06,
which does not scan the NOR layout, so the wizard never gave them the
split install (scansLayout) and fell back to fixed slots. They take
u-boot-<soc>-nor.bin (OpenIPC/u-boot 2022.10, scanning; cv300 also
-nand.bin), as defib does since OpenIPC/defib#158. The test index lists
those images, the boards reference names them, the golden is
regenerated for the two SoCs, and the test that used hi3516cv300 as its
-universal example uses hi3516cv200. go test ./... (uncached) passes.
@widgetii
widgetii merged commit b07ea46 into master Oct 22, 2026
2 checks passed
@widgetii
widgetii deleted the catalogue/ev300-split-only branch October 22, 2026 04:28
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.

1 participant