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:

ZXBaremulator

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”

5 Likes

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.