BeagleBoard Community

From eLinux.org
Revision as of 10:01, 2 May 2019 by Enthalpy (talk | contribs) (USB boot)
Jump to: navigation, search


This page collects information about BeagleBoard.org's open hardware embedded computer boards based on TI's ARM processors. Most of this material is applicable to the BeagleBoard and BeagleBoard-xM. The BeagleBone and BeagleBone Black from the same company employ a different SoC and are described on the BeagleBone page.

Note that all of CircuitCo's Beagle specific support wiki pages can be found within elinux.org's Beagleboard:Main_Page namespace. This content is only editable by CircuitCo employees.

Contents

Hardware

The BeagleBoard 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 ~600 MHz 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 its capabilities.

Components

Top view of rev B: Top view of rev C:
Bb revb top numbered.jpg Bb revc top numbered.jpg
No. Name Comment
1 OMAP3530 processor + 256 MB NAND

+ 128 MB DDR (rev B)

+ 256 MB DDR (rev C)

PoP: Package-On-Package implementation for Memory Stacking

256 MB NAND/128 MB Mobile DDR SDRAM available from DigiKey

(512MB NAND/256MB Mobile DDR SDRAM available from DigiKey)

Micron's multi chip packages (MCPs) for Beagle Board

2 DVI chip (TFP410)
3 DVI-D Connection via HDMI connector
4 14-pin JTAG 1.8V only!
5 Expansion connector: I2C, I2S, SPI, MMC/SD User must solder desired header into place
6 User button Allows setting boot order.
7 Reset button
8 USB 2.0 EHCI HS Rev A and B: not working, unpopulated

Rev C: populated and working

9 SD/MMC+ SDHC cards are supported
10 RS-232 serial
11 Alternate power normally powered by USB (unmounted on REV Ax boards, see errata)
12 USB 2.0 HS OTG Mini-AB connector. Board can be powered from port.
13 Stereo In
14 Stereo Out
15 S-Video
16 TWL4030 (Rev A thru C2 inc.)

TPS65950 (Rev C3 onwards)

Audio CODEC, USB port, power-on reset and power management. The TWL4030 is pin-compatible with the TPS65950 chip and was used due to the very limited availability of the TPS65950 in early board revisions.
17 LCD only rev C
18 USB power
19 Host PHY
20 32 kHz
21 12 MHz
22 RS-232 XVCR
23 PWR SW
24 VBAT
  • Board size: 3" x 3" (about 76.2 x 76.2 mm)
  • Weight: ~37 g
  • Currently six-layer PCB; target: four layer PCB

Bottom of rev B:

Beagle bottom.jpg

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

Manual

See the links below.

Schematic

Schematic of BeagleBoard Rev. C3 is available as part of the BeagleBoard System Reference Manual. Rev C3 and previous are also available from BeagleBoard.org design page including in PDF format. Please make sure that you read, understand and agree Jason's mail before using this.

Layout

Layout of BeagleBoard Rev. C3 is available as part of BeagleBoard System Reference Manual. Rev C3 and previous layouts are also available from the 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 5 V.) 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.8 V 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 1 uH. 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" (== 100 uH) 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.2 µF 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 a 32 kHz clock depending on system configuration used to clock some OMAP3 peripherals. From this e.g. GPIOs, GPTIMERs, and USB on BeagleBoard might be affected. See Issue 22. The symptom from this is that after booting the Linux kernel, the 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 the 32 kHz timer to clock Linux, instead use the MPU timer. (B) Hardware workaround: Remove capacitor C70, which improves the 32 kHz 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 the 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 the 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 500 MHz
  • 500 MHz is the default used because it is a balance of performance and longevity
  • For OMAP35x 600 MHz is maximum recommended
  • An additional 720 MHz overdrive is supported only on high-speed grade OMAP3530/25 devices as fitted to the BeagleBoard C4
  • At 600 MHz or higher OMAP35x is considered to be 'overdrive' and it does not have the same life expectancy
  • Higher than 600/720 MHz is out of specification 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 tables 3-3, 4-15 and 4-16 of the OMAP3530 data sheet. Some numbers:
ARM DSP core voltage
720 MHz 520 MHz 1.35 V
600 MHz 430 MHz 1.35 V
550 MHz 400 MHz 1.27 V
500 MHz 360 MHz 1.2 V
  • 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 [1].
  • There is a thermal monitor in the core, you could use to scale frequency up and down

