BL808 and Cohorts: A Look at New RISC-V MCUs
on
The BL808 from Bouffalo Lab (Figure 1) has been available for several months now in the form of the Pine Ox64 from Pine64 (Figure 2) and the Sipeed M1s Dock (Figure 3). It is a wireless MCU with Wi‑Fi 802.11 b/g/n, BLE 5.0 and Zigbee. It looks a bit like a clone of the ESP32, but it has a lot more under the bonnet than you might think at first glance. The other members of its family are equally impressive. The BL602 (also available in the Elektor Store) can be regarded as an alternative to the ESP8266 with Bluetooth Low Energy (BLE), and it has already been available for several years. Along with the BL808, the BL702 and BL616 are new additions to the family and are described briefly in this article.
The BL808
The BL808 has an asymmetrical dual-core architecture with a 64-bit core (RV64IMAFCV) clocked at 480 MHz and a 32-bit core (RV32IMAFCP) clocked at 320 MHz. Asymmetrical configurations like this are nothing new — the STM32H747 deployed on the Arduino Portenta H7 has an asymmetrical design. Upon closer examination, however, these two MCUs are starkly different. Figure 4 shows the block diagram of the BL808.
Two Processor Cores
The RISC-V processor cores are not the result of in-house development, but instead consist of the C906 and E907 from T-Head, a subsidiary of the Alibaba Group. The cores are supported by 728 KB of SRAM and 64 MB of pSRAM (a generous amount for an MCU). Thanks to the memory management unit (MMU), the BL808 can even run a mainline Linux kernel — a relatively unique capability for an MCU nowadays. An accelerator for neural networks (BLAI-100, rated at 0.1 TOPS) is also available to the two cores. Those of you who can still remember the article “Start Playfully with RISC-V: How to Run Quake 1 on a Microcontroller” may recall the Canaan Kendryte K210, a 64-bit dual-core MCU with RISC-V cores clocked at 400 MHz, an AI accelerator and 8 MB of RAM — ideal for object recognition tasks.
The asymmetrical design of the BL808 aims to link a Linux-capable core (64 bit) for multimedia to a microcontroller for real-time applications. This means we need to take a brief look at the peripherals; for a complete list of all the device features, see the Overview of BL808 Peripherals box.
Between Multimedia and Bus Systems
The system architecture diagram in Figure 5 reveals the functional layout of the BL808. The multimedia side contains some rather unusual elements for an MCU, such as a scaler, an MJPEG decoder/encoder, an H264 encoder, an audio codec, a MIPI CSI and a MIPI DSI. Together with the 10/100 Mb/s Ethernet controller and the USB 2.0 HS OTG interface (480 Mb/s), the MCU has all the hardware necessary to act as a video camera.
On the other side, the MCU is equipped with four I²C controllers, two SPI controllers, four UARTs, and a CAN 2.0b interface (designated as ISO 11898), among other things. The remaining hardware components include an ADC, DAC, touch controller, PWM units and the usual GPIO pins, so the MCU is certainly not limited to multimedia applications.
In addition, the wireless interfaces make a lot of hardware available for building projects. Nevertheless, experience shows that a data sheet can only present part of the overall picture. Hardware documentation, an SDK, examples, a tool chain and practical experience are indispensable to properly assess the device and where it can be used down the road. Bouffalo Lab is not the first manufacturer to take this route, and in some cases the SDK and documentation (or lack thereof), rather than the hardware itself, stood in the way of successful product deployment.
The BL808 Between Two Worlds
The BL808 occupies a position between two worlds: more than just an MCU, but still less than a single-board computer such as the first Raspberry Pi. This device is interesting in terms of hardware, not least because it incorporates RISC-V cores. It integrates a diverse bouquet of on-chip hardware, enabling it to not only run a Linux kernel but also operate with another sort of RTOS. In terms of RAM, 64 MB is more than most other MCUs can offer, and, with 128 Mb (16 MB) of external flash, an SD card interface and the USB 2.0 HS controller, you don’t have to worry about running out of memory. If you have a BL808 in the form of the Pine Ox64 or a Sipeed M1s Dock, you can already run a Linux kernel with rudimentary tools. But the BL808 is still fairly young and, like the ESP32, it will probably need the support of the community to find its way forward.
The Pine Ox64 in the Raspberry Pi Pico Form Factor
On the outside, the Sipeed M1s Dock (Figure 6) looks a bit like an ESP32 DevKitC, but, with the optional camera and display, it is positioned more as an alternative to the Sipeed Maixduino Kit for RISC-V AI + IoT (Figure 7). Pine64, however, takes a different approach.
The pinout of the Pine Ox64, as well as its form factor, match those of the Raspberry Pi Pico and Raspberry Pi Pico W. Figure 8 and Figure 9 show the board in comparison with the Raspberry Pi Pico. With the Pine Ox64, however, the micro USB port is only intended for power supply, while its USB 2.0 HS OTG function is available on a USB-C port, which also holds the data lines for a CSI camera accessory planned for a later date.
The choice of form factor allows some of the peripheral devices for the Raspberry Pi Pico to be used here as well, which, for some makers, will simplify experimenting with the board and enable access to an existing hardware ecosystem.
BL616
The BL616 is the little brother of the BL808. It has only a 32-bit RISC-V core (RV32IMAFCP) and a reduced number of peripherals, as can be seen from the block diagram in Figure 10. The device provides 480 KB of RAM and 4 MB of internal flash memory. For this device, Sipeed offers the M0S (Figure 11) and the M0S Dock as small modules. With a USB 2.0 HS OTG port running at 480 Mb/s, this device is certainly suited to a number of interesting applications.
BL702 and BL602
The BL702 and BL602 are not new, but they may not be known to everyone. The BL602 is the oldest of the devices described here. Its complement of RAM and flash is similar to that of an ESP8266, and the BL602 supports BLE 5.0 in addition to Wi-Fi. The BL602 was the first device from Bouffalo Lab. Although it was widely accepted by the community, it was later overshadowed by the ESP32. The BL602 has a 32-bit RISC-V core clocked at 192 MHz, along with 276 KB of RAM. For the BL602, which is also available in the Elektor Store on the Pine BL602 EVB, there is documentation available from LEE Lup Yuen, which is intended to make it easier to get started. Compared to the rest of the family, the peripherals of the BL602 (see the block diagram in Figure 12) have been kept to a minimum.
The BL702 also has a 32-bit RISC-V core, but only supports BLE and Zigbee 3.0. As can be seen from the block diagram in Figure 13, it has a significantly larger complement of peripherals than the BL602. Due to its USB 2.0 FS interface (12 Mb/s), the device has also been integrated into low-cost debuggers despite the lack of Wi-Fi functionality.
Documentation and SDK
Documentation in English and Chinese is available for the BL808, BL702, BL616, and BL602. As with other companies, it is not simply provided on a website for downloading, but instead available in a GitHub repository. Although this allows users to point out errors and potential improvements, it looks like the documentation is still a work in progress. The documents are usable, but certainly not comparable to the data sheet of the Raspberry Pi Pico.
Even so, with the data sheet and the reference manual for these devices, you can develop applications. If you are looking for a suitable Arduino framework, you will have to wait a while. Work on this has already started for the BL602 , but no support is available for the other devices.
For application development with these devices, you can use bl_mcu_sdk, which supports code written in C/C++. Here as well, you can see that there is still room for improvement.
An Initial Conclusion
The initial impression of the BL808 and BL616 holds a lot of promise for the future. A somewhat thought-provoking question, however, is why devices such as this can be designed so quickly in Asia while it appears that the large manufacturers still remaining in Europe and America are currently taking a very conservative approach toward device development. The last real surprise in this regard was (and still is) the RP2040 from Raspberry Pi.
If you’re looking for a stable platform with a robust SDK, right now, you should still be looking at other devices. However, documentation and an SDK are available on GitHub, which allows you to not only keep track of progress, but (as with other manufacturers) also actively contribute to making improvements. What’s more, the prices and functional scope of the devices seem very attractive. With the current SDK and the present state of the drivers, however, the devices are more suitable for users with a passion for experimenting who want to find out what the devices can do. As for me, the question is not only “Can it run Doom?” but also “Can it run Quake?”
If you want to get started with the BL808, the Pine Ox64 from Pine64 is doubtless an interesting option. Unfortunately, this board is not yet available in the Elektor Store, and if you order directly from the manufacturer you need to bear in mind that you will have to pay import duties. We therefore ask that you let us know if you are interested in this board, so that we can let you know when it’s available for order from the Elektor Store.
Translated by Kenneth Cox (230032-01)
Questions or Comments About the BL808?
Contact the Elektor editorial team at editor@elektor.com if you have any questions or comments about this article.
Discussion (0 comments)