The Allwinner Optimus Board by Merrii is a single-board computer.
- Allwinner A80 SoC
- 4x ARM Cortex-A15 CPU
- 4x ARM Cortex-A7 CPU
Booting boot0 from SD card does not seem to work, and U-Boot in flash does not recognize SD cards nor does it support USB or network. As an alternative, FEL mode allows to load boot0, U-Boot and kernel via USB for now. You will need to transfer them on each boot.
Entering FEL mode
2 on the serial console when booting/resetting the device until it says "eraly jump fel", or press a key to enter the U-Boot prompt and enter
efex to the same effect:
sunxi# efex ## jump to efex ... set next system status de top clk 18 is already close de top clk 30 is already close de top clk 19 is already close de top clk 30 is already close de top clk 35 is already close mod 40 is already disable de top clk 16 is already close mod 40 is already disable mod 40 is already disable de top clk 34 is already close mod 40 is already disable lcd 2 is not register sunxi_board_close_source reset cpu HELLO! BOOT0 is starting! boot0 version : 3.1.0 rtc 1 value 0x0001005a rtc 2 value 0x00020000 rtc 3 value 0x00030000 eraly jump fel
Connect the USB 3.0 Micro USB outlet to your computer.
BOOT0 via FEL
As long as upstream U-Boot does not have SPL support yet, you need fes1.fex generated from the Allwinner SDK. (TBD)
# fel write 0x12000 fes1.fex # fel execute 0x12000
This will load and execute Allwinner's BOOT0 bootloader in SRAM:
begin init dram INFO: dram code V2.2 dram clk=672 dram_zq = 0x0x003f3fdd!! DDR3 used!! dram channle 2 0x0x00100001 0x0x00100001 pmu id=0x00000062 VTC Disabled!! Channel 0 OK! VTC Disabled!! Channel 1 OK! dram size=2048MBytes! init dram ok
Next you'll need the main bootloader.
Loading a kernel via FEL
Assuming you have a self-compiled kernel with built-in drivers, you can transfer it as follows:
# fel write 0x22000000 zImage # fel write 0x23000000 sun9i-a80-optimus.dtb
Note that transferring large initrd files (such as generated from our kernel-lpae with
dracut -N) is known to fail, you may need to transfer them in multiple smaller pieces of, e.g., 8 MB max.
Designated initrd address is 0x23300000.
U-Boot via FEL
Download the u-boot-merriia80optimus RPM and extract usr/bin/u-boot.bin (this corresponds to u-boot-dtb.bin).
# fel write 0x2a000000 u-boot.bin # fel execute 0x2a000000
This will load and execute our U-Boot in SDRAM.
As of v2015.07, U-Boot does not seem to recognize SD cards and is lacking support for USB or network. You can execute a previously FEL-loaded kernel as follows:
sunxi# setenv bootargs 'root=...' sunxi# bootz 0x22000000 - 0x23000000
Generating a booting initrd
As of U-Boot v2016.01-rc1 and kernel-lpae 4.4.0-rc5, SD card does not yet seem to be working.
To boot a rootfs from USB (
root=/dev/sda1 rw rootwait), add a config file on the device such as
add_drivers+=" phy-sun9i-usb sunxi"
The next time an initrd is generated (e.g.,
zypper install -f kernel-lpae), it will include those drivers.