I'm interested in using the RPi to teach myself hardware level programming. I've searched the internet for some tutorials for RPi but all I find are general "how to compile the kernel" tutorials. I'm more interested in actual "how to write kernel code/device drivers"-type tutorials. Are there specific tutorials for RPi, or would any *nix tutorial for hardware level programming suffice?
I don't think you'll find a better resource than this unless you know somebody personally.
P.S. In case the link dies, the book is called Linux Device Drivers.
I have just found something from the University of Cambridge.
It's easy to follow and very well made introduction how to put your first OS together: http://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/os/
In addition to the LDD book, you may also look at the training course documents at free-electrons.com. There all the course materials are open sourced. Quite suitable for who has started a little bit into linux kernel programming, or who is looking for deeper and wider understanding of specific topics/areas.
To start with, you may look at least the first two courses:
And don't forget the lxr source code cross-reference site on free-electrons.com, where you can check source code for various kernel versions.
If you favor an IDE especially NetBeans or Eclipse, and know how to run perl scripts and Makefile, you may look at my project Nbk tools on github.com. The script enables you to fully index a kernel project with NetBeans C++ kit. It greatly helps improve the experience to understand more of the source code internal structures and relations. I usually make a minimal configuration of the kernel plus the specific device I'm looking at, and make a build and do an index in NetBeans just for analyzing the kernel code. While do the actual development in another project. This script is tested directly in NetBeans, but with Eclipse the idea would be the same (you need to modify the script to suit Eclipse).