Skip to content

hi3519v101 family, hi3536cv100: the split NOR image - #2672

Merged
widgetii merged 2 commits into
masterfrom
split/19v101-36cv100
Oct 24, 2026
Merged

widgetii merged 2 commits into
masterfrom
split/19v101-36cv100

Conversation

@widgetii

Copy link
Copy Markdown
Member

The two 3.18 families on the split NOR layout. Each ships its fixed-slot package as before, plus -split (post-image-split.sh, BR2_OPENIPC_NOR_FIXED_PACKAGE=y). Each kernel config turns on MTD_SPLIT_FIRMWARE (named firmware), MTD_SPLIT_UIMAGE_FW, MTD_SPLIT_SQUASHFS_ROOT and MTD_ROOTFS_ROOT_DEV.

Family defconfigs kernel U-Boot
hi3519v101 hi3519v101_lite, hi3516av200_lite, hi3516av200_ultimate OpenIPC/linux#145 OpenIPC/u-boot#63
hi3536cv100 hi3536cv100_lite OpenIPC/linux#146 OpenIPC/u-boot#63

Tested in qemu-hisilicon (8 MB) with each family's lite build:

hi3519v101 hi3536cv100
uImage / squashfs / firmware.bin 1810K / 4928K / 6784K 1673K / 2560K / 4288K
split image, new U-Boot root on 31:4, login root on 31:4, login
split image, published U-Boot root=/dev/mtdblock3 ignored, 31:4 same
overlay across a power cycle kept kept
fixed-slot package cmdlinepart, 31:3 cmdlinepart, 31:3
U-Boot recovery over TFTP, from fixed slots and from a damaged kernel byte-identical, boots split the scan sends the damaged kernel to recovery, but the download crashes

The hi3536cv100 download fails because U-Boot's gmac takes a data abort on the first TFTP packet in qemu-hisilicon. The published U-Boot fails the same way. hi3516av200 shares the kernel and DTS change but wasn't booted. Not run on hardware.

hi3519v101 and hi3516av200's kernel configs turn on MTD_SPLIT_FIRMWARE
(named "firmware"), MTD_SPLIT_UIMAGE_FW, MTD_SPLIT_SQUASHFS_ROOT and
MTD_ROOTFS_ROOT_DEV; their kernel (OpenIPC/linux hisilicon-hi3519v101)
finds the layout from its device tree since OpenIPC/linux#145, their
U-Boot scans it since OpenIPC/u-boot#63. hi3519v101_lite,
hi3516av200_lite and hi3516av200_ultimate use post-image-split.sh with
BR2_OPENIPC_NOR_FIXED_PACKAGE=y.

Tested in qemu-hisilicon (hi3519v101, 8 MB) with hi3519v101_lite
(uImage 1810K, squashfs 4928K, firmware.bin 6784K): split boot under the
new and the published U-Boot, root on 31:4, login, the overlay kept; the
fixed-slot package on 31:3; U-Boot recovery over TFTP from fixed slots
and from a damaged kernel, byte-identical on flash. Not run on hardware.
hi3536cv100's kernel config turns on MTD_SPLIT_FIRMWARE (named
"firmware"), MTD_SPLIT_UIMAGE_FW, MTD_SPLIT_SQUASHFS_ROOT and
MTD_ROOTFS_ROOT_DEV; its kernel finds the layout from its device tree
since OpenIPC/linux#146, its U-Boot scans it since OpenIPC/u-boot#63.
hi3536cv100_lite uses post-image-split.sh with
BR2_OPENIPC_NOR_FIXED_PACKAGE=y.

Tested in qemu-hisilicon (hi3536cv100, 8 MB) with hi3536cv100_lite
(uImage 1673K, squashfs 2560K, firmware.bin 4288K): split boot under the
new and the published U-Boot, root on 31:4, login, the overlay kept; the
fixed-slot package on 31:3; a damaged kernel is sent to recovery. The
recovery download is not shown: U-Boot's gmac takes a data abort on the
first TFTP packet in qemu-hisilicon, with the published U-Boot too. Not
run on hardware.
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Enable split NOR images for hi3519v101 and hi3536cv100 families

✨ Enhancement ⚙️ Configuration changes 🕐 20-40 Minutes

Grey Divider

AI Description

• Enable split NOR images for hi3519v101, hi3516av200, and hi3536cv100 builds while retaining
 fixed-slot packages.
• Configure their kernels to discover the firmware, rootfs, and overlay partitions at boot.
• QEMU boot tests passed; hi3536cv100 TFTP recovery remains blocked by a U-Boot data abort.
Diagram

graph TD
  A["Board defconfigs"] --> B["Post-image script"] --> C["Split firmware"] --> E["MTD partition split"] --> F["Rootfs device"]
  A --> G["Repack pipeline"] --> H["Fixed-slot package"]
  A --> D["Kernel configs"] --> E
Loading
High-Level Assessment

Reusing the shared post-image script and conditional fixed-slot packaging is the appropriate approach; separate family-specific image generators would duplicate established layout logic. Confirm the unbooted hi3516av200 variant and hardware behavior separately, and treat the hi3536cv100 QEMU TFTP abort as an unresolved recovery-test limitation.

