From c21a1f943bee3faa5c53fa25c2bbcfa08d926d3d Mon Sep 17 00:00:00 2001 From: AI Dev Date: Thu, 27 Aug 2026 11:02:00 +0000 Subject: [PATCH] docs: tell Hi3518EV200 owners to check DDR2 vs DDR3 before flashing This SoC ships with either kind of memory, and OpenIPC now publishes a bootloader for each. They are not interchangeable: the DRAM type is fixed in a register table inside the image, so the wrong one leaves the board with no working memory at all. It flashes and verifies perfectly and then boots nothing, which reads as a bad flash or a dead chip and is neither. That is a week of debugging for the person it happens to -- see OpenIPC/firmware#2299, where it took a UART recovery session and a register dump out of the vendor bootloader to identify. `md.l 0x20111050 1` from any working HiSilicon U-Boot answers it in one command, so put it next to the flashing instructions rather than leaving people to find out afterwards. Also warns against telling the two images apart by size or checksum: the build embeds a timestamp, so both change between builds of identical sources and the sizes have already been observed to swap round. Co-authored-by: Claude Opus 5 --- en/install-hisi.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/en/install-hisi.md b/en/install-hisi.md index 5ba18fa5..fb2fdcc9 100644 --- a/en/install-hisi.md +++ b/en/install-hisi.md @@ -58,6 +58,36 @@ understand what you do. NB! Replace bootloader filename with the one matching your SoC. Full list is [here](https://github.com/OpenIPC/firmware/releases/tag/latest). +#### Hi3518EV200: check whether your board is DDR2 or DDR3 first + +This SoC ships with either kind of memory and the two bootloaders are not +interchangeable — the DRAM type is fixed in a register table inside the image, +so the wrong one leaves the board with no working memory at all. It flashes +and verifies perfectly and then boots nothing, which looks like a bad flash +and is not one. + +Read the memory controller from any working HiSilicon U-Boot prompt — the +vendor's own bootloader will do, you do not need OpenIPC running yet: + +``` +hisilicon # md.l 0x20111050 1 +20111050: 00000016 .... +``` + +The last hex digit is the DRAM type: + +| last digit | memory | bootloader to flash | +|---|---|---| +| `5` | DDR2 | `u-boot-hi3518ev200-universal.bin` | +| `6` | DDR3 | `u-boot-hi3518ev200-ddr3-universal.bin` | + +Do not tell the two apart by file size or checksum — the build embeds a +timestamp, so those change between builds of identical sources. + +The `-recovery.bin` images are a different thing again: they are built to fit +the boot ROM's SRAM window so they can be uploaded over UART to a board that +will not boot at all. Do not flash them. + ``` mw.b 0x42000000 ff 1000000 tftp 0x42000000 u-boot-hi3516xxxxx-beta.bin