We are using the raspberry pi A+ in class. The A+ is similar to the B+.
-
The ARM1176JFZ-S (used by the Raspberry Pi) is documented in the Technical Reference Manual.
The following short excerpt describes just the instructions. -
ARM1176JFZ-S processors use the ARMv6 architecture, ARMv6 Architecture Manual.
-
ARM System Developer's Guide: Designing and Optimizing System Software (The Morgan Kaufmann Series in Computer Architecture and Design), Andrew Sloss, Dominic Symes, and Chris Wright, 2004. This book is a bit dated, but still provides an excellent overview of low-level ARM programming. Google and you might be able to find a free pdf.
-
Excellent slides by Prof. Yen at NCTU on the ARM processor core and instruction sets.
-
Carl Burch's Introduction to ARM Assembly Language is highly recommended starting point.
-
Worldwind Tour of ARM Assembly from the TONC Guide to programming the Nintendo Game Boy Advance (which uses am ARM processor).
-
David Welch's excellent set of bare metal programming examples.
-
Steve Halliday's videos about programming the raspberry pi.
-
Alex Chadwick's Baking Pi Course.
-
The Raspberry Pi Bare Metal Forum has lots of information from experienced developers. Venturing into the forum is a great way to learn advanced techniques.
-
The C Programming Language, 2nd Ed., B. Kernighan and D. Ritchie. A digital copy of K&R is available to Stanford students via [Safari Books Online] (http://proquest.safaribooksonline.com.ezproxy.stanford.edu/book/programming/c/9780133086249).
-
The Definitive Guide to GCC, 2nd Ed., William von Hagen, Apress, 2006 [pdf] (http://sensperiodit.files.wordpress.com/2011/04/hagen-the-definitive-guide-to-gcc-2e-apress-2006.pdf)