I'm a tech CEO over at RealVNC, and we love the Raspberry Pi. It had been years since I'd written code (such is the life of a CEO!), and in lockdown I finally bought a Raspberry Pi 4 and embarked on a journey to go bare metal again (it's where I began as a teenager) and try to write some little tutorials.
Things that are working so far (with some help from other bare metallers of course):
Part 1: Bootstrapping from assembly into a 64-bit C environment
Part 2: Building and booting using an Arm cross-compiler and a Makefile
Part 3: Using the mini-UART to output a "Hello world!" message to a terminal connected via the GPIO header pins by a USB to serial TTL cable
Part 4: Getting bi-directional comms going with the mini-UART
Part 5: Basic graphics drawing over HDMI including lines, rectangles and circles (filled and empty) as well as font creation and character printing
Part 6: Building a simple Breakout game controlled using the UART-connected terminal
Part 7: Getting Bluetooth communication working including advertising as an Eddystone Beacon and reading characteristics from the Bleno echo
Part 8: Extending the Breakout game to be controlled over Bluetooth by remoting my Macbook Pro's trackpad extending the Bleno echo code
The hosted pages:
The Github repository itself:
I'll update this as I write more code. I'm proud to have got Bluetooth working though (and co-existing with the UART), as so little is written on the topic. I know more about Bluetooth now that I ever thought I'd need to and certainly more than I wanted to
Hope some of this code is useful! If so, please follow me on Github so I know that someone's listening and it's worth continuing...