Repository navigation
nor: split layout on gk7201v200 and the hi3516cv200 family - #61
Conversation
CONFIG_OPENIPC_NOR_SPLIT for xm72010200_config, which gk7201v200_config names, now that its kernel (OpenIPC/linux goke-gk7205v500, ARCH_XM72050200) finds the split layout from its device tree. misc_init_r() sets verify=n before openipc_helper(), as #52 did for xm720xxx and xm72050500, so a split image's uImage CRC is checked by bootm. NOR image: u-boot-gk7201v200-nor.bin 213729 bytes, inside the 256K boot area; the NAND build compiles the split code out. Tested in qemu-hisilicon (gk7201v200, 8 MB) with a gk7201v200_lite build on this kernel (uImage 1836K, squashfs 4956K, firmware.bin 6848K): - split firmware.bin, new U-Boot: "Found RootFS at 0x00220000", "sfc: split NOR layout, device tree partitions", rootfs_data from 0x700000, root on 31:4, login; a second boot on the same flash reads the seed the first saved in the overlay; - the same image under the published u-boot-gk7201v200-nor.bin: "root=/dev/mtdblock3 ignored, the flash names its own root", root on 31:4; - the fixed-slot package: 6 cmdlinepart partitions, root on 31:3, login; - recovery: from fixed slots, and from a split image with one kernel byte flipped ("kernel at 0x50000 fails its CRC"), fwupd over TFTP writes firmware.bin.gk7201v200 (byte-identical on flash) and the next boot reaches login on 31:4. Not run on hardware.
CONFIG_OPENIPC_NOR_SPLIT for hi3516cv200 and hi3518ev200 (hi3518ev201 boots the hi3518ev200 image), whose kernel (OpenIPC/linux hisilicon-hi3516cv200) finds the split layout from its device tree. misc_init_r() sets verify=n before openipc_helper(), so the scan can clear it for a split image and bootm checks the uImage CRC. NOR images: u-boot-hi3516cv200-nor.bin 140376 bytes, u-boot-hi3518ev200-nor.bin 140488 bytes.
PR Summary by QodoEnable split NOR layout for gk7201v200 and hi3516cv200-family boards
AI Description
Diagram
High-Level Assessment
Files changed (5)
|
Code Review by Qodo
1. Goke builds cannot include split support
|
…t layout (#164) `CHIP_TO_FIRMWARE` has mapped gk7201v200 to gk7205v200 since #4, when gk7201v200 had nothing published of its own. So `defib install -c gk7201v200` wrote **gk7205v200's U-Boot and firmware** onto it. OpenIPC now publishes gk7201v200's own builds: - `u-boot-gk7201v200-nor.bin` and `-nand.bin` (OpenIPC/u-boot, `xm72010200`); - `openipc.gk7201v200-nor-lite.tgz`, built on the gk7205v500 kernel tree with gk7201v200's own vendor modules (OpenIPC/firmware#2478). This PR: - **Drops the alias.** gk7201v200 takes its `-nor`/`-nand` U-Boot (`PER_FLASH_TYPE_UBOOT`) and its own firmware. - **Adds it to `NOR_SPLIT_SOCS`.** Its kernel finds the split layout since OpenIPC/linux#140, its U-Boot scans it since OpenIPC/u-boot#61, and its firmware ships `-split` beside the fixed-slot package since OpenIPC/firmware#2668. - **Leaves gk7201v300 alone.** It has its own U-Boot builds but no firmware package. Not in this PR: hi3516cv200 and hi3518ev200 also ship `-split` since OpenIPC/firmware#2668, but defib keeps installing them on fixed slots for now. - Today defib gives them the old `-universal` U-Boot. Its default environment describes the lite fixed slots, so installing the split layout with it would break the hi3518ev200 ultimate fixed-slot install. - Moving them to the scanning `-nor.bin` U-Boot, as #158 did for hi3516cv300, needs a NAND U-Boot build for hi3518ev200's NAND package and a decision on its DDR3 boards. Neither exists yet. Tests: `test_gk7201v200_installs_its_own_build` checks there's no alias, that gk7201v200 uses its own NOR/NAND U-Boot names, that it's split-capable, and that it has its own package board. The per-flash-type U-Boot list includes it too. pytest, ruff and mypy are clean. The firmware side was checked in qemu-hisilicon (gk7201v200, 8 MB; see OpenIPC/firmware#2668). Not run on hardware.
They ship the split package beside the fixed-slot one since OpenIPC/firmware#2668, on OpenIPC/linux#140 and #141 and OpenIPC/u-boot#61. On Hi3516CV200 and Hi3518EV200 the older -universal U-Boot 2010.06 boots the split image as well (the kernel takes its root from the flash and ignores root=). sysupgrade -k -r takes the split package on them, and they go back to fixed slots the same way. Checked in qemu-hisilicon (gk7201v200 and hi3516cv200, 8 MB). Not run on hardware.
CONFIG_OPENIPC_NOR_SPLITfor two more families whose kernels now find the split NOR layout from their device tree:xm72010200_config(named bygk7201v200_config)goke-gk7205v500,ARCH_XM72050200)hi3516cv200_config,hi3518ev200_confighisilicon-hi3516cv200)In both boards'
misc_init_r(),verify=nis now set beforeopenipc_helper(), as #52 did for xm720xxx and xm72050500. The scan can then clear it for a split image, andbootmchecks the uImage CRC. Fixed-slot cameras boot as before. The gk7201v200 NAND build compiles the split code out.NOR images:
u-boot-gk7201v200-nor.bin213729 bytes,u-boot-hi3516cv200-nor.bin140376,u-boot-hi3518ev200-nor.bin140488, all inside the 256K boot area.Tested in qemu-hisilicon with each family's lite build on its new kernel (gk7201v200 and hi3516cv200, 8 MB):
firmware.bin, this U-Bootrun fwupdover TFTP from fixed slotsfirmware.bin.<soc>written at 0x50000, chip erased to the end, byte-identical on flash, next boot splitFirmware is absent/corrupt (kernel at 0x50000 fails its CRC), then the same recoveryNot run on hardware.