BeagleBoard Community

This page collects information about TI's ARM based OMAP3 Beagle Board.

=Events=
 * Each last Saturday of the month, first May 30, 2009: BeagleBoard Bangalore user meeting (Beagle Clinic India)
 * 24th until 27th June 2009: Linux Tag Germany with TI booth and Beagle presentation
 * all over the world 2009: TI Technology Days 2009. TI Technology Day Dallas, Tex. on June 16 will held a BeagleBoard users group meeting (see section Availability).
 * until 31st July 2009: BeagleBoard Design Contest INDIA Edition (blog entry)
 * 22.- 23.08.2009, Sankt Augustin, Germany: FrOSCon 2009 (call for papers)
 * ongoing 2009: Beagle Sponsored Project Program - add a cool project and get a free BeagleBoard to realize it!

=Hardware=

The Beagle Board is a low-cost, fan-less single-board computer based on TI's OMAP3 device family, with all of the expandability of today's desktop machines, but without the bulk, expense, or noise (from beagleboard.org). It uses a TI OMAP3530 processor (ARM Cortex-A8 superscalar core ~600MHz paired with a TMS320C64x+ DSP ~430MHz and an Imagination SGX 2D/3D graphics processor). See OMAP3530 features for more processor features. Price is USD 149. The design goal was to make it as simple and cheap as possible, e.g. not having a LCD added, but letting you connect all add-ons available as cheap external components. See What is Beagle? and LinuxDevices article for more details.

The videos Beagle Board Beginnings and Beagle Board 3D, Angstrom, and Ubuntu give you a good intro about what BeagleBoard is about and it's capabilities.

Components

 * Board size: 3" x 3" (about 76.2 x 76.2 mm)
 * Weight: ~37g
 * Currently 6 layer PCB; target: 4 layer

Bottom of rev B:



See jadonk's photostream for some more detailed BeagleBoard pictures.

Manual
See BeagleBoard HW Reference Manual (rev. B7.2).

Schematic
Schematic of BeagleBoard Rev. B7 is available as part of BeagleBoard HW Reference Manual (rev. B7.2), from BeagleBoard.org design page or in PDF format. Please make sure that you read, understand and agree Jason's mail before using this.

Layout
Layout of BeagleBoard Rev. B7 is available as part of BeagleBoard HW Reference Manual (rev. B7.2) or from BeagleBoard.org design page. Please make sure that you read, understand and agree Jason's mail before using this.

Errata

 * 1) Boards revision A only: The DC power jack pinout is incorrect on the PCB layout. DC_5V and GND are switched on PCB layout. Normally, the power jack has DC_5V on the center pin and GND on the sleeve (see Figure 20 of Beagle HW manual). But on revision Ax boards the PCB layout has GND on center and DC_5V on sleeve. For this reason it is currently removed. It will be back on the Rev B board. Workaround is to remove wire connecting the two power pins on revision Ax boards and use external power supply with switched connector (do not connect anything to the “?” terminal. USB power will be permanently disabled and the board can only be powered from the 5V.) See Koen's Beagleboard powermod picture with short descriptions, too.
 * 2) Boards revision < A5 only: There is excess voltage drop across R6 which is used to measure the current consumption on the board. This needs to be a .1 ohm instead of a 1 ohm resistor (SMD 0805). All revision A5 boards have been updated to .1. You can also just solder in a jumper to J2 bypassing the current read point. This issue can cause issues with the USB host port as the voltage supplied to that port can be too low.
 * 3) Boards revision A only: User LEDs 0 and 1 are shorted on the layout preventing them from being controlled individually. You need to control both GPIO_149 and GPIO_150 to turn on or off both LEDs. This is fixed in the Rev B boards.
 * 4) Boards revision < A5 only: There is an issue where on some boards the 1.8V has excessive noise on it. This is the result of two incorrect parts L1 and L3 being installed on the board. The inductors that were initially installed in the switchers are 100uH and need to be 1uH. This change will require that the board be returned for update. To check for correct parts, have a look to bottom of BeagleBoard. L1 - L3 are the larger parts there. They all have to be labeled with "102" (== 1uH). If any of these three inductors are labeled with "104" (== 100uH) they are wrong and have to be exchanged.
 * 5) Boards revision A and B: USB HOST (EHCI) failures. See issue 15 and USB host test reproduce. This is a hardware defect. Most probably Rev. B board does not have the EHCI USB connector mounted. Workaround: Use OTG port with something like mini A to USB A adapter instead.
 * 6) Boards revision A and < B4: Plugging in a USB OTG cable will prevent Beagle from booting (with git kernel), see issue #19, too. This is due to missing filtering capacitor at USB OTG VBUS. When the kernel driver detects that a USB OTG cable is inserted it enables the charge pump to generate VBUS. With no filtering VBUS looks like any switching regulator output with no filtering -- a huge voltage spike when the switch is on, followed by a rapid decay to a low voltage until the next switch on period. The capacitor is there to store energy between the output switch ON and OFF time, the feedback loop in the regulator does sample the cap voltage. Fix is to piggy-back solder a 0603 2.2uF ceramic capacitor to D3, see VBUS modification D3 picture. Revision B4 boards and newer have this fix applied. Thanks to Steve for debugging this!
 * 7) Boards revision A and < B5: There is some issue with 32kHz clock depending on system configuration used to clock some OMAP3 peripherals. From this e.g. GPIOs, GPTIMERs, and USB on Beagle might be affected. See Issue 22. Symptom from this is that after booting Linux kernel serial console hangs after some time and no serial input/output is possible any more. There is one software workaround and one hardware fix for this: (A) Software workaround: Don't use 32kHz timer to clock Linux, instead use MPU timer. (B) Hardware workaround: Remove capacitor C70, which improves the 32kHz clock quality and avoids hang-up. Note: Revision A boards have capacitor C70 at the same location as rev. B boards. Note: Board revision >= B5 removes capacitor C70.
 * 8) Random boards, quite rare, revision < B6: Some random boards and quite rare, show directly after purchasing broken serial communication from host PC to BeagleBoard. Symptom is that you get a new board, get serial output from BeagleBoard in terminal program, but can't type anything at U-Boot prompt (Note: Don't mix this with errata #7. With errata #7 you are able to use U-Boot normally, but Linux prompt input stops after some time). Most users don't have this issue, though. So, first double check your serial configuration (FAQ1, FAQ2 and FAQ3). Only if you are really, really sure that anything with your serial connection is fine, consider sending the board back doing a RMA request. This issue was resolved on revision B6 and later boards.

For additional (software) issues and enhancement requests see Beagle board open point list & issue tracker, too.

Note: BeagleBoard revision B6 uses different package for U9/U11.

Clocking
Some notes about (ARM processor) clock rates at BeagleBoard:


 * ARM Cortex-A8 processor is currently clocked at 500MHz
 * 500MHz is the default used because it is a balance of performance and longevity
 * For OMAP35x 600MHz is max recommended
 * At 600MHz OMAP35x is considered to be 'overdrive' and it does not have the same life expectancy
 * Higher than 600MHz is out of spec and no guarantee it will work at all (or not damage itself)
 * Also keep in mind that if you go higher you probably want to increase the core voltage. Some of this is mentioned in table 3-3 of the OMAP3530 data sheet. Some numbers:


 * For some OMAP3 clock, voltage and power management discussion see OMAP3 power management white paper, too.
 * The OMAP3 chip on the Beagle lacks the efuses needed for using the SmartReflex technology, see.
 * There is a thermal monitor in the core, you could use to scale frequency up and down

See Mans' hack to configure clock in U-Boot (V1) to 600MHz.

Power management

 * Latest Linux kernel power management development for TI OMAP SoCs is maintained in Kevin's linux-omap-pm git tree
 * Russ' Beagle HW modifications resulted in 8mW sleep for Beagle Board

Without PM kernel, the Beagle consumes ~1.5 watts idle, however it also uses the same amount under load (see bottom of that page).

DLP Pico projector
Texas Instruments is developing a Pico Video Projector Kit (PVPK) as a peripheral for the Beagle Board. The stand alone pico projector will support VGA resolution (640 x 480), RGB 888 input through a DVI interface. The physical connector on the projector will be HDMI. See mailing list and Beagle Running Angstrom (VGA) on DLP Pico Projector for more details.

It is available from DigiKey for $349.

See article from Make, too.

DigiKey videos part 1, part 2 and part 3.

Interfacing to Raw LCD Panels
Currently on Rev A / B boards there is no direct access to the LCD lines before they enter the DVI framer. The REV C2 provides access to these lines. Several projects to interface an LCD to the beagleboard exist:


 * interfacing to Raw LCD Panels article
 * hdmi to parallel workaround method
 * dvi2par cheap diy HDMI to parallel converter

=Availability=

BeagleBoards, currently Rev. C2 boards, are available from Digi-Key with part number 296-23428-ND.

Note: For non-US free shipping orders:


 * Click the US flag on the top right corner of Digi-Key BeagleBoard page to come to the international page
 * Select Order Online for your country
 * Add quantity 1 and part number 296-23428-ND
 * Click Add to order

When ordering over 65 EUR / GBP 50 product (BeagleBoard is above), for Europe the price depends on the actual dollar to EUR/GBP rate. On nov 9, 2008 the price was EUR 124 with free shipping.

Note: Some users report that they got some questions from DigiKey to be answered before board shipping is done.

Note: While you get free shipping, most probably you have to pay tax e.g. ordering from Europe. Users report that they had to pay EUR ~34 - 44 VAT + importing taxes (depending on european country), resulting in EUR 137 - 147 ordering from Europe.

Note: For European users, EBV Elektronik sells its own blue version of the board for 179 EUR, which includes all useful accessories (DVI cable, serial cable, USB 2.0 Ethernet, USB hub, 2 GB MMC, power supply, Linux BSP).

Note: German (Europe) users can order from a German shop, too. For higher price, though. Embedded Projects Shop sells BeagleBoard for EUR 199.00 + shipping.

See below for hardware differences of the revisions. There are no software differences.

Revision A
There are some limited early revision Ax prototypes out there used by some hackers hanging around at #beagle channel on irc.freenode.net. See errata for limitations.

Revision B
Revision B is same as revision A, except Still has USB HOST (EHCI) failures. USB HOST (EHCI) connector isn't mounted.
 * fix for shorted LEDs 0/1
 * fix for wrong power jack pinout
 * revision B6 uses different package for U9/U11

There are 4 revisions of the B board in the field: B4, B5, B6 and B7.

The most notable difference is the use of the ES3.0 silicon in B6 and B7, other changes are not relevant to software developers.

Revision C2
Revision C2 is same as revision B7 except:
 * USB HOST (EHCI) is operational on revision C2, with standard USB A female connector.
 * Add interface for raw LCDs (mockup)
 * It uses updated OMAP3 revision. BeagleBoard revisions B4+B5 uses OMAP3 ES 2.1 (engineering sample), while BeagleBoard revision C2 uses ES 3.0. OMAP3 ES 3.0 fixes minor issues:
 * updated ARM Cortex A8 silicon (r1p3) fixing a very rare NEON issue that has not been seen in real code
 * Power measurement feature
 * Uses TPS65950 OMAP power controller instead of TWL4030
 * Three additional PWM signals on the expansion connector added as pin mux options to existing pins (message)
 * Revision detection (to be able to identify C2 board from older boards by software, e.g. for different pin mux)
 * 256MB RAM (message) (and still 256MB NAND like rev B)

Note: Revision C2 is the first production version, and all orders from from Digi-Key are shipped as Rev C2.

Revision C3
As revision C2 boards are sold out, revision C3 will ship now.

Revision C3 is same as revision C2 except:
 * Optional RTC VL1220 series backup battery
 * Mounting holes conected to ground
 * Slightly improved S-Video

EBVBeagle
EBV build and sell their own BeagleBoard called EBVBeagle, see e.g.. It is actually a BeagleBoard revision C2 with green PCB boxed with some useful accessories. It comes as a quite complete starter kit with AC adapter, USB to Ethernet adapter, MMC card, USB hub and some cables. More information in official press release.

Mini Board
ICETEK-OMAP3530-Mini is a chinese BeagleBoard clone.

DevKit 8000
DevKit8000 is a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard).

IGEPv2
IGEPv2 Platform is a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.

BeagleBoard-based products

 * Always Innovating Touch Book, see

Beagle cases
Some nice cases for your BeagleBoard are available from Special Computing. See SketchUp 3D model if interested in 3D models from Beagle, too.

=Adapters=

For quite detailed information about all BeagleBoard peripherals see BeagleBoard HW Reference Manual (rev. B6).

See BeagleBoard peripherals and adapters page for useful add ons for Beagle Board.

Expansion boards

 * TinCanTools is in the process of developing an Expansion-Prototype Board for the BeagleBoard, comments and suggestions are welcome. [[Media:bb-expansion.pdf|Schematic]].
 * HY Research has some expansion board basics and example.
 * Beaglebot uses a custom extension board.
 * Leopard Board, a Beagle buddy web camera
 * There is also a VGA DB15 adapter board under development for the Rev C2 board. It should be availble through a yet to be annnounced outlet.

JTAG
Depending on your JTAG tool, you'd need a 14-pin to 20-pin adapter to use an ARM debugger. The 14-pin TI JTAG connector is used on BeagleBoard and is supported by a large number of JTAG emulation products. See BeagleBoardJTAG for more information.

RS232
The pinout on the beagle board is "AT/Everex" or "IDC10". You can buy IDC10 to DB9M adapters in many places as they are commonly used for old PCs. Depending on your local configuration, you may need a 9-Pin NullModem cable to connect BeagleBoard to serial port of your PC. From TinCanTools there is a RS-232 DB-9 adapter and [[media:flyswatter-ti-uart.pdf|adapter schematic]] available.

USB
There are two USB ports on the BeagleBoard, one with an EHCI controller and another with an OTG controller. As of Rev B4, the usb EHCI has been removed because of a hardware defect. Rev C will include USB EHCI working properly.

EHCI
The HS (HighSpeed) USB ECHI controller on OMAP3 on BeagleBoard supports high-speed only. This simplifies the logic on the device. FS/LS (FullSpeed/LowSpeed) devices, such as keyboards and mice, require going through a high-speed USB 2.0 hub.

According to the BeagleBoard System Reference Manual Rev C2, the EHCI port can source 5V at 500mA which is enough to power a hub and several low-power devices. However, this is only true if the BeagleBoard is powered through its power jack from a well-regulated 5V external power supply. If the BeagleBoard is powered through the OTG port, the EHCI port sources an "extremely limited" ampount of power (probably 100mA or so) so you'll need a "self-powered" USB 2.0 hub with its own external power supply. [Reference: Sections 5.6 and 7.2 of the BBSRM Rev C2.2.]

OTG
The HS USB OTG (OnTheGo) controller on OMAP3 on the BeagleBoard does have support for all the USB 2.0 speeds (LS/FS/HS) and can act as either a host or a gadget/device. The HS USB OTG port is used as the default power input for the BeagleBoard. It is possible to boot the BeagleBoard using this USB port.

When using the OTG port in host mode, you must power the BeagleBoard using the +5V power jack. If you connect a USB hub, you'll probably also need external power for the USB hub as well, because according to the Hardware Reference manual the BeagleBoard OTG port only sources 100 mA. This is enough to drive a single low-power device, but probably won't work with multiple devices.

The Linux kernel needs to know you want to use the OTG port in host mode. I believe OTG ports are supposed to figure this out for themselves using the OTG Host Negotiation Protocol, but for now the Linux kernel may need some help. Specifically, Pin 4 (ID) of the OTG connector needs to be shorted to Pin 5 (GND) by using a 5-pin USB Mini-A plug which shorts these pins together in the plug. A 5-pin USB Mini-B plug leaves Pin 4 floating. Unfortunately, most USB Mini plugs are unmarked as to whether they are "A" or "B".

You can find "mini A" adapters that have Pin 4 shorted and offer out a full-sized USB A Female jack here. The Rev C BeagleBoard has a pair of pads labeled J6 on the back of the board under the OTG connector. Shorting these pads together with a wire or solder blob connects pins 4 and 5. See Figure 20 in the BeagleBoard System Reference Manual Rev C2.2.

DVI
DVI-D connection on BeagleBoard uses a HDMI connector:

