Beagleboard:BeagleBoneBlack

This is the official BeagleBone Black Wiki maintained and supported by BeagleBoard.org a non-profit 501(C) organization.

If you have any questions or issues with the content on this Wiki, contact [mailto:gerald@beagleboard.org Gerald Coley]

BeagleBone Black Description
The BeagleBone Black is the newest member of the BeagleBoard family. It is a lower-cost, high-expansion focused BeagleBoard using a low cost Sitara XAM3359AZCZ100 Cortex A8 ARM processor from Texas Instruments. It is similar to the Beaglebone,but with some features removed and some features added. The table below gives the high points on the differences between the BeagleBone and BeagleBone Black.



BeagleBone Black Features
The following table lists the key features of the BeagleBone Black.



In the box is (1)BeagleBone Black board, (1)USB cable, and (1)card that should be read.

BeagleBone Black Picture
Here is a picture of the Rev A5A board.



BeagleBone Black Key Component Locations
Here are the locations of the key components on the Rev A5A.



BeagleBone Black Connector and Switch Locations
Below is the location of the connectors and switches on the Rev A5A board. The Power Button and Battery Connections are new additions to the Rev A5A.



Frequently Asked Questions (FAQ)

 * Beaglebone Black FAQ

List of frequently asked questions concerning the BeagleBone Black. It will be updated as more questions continued to be answered.

Terms of Use
UPDATED INFORMATION

You may use the Beaglebone Black design materials as you choose. There are no licences involved in the usage of the BeagleBone Black design materials. We do not encourage the use of the board that we manufacture under the BeagleBoard.org logo in commercial products. We are not able to schedule parts and arrange for production for orders that we cannot see. Meeting demand is difficult as a result. In addition, we will make revisions to the board as we find necessary and we will not continue to make older revisions. This can result in supply and compatibility issues for those using them in a product. When used in a product, the end customer is responsible for its use in their product. BeagleBoard.org does not guarantee that it will work in any particular application or use case. Changes in components used on the production of these boards such as memory devices, may affect operation of the board, either positively or negatively.

This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License. To view a copy of this license, visit creativecommons.org or send a letter to: Creative Commons 171 Second Street, Suite 300 San Francisco, California, 94105, USA.

All derivative works released back into the public domain are to be attributed as based on the work created by Gerald Coley of BeagleBoard.org.

For more information, see Creative Commons Attribution-ShareAlike 3.0 Unported License

ALL design materials are Open Source and easily accessible. Everything is provided to build your own board. You can make changes as needed or use it as is. It is your product when you use these materials. Feel free to build the board yourself at your contract manufacturer of choice.

If you have questions on any of this, you can contact [mailto:gerald@beagleboard.org Gerald Coley]

Board Shipments
We have shipped a total 253,213 boards to date.

06/15.....4,297 05/15.....6,800 04/15.....7,104 03/15.....7,400 02/15.....6,028 01/15.....7,460 12/14.....5,274 11/14.....2,024 (Lean month due to inability to get SD card cages) 10/14....11,620 09/14....10,930 08/14.....6,797 07/14.....7,509 06/14....10,600 05/14.....7,500 04/14....11,297 03/14....12,698 02/14....13,050 01/14....13,575 12/13.....7,192 11/13.....9,298 10/13.....7,698

Accessories
For a list of the confirmed working accessories please go to * Accessories Page

Covered there are cables, power supplies, displays,etc. Anything that can be added to the BeagleBone Black.

Optional JTAG
There is no JTAG over USB support on the BeagleBone Black. The BeagleBone Black is different than the BeagleBone. JTAG is an uninstalled option.

To install the JTAG header, all you have to do is install P2 on the back of the board. P2 is a Samtec FTR-110-03-G-D-06 connector and can be purchased from Samtec or any of their distributors.

If you are using Code Composer Studio, you will need a

Cape Support
Beagleboard.org is not the maker of the various capes. Most of them are made and supported by Circuitco under the beagleboardtoys.com name. For information on cape compatibility and support go to BeagleBone Black Capes

WIFI Adapters
NOTE: It is highly recommend that you use DC power when running these dongles due to the current requirements of the dongles. DONGLE                                   WORKS ON ASUS USB-N13 802.11 b/g/n           Angstrom EDIMAX EW-7811UN D-Link DWA-125                      Debian LXDE,  Debian Gnome Desktop D-Link DWA-121                     Angstrom  Debian LXDE,  Debian Gnome Desktop Belkin N150                         Debian LXDE TP-Link TL-WN727N                   Debian LXDE,  Debian Gnome Desktop Netgear WNA1100                     Debian LXDE,  Debian Gnome Desktop Keebox W150NU                       Debian LXDE,  Debian Gnome Desktop

Note: Always run the board from 5VDC 1A minimum supply when using a Wifi Dongle. You may need to use a extension cable to move the dongle away from the planes of the PCB.

Sometimes standoffs will work. We also have had instances where when placed in a metal case, there can be Wifi issues as well.

You can also use a dongle with a real antenna on it such as [http:// http://www.logicsupply.com/uwn200/. Logic Supply] which will help

Serial Debug Cable
For information on the serial debug cables go to Serial Debug Cables

Revision C (Production Version)
This revision increases the eMMC from 2GB to 4GB. We are making this change for several reasons:

1) Complaints from the community about lack of space left in the eMMC. 2) For those worried about their eMMC wearing out, the added space will help in the area of moving the data around to prevent wear out. Assuming of course you don't try and use it all. 3) Concerns over the long-term availability of the 2GB device. 4GB is currently the low end of the offering. This also gives us two sources.

We are planning a price increase for the Rev C somewhere between $5 and $15. We are working to figure out where it needs to be. This is for several reasons:

1) To cover the increased cost of the 4G devices. 2) Currently there is $0 margin on these boards which limits our ability to bring more manufacturing capacity on line. Added some margin allows us to find more capacity. 3) Without margin, we cannot respond to component price increases due to market forces. This is of particular concern in the area of NAND and DDR3. We have been successful in fighting back some increases, but we don't know if that will continue.

Revision B
This version moves to the AM3358BZCZ100 processor as we are no longer able to get the limited production version of the AM3359AZCZ100. No changes in features or operation of the board resulted from this change.

Revision A6A
No changes in features or operation of the board.

1) Added optional zero ohm resistor to tie GND_OSC1 to system ground. 2) Changed C106 to a 1uF capacitor. 3) Changed C24 to a 2.2uF capacitor. This extends the reset signal to solve an issue where some boards would not boot on power up. 4) Removed R9 and installed R8. This change was based on an alert we just received from TI that there is a power sequencing issue with the TPS65217C power management IC and the power sequencing is incorrect. This change connects the VDDS rail to the VRTC rail. We do not believe at this time, that the issue is causing any issues with the boards, but we want to comply with the directive.

Revision A6
No changes in features or operation of the board.

1) Based on notification from TI, in random instances there could be a glitch in the SYS_RESETn signal from the processor where the SYS_RESETn signal was taken high for a momentary amount of time before it was supposed to. To prevent this, the signal was ORed with the PORZn (Power On reset). 2) Noise issues were observed in other designs where the clock oscillator was getting hit due to a suspected issue in ground bounce. A zero ohm resistor was added to connect the OSC_GND to the system ground. 3) Moved the enable for the VDD_3V3B regulator to VDD_3V3A rail. Change was made to reduce the delay between the ramp up of the 3.3V rails. No evidence of this being an issue, but it really needs to be as close to the same as possible.

Revision A5C
Production had some fallout of boards when running the HDMI tests in the previous production run. Resistor values were tweaked to improve the test results. No changes in features or operation of the board. 1) Changed R46,R47,R48 to a 0 ohm. 2) Changed R45 to a 22 Ohm.

Revision A5B
1) Updated the PCB to incorporate the modification that was being done on Rev A5A. There is NO DIFFERENCE AT ALL in functionality between REV A5A and REV A5B. 2) Made the LEDs dimmer for those that could not sleep due to the brightness of the LEDs.

Revision A5A
1) Boards are built using the XAM3359AZCZ100 processor. 2) PCB Change...LCD noise issue was resolved by adding 47pf bypass caps on some of the LCD signals. 3) PCB Change...Added access to four battery charger signals on the TPS65217 (TS=Temperature Sense, BAT=Battery connection,BATT_SENSE=Battery voltage pin, GND=Ground). Pins are not populated but the four signals are in a 2x2 .1x.1 spacing. 4) PCB Change...Added a power button which allows for wake up, power down, and sleep options. It also provides the ability to alert the processor before powering down to provide an orderly shutdown. It is expected that SW will be used in conjunction with the switch to control the various power modes and transitions from one to the other. By holding the button down for 8 seconds, it will force a power down of the board. 5) Added a 100K pull down resistor from J1 pin 1 to J1 pin 4 to fix the unterminated serial port issue.

Revision A4B
Added a 100K pull down resistor between pins 1 and 4 of J1 to fix the serial port issue.

Revision A4A
Incorporated the capacitors to fix the noise issue on the display

Revision A4
First prototype release version of the board. Limited distribution. One notable issue here is that the board has an AM3352 processor instead of an AM3359, despite how the part is marked. Part was mismarked as an AM3359. The SGX and PRU are not operational.

Expansion Header Pin Usage
There are several precautions that need to me taken when working with the expansion headers to prevent damage to the board.

ALL VOLTAGE LEVELS ARE 3.3V MAX. APPLICATION OF 5V TO ANY I/O PIN WILL DAMAGE THE PROCESSOR AND VOID THE WARRANTY. ANALOG IN VOLTAGES ARE 1.8V MAX. APPLICATION OF >1.8V TO ANY A/D PIN WILL DAMAGE THE PROCESSOR AND VOID THE WARRANTY.

1) Do not apply any voltages to any I/O pins when the board is not powered on. 2) Do not drive any external signals into the I/O pins until after the SYS_RESETn signal is HI (3.3V). 3) Do not apply any voltages that are generated from external sources until SYS_RESETn signal is HI. 4) If voltages are generated from the VDD_5V signal, those supplies must not become active until after the SYS_RESETn signal is HI. 5) If you are applying signals from other boards into the expansion headers, make sure you power the board up after you power up the BeagleBone Black or make the connections after power is applied on both boards.

In the System Reference Manual you will find reference to Boot Pins. These pins are connected to the expansion header. If you load or terminate these pins to the point it affects their default setting, the board will not boot.

Powering the processor via its I/O pins can cause damage to the processor. The expansion headers can be viewed on this Cape Expansion Headers.

Serial Header Usage
Power restrictions on the serial debug header are not an issue. On the board, there is a buffer that prevents damage from occurring by having the connector of the FTDI cable connected to the the header. It is safe to do and will not cause damage to the board when power is not applied to the board.

Extremely Useful Links
BeagleBoard home page BeagleBoard How to Videos Hipster Cricuits Getting Started On BeagleBone Black Adafruit Tutorials This site is well worth a visit. You may even decide to make it your home page! Derek Molloy's Blog GPIO and Device Tree (Derek Molloy) C/C++ Introduction on BeagleBone (Derek Malloy) Hackaday You can also subscribe to this. Should be checked often for the latest cool projects on BeagleBone Black Interent Sharing On Windows 7 Robert P. J. Day's Wiki Linuxonarm Wiki

Expanding the Storage Partition on microSD
If you have installed a Linux distribution on your microSD you can modify the root file system partition. You are then able to utilize all of the space on your microSD card regardless of the size of the default partition of your given image. Follow the instructions found on Expanding File System Partition on a MicroSD.

Note: The instructions on that page are general and are not guaranteed to work on every Linux distribution.

BoneScript
Bonescript is a Node.js library specifically optimized for the Beagle family, featuring familiar Arduino function calls, exported to the browser. The BoneScript library provides several functions useful for interacting with your hardware. The following BoneScript provides a dozen of hardware demos that interact with the BeagleBone Black.

Connecting to the BeagleBone Black: Serial Connection, SSH, or USB
In the following Terminal Shells page, there are instructions on how to connect to the BeagleBone Black through either a serial connection, SSH using an ethernet cable, or SSH to the BeagleBone's built-in IP address over a USB cable.

Creating a uSD card for Extra Storage
MicroSD Card For Extra Storage

HDMI Issues
HDMI Issues..We have several people having issues getting the board to work with various TVs and Displays. RMA returns have shown no issues. If you are having issues a separate support page has been set up at HDMI Issues

WIKI Issues
If you find any issues with any information on this WIKI, please send the information to the discussion forum http://beagleboard.org/Community/Forums.

Software
1) The microSD card cannot be used as a storage device when booting from microSD in the 3.8 kernel. 2) SGX support is not currently provided i the 3.8 kernel. 3) The latest production image 6_20_2013 does not work on Lapdocks.

You can find a list of reported issues and add additional ones by going to Bug Tracker

Hardware
Here are the known Hardware issues:

Wrong Processor REV A4,A4A
Processor is a AM3352 due to the incorrect part being marked as an AM3359.

Missing Cables REV A4,A4A
Does not ship with any cables. Rev A5 will ship with the USB cable.

Display Noise REV A4
If you look closely, you will notice some noise in the display. This is due to a termination issue on the board caused by too many connections to the LCD data pins. This will be fixed on the A5 revision.

Serial Debug CrashREV A4, A4A
Serial port can cause the system to crash if there is not a serial cable plugged into J1.

Improper Power Down....All Revisions
We have been noticing a very small number of boards that are experiencing power issues, where the LED flashes and the board does not power up. We have been chasing this for a while now and due to the small number of boards that have the issue and the fact that the issue can also be caused by having things connected to IO pins not powered correctly, it has been hard to nail down. Our initial take was that it was a manufacturing issue on some boards, but we could never prove that. Based on the latest information we have gathered, this appears to be an instance where the PMIC does not power down the processor in the right order due to the violent removal of the power cables, either USB or DC. So, we are recommending that the power button be used to power off the board or by issuing the Halt command. After that you can remove the power cable. If everyone follows this process, we should see a decrease in these issues, but it will take a while for the results, either good or bad, to show up. This will also help prevent the contamination of the eMMC and the SD cards by allowing the kernel to shutdown properly before power is removed.

Another issue that we have seen is that the power supply when plugged in will create a spike that exceeds the voltage rating of the PMIC or will cause the voltage to drop momentarily. This can occur after power up cycle has started. When this occurs, the PMIC will shutdown. This can cause the processor to be powered down before it is powered all the way up, damaging the processor. It is suggested that to prevent this that you use a well regulated power supply that can handle the current surge of the powering up process.

Debian Beta Image
All boards now ship with the Debian image. The Debian is compatible with all versions of the BeagleBone Black

MachineKit Debian Image with LinuxCNC and Xenomai
Building a CNC machine or 3D printer can be greatly simplified with this customized Linux distribution. http://blog.machinekit.io/p/machinekit_16.html

Angstrom
It is highly recommended that you always use the latest version of the Software. For instructions on updating the Angstrom Software on your BeagleBone Black go to Updating the Software

If you power off the board without using the Power Button to do it, you can corrupt the data in the eMMC Flash. For instructions on reflashing the Angstrom Software on your BeagleBone Black go to Updating the Software

Software Sources
 * Bootloader: http://www.denx.de/wiki/U-Boot/SourceCode (git://git.denx.de/u-boot.git)
 * Kernel: http://github.com/beagleboard/kernel/tree/3.8
 * Root file system: http://github.com/beagleboard/meta-beagleboard

To access the getting started guide do the following:

1) Go to http://github.com/jadonk/beaglebone-getting-started. 2) At the top of the page next to the "Clone in Windows" button, click the ZIP button. 3) Unzip that folder into a separate directory. 4) Open the readme file.

Android
For instructions on how to get Android onto the board goto Android

FreeBSD
FreeBSD now has official support for BeagleBone Black: Project Page

Nintendo
If you want to turn your BeagleBone Black into a SNES (Super Nintendo Entertainment System) you can check that out at  BeagleSNES This link is provided as a convenience and the software located at this link is not supported by Circuitco or BeagleBoard.org.

Gentoo
This link is provided as a convenience and the software located at this link is not supported by Circuitco or BeagleBoard.org. Gentoo

ArchLinux
This link is provided as a convenience and the software located at this link is not supported by Circuitco or BeagleBoard.org. ArchLinux

LinuxCNC
This link is provided as a convenience and the software located at this link is not supported by Circuitco or BeagleBoard.org. LinuxCNC

Minix
This link is provided as a convenience and the software located at this link is not supported by Circuitco or BeagleBoard.org. Minix

XNU
This link is provided as a convenience and the software located at this link is not supported by Circuitco or BeagleBoard.org. CNU

Asterisk
This link is provided as a convenience and the software located at this link is not supported by Circuitco or BeagleBoard.org. Asterisk (Instructions Asterisk on BeagleBone Black).

TI EZSDK
For information on how to install the latest EZSDK from TI got to EZSDK.

Beaglenmt
The BeagleBone Network Multitool (beaglenmt) is a lightweight, X11-free, networking-centric, and IPv6-ready server distribution targeting the BeagleBone platform. beaglenmt supports the BeagleBone Black hardware platform.

LATEST PRODUCTION FILES (C)
The links below are static links that always point to the latest version of the listed documents. These links can be used by distributors or users to point to the latest documentation. As documents are updated, the links will remain the same, but the actual file will be updated. This insures that you always have the latest documents and your links will always work.

If you have any questions on these files, contact [mailto:gerald@beagleboard.org Gerald Coley]


 * System Reference Manual Rev C.1(PDF)
 * Schematic (PDF)
 * Schematic (OrCAD)
 * BOM (xls)
 * PCB Files (Allegro and Gerbers)
 * MD5 Checksum for all files (md5)
 * All Hardware Documents

If you are interested in an Altium version, there is a version for the original A5B board they can be found at Altium A5B. These files are provided AS IS with no support.

If you are interested in an Mentor version of the A5C board they can be found at Mentor A5C. These files are provided AS IS with no support.

Mentor has also recently released a PADS version of the board at PADS BeagleBone Black.

Upverter has a version uploaded (unverififed) Upverter BeagleBone Black.

You can find the Solid Works and 3D PDF files provided AS-IS at 3D Models

A GitHub repo is available with all revisions of the documentation - https://github.com/CircuitCo/BeagleBone-Black

PREVIOUS PRODUCTION FILES (B)

 * System Reference Manual B (PDF)
 * Schematic B (PDF)
 * Schematic B (OrCAD
 * BOM B (xls)
 * PCB Files Rev B (Allegro and Gerbers)
 * All Hardware Documents B

PREVIOUS PRODUCTION FILES (A6A)

 * System Reference Manual A6A (PDF)
 * Schematic A6A (PDF)
 * Schematic A6A (OrCAD
 * BOM A6A (xls)
 * PCB Files A6A (Allegro and Gerbers)
 * All Hardware Documents A6A

OLD PRODUCTION FILES (A6)

 * System Reference Manual A6 (PDF)
 * Schematic A6 (PDF)
 * Schematic A6 (OrCAD
 * BOM A6(xls)
 * PCB Files A6 (Allegro and Gerbers)
 * All Hardware Documents A6

OLD PRODUCTION FILES (A5C)

 * System Reference Manual A5.6 (PDF)
 * Schematic A5C (PDF)
 * Schematic A5C (OrCAD
 * BOM A5C(xls)
 * PCB Files A5C (Allegro and Gerbers)
 * All Hardware Documents A5C

OLD PRODUCTION FILES (A5B)

 * System Reference Manual A5.5 (PDF)
 * Schematic A5B (PDF)
 * Schematic A5b (OrCAD
 * BOM A5B(xls)
 * PCB Files A5B (Allegro and Gerbers)
 * All Hardware Documents A5B

OLD PRODUCTION FILES (A5A)

 * System Reference Manual A5.3 (PDF)
 * Schematic A5A (PDF)
 * Schematic A5A (OrCAD
 * BOM A5A(xls)
 * PCB Files A5A (Allegro and Gerbers)
 * All Hardware Documents A5A

REV A4

 * Bill of Materials
 * System Reference Manual (PDF)
 * Schematic (PDF)

BeagleBone Capes
BeagleBone capes are add on boards that can be connected to the BeagleBone Black to add functionality. These capes are made by a lot of different companies and individuals. A list of capes that are in production are listed at BeagleBone Capes.

If you have a cape that is in production and can be purchased and you would like it listed, please contact [mailto:support@circuitco.com Circuitco]. More information regarding the Cape Expansion Headers can be found at Cape Expansion Headers.

Most of the current capes will work with the BeagleBone Black at some point. However, the kernel is 3.8 on the BeagleBone Black, so work is required to get the drivers updated for most of the capes to work. Some may not work or may require some hardware changes due to some differences in the design of the BeagleBone Black as described below.

For a list of the ones that are currently identified as compatible and incompatible, go to BeagleBone Black Capes.

Onboard HDMI
The onboard HDMI driver uses the LCD pins. They are still connected to the expansion header, but in some cases, they could cause an LCD cape to have some noise issues unless the cape has a buffer. A buffer should take care of this issue. If you want to use these pins as GPIO pins, you may be limited in speed due to the capacitance caused by the loadig of the pins by the HDMI driver. They should function fine in most applications.

Onboard eMMC
The onboard eMMC uses the MMC1 signals. They are also connected to the expansion header. The expectation is that in order to use these signals, the eMMC device on the BeagleBone Black will need to be disabled by activating the reset line to the eMMC device. It is not clear that this will work as you have to write to the eMMC first and tell it to enable the reset. At this point in time, it is not totally clear that the reset line will do the trick. Further investigation is ongoing. This will also require booting from the uSD port. Best option is to not use the MMC1_CLK and MMC1_CMD signals at all and tie them low. Do not use these signals for anything else will trying to use the other eMMC1 lines on the expansion header.

10Pin Connector
The 10 pin power expansion header has been removed. Any cape needing this connector will not be 100% compatible.

Regulatory Compliance Documents

 * FCC
 * CE
 * REACH

Export Information
ECCN: 5A002A1

CCATS: G141473


 * Documents

RMA Support
If you feel the board is defective and you want to get it looked at go to RMA Request You will need the serial number. It is located on the expansion header in the form of a white label.

We only accept RMA requests for those boards purchased through authorized BeagleBoard.org distributors. You can find a list of authorized distributors on the buy pages at BeagleBoard.org If you purchase a board from an unauthorized distributor, you need to return the board to them for replacement or repair. Shipping to the repair depot is covered by the requester. Return shipping is paid by the repair depot.

Books specifically on BeagleBone

 * BeagleBone Cookbook: Software and Hardware Problems and Solutions
 * Exploring BeagleBone: Tools and Techniques for Building with Embedded Linux examples
 * Bad to the Bone: Crafting Electronics Systems with Beaglebone and BeagleBone Black examples
 * Getting Started with BeagleBone: Linux-Powered Electronic Projects With Python and JavaScript
 * Programming the BeagleBone Black: Getting Started with JavaScript and BoneScript examples
 * Learning BeagleBone Python Programming
 * Learning BeagleBone
 * BeagleBone Home Automation
 * Building a Home Security System with BeagleBone
 * BeagleBone Robotic Projects
 * BeagleBone for Secret Agents
 * BeagleBone for Dummies
 * 30 BeagleBone Black Projects for the Evil Genius
 * The BeagleBone Black Primer
 * Building a BeagleBone Black Super Cluster
 * BeagleBone Black Interfacing: hardware and software
 * Mastering BeagleBone Robotics
 * BeagleBone Black Programming by Example
 * BeagleBone Media Center
 * Android Hardware Interfacing with the BeagleBone Black
 * BeagleBone Essentials
 * Building Network and Servers Using Beaglebone
 * Using Yocto Project with BeagleBone Black
 * My BeagleBone Black work notes (Japanese)

Recommended books on hot topics around BeagleBone

 * Hacking and Penetration Testing with Low Power Devices
 * The Internet of Things: DIY Projects with Arduino, Raspberry Pi, and BeagleBone Black
 * Make: JavaScript Robotics: Building NodeBots with Raspberry Pi, Arduino, and BeagleBone
 * Embedded Android: Porting, Extending, and Customizing
 * Embedded Linux Development with the Yocto Project
 * Embedded Linux Systems with the Yocto Project
 * Software Engineering for Embedded Systems: Methods, Practical Techniques, and Applications
 * Beginning NFC: Near Field Communication with Arduino, Android, and PhoneGap
 * Zero to Maker: Learn (Just Enough) to Make (Just About) Anything
 * Designing the Internet of Things
 * Getting Started with Electronic Projects
 * Operating System Design: The Xinu Approach, Second Edition

Recommended books on Linux

 * Embedded Linux Primer: A Practical Real-World Approach
 * Building Embedded Linux Systems
 * Linux Device Drivers
 * Linux All-in-One For Dummies
 * Embedded Operating Systems: A Practical Approach (Undergraduate Topics in Computer Science)

Recommended books on ARM architecture

 * ARM Assembly Language: Fundamentals and Techniques
 * ARM Architecture Reference Manual - may be available as a free download