To set the CPU clock to 600 MHz, there are two options. Both do not adjust the voltage, so the system may become unstable:

  • The U-Boot command "mw 48004940 0012580c" will temporarily set the CPU clock to 600 MHz (not permanent over reset).
  • To permanently set the CPU clock to 600 MHz, include the above command in the "bootcmd" variable or equivalent script.
  • To set the DSP clock to 430 MHz use "mw 48004040 0x0009ae0c".

Power management

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

Availability

BeagleBoard Rev. C3 boards are available from

BeagleBoard Rev. C4 boards are available from:

Note: For non-US Digi-Key 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, for example, 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 through German shops, too. For higher price, though.

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

  • fix for shorted LEDs 0/1
  • fix for wrong power jack pinout
  • revision B6 uses different package for U9/U11

Still has USB HOST (EHCI) failures. USB HOST (EHCI) connector isn't mounted.

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, for example, for different pin mux)
  • 256 MB RAM (message) (and still 256 MB NAND like rev B)

Note: Revision C2 is the first production version, and all orders 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

Revision C4

Revision C4 boards are the same as Revision C3 except:

  • Processor is 720 MHz capable OMAP3
  • Improved USB Host PHY power rails

Revision C5

Revision C5 boards are the same as Revision C4 except:

  • The memory chip is upgraded to 512 MB NAND

Clones

  • EBV EBVBeagle was a rev C2 board with green PCB boxed with some useful accessories: AC adapter, USB-to-Ethernet adapter, MMC card, USB hub and some cables.
  • ICETEK-OMAP3530-Mini (Mini Board), a Chinese BeagleBoard clone.
  • Embest DevKit8000, a compact development board based on TI OMAP3530.
  • Embest DevKit8500D, a high-performance development board based on TI DM3730.
  • Embest SBC8530, a compact single board computer based on TI DM3730 and features UART, 4 USB Host, USB OTG, Ethernet, Audio, TF, WiFi/Bluetooth, LCD/VGA, DVI-D and S-Video.
  • Tianyeit CIP312, a Chinese clone with WLAN, Bluetooth, dual 10/100M Ethernet Contoller-LAN9221I/MCP2512, CAN, touch screen controller, USB hub, USB host, USB OTG based on the DM3730/OMAP3530. 40x40x3.5 mm package
  • IGEPv2 Platform, a Spanish BeagleBoard clone, with Ethernet, Wi-Fi and Bluetooth
  • SOM3530, a tiny Chinese System-on-Module BeagleBoard clone with Ethernet. 40x40x4 mm

BeagleBoard-based products

I/O Interfaces

This section contains notes on some of the BeagleBoard's I/O interfaces. For detailed information about all integrated interfaces and peripherals see the BeagleBoard System Reference Manual. See the peripherals page for external devices like TI's DLP Pico Projector and compatible USB devices.

RS-232

The 10-pin RS-232 header is useful for debugging the early boot process, and may be used as a traditional serial console in lieu of HDMI.

The pinout on the BeagleBoard is "AT/Everex" or "IDC10". You can buy IDC10 to DB9M adapters in many places as they are commonly used for old PCs, or build one based on this schematic. You may also be able to rip one of those cables out of any old desktop computer, where it's being used to support the serial port. Be careful, though—some of those cables will have that tenth hole filled in so you'd have to snap off the extraneous pin on your BeagleBoard. Keep looking until you find a cable with all 10 holes open.

Depending on your local configuration, you may also need a 9-Pin NullModem cable to connect BeagleBoard to serial port of your PC.

Since many systems no longer come with an actual serial port, you may need to purchase a USB-to-serial converter to connect to your BeagleBoard. Be warned that some of them simply do not work. Many of them are based on the Prolific chip, and under Linux require pl2303 module to be loaded. But even when two converters appear to have exactly the same characteristics as listed in /var/log/messages, one simply may not work. Adapters based on the FTDI chipset are generally more reliable.

USB

There are two USB ports on the BeagleBoard, one with an EHCI (host) controller and another with an OTG (on-the-go, client) controller.

EHCI

Note that prior to Rev C, the EHCI controller did not work properly due to a hardware defect.