Files changed (7) +23 / -0

Other (7) +23 / -0
hi3516av200.generic.configEnable firmware partition splitting for hi3516av200 +5/-0

Enable firmware partition splitting for hi3516av200

• Enables MTD splitting of the named firmware partition into uImage and squashfs regions, with automatic root-device selection.

br-ext-chip-hisilicon/board/hi3519v101/hi3516av200.generic.config

hi3519v101.generic.configEnable firmware partition splitting for hi3519v101 +5/-0

Enable firmware partition splitting for hi3519v101

• Enables the firmware, uImage, and squashfs MTD split options and automatic root-device selection.

br-ext-chip-hisilicon/board/hi3519v101/hi3519v101.generic.config

hi3536cv100.generic.configEnable firmware partition splitting for hi3536cv100 +5/-0

Enable firmware partition splitting for hi3536cv100

• Enables the firmware, uImage, and squashfs MTD split options and automatic root-device selection.

br-ext-chip-hisilicon/board/hi3536cv100/hi3536cv100.generic.config

hi3516av200_lite_defconfigShip split and fixed-slot packages for hi3516av200 lite +2/-0

Ship split and fixed-slot packages for hi3516av200 lite

• Selects the shared split NOR post-image script and requests the compatible fixed-slot package.

br-ext-chip-hisilicon/configs/hi3516av200_lite_defconfig

hi3516av200_ultimate_defconfigShip split and fixed-slot packages for hi3516av200 ultimate +2/-0

Ship split and fixed-slot packages for hi3516av200 ultimate

• Selects the shared split NOR post-image script and requests the compatible fixed-slot package.

br-ext-chip-hisilicon/configs/hi3516av200_ultimate_defconfig

hi3519v101_lite_defconfigShip split and fixed-slot packages for hi3519v101 lite +2/-0

Ship split and fixed-slot packages for hi3519v101 lite

• Selects the shared split NOR post-image script and requests the compatible fixed-slot package.

br-ext-chip-hisilicon/configs/hi3519v101_lite_defconfig

hi3536cv100_lite_defconfigShip split and fixed-slot packages for hi3536cv100 lite +2/-0

Ship split and fixed-slot packages for hi3536cv100 lite

• Selects the shared split NOR post-image script and requests the compatible fixed-slot package.

br-ext-chip-hisilicon/configs/hi3536cv100_lite_defconfig

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

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

Copy link
Copy Markdown

Code Review by Qodo

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

Grey Divider


Action required

1. Split images lack camera validation 📘 Rule violation ☼ Reliability
Description
The three generic kernel configurations enable the split NOR MTD layout without real-camera
validation. The PR reports only qemu-hisilicon results and explicitly says it was not run on
hardware, so the changed split images have no board-level boot and overlay evidence.
Code

br-ext-chip-hisilicon/board/hi3519v101/hi3519v101.generic.config[R2530-2533]

+CONFIG_MTD_ROOTFS_ROOT_DEV=y
+CONFIG_MTD_SPLIT_FIRMWARE=y
+CONFIG_MTD_SPLIT_FIRMWARE_NAME="firmware"
+CONFIG_MTD_SPLIT_SQUASHFS_ROOT=y
Evidence
The added kernel configuration changes the firmware's MTD partitioning and root-device behavior. The
PR description reports qemu-hisilicon testing but explicitly states that the change was not run on
hardware, which fails the requirement for real-camera evidence when firmware behavior can change.

Rule 3: Hardware evidence is present and honest
br-ext-chip-hisilicon/board/hi3519v101/hi3519v101.generic.config[2530-2533]

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

## Issue description
The PR changes kernel behavior for split NOR images but provides only qemu-hisilicon results and states that the images were not tested on real hardware.
## Fix Focus Areas
- br-ext-chip-hisilicon/board/hi3519v101/hi3519v101.generic.config[2530-2533]
- br-ext-chip-hisilicon/board/hi3519v101/hi3516av200.generic.config[2622-2625]
- br-ext-chip-hisilicon/board/hi3536cv100/hi3536cv100.generic.config[2399-2402]
## Recommended Fix
Test each affected family on the corresponding real camera hardware and update the PR description with the affected board, observed boot and root-device behavior, overlay persistence across a power cycle, and before/after output or logs. If hardware access is unavailable, do not claim hardware verification and provide only evidence appropriate to the change while clearly documenting the limitation.

ⓘ 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 choose which labels appear on a finding, and whether they show icons or text

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@widgetii
widgetii merged commit 06c899f into master Oct 24, 2026
38 of 42 checks passed
@widgetii
widgetii deleted the split/19v101-36cv100 branch October 24, 2026 11:42
widgetii added a commit to OpenIPC/wiki that referenced this pull request Oct 24, 2026
They ship the split package beside the fixed-slot one since
OpenIPC/firmware#2672, on OpenIPC/linux#145 and #146 and
OpenIPC/u-boot#63. sysupgrade -k -r takes the split package on them, and
they go back to fixed slots the same way.

Checked in qemu-hisilicon (hi3519v101 and hi3536cv100, 8 MB). Not run on
hardware.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant