I'm using the Orange Pi One. I have a Lite here as well, but I haven't tried that yet. The H3 is inflexible enough in terms of pin mapping that board designs cannot differ much, though, so it may well work with other boards.
If you want to try it, you can check out the opi
branch of https://github.com/uli/allwinner-bare-metal/tree/opi for a bare-metal H3 runtime that I have improved slightly by adding file system, SD driver, USB stack, HDMI audio and a few other bits and pieces. Use crosstool-ng.config
to build a toolchain, then run make
.
In the basicengine-firmware
repo, use the stdio
branch (more on that below) and change the variable OSDIR
in Makefile.h3
to point to the bare-metal directory, then run make h3
.
To upload the resulting binary via USB, power up the OPi into FEL mode (i.e. without a bootable SD card in the slot), then run make -f Makefile.h3 install
. It should also be possible to use u-boot to load and start the binary at 0x5c000000.
The stdio
branch is called that way because I attempt to convert all file access to stdio in order to make porting the firmware to other platforms as porting external code to the firmware easier. It also replaces arduino-builder with a Makefile for both ESP32 and ESP8266 because OMG I hate that crap.
I have not yet found the time to check if these two changes break anything on the original platform, so I haven't merged it back into master
yet.