

Baking Pi – Operating Systems Development - roquin
http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/?

======
Joeboy
Another fantastic resource:
[https://github.com/dwelch67/raspberrypi](https://github.com/dwelch67/raspberrypi)

------
joosters
So, I haven't written ARM assembly since I owned an Archimedes computer many
years ago, but isn't there a mistake describing the very first assembly
language instruction in lesson 1?

ldr r0,=0x20200000

Shouldn't the LDR be a MOV?

~~~
DanBC
LDR is a pseudo instruction that uses MOVs to load a register.

([http://www.woodmann.com/fravia/The%20ARM%20Processor.htm](http://www.woodmann.com/fravia/The%20ARM%20Processor.htm))

> _The ARM assembler also supports a similar pseudo operation. The construct
> LDR rd,=value is used to load value into register rd. The LDR pseudo
> instruction uses the MOV or MOV instructions, or it places the constant in
> memory and uses program counter relative addressing to load the constant._

([http://sourceware.org/binutils/docs/as/ARM-
Opcodes.html](http://sourceware.org/binutils/docs/as/ARM-Opcodes.html))

> _If expression evaluates to a numeric constant then a MOV or MVN instruction
> will be used in place of the LDR instruction, if the constant can be
> generated by either of these instructions. Otherwise the constant will be
> placed into the nearest literal pool (if it not already there) and a PC
> relative LDR instruction will be generated._

~~~
joosters
Thanks! That makes sense, I'm only familiar with the old assembler from BBC
Basic :) 0x202 wouldn't be a constant that you could use with MOV now I think
about it, since it could only express integers generated with an 8 bit value
and a shift.

------
limmeau
Very appetizing course notes.

However, I wonder if it isn't too painful in the long run to teach OS
programming on a target where you have to flip SD cards every time you compile
(as opposed to one of those with a hardware debugger included, like Launchpad
or ST Discovery).

When I took Operating Systems (INF242 at Oslo) ten years ago, we wrote an
operating system for PCs that booted from floppies, and debugging was largely
a matter of poking bytes to 0xB800:0000, which made this course somewhat
unpopular with students with little low-level programming experience.

------
weavie
Darn it.. Too many interesting things to do. I really need to lose the day
job.

------
fosap
Awesome. I tried to follow the porting of inferno to the RPi [1], but i gave
up. I had issues i couldn't fix, function calls magically didn't work.

[1] [http://lynxline.com/porting-inferno-os-to-raspberry-
pi/](http://lynxline.com/porting-inferno-os-to-raspberry-pi/)