''HDMI is backward-compatible with the single-link Digital Visual Interface carrying digital video (DVI-D or DVI-I, but not DVI-A) used on modern computer monitors and graphics cards. This means that a DVI-D source can drive a HDMI monitor, or vice versa, by means of a suitable adapter or cable, but the audio and remote control features of HDMI will not be available.''

BeagleBoard can be connected to a DVI monitor using HDMI female to DVI male cable.

=BootRom=

OMAP3 on BeagleBoard contains a BootRom. With this, BeagleBoard can boot without any code in permanent storage (NAND) or from peripherals. This is useful for first board bring up or if your BeagleBoard is bricked. For more information about BootRom booting see SPRUFD6.

User button
With user button on BeagleBoard you can configure boot order. Depending on this button, the order used to scan boot devices is changed. The boot order is (the first is the default boot source):


 * User button not pressed: NAND -> USB -> UART -> MMC
 * User button is pressed: USB -> UART -> MMC -> NAND

Technically speaking, the user button configures pin SYS.BOOT[5]. See SPRUFD6 for more details.

Serial and USB boot
Historically, using OMAP3's boot ROM for serial and USB boot, there are several tools around. The newest are Nishanth' OMAP U-Boot Utils, while there are still some older tools for serial boot and USB boot. It is also possible the access the u-boot env from linux.

OMAP U-Boot Utils
Nishanth' OMAP U-Boot Utils provide


 * pserial - OMAP specific utility which downloads a file in response to ASIC ID over serial port.
 * pusb - OMAP specific utility which downloads a file in response to ASIC ID over USB connection.
 * ucmd - Send a command to U-Boot and wait till a specific match appears.
 * ''ukermit - Download a file from host without using kermit to U-Boot.

See Nishanth' blog and announce mail, too.

Serial boot
Besides Nishanth' OMAP U-Boot Utils, to boot from USB or UART, you need a PC tool which talks with OMAP BootRom and speaks the correct protocol to download ARM target code to BeagleBoard. Currently there are two older (experimental) tools for UART boot:


 * PC Serial Boot perl script
 * Linux C utility (not working yet with below target code)

See USB and serial download target code for some example target code to be downloaded to OMAP3 on BeagleBoard.

USB boot
Besides Nishanth' OMAP U-Boot Utils, for USB boot, there is currently one (experimental) tool to boot BeagleBoard over USB:


 * Linux C utility

See USB and serial download target code for some example target code to be downloaded to OMAP3 on BeagleBoard.

See USB recovery section how to use USB boot for board recovery.

NAND boot
See NAND boot article.

MMC/SD boot
Currently, boot the BeagleBoard with MMC/SD is the only working way for first board bring up.

MMC/SD formatting
As described in above MMC/SD boot description, you have to create a bootable partition on MMC/SD Card. This can be done using e.g. Windows or Linux tools.

Windows

See HP USB Disk Storage Format Tool 2.0.6 description on boot the BeagleBoard with MMC/SD page.

Linux

Please see OMAP3 MMC Boot Format.

Dual partition card
You can create a dual-partition card, booting from a FAT partition that can be read by the OMAP3 ROM bootloader and Windows, then utilizing an ext2 partition for the Linux root file system.

To mount second ext2 partition as root file system (e.g. containing contents of rd-ext2.bin) use kernel boot arguments (e.g. in uboot using setenv bootargs):

console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait

U-Boot booting
If your MMC/SD card formatting is correct and you put MLO, u-boot.bin and uImage on the card you should get a u-boot prompt after booting beagle board. E.g. (output from terminal program with 115200 8N1):

...40T.........XH.H.U�..Instruments X-Loader 1.41 Starting on with MMC Reading boot sector 717948 Bytes Read from MMC Starting OS Bootloader from MMC... U-Boot 1.1.4 (Apr 2 2008 - 13:42:13) OMAP3430-GP rev 2, CPU-OPP2 L3-133MHz TI 3430Beagle 2.0 Version + mDDR (Boot ONND) DRAM: 128 MB Flash:  0 kB NAND:256 MiB In:   serial Out:  serial Err:  serial Audio Tone on Speakers ... complete OMAP3 beagleboard.org #

Using this u-boot prompt, you now can start kernel uImage stored on MMC card manually:

OMAP3 beagleboard.org # mmcinit OMAP3 beagleboard.org # fatload mmc 0:1 0x80000000 uimage OMAP3 beagleboard.org # bootm

If you like to make that happen every boot:

OMAP3 beagleboard.org # set bootcmd 'mmcinit ; fatload mmc 0:1 0x80000000 uimage ; bootm' ; saveenv

=Code=

Code and binaries for BeagleBoard are available at various places.

Binaries
BeagleBoard pre-built binaries and source code can be found at Beagle source code and downloads page. These are the locations where "official" TI code is available. Please note that this code is mainly for reference and testing. More up to date binaries and code is available by community. Community took (parts) of TI reference code, improves and updates it.

Actually, Koen's prebuilt Beagleboard demo images are up to date binaries including e17 as window manager, the abiword word processor, the gnumeric spreadsheet application, a NEON accelerated mplayer and the popular NEON accelerated omapfbplay which gives you fullscreen 720p decoding. The www.angstrom-distribution.org/demo/beagleboard directory should contain all the files you need:


 * u-boot.bin
 * MLO
 * uImage
 * rootfs

See the beagle wiki on how to setup your SD card to use all this goodness.

