1.6 KiB
Place firmware files here and serve this directory as the existing TFTP server root. Checkout alone does not publish files over TFTP.
Every transfer starts with sf probe 0:0. The reported total capacity must be exactly 16 or 32 MiB; an unknown or ambiguous result stops execution. The selected offsets and maximum sizes (hex bytes) are:
| File | 16 MiB offset / maximum | 32 MiB offset / maximum |
|---|---|---|
| u-boot-sunxi-with-spl.bin | 0 / 0x100000 | 0 / 0x200000 |
| sun8i-v3s-licheepi-zero-dock.dtb | 0x100000 / 0x10000 | 0x200000 / 0x110000 |
| zImage | 0x110000 / 0x500000 | 0x310000 / 0x500000 |
| rootfs.squashfs | 0x610000 / 0x900000 | 0x810000 / 0x17f0000 |
The 32 MiB layout allocates the remainder of flash to RootFS. These are selected project layouts, not partition tables read from the chip. DTB partitions and bootcmd must match the selected layout. A smaller actual RootFS region can be specified with --rootfs-size; larger overrides fail.
Transfers reset and verify filesize=0 before TFTP, require successful transfer output and status, and compare the hexadecimal filesize with the local file and transfer count. First 32 bytes (U-Boot/DTB) or 64 bytes (Kernel/RootFS) are compared with the local file. Writes are read back at 0x42800000 and compared in full. No automatic erase or retry is performed in transfer workflows. Flash must be erased before programming as needed.
The separate erase workflow detects capacity and erases the entire chip, including firmware and saved environment. It verifies only the first 256 bytes as FF, not every byte. No workflow automatically reboots the board.