A Bare Metal Raspberry Pi Course
Written by Harry Fairhead   
Saturday, 27 October 2012

Although this short course is billed as "Baking Pi - Operating System Development" it is more realistically about bare metal programming in ARM assembly language. That is, programming without the help of an OS.

This is a course designed to explain the real basics of computing - there is nothing between you and the hardware. You write an ARM assembly language program and a basic loader gets it running on the Raspberry Pi.


What you do is generate a machine code file and copy this onto an SD card that has a bootable OS on it. That is, you replace kernel.img with the file that contains your own program. This is one sense in which you are writing an OS - your program runs in place of the OS.

Initially the program simply flashes an LED - but not by calling provided subroutines. Instead you program the hardware chip, the GPIO controller, directly.  From here there are a few more lessons using the LED and then the built-in timer is described. Fun with the LED culminates in a Morse code flasher.

From here we move on to programming direct to the screen. This is more than just working with a memory-mapped graphics facility. The graphics chip is as powerful as the CPU and so working with it is a little more complicated.  Several lessons work up from random dots to text.

The final two lessons deal with working with input devices. The first of them starts off with an admission that programming this sort of input from scratch is tough and so some libraries are used to make it easier. I can understand the student being slightly let down at this point, but it is how things are done in the real world. You don't write a USB library if one is available, even if you are building an OS. At the end of the two lessons you have a keyboard and screen program that can be used as a dumb terminal.

The tools used are the YAGARTO ARM assembler hosted by Eclipse on Windows, Mac or Linux. The instructions on how to set up the tools are not particularly detailed and, if you have any problems with the course, it will be getting the assembler up and running.

Overall this looks like a good way to get back to basics, and a Raspberry Pi is cheap enough to buy one to just play with ARM assembler.

Great fun.


More Information

Baking Pi - Operating Systems Development

Related Articles

MagPi - A Raspberry Pi Magazine

Raspberry Pi Stampede

Raspberry Pi or Programming - What shall we teach the children?

Learn 6502 Assembler The Easy Way

Inside the Computer - Addressing

Learn assembler for free






or email your comment to: comments@i-programmer.info


To be informed about new articles on I Programmer, install the I Programmer Toolbar, subscribe to the RSS feed, follow us on, Twitter, Facebook, Google+ or Linkedin,  or sign up for our weekly newsletter.



AWS Lambda Adopts Python 3.10

AWS Lambda functions can now use all the new and useful language features of Python 3.10 as well as take advantage of the performance improvements this version introduces, in both managed runtime [ ... ]

Cybersecurity Google Tackles Skills Gap

Google has added Cybersecurity to the ever-growing list of its Google Career Certificates. Taught online on the Coursera Platform by Google experts these certificates are intended to help you embark o [ ... ]

More News

Last Updated ( Saturday, 27 October 2012 )