Source
Besides above binary and source images (TI's and communities one), for various parts of Beagle software stack there are community supported git repositories available.

X-Loader
Steve did some work to consolidate and update X-Loader from various sources and put it in a X-Loader git repository. Get it by

git clone git://gitorious.org/x-load-omap3/mainline.git xloader cd xloader/

Build:

make distclean make omap3530beagle_config make

Result will be a ~20k sized x-load.bin in main directory.

U-Boot
Mainline U-Boot has good support for BeagleBoard. Get it by:

git clone git://git.denx.de/u-boot.git u-boot-main cd u-boot-main git checkout --track -b omap3 origin/master

Build (assuming Code Sourcery GCC 2007q3):

make CROSS_COMPILE=arm-none-linux-gnueabi- mrproper make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config make CROSS_COMPILE=arm-none-linux-gnueabi-

Result will be a ~160k sized u-boot.bin in main directory.

Note: Due to (patch and binary) size, BeagleBoard splash screen was removed from upstream version. If you want it back, use U-Boot v1 BeagleBoard splash screen patch.

Note: For experimental U-Boot patches not ready for mainline yet, Steve's Beagle U-Boot git repository is used to test them. Get it by:

git clone git://gitorious.org/u-boot-omap3/mainline.git u-boot-omap3 cd u-boot-omap3 git checkout --track -b omap3-dev origin/omap3-dev

Linux kernel
Git repository of OMAP Linux kernel contains Beagle support. Get it by:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6 cd linux-omap-2.6

Build:

make distclean make omap3_beagle_defconfig make menuconfig # only needed if you want to change the default configuration make uImage

The result will be a uImage in arch/arm/boot/ directory.

If you use the OE toolchain and want to build outside of the OE tree you should do ARCH=arm PATH=~/oe/tmp/cross/armv7a/bin:~oe/tmp/staging/i686-linux/usr/bin:$PATH # add cross tools to your path make CROSS_COMPILE=arm-angstrom-linux-gnueabi- distclean make CROSS_COMPILE=arm-angstrom-linux-gnueabi- omap3_beagle_defconfig make CROSS_COMPILE=arm-angstrom-linux-gnueabi- menuconfig # only needed if you want to change the default configuration make CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage Note: the staging dir in the path is for mkimage. If you've build a kernel before with oe, the program should be there

Experimental kernel patches and hacks
Some beagle developers maintain their own kernel experimental patches and hacks not ready for upstream:


 * Koen's collection of kernels patches for OE and the list of relevant patches
 * Steve's kernel tree, a clone of main OMAP git with additional patches, mainly beagle audio (ASOC) related.
 * Mans' kernel tree, a clone of main OMAP git with additional patches, mainly display & framebuffer related.
 * Tomi's kernel tree, a clone of main OMAP git with display sub-system patches, replacing the entire display driver with one that is the likely direction moving forward.

=Compiler=

TI OMAP3530 processor on BeagleBoard contains an ARM Cortex-A8 general purpose processor and a TMS320C64x+ DSP.

ARM
There is broad compiler support including gcc - please see ARM Compilers

C64x+ DSP
A free C64x DSP compiler is available as Linux hosted C6x Code Generation Tools (TMS320C6000 C/C++ CODE GENERATION TOOLS 6.1.3 July 2008).

Note: my.TI account required. You may create an account here

Note: Old c6000 Linux compiler available on TI FTP site. Does NOT support c64x+ core in OMAP3 devices. Not recommended.

You can also utilize the full-CCS free evaluation tools for 120 days, but they currently require purchase to upgrade to service release 9 to support full JTAG debugging with supported JTAG hardware.

See BeagleBoard DSP howto for information about how to use the DSP.

=Cortex A8 ARM features =

ARM Cortex-A8 in OMAP3 is a high performance dual-issue applications processor which reaches a performance of 2.0 DMIPS/MHz (compared to ARM11 at 1.2 DMIPS/MHz). It is ARM v7 architecture, which is fully backwards compatible with application code for previous ARM processors.

It includes a floating point unit (ARM VFPv3 architecture) and the ARM NEON SIMD instruction set.

ARM NEON
NEON is a 64/128-bit wide SIMD vector extension for ARM, which has been architected to be an efficient C compiler target as well as being used from assembly language. It has 32x 64-bit registers (with a dual view as 16x 128-bit registers) which can hold the following datatypes:
 * 64-bit signed/unsigned
 * 32-bit signed/unsigned
 * 32-bit single precision floating point
 * 16-bit signed/unsigned
 * 8-bit signed/unsigned

The key advantage of NEON is very high performance vector math processing, whilst being easy to program. It is the same thread of control as the ARM (but different instructions), and is supported by the same tools, debuggers and operating systems.

The NEON instruction set is documented in ARM's RealView Compilation Tools Assembler Guide.

For NEON optimized libraries see ARM Releases AAC, MP3, MPEG-4, H.264 and FFT OpenMAX DL Libraries, Highly Optimized for Cortex-A8/NEON and ARM11 Processors. Note: Read the EULA.

NEON is currently used by
 * ffmpeg - libavcodec used by mplayer, omapfbplay, and many other linux applications
 * libpixman - used by X.org and Mozilla & Webkit browsers to render text and graphics
 * Bluez - official Linux Bluetooth stack

ARM Cortex Floating Point
There are two types of instructions in the ARM v7 ISA that handle floating point:

1) VFPv3 Floating point instruction set (used for single/double precision scalar operations). These is used by gcc for C floating point operations on 'float' and 'double'

2) NEON NEON vectorized single precision operations (2 values in a D-register, or 4 values in a Q-register) These can be use by gcc when -ftree-vectorize is enabled and -mfpu=neon is specified, and the code can be vectorized.  In other cases the VFPv3 scalar ops will be used.

ARM Cortex-A processors have separate floating point pipelines that handle these different instructions.

