Also there are a few other things which come in handy like those two:
The cambridge tutorial is armv6 assembly only though. Which is kinda neat to poke around with, but not that much fun (imo). But doing baremetal for the raspberry is fun, just because it is a different architecture. The only problem I had with it was that the bcm-datasheet felt not very nice. It's kind of hard reading yourself through this. Or maybe it was so hard, because the topic in itself is pretty complex
But you are right, to be really low level at C, nothing beats writing to the bare metal. There are plenty of guides floating about for this. Here is an example.