The OMAP3 USB ECHI controller on the BeagleBoard only supports high-speed (HS) signaling. This simplifies the logic on the device. FS/LS (full speed/low speed) devices, such as keyboards and mice, must be connected via a high-speed USB 2.0 hub.

According to the BeagleBoard System Reference Manual Rev C2, the EHCI port can source 5 V at 500 mA 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 5 V external power supply. If the BeagleBoard is powered through the OTG port, the EHCI port sources an "extremely limited" ampount of power (probably 100 mA 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.]

Hardware issue on rev B and lower — The EHCI controller did not work properly due to a hardware defect, and was removed in rev B4.

Hardware issue on rev C3 — The EHCI port on some rev C3 boards is unstable and will disconnect hubs/devices. Symptoms are: devices are disconnected from the port and cannot be reconnected without a reboot. It appears the shared 1.8 V rail between the OMAP3530 and the power chip may get noisy. Suggested solution (works on many boards) is adding a 22 µF 0805 package SMT capacitor atop the existing capacitor on C97. If SMT parts are not available, some boards can be repaired by a 22 µF through-hole capacitor across GND and VIO_1V8 on the expansion connector. See [3] for more information.

OTG

The HS USB OTG (OnTheGo) controller on OMAP3 on the BeagleBoard supports 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 +5 V 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. 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.

Since the right cables might be hard to get, you simply can

  • short circuit the two pins encircled in red in the image to the right. You can do this by running a wire between the two pins. That at least allows easier undoing the change. Actually you could even have a small switch or so between 4 and 5.

or

  • use a "mini B" cable (easier to get) and try the soldering of the two pins at the cable's connector. Depending on the cable it should be possible to open the plastic covering of mini-B port with a sharp-edged knife, then solder the two pins together, close the covering again and use some tape. This leaves the BeagleBoard unmodified.
Usb otg.png

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 an 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 an HDMI male to DVI male cable.

The BeagleBoard does not connect the HDMI shell to ground or any other BeagleBoard signal. This is not a problem with high-quality HDMI to DVI cables that connect all the ground wires. However, there are lots of cheap HDMI to HDMI cables that do not connect the ground wires and only use the shell as a combined shield and ground. To use one of these you would need to connect the BeagleBoard's HDMI shell to ground. The BeagleBoard-xM connects the HDMI shell to frame ground, which is in turn connected to system ground through R119. For more information, see this thread: [4].

JTAG

For IC debugging the BeagleBoard sports a 14-pin TI JTAG connector, which is supported by a large number of JTAG emulation products such as OpenOCD. See BeagleBoardJTAG and OMAP3530_ICEPICK for more information.

Expansion Boards

Many have created expansion boards for the BeagleBoard, typically to add peripherals like LCD controllers (via the LCD header, SRM 5.11) or to break out functions of the OMAP3 like GPIO pins, I2C, SPI, and PWM drivers (via the expansion header, SRM 5.19). External hardware is usually necessary to support these functions because BeagleBoard's 1.8 V pins require level-shifting to interface with other devices. Expansion boards may also power the BeagleBoard itself through the expansion header.

The most complete list of expansion boards can be found on the pin mux page, which also documents how different OMAP3 functions may be selected for expansion header pins. The BeagleBoard Expansion Boards category lists more expansion boards.

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 the Initialization chapter of SPRUF98.

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 the Initialization chapter of SPRUF98 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 to access the U-Boot environment 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 is one tool for UART boot:

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

USB boot

There is a patch to x-loader to allow it to do a USB boot. It can boot all the way to a Linux login. It's is used with a new version of omap3_usbload.

Update: 2019 the above x-loader link is "not found"

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

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

See the USB recovery section on 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, for example, Windows or Linux tools.

Windows

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

