This summer, the University of Cambridge Computer Lab has been home to a small group working on projects with the Raspberry Pi. Alex Chadwick is one of those people, and he’s produced this: a free course on building a very simple operating system for the Raspberry Pi in assembly language.
The course opens with some explanations about what assembly language is – and, importantly, what an operating system really is; you’ll learn some new concepts and possibly some new terms, and then you’ll dive headlong into practical work. You will work through sessions which teach you how to enable and manipulate one of the board’s LEDs, then learn some graphics theory and start generating lines, text and random numbers. Eventually you’ll be manipulating text to display computed values, and learning how to build your own command line interface. Alex has also given you instructions on building your own USB HID driver, which is a really useful way of getting to understand the USB controller that’s already on the Raspberry Pi. There’s a section of downloads with answers to every exercise, so you can keep an eye on your progress.
This is not meant for those new to programming (you’ll find it easier if you’ve got some experience), but should be accessible even if you’re new to assembly language if you are smart and persistent. This is as much a course on bare-metal programming as it is on OS building. It’s not easy, and it’s not meant to be; we expect you to find this course challenging – and you should find you come out of it with a great deal of skill and knowledge that you didn’t have before.
There’s a growing bare-metal programming community emerging around the Raspberry Pi (we’ve had to make a separate subforum for them in our message boards so they’ve got somewhere to talk to each other in ones and zeros), and they’re a really friendly and helpful group – if you get stuck at any point, drop in there and they’ll answer your questions. Alex will also be dropping into the comments below if you have anything you’d like to ask about the course.
Many thanks to the University of Cambridge Computer lab for making the course available, and especially to Alex. Alex does plan on extending the course in the future – but for now, you’ve got twelve lessons to get through which will have you bending your brain in ways which might be new to you, so I’ll let you get straight to it.