2025-12-04 –, Walnascar
Yocto Project has a few years ago introduced the genericarm64 machine configuration. This talk explains what genericarm64 is, how it has been configured and how it can help developers to start with Yocto on arm64 based SoCs and to support multiple HW variants.
A lot of development has been done to make 64bit Arm architectures work well with GNU/Linux SW stack. Low level bootloader (u-boot etc) and Linux kernel support has been upstreamed and many boards and devices from multiple vendors will work out-of-the-box at least for basic functionality like memory, CPU, highspeed buses like PCIe, serial consoles and ethernet. Since support for these devices exists in upstream kernel, it just needs to be enabled in downstream Linux distributions, which is what Yocto machine configuration genericarm64 does. The SoCs and boards working with genericarm64 need an Arm System Ready compatible firmware, with UEFI support. Either vendor or u-boot or edk2 open source SW can be used to provide this firmware, with or without extra security components from the Trusted Firmware umbrella https://www.trustedfirmware.org/. With the device and board and firmware and necessary kernel support enabled, genericarm64 can boot a number boards from a number of vendors. The default core-image-sato images can be used to test boards from multiple vendors and can be used as a starting point for product specific configuration and to compare HW from different vendors. The traditional SoC vendor way of providing vendor and product specific layers and build configurations makes comparing different boards and their features harder. They also tie solutions to specific supported branches, possibly only an older LTS, even when support exists in latest development branch in Yocto. It is hard to compare different product specific builds because environments are complext to setup and manage, though some HW specific usecases may not work with upstreamed SW and thus may require vendor specific firmware, SW or BSP SW support in genericarm64. The default Yocto Project builds for genericarm64 are also a bit limited on the contents of the SW stack, since in Yocto community oe-core only contains quite minimal set of SW components. Additional layers like meta-security, meta-virtualisation, meta-arm etc may need to be added in such cases. Vendors providing HW and firmware support can also use Linaro service like ONELab to test their HW and firmware versions so that they are compatible with Yocto genericarm64 and also other Linux distributions. Yocto genericarm64 also uses Linaro Lava to test different boards and firmware variants so that boot to serial console etc and execution of Yocto upstream oeqa runtime tests work.
Mikko is a Senior Engineering at Linaro and maintainer of genericarm64 in OE-Core