Informational resources

Here are links to various external resources with information about the Raspberry Pi, ARM assembly, C, and more.

Raspberry Pi

ARM architecture

The Raspberry Pi A+ uses a Broadcom BCM2835 chip. Inside the chip is an ARM1176JFZ-S processor which is based on the ARMv6 architecture.

  • The peripherals are documented in Broadcom BCM2835 ARM Peripherals.

    • Important: Errata for the above datasheet. Some of the issues are simple typos but there are places where the text is wrong or backwards, so keep the errata at hand to reconcile those.
  • The ARM1176JFZ-S processor is documented in the Technical Reference Manual.

  • ARM1176JFZ-S processors use the ARMv6 architecture, which is documented in the ARMv6 Architecture Manual. At 1000 pages, the full manual is quite a tome!

  • ARM System-on-Chip Architecture (2nd Edition), Steve Furber. Steve Furber was the principal design of the first ARM processor. The diagrams of the ARM architecture are based on the diagrams in Chapter 4: ARM Organization and Implementation.

  • ARM System Developer's Guide: Designing and Optimizing System Software, 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.

  • Extensive introduction to ARM processor core and instruction set by Prof. Jen at National Chiao Tung University in Taiwan.

ARM assembly

Bare metal programming

C language

  • Nick Parlante's EssentialC

  • 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

Developer tools

  • The Definitive Guide to GCC, 2nd Ed., William von Hagen, Apress, 2006 pdf