Building your own Yocto image for Banana Pi F3
Yocto is the de facto standard for running Linux on embedded systems, and this is of course true for RISC-V as well.
We are happy to share a Yocto build for the Banana Pi F3 board, one of the most popular RISC-V SBCs that supports the ratified version of the Vector extensions. Check out our repo with detailed instructions on how to get started here.
github.com/qamcom/Banana-Pi-F3-for-Yocto-Blog
What is Banana Pi F3?
Banana Pi F3 is a development board sold by youyeetoo, with an 8 core RISC-V chip from SpacemiT, called Key Stone K1.
The most exciting feature of this development board is that the K1 chip have hardware support for the RISC-V Vector specification 1.0. For the longest time, the Vector specification was stuck on version 0.7 and never got a ratified state. But now that the specification has been ratified, silicon implementing the specification is slowly starting to pop up on the market.
As far as we know, there's only a few proper development boards available today for consumers to get their hands on. And Banana Pi F3 is one of them.
The board itself have the usual features needed for developers to experiment and develop on it. Ethernet, WiFi, Bluetooth 4.2, USB 3.0, HDMI, SD card slot, USB-C, GPIO pins, UART pins, PCIe, and the list goes on.
Overall, it is a very nice development board for those who wishes to explore the RISC-V architecture and experiement with the RISC-V vector 1.0 implementation.
Why Yocto for Banana Pi F3?
In short:
- Yocto is an industry standard within the embedded systems industry
- Bianbu Linux is built using buildroot
- Bianbu Linux have a few limitations related to open source and documentation
The first point needs no further explanation. So let's dive into the second and third points.
Bianbu Linux BSP is built using buildroot
The Getting Started Guide recommends you to download and use pre-built images based on Bianbu Linux. Bianbu Linux is a BSP for the SpacemiT chips, including the Key Stone K1 on Banana Pi F3. The Bianbu Linux BSP is built using buildroot, with forks of a number of git repos, along with a few patches, and one proprietary file needed to make the board boot.
Buildroot in itself is not a bad buildsystem of course. It's just not the standard in the embedded industry today. That's why we thought it was worth to create a Yocto layer for the Banana Pi F3 board.
Bianbu Linux BSP limitations
The recommended Bianbu Linux BSP is mostly open source and are fairly well documented for the basic operations. However, there are aspects of it that burdens a developer in certain areas.
Open source aspects
One negative aspect (as of this writing) is that there's a few software components that are not fully open sourced yet, namely these:
- RCPU (Real-Time CPU) firmware, esos.elf.
- Support for the Imagination PowerVR GPU.
- Support for video hardware acceleration
These components are distributed as binary blobs. The esos.elf binary blob is required in order to boot the board, while the others are only needed if you need to fully utilize the GPU and hardware accelerated video encoding and decoding.
This is mentioned in the FAQ which is a plus of course. But it is an aspect you have to take into consideration if you plan to use the GPU's full power and/or hardware acceleration for video.
Documentation
Another limitation, certainly not as severe as the open source limits mentioned above, is the documentation of the board. Not to say that there's enough documentation in english. There are. Enough at least to build a working distribution according to their instructions. But many parts of the Development Guide are still not translated to english. We hope this is still being worked on.