Let's boot Apache NuttX RTOS on PineVox!
- BL606P is the newer, scaled-down variant of BL808 (minus the Low-Power Core)
- NuttX already supports Ox64 BL808
- So NuttX might boot on PineVox BL606P!
BL606P looks something like this (minus the Low-Power Core)...
What's inside PineVox?
According to the PineVox Schematic...
-
Mainboard PCB contains Bouffalo Lab BL606P SoC, Serial Console, Flash Memory, USB-C Port, Power Mgmt
-
Sideboard PCB contains Directional Microphone, Buttons, LEDs
-
Connected by a 20-pin Ribbon Cable
USB-C Port connects to a Special USB Cable for PineVox that exposes (pic below)...
-
Boot Switch (GPIO 29)
1: Boot from UART (Flashing Mode?)
0: Boot from Flash
-
UART TX / RX (GPIO 20 / 21)
(We assume it's for Flashing via BLDevCube)
-
USB Data (+ve and -ve)
(For USB Peripherals? Maybe DFU?)
(Schematics will be published soon by PINE64)
How to flash PineVox with OpenSBI and U-Boot Bootloader?
Let's try flashing PineVox with BLDevCube...
-
m0_lowload for M0 Wireless Core (32-bit):
Firmware that forwards Peripheral Interrupts to the D0 Multimedia Core.
-
d0_lowload for D0 Multimedia Core (64-bit):
Basic Bootloader that loads OpenSBI, U-Boot Bootloader and Device Tree into RAM.
-
As explained here: "Flash OpenSBI and U-Boot"
TODO: Flash OpenSBI and U-Boot Bootloader
How to boot NuttX on PineVox?
We have a problem...
-
NuttX boots on Ox64 via microSD. But PineVox doesn't have a microSD Port! (Though BL606P supports microSD)
-
Ox64 supports booting over Ethernet (with U-Boot Bootloader). But BL606P doesn't support Ethernet!
-
We need a way to load NuttX Image into RAM at 0x5020_0000
-
Maybe the M0 Wireless Core (32-bit) will load NuttX Image into RAM? Over WiFi?
Why use U-Boot Bootloader? Why not flash NuttX directly as Firmware?
-
U-Boot might be simpler for now? Today NuttX boots in RISC-V Supervisor Mode, so we don't need to tweak it to boot in Machine Mode.
-
Isolate the Toolchain: BL606P needs a special T-Head C906 Toolchain plus Bouffalo Lab SDK. It's better to isolate OpenSBI + U-Boot, compile them with the special toolchain.
We'll keep them separate from NuttX, which compiles with the popular GCC Toolchain.
-
Support Direct Firmware Update (DFU): In future we might support DFU to upgrade the NuttX Image wirelessly. We'll implement DFU with U-Boot (or something similar).
TODO: Load NuttX Image into RAM