You can download this tool from here. Make sure the version is 2.0.6; newer versions may not work.

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 (for example, in U-Boot 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 the BeagleBoard. For example (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 # mmc init
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 'mmc init ; fatload mmc 0:1 0x80000000 uimage ; bootm' ; saveenv

Note: saveenv will not work on the xM. You will need to create a boot.scr file in the FAT partition for the xM. See set up u-boot
Note2: after a saveenv, u-boot will not read your boot.scr any more. To make it use boot.src again, type "nand erase" in the u-boot promt (works on C4, older versions may need a "nand unlock" too).

Barebox

Barebox can be used as an alternative bootloader (rather than U-Boot). You will have to generate it two times:

  1. As a x-loader via defconfig: omap3530_beagle_xload_defconfig
  2. As the real boot loader: omap3530_beagle_defconfig

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:

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

Source

Update on April 23 - 2010: Sources for the X-Loader and U-Boot that ship on the BeagleBoard can be found at http://gitorious.org/beagleboard-validation/. The U-Boot version found in that repository supersedes the one found at http://gitorious.org/beagleboard-default-u-boot/beagle_uboot_revc4/.

Update on March 3 - 2011: Sources for the SD card shipped with revisions Ax and Bx of the BeagleBoard-xM are in the Angstrom Distribution. The script used to build the sources is documented at http://code.google.com/p/beagleboard/wiki/BeagleBoardDiagnosticsNext. The sources at http://gitorious.org/beagleboard-validation are meant to mimic what was used in the OpenEmbedded-based build.

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-loader/x-loader.git xloader
cd xloader/

Build:

make distclean
make omap3530beagle_config
make

Result will be a ~20k sized MLO in the main directory. This is the signed x-loader and is ready for use.

U-Boot

Mainline U-Boot has good support for BeagleBoard (except for revision C4; see note below). 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):

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 ~160 KB sized u-boot.bin in the main directory.

Note: Due to (patch and binary) size, the 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

Note: For changing the screen resolution there is one option modifying the file in "include/configs/omap3_beagle.h" and adjusting the maximum resolution before compiling as describe in ARM OMAP2/3 Display Subsystem

Note: For beagleboard revision C4, above sources will not work. USB EHCI does not get powered, hence devices are not detected... Get a patched version of u-boot from http://gitorious.org/beagleboard-default-u-boot/beagle_uboot_revc4/ (Update on April 23 - 2010: This repository has been superseded by the U-Boot version found at http://gitorious.org/beagleboard-validation/)

Note: If you want to activate I²C from the expansion header, modify board/ti/beagle/beagle.h :

MUX_VAL(CP(I2C2_SCL),		(IEN  | PTU | EN | M4)) /*GPIO_168*/
MUX_VAL(CP(I2C2_SDA),		(IEN  | PTU | EN | M4)) /*GPIO_183*/

to

MUX_VAL(CP(I2C2_SCL),		(IEN  | PTU | DIS | M0)) /*I2C2_SCL*/
MUX_VAL(CP(I2C2_SDA),		(IEN  | PTU | DIS | M0)) /*I2C2_SDA*/

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.git linux-omap
cd linux-omap

Build:

make distclean
make ARCH=arm omap2plus_defconfig
make ARCH=arm menuconfig  # Only needed if you want to change the default configuration
make ARCH=arm uImage

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

Note: The following does not work. There is no defconfig "omap3_beagle_defconfig" nor any omap3 in the tree.

If you use the OE toolchain and want to build outside of the OE tree you should do

ARCH=arm
export ARCH
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 built a kernel before with oe, the program should be there

Note: If you are interested in kernel development have a look to manually compiling BeagleBoard kernel, too.

Experimental kernel patches and hacks

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

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: An pld c6000 Linux compiler is available on the TI FTP site. It does NOT support c64x+ core in OMAP3 devices. Not recommended.

You can also use 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.

See Floating Point Optimization article for an introduction into VFP-lite and NEON.

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 used by various opensource projects:

  • Libav - 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
  • Eigen2 - C++ template library for linear algebra (matrix math, etc.)
  • Webm - Google's new opensource video codec

Compilation tools support for NEON:

ARM Cortex-A8 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' since ANSI C can only describe scalar floating point, where there is only one operation at a time.

2) NEON NEON vectorized single precision operations (two values in a D-register, or four 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 one cycle/instruction throughput (processing two single-precision values at once) for consumer multimedia. 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 <arm_neon.h>, float32x2_t datatype and vmul_f32() etc)
  • Use NEON assembly language directly

On Cortex-A9, there is a much higher performance floating point unit which can sustain one cycle/instruction throughput, with low result latencies. OMAP4 uses dual-core Cortex-A9+NEON which gives excellent floating-point performance for both FPU and NEON instructions.

