Reviving Old and Forgotten Allwinner A80 ARM Boards with Mainline U-Boot and Linux Kernel thanks to the Yocto Project
Recently my friend Lazar Hristov was troubleshooting Cubieboard 4, a very old development board with Allwinner Technology A80 SoC. I stepped in to help and proposed to use the Yocto Project to revive his board and Merrii A80 Optimus board that I have. This blog post documents a successful endeavor to deploy the mainline U-Boot bootloader and mainline Linux kernel on the Merrii A80 Optimus Board, a versatile but now largely overlooked piece of hardware. Using the Yocto Project and OpenEmbedded, a custom image was created leveraging the meta-sunxi BSP layer, which provides tailored support for the board?s hardware features.
The same approach can be extended to the Cubieboard 4, another board powered by the Allwinner A80 SoC. Here?s an overview of the process and insights gained from this project.
Key Highlights of the Project
Supported Branches and Pull Requests
To enable this deployment, new machine definitions for the Merrii A80 Optimus were introduced to the meta-sunxi repository. These are available for both the master and scarthgap branches. The relevant GitHub pull requests are as follows:
Notably, Scarthgap is a long-term supported (LTS) release of the Yocto Project, ensuring maintenance until at least April 2028. Due to the dynamic nature of the master branch, users are encouraged to use the scarthgap branch for stability. Find the scarthgap branch here: meta-sunxi Scarthgap Branch.
Merrii A80 Optimus Board Overview
Powered by the Allwinner A80 SoC, this board combines a big.LITTLE architecture with impressive processing and graphical capabilities:
CPU: Octa-core ARM Cortex-A15/A7
GPU: PowerVR G6230 with 64 cores
Memory: 4GB RAM
Storage: 8GB internal storage
Connectivity: Bluetooth 4.0, WiFi, HDMI, USB ports (2 host + 1 USB 3.0 OTG)
The board is versatile, with applications ranging from embedded development to multimedia. A key detail is its boot sequence?by default, the board prioritizes booting from a microSD card, which was utilized for this project.
Understanding "sunxi"
The term sunxi originates from Allwinner?s SoC naming convention, where "sun" is a prefix, and "i" a suffix. The placeholder "x" represents the chip generation. For instance, the Allwinner A80 chip is referred to as sun9i (generation 9). This shorthand has been adopted by the open-source community for Allwinner SoCs and their support in tools like mainline Linux and U-Boot.
Building an Image for the Merrii A80 Optimus Board
Follow these steps to build an image using the Scarthgap reference Yocto distribution:
Clone the Poky Repository:
git clone -b scarthgap https://git.yoctoproject.org/poky poky-rauc-sunxi
cd poky-rauc-sunxi
Optionally, if you have Cubieboard 4 you should replace merrii-a80-optimus with cubieboard4 in the MACHINE variable above.
Build the Image:
bitbake core-image-base
Conclusion
This hobby project breathes new life into the Merrii A80 Optimus Board, demonstrating its compatibility with modern mainline software. By leveraging the Yocto Project and OpenEmbedded, it is possible to tailor a robust image for boards powered by the Allwinner A80 SoC. For anyone interested in working with such boards, especially the Merrii A80 Optimus or Cubieboard 4, following the outlined process will set you on the right path.