Some bare-metal Pi resources for retrocomputists

Here are some I know of:
PiTubeDirect (second processor for Acorn 8 bit micros, bit-bangs a read-write peripheral on the 2MHz bus)
RGBtoHDMI (samples RGB video and presents as pixel-perfect HDMI, very low latency, uses a CPLD as deserialiser and optional analogue front end board for multi-level signals such as from Amstrad)
Pi1MHz (multi-purpose peripheral for Acorn 8 bit micros, bit-bangs a read-write peripheral on the 1MHz bus)

PiTubeDirect is notable for using part of the GPU to bit-bang the peripheral response to the host bus, leaving the ARM core free to do the main mission, emulating a processor subsystem. There’s a very high performance 6502 emulation in there, written in ARM assembly, as well as C emulations of 6502, Z80, ns32k, PDP-11, 6809, x86, ARM2, as well as a second processor which is the Pi itself (1GHz ARM).

I found these projects and links:


Some resources for baremetal programming:

Baking Pi – Operating Systems Development (University of Cambridge)

Ultibo core “is a full featured environment for embedded or bare metal (without an operating system) development on Raspberry Pi”


It’d be interesting to understand how the dev cycle works for this kind of thing without ridiculous amounts of SD card swapping… I’m interested in making a couple of projects in this kind of area, but it’d depend on the amount of pain involved!

1 Like

That’s a good point. As I recall, at one point in PiTubeDirect development we did have a scheme which could upload a new kernel over the serial connection. But that became a bit tedious itself, so it was back to SD card swapping. I will ask for comments on this though.

Yeah, I was wondering if it could be netbooted somehow. It looks like the Pi PXE boot just downloads whatever you tell it is a kernel… that way it’d just be repeatedly resetting the Pi, at least. I’ve been wanting to play with Circle, so I might give it a try.

That’s right, these days netbooting might well be best. There’s also piboot, from the usbboot project, and there’s also the idea of using wifi-enabled SD cards.

1 Like

I had a quick play this morning with the second NIC in my linux desktop. With dnsmasq set to ONLY do tftp and dhcp on that nic, and the pigfx kernel7.img plus a few files from the /boot directory of my pi400 in the tftp directory, I could get it to boot to the rainbow screen. Supposedly it has fetched a kernel at that point, but it doesn’t actually run it. Also, I don’t see a nice way to reset the pi400 from the gpio, so I guess I’d want a usb-c inline power switch. Seems promising though!

1 Like

On some of the earlier Pi models there are a couple of holes to which one can solder a reset button. I’m not sure about the PI 400, but perhaps see here:
RaspberryPi 400 and reset button - Raspberry Pi Forums

Power-cycling should work too, but a reset button feels preferable.