A standard Allwinner A133 firmware image (e.g., for Android or Tina Linux) follows a fixed partition scheme. The sys_partition.fex file defines the layout:
| Partition | Offset | Size | Content | |-------------|--------|--------|-----------------------------| | boot0 | 8KB | 24KB | First stage bootloader | | boot0-rescue| 32KB | 24KB | Backup boot0 | | env | 64KB | 16KB | U-Boot environment | | boot | 16MB | 32MB | Linux kernel + DTB | | rootfs | 48MB | 512MB+ | SquashFS/ext4 root filesystem| | recovery | - | 32MB | Recovery kernel | | UDISK | - | Remainder | User data |
Writing this layout can be done via FEL (using live-suit or sunxi-fel spiflash commands), via fastboot (fastboot flash), or by directly writing raw images to the eMMC/SD card with dd. allwinner a133 firmware work
After compiling, Allwinner uses a unique packing system. Run:
./pack
This generates:
Unlike a PC, A133 firmware is not a single file. It requires a specific partition layout:
The A133 follows a multi-stage boot process. Each stage loads the next, verifies integrity (if secure boot is enabled), and configures low-level hardware. A standard Allwinner A133 firmware image (e
Power ON → BROM → SPL (Boot0) → ATF → U-Boot → Kernel (Linux/Android)
| Stage | Location | Primary Role | |-------|----------|---------------| | BROM | Internal Mask ROM (4KB) | Basic DRAM initialization, loads SPL from boot media | | SPL (boot0) | eMMC/NAND/SD Card (first 32KB) | Full DRAM init, clocks, loads ATF & U-Boot | | ATF | eMMC/NAND | ARM Trusted Firmware (EL3), secure monitor, PSCI | | U-Boot | eMMC/NAND | Device tree fixup, load kernel, bootargs, fastboot, display init | | Kernel | eMMC/NAND/SD | Linux or Android boot |
There is an ongoing effort to mainline A133 support in Linux kernel 6.x. However, for firmware work, stick to the BSP. This generates:
Verdict: Use the BSP for production devices. Use mainline only for learning or headless servers.