Board recovery

If you played, for example, with the contents of the NAND, it might happen that the BeagleBoard doesn't boot any more (without pressing user button) due to broken NAND content. See BeagleBoard recovery article how to fix this. Do not panic and think you somehow 'bricked' the board unless you did apply 12 V to it.

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,OpenEmbedded development 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:

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. Information on how RSE is used for, for example, Gumstix development is described in this post.

See also Using Eclipse with Beagle (for JTAG debugging).

Android

The 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™ Team. The source code and binaries are available for download and review.

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

You can watch Android booting on BeagleBoard.

Android on OMAP wiki

Wiki page for Andorid on OMAP can be found here.

0xdroid

0xdroid, the enhanced version of Android on BeagleBoard by 0xlab. The source code, pre-built binaries, and issue tracker are available for review and reference.

The latest development supports OMAP audio, OMAP video overlays, ARM Cortex A8 NEON/Thumb2 performance optimizations, mouse cursor, hot-pluggable USB keyboard & mouse, user-friendly installer for system image, and various Android tweaks. Detailed instructions for 0xdroid are available through Google Code wiki.

You can watch the 0xdroid demo video on the BeagleBoard:

* 0xdroid demo video (1)
* 0xdroid demo video (2)
* 0xdroid demo video (3)

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 BeagleBoard.

Ubuntu

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

Debian ARM

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

Arch Linux ARM

See [5] how to install Arch Linux ARM on BeagleBoard.

GeeXboX ARM

See GeeXboX (ARM) installation guide how to install GeeXboX on BeagleBoard (including clones).

Scratchbox

Scratchbox is a cross-compilation toolkit designed to make embedded Linux application development easier. It also provides a full set of tools to integrate and cross-compile an entire Linux distribution. See Felipe's Scratbox 1 and 2 introduction, too.

Software hints

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

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 BeagleBoard.

Mediaplayer (FFmpeg)

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

Java

Open source

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)

Edward Nevill from ARM Ltd. is working on interpreter optimization in Zero for ARM.

People interested in getting this stuff working better should contact people on:

You should also check out IcedTea's FAQ.

Oracle Java

As of August 2012, there is a binary version of Oracle JDK 7 available for Linux/ARM under a free (but not open source) license. More information:

Supported features:

  • Java SE 7 compliant
  • Almost all development tools from the Linux/x86 JDK
  • Client and server JIT compilers
  • Swing/AWT support (requires X11R6)
  • Softfloat ABI only

Oracle states in the FAQ that they are working on hard float support, as well as a JavaFX 2 port to Linux/ARM.

Booting Android (TI_Android_DevKit) from a USB stick

Please note

  • This procedure was tested on BeagleBoard-xM revision B(A3)
  • An SD card will be still needed to load the kernel.
  • An SD card will contain boot parameters for the kernel to use a USB stick as the root filesystem

Procedure

  1. Download Android Froyo for BeagleBoard-xM from TI
  2. Follow the installation procedure for an SD card card.
  3. Test if Froyo is working with your BeagleBoard-xM with an SD card.
  4. You will notice that Android has a slow performance. That is why we will install root filesystem on a USB stick.
  5. Format your USB stick and create one ext3 partition.
  6. Mount newly created ext3 partition and extract TI's root filesystem to it: sudo tar jxvf rootfs_am37x.tar.bz2 -C /media/ROOT
  7. Unmount flashdisk and insert it into the BeagleBoard.
  8. Mount your SD card to your computer.
  9. Now we need to tell the BeagleBoard to use the root filesystem from the /dev/sda1 partition instead of the SD card partition. That is done by overwriting boot.scr on the SD card with this one
  10. Unmount the SD card and insert it into the BeagleBoard and test.

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:

Some videos:

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 (BeagleBoard home)

  • Using Google you can search beagleboard.org (including IRC logs) using site:beagleboard.org <search term>

Manuals and resources

Contact and communication

TI resources

Articles

Books

BeagleBoard based training materials

BeagleBoard wiki pages

BeagleBoard photos

BeagleBoard videos

BeagleBoard manufacturing

Other OMAP boards

Subpages

<splist

parent=
showparent=no
sort=asc
sortby=title
liststyle=ordered
showpath=no
kidsonly=no
debug=0

/>