Posts: 1
Joined: Sun Feb 03, 2019 2:17 am

Re: STICKY: Bare Metal resources

Sun Feb 03, 2019 2:20 am

Just a random person passing by. As one who is intimately familiar with the Synopsys USB IP... I am not sure if this is still an issue or not, but it seems like it is on this particular thread... (have not cross referenced any other threads).

Just looking at the USB register documentation in the first few replies. This IP is almost EXACTLY the same as the Synopsys USB IP found in all STM32 and EFM32 USB OTG peripherals. Not sure why nobody has noticed this? All register documentation and how to set up the peripheral are available in those relevant reference manuals. I have written several drivers for this IP myself.

Posts: 24
Joined: Mon May 20, 2019 12:35 am

Re: STICKY: Bare Metal resources

Thu Jun 06, 2019 1:44 am

As part of writing my own OS for RPi, I am interested in bare metal resources, but am also ready to contribute. Code samples are very useful, but sometimes you want a detailed explanation about how a particular piece of code is working, or how a particular piece of the RPi architecture works.

I started explaining how to access some of the RPi resources on my own Github repo (e.g. how to use the official 7" touchscreen), but am wondering if there is a better place. Because this site doesn't seem to have a Wiki that members can contribute to, would https://wiki.osdev.org/Main_Page be the place for this?

Posts: 106
Joined: Mon Aug 19, 2019 9:56 pm

Bare-metal WiFi driver

Sun Mar 08, 2020 5:15 pm

The objective is to create a standalone driver for the CYW43xxx parts, initially the CYW43438 on a Pi ZeroW. So far I've got its CPU running, and accepting IOCTL calls.

See https://iosoft.blog/zerowi/

Will release source code as soon as it does something useful!

UPDATE: it now connects to a wireless network with WPA or WPA2 encryption, the source code is available on Github

Posts: 1
Joined: Sun Jul 12, 2020 9:04 pm
Location: Cambridge, UK
Contact: Website Twitter

Re: STICKY: Bare Metal resources

Wed Sep 02, 2020 4:31 pm

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...
Adam Greenwood-Byrne

Return to “Bare metal, Assembly language”