On Cortex-A8, the designers' focus was on the NEON unit performance which can sustain 1 cycle/instr throughput (processing 2 single-precision values at once). The scalar VFPv3 FPU cannot achieve this level of performance (cycle timings are in the Cortex-A8 TRM download), but it is still a lot better than doing floating point using integer instructions.

If you need the highest performance floating point on Cortex-A8, you need to use single precision and ensure the code uses the NEON vectorized instructions:
 * use gcc with -ftree-vectorize (possibly modify source code to make it vector friendly)
 * use NEON instrinsics (#include , float32x2_t datatype and vmul_f32 etc)
 * use NEON asm directly

Keep in mind that mixing NEON and ARM load/stores can sometimes stall significantly. See this link for more info.

On Cortex-A9, there is a much higher performance floating point unit which can sustain 1 cycle/instr throughput, with low result latencies.

=Board recovery=

If you played e.g. with the contents of the NAND, it might happen that the Board doesn't boot any more (without pressing user button) due to broken NAND content. See BeagleBoard recovery article how to fix this.

=Development environments=

Instead of just using compiler + editor, you can use complete image create "development tool chains" which integrate compiler, build system, packaging tools etc. in one tool chain.

OpenEmbedded
For OpenEmbedded (OE), there are some hints how to start with OE for BeagleBoard. See BeagleBoard and OpenEmbedded Git and OpenEmbedded getting started as well.

In the OE getting started document, for BeagleBoard replace MACHINE = "om-gta01" by MACHINE = "beagleboard". After confirming bitbake nano works, try bitbake console-image. The first time you run bitbake OE will download all the needed source and build the tool chain. This will take several hours. After all went fine, the output is in ${OE_ROOT}/tmp/deploy/glibc/images/beagleboard.

Note: Koen has some BeagleBoard source and binary images built with OE. There, Angstrom-console* images don't include an X server, you can still use a e.g. DVI-D screen with console, but you won't have a GUI. Angstrom-x11* images contain an X server.

One very important note:
It's important to have an X-Loader on your Beagleboard that uses the uImage on the SD Card that goes with Angstrom. The B6 Beagleboards do not appear to come with such an X-Loader. So you likely will have to upgrade the X-Loader. Here's what to do: * Make an SD Card with the Angstrom Demo files. See the Beagleboard Wiki Page for more info on making the SD Card. * Put the SD Card in the Beagle, and boot up to the U-Boot Prompt. * Do the first six instructions in the Flashing Commands with U-Boot section. * Reboot the Beagle to see that the new X-Loader is properly loaded.

This will update the X-Loader to a newer version that will automatically load uImage from the SD Card when present -- rather than always using the uImage in the Beagleboard NAND.

Eclipse
The Eclipse C Development Tools Project provides a "fully functional C and C++ Integrated Development Environment (IDE) for the Eclipse platform". The Eclipse DSDP Target Managment Project provides a "Remote System Explorer" (RSE) plugin that simplifies downloading files to the BeagleBoard and editing files on the BeagleBoard within the Eclipse IDE. A Linux Target Agent is available as part of the Target Communications Framework (TCF) component. Info on how RSE is used for e.g. Gumstix development is described in this post.

Android
Android platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the Android SDK. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.

There are several resources for Android on OMAP (Beagle) available:

OMAPZOOM

You can find Android port for OMAP ZOOM architecture on OMAPZoom.org's wiki page on Android.

EMBINUX

Beagleboard.org's Android project page announced, the successful porting of Android on Beagle board by EMBINUX&trade; Team. The source code and binaries are available for download and review.

Detailed instructions, for porting Android on Beagle Board, are available here. Current release supports input devices (keyboard/mouse), network and sound.

You can watch Android booting on Beagle Board.

Android on OMAP wiki

Wiki page for Andorid on OMAP can be found here

Mamona
Mamona is an embedded Linux distribution for ARM EABI. The main goal of the Mamona Project is to offer a completely open source alternative/experimental platform for Maemo using only free and open source components. Mamona 0.2 supports OMAP3430 Software Development Platform (SDP), so you can also use it at Beagle (OMAP3530), too. Work is being done to officially support Beagle.

Debian ARM
See Debian (ARM) installation guide how to install Debian (ARM) on BeagleBoard.

Handhelds Mojo ARM
See Handhelds Mojo (ARM) (formerly known as Ubuntu (ARM)) installation guide how to install Handhelds Mojo (ARM) port of Ubuntu on BeagleBoard.

=Software hints=

This section collects hints, tips & tricks for various software components running on beagle.

QEMU
QEMU supports OMAP3 being able to boot a BeagleBoard Linux kernel.

Linux hints
See BeagleBoard Google wiki Linux hints page (for Linux WTBU (Wireless TI Business Unit) kernel 2.6.22). Currently featuring:


 * Switching video output between DVI-D and S-Video
 * Disabling framebuffer blanking
 * Listing USB devices

lmbench
Avik posted a detailed step-by-step procedure to run lmbench on Beagle.

Mediaplayer (FFmpeg)
There is a thread how to get a mediaplayer with NEON optimization (FFmpeg) to run on Beagle. Includes compiler hints and patches.

Java
When using the OpenEmbedded-based Angstrom image you have the following options of Java support:
 * JamVM + GNU Classpath (small vm, fast interpreter, J2SE-like)
 * Cacao + GNU Classpath (JIT compiler, J2SE-like)
 * PhoneME Advanced Foundation (JIT compiler, CDC)

Java support in OpenEmbedded/Angstrom (details) is provided voluntarily through Jalimo.

See a post at mailing list, too.

OpenEmbedded users can add the Jalimo Subversion repository as an overlay (instructions are in the repository). This will allow them to build OpenJDK packages. Inclusion of these recipes in mainline OpenEmbedded is planned but still ongoing.

The recipes offer the following functionality:


 * OpenJDK + Hotspot (Zero port) (all J2SE functionality, including JVMTI, interpreted only)
 * OpenJDK + Cacaco (all J2SE library features, missing JVMTI, decent JIT compiler)
 * OpenJDK + Hotspot (Shark port) (not working yet)

Some guy from ARM Ltd. is working on interpreter optimization in Zero for ARM.

People interested in getting this stuff working better should contact people on:
 * Jalimo Mailinglist
 * Icedtea Mailinglist

You should also check out IcedTea's FAQ.

=Graphics accelerator=

OMAP3530 used on BeagleBoard contains a graphics accelerator (SGX) based on the SGX core from Imagination Technologies. PowerVR SGX530 is a new generation of programmable PowerVR graphics and video IP cores. Only the kernel portions of Linux drivers will be open source. The PowerVR folks will provide binary user-space libraries. Using the EMail contact at TIs Mobile Gaming Developers page there are Linux v2.6 OMAP3430 SDKs for OMAP3 Zoom and SDP supporting OpenGL ES v2.0, OpenGL ES v1.1 and OpenVG 1.0 available.

Tutorial:
 * How to use SGX with Angstrom in OE

Some videos:


 * SGX on Beagle working with Linux 2.6.27
 * OpenGL ES 2.0 shader effects on OMAP3
 * 3D User Interface on OMAP3 Platform
 * 3D Mapping using OpenGL ES 2.0 on OMAP3 Platform
 * Video blending in hardware

=Beginners guide=

You just got your new BeagleBoard, and now? See beginners guides.

=FAQ=

For BeagleBoard frequently asked questions (FAQ) see community FAQ and "official" BeagleBoard.org FAQ.

=Links=

Home page
beagleboard.org (beagle board home)
 * Using Google you can search beagleboard.org (including IRC logs) using site:beagleboard.org 

Manuals and resources

 * BeagleBoard HW Reference Manual (rev. C2)
 * BeagleBoard HW Reference Manual (rev. B7)
 * BeagleBoard HW Reference Manual (rev. B6)
 * BeagleBoard HW Reference Manual (rev. B5)
 * BeagleBoard HW Reference Manual (rev. B4)
 * BeagleBoard HW Reference Manual (rev. A5)
 * OMAP3530 processor description and manuals
 * Beagle at code.google.com
 * OMAP3530/25 CBB BSDL Model
 * Micron's multi chip packages (MCPs) for Beagle Board
 * Beagleboard resources page with hw docs
 * Some performance comparison of BeagleBoard Rev. B with some other ARM/PC systems.
 * OMAP3 pinmux setup

Contact and communication

 * Beagle board discussion list
 * Beagle board open point list & issue tracker
 * Beagle board blog
 * Beagle board RSS feed
 * Chat:
 * Beagle Board chat
 * IRC: #beagle channel on irc.freenode.net
 * IRC archive
 * Beagles Ride, a site about building a community around the BeagleBoard focused on in vehicle applications

TI resources

 * TI open source page
 * TI E2E (Engineer-to-Engineer) Community
 * DSP Bridge driver for OMAP3 platform
 * ARMv7 Oprofile support
 * OMAP34xx Wireless Technical Reference Manual (swpu114g.pdf, 47 MB)
 * Koen's (OpenEmbeded) BeagleBoard source and binaries
 * Verified peripherals for BeagleBoard
 * OMAP3430 Linux Power Management presentation

Articles

 * LinuxDevices article about Beagle
 * LinuxDevices article about Digi-Key launch
 * LinuxDevices article about Beagle Rev C, Beagle MID from HY Research, Touch Book and Sponsored Projects Contest

Books

 * OMAP and DaVinci Software for Dummies

Past Beagle events

 * TIDC, February 26-28, 2008: Slides from TI developer conference (TIDC) open source session, covering also beagle board
 * LUG RADIO Live USA 2008, April 12-13, 2008: TI/Beagle Presentation and video
 * LinuxTag, May 28-31, 2008: picture 1 and picture 2
 * LugRadio Live UK 2008, July 19 - July 20, 2008: Koen's pictures showing e.g. Big Buck BUNNY playing at Beagle. Interview with Linux Outlaws (52:06) and the video
 * OSScamp Bengaluru Mobile 2008, July 19, 2008
 * LinuxWorld Conference & Expo, August 4 - August 7, 2008: pictures with living beagle and from Linux Journal's photostream
 * BeagleBoard.org event at Jillian's during LinuxWorldExpo, August 5, 2008, 5:30-7:30 pm
 * BarCamp Houston 3, August 9, 2008, 9:00 A.M.: pictures
 * NIT Suratkal, India IEEE SP Connect 2, August 30, 20008
 * BarCamp Bangalore, India, September 13, 2008
 * IBC 2008, September 11 - September 16, 2008: pictures
 * Free Open "Embedded Linux" Training for Students in India, beagleboard.org Trainings in India, September 20, 2008: video, photos and blog
 * Embedded Systems Show 2008, Birmingham, UK, October 1-2, 2008
 * MontaVista Vision 2008 Embedded Linux Developers Conference, San Francisco, California, October 1-3, 2008 : Video and presentation overview, William Mills' presentation, Jason Kridner's presentation
 * ARM Developers' Conference, Santa Clara Convention Center, Santa Clara, Calif., USA, October 7-9, 2008
 * Embedded Systems Conference Boston 2008, Hynes Convention Center, Boston, USA, October 26 - October 30, 2008: Resources
 * BeagleBoard contest #1: Create a cool BeagleBoard application and win a Rev C1! Closed, ran until January 9, 2009
 * OMAP35x training by Silica, January 21, 2009, Cambridge, UK, ARM Holdings Lecture Theatre. RichardB's notes from the seminar
 * BeagleBoard contest #2, unitl February 27, 2009: : Create a cool BeagleBoard application and win a Rev C2!
 * Silica - Free TI - ARM OMAP Workshop, Brussels, Europe, March 31st 2009
 * SILICA's Texas Instruments 2-in-1 Seminar: OMAP & Piccolo, May 13th 2009: Poing (Munich) - Germany

Beagle wiki pages

 * BeagleBoard beginners guides
 * BeagleBoard and OpenEmbedded Git installation guide and OpenEmbedded development
 * Debian on BeagleBoard usage guide
 * Handhelds Mojo (ARM) on BeagleBoard usage guide (formerly known as Ubuntu (ARM))
 * Ubuntu (ARM EABI) distribution at BeagleBoard
 * BeagleBoard recovery about fixing boards not booting any more because of broken NAND content
 * BeagleBoard JTAG and OMAP3530_ICEPICK about JTAG on BeagleBoard
 * BeagleBoard OpenOCD has infos about status and usage of open source JTAG software OpenOCD with Beagle
 * BeagleBoard NAND boot about how to boot BeagleBoard from NAND flash
 * BeagleBoard peripherals and adapters page about useful BeagleBoard add ons.
 * Mount BeagleBoard root file system over NFS via USB
 * BeagleBoard FAQ
 * Sugar on BeagleBoard
 * BeagleBoard DSP howto
 * Interfacing BeagleBoard to Raw LCD
 * BeagleBoard OpenMAX usage
 * BeagleBoard video
 * Using OpenCV computer vision library with BeagleBoard
 * James: Just A Miniature Entertainment System
 * U-boot musb gadget support
 * Japanese translation of this Beagle page
 * BeagleBoard E-Ink Platform Driver
 * Random hacking notes for getting Fedora 10 to kinda work with the BeagleBoard
 * BeagleBoard specific Google Summer of Code 2009 page, GSoC project ideas and GSoc application
 * Poky for BeagleBoard
 * Xenarc USB touchscreen for Beagleboard/OMAP3 EVM
 * BeagleBoard Bug Adapter board
 * BeagleBoard Debian WiFi install info
 * Info about the various Linux DSP systems for OMAP chips
 * BeagleBoard PinMux
 * Beaglebot: build an experimental robotics project with Beagle
 * code.google.com BeagleBoard wiki
 * BeagleBoard contest
 * Wikipedia BeagleBoard page
 * Android port for BeagleBoard: Instructions for porting Android on BeagleBoard
 * BeagleBoard Bangalore User Meet
 * BeagleBoard as USB Mass Storage Device via USB OTG
 * BeagleBoard as solar powered computer
 * Blinking LEDs with the Beagle Board from Make:Online
 * Robert's private Beagle wiki (please don't add anything there, do it here. It will help to avoid scattering. Thanks!)

Beagle photos

 * Beagle board pictures at flickr
 * Beagle board and USRP
 * Modify SDP3430 QUART cable for beagle
 * MythTV on Beagle

Beagle videos

 * Beagle Board Beginnings
 * Beagleboard in the Living Room
 * Beagle Board 3D, Angstrom, and Ubuntu
 * testsprite with beagleboard
 * Beagleboard LED demo
 * LCD2USB attached to a beagleboard
 * Video blending in hardware
 * Beagle Running Angstrom (VGA) on DLP Pico Projector
 * SGX on Beagle working with Linux 2.6.27
 * Not on Beagle OMAP3530: Ubuntu 7.04 on on OMAP3430 SDP
 * Beagle Board booting Android

Beagle manufacturing

 * Beagle Solder Paste Screening
 * Beagle Assembly Inspection
 * Beagle Functional Test
 * Beagle Reflow
 * Beagle Board Assembly at Circuitco

Fun

 * Enjoy BeagleGame

=Other OMAP boards=


 * OMAP1 OMAP5912 (ARM9 + C5x DSP) based OSK board.
 * OMAP3 OMAP3430 based Zoom MDK
 * OMAP3 OMAP3530 based Pandora
 * OMAP3 OMAP3503 based Gumstix Overo
 * OMAP3 OMAP35x based EVM from Mistral and TI (both are the same)
 * OMAP3 OMAP3430 based Software Development Platform (SDP)
 * OMAP3 OMAP3530 based board from Magniel Inc.
 * OMAP3 based Archos 5, ARCHOS 5G and ARCHOS 7
 * OMAP3 OMAP35x based OMAP35x SOM-LV
 * OMAP3 based ICETEK-OMAP3530-Mini, a Chinese BeagleBoard clone, with a FAQ
 * OMAP3 based EBVBeagle, a German BeagleBoard clone
 * OMAP3530 based BSQUARE’s Dev Kit OMAP3530
 * OMAP3530 based OSWALD
 * OMAP3 BeagleBoard-based Touch Book
 * OMAP3530 based Cobra 3530 OMAP3530 module
 * OMAP3 based KwikByte 35XX System Module
 * OMAP3530 based DevKit8000, a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard)
 * OMAP3530 based IGEPv2 Platform, a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.
 * OMAP35x based MMI4 from Ultratronik