Difference between revisions of "BeagleBoard Community"

From eLinux.org
Jump to: navigation, search
(JTAG)
m (Mention Allegro)
Line 45: Line 45:
 
==Schematic==
 
==Schematic==
  
PDF of schematic is part of [http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf BeagleBoard HW Reference Manual (rev. A5)]. In other format schematic will be probably available in November, see [[BeagleBoard#Revision_C|revision C below]], as either creative commons or public domain license. For individuals who understand the limitations with the current design ([[BeagleBoard#Revision_B|revision B]]) and are willing to take them into consideration, ask at [http://groups.google.com/group/beagleboard beagle board discussion list].
+
PDF of schematic is part of [http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf BeagleBoard HW Reference Manual (rev. A5)]. In other format schematic will be probably available in November, see [[BeagleBoard#Revision_C|revision C below]], as either creative commons or public domain license. For individuals who understand the limitations with the current design ([[BeagleBoard#Revision_B|revision B]]) and are willing to take them into consideration, ask at [http://groups.google.com/group/beagleboard beagle board discussion list]. Schematic is done with [http://www.cadence.com/products/si_pk_bd/pcb_design/index.aspx Allegro].
  
 
==Layout==  
 
==Layout==  

Revision as of 04:43, 29 June 2008

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

Events

  • July 19 - July 20, 2008, The Lighthouse Media Centre, Chubb Buildings, Fryer Street, Wolverhampton, UK: LugRadio Live UK 2008
  • August 4 - August 7, 2008, Moscone Center North, San Francisco: LinuxWorld Conference & Expo: There will be a TI booth with Beagle and maybe a big BeagleBoard.org meet-up.

Hardware

The Beagle Board is a low-cost, fan-less single-board computer based on TIs 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 Core ~600MHz + TMS320C64x+ DSP ~430MHz + Imagination SGX 2D/3D graphics processor). See OMAP3530 features for more processor features. Target price is US-$149. The design goal was to make is 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.

Components

Top view:

Beagle top notes.jpg

  • 1: OMAP3530 processor + 128MB DDR + 256MB NAND (PoP: Package-On-Package implementation for Memory Stacking)
  • 2: DVI chip (TFP410)
  • 3: DVI-D
  • 4: 14-pin JTAG
  • 5: Expansion connector: I2C, I2S, SPI, MMC/SD
  • 6: User button (boot select)
  • 7: Reset button
  • 8: USB 2.0 EHCI HS
  • 9: SD/MMC+
  • 10: RS-232 serial
  • 11: Alternate power (normally powered by USB) (unmounted on REV Ax boards, see errata)
  • 12: USB 2.0 HS OTG (Power)
  • 13: Stereo In
  • 14: Stereo Out
  • 15: S-Video
  • Board size: 3" x 3"
  • Currently 6 layer PCB; target: 4 layer

Bottom:

Beagle bottom.jpg

Manual

See BeagleBoard HW Reference Manual (rev. A5).

Schematic

PDF of schematic is part of BeagleBoard HW Reference Manual (rev. A5). In other format schematic will be probably available in November, see revision C below, as either creative commons or public domain license. For individuals who understand the limitations with the current design (revision B) and are willing to take them into consideration, ask at beagle board discussion list. Schematic is done with Allegro.

Layout

PDF of layout is part of BeagleBoard HW Reference Manual (rev. A5). In other format layout will be probably available in November, see revision C below, as either creative commons or public domain license. For individuals who understand the limitations with the current design (revision B) and are willing to take them into consideration, ask at beagle board discussion list.

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 will be without the EHCI USB connector mounted and in a few weeks having a different SKU for the Rev. C boards with the EHCI USB fixed. Won't be fixed for Rev. A and Rev. B boards. Needs different PHY. 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!

Availability

A small number of Rev. B boards are expected end of June 2008 for target price $149 + shipping and are likely to sell out quickly, so getting notification via the e-mail list could be helpful. These Rev. B boards will not have support for the USB EHCI port (see hardware errata #5) and are not yet fully supported by the linux-omap git tree. These boards are being targeted only for early adopter developers.

Once the on-line purchase link is available at beagleboard.org, we expect to take pre-orders for the Rev. C boards under a different part number. Hopefully, this purchase button will be available from ~August 2008 on. Until then, use revb-request if interested, see rev B. below.

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

Revision A

There are already 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

Still has USB HOST (EHCI) failures. Most probably USB HOST (EHCI) connector will be not mounted.

If interested, drop a note to revb-request (at) beagleboard.org. This list is used to keep the list of requests.

Revision C

Revision C is same as revision B except:

  • USB HOST (EHCI) will be operation on revision C.
  • We are looking at replacing the HDMI connector with a DVI connector on revision C.

Note: Revision C is expected earliest at November 2008.

Adapters

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

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.

Note: JTAG on BeagleBoard uses 1.8V!

OpenOCD currently doesn't support BeagleBoard Cortex-A8, only Cortex-M3. If this support is added and the JTAG scan chain for OMAP3 is known, Flyswatter from TinCanTools for ~ $50 would be an ideal JTAG choice. It supports 1.8V and additionally has a RS232 interface.

OpenOCD JTAG bring up

On IRC it was discussed what will be necessary to get OpenOCD working with OMAP3 on BeagleBoard:

  • OpenOCD compatible JTAG hardware interface with FTDI's FT2232 chip, e.g. Flyswatter. The JTAG interface has to support 1.8V and 14 pin JTAG connector. For JTAG pin out see section 8.17 of BeagleBoard HW Reference Manual (rev. A5)
  • Get latest OpenOCD source
  • Add Cortex-A8 CPU ID. Currently only Cortex-M3 is supported. Take this as example. Once you connect to target you should get error message expect cpuid of xxxxxx but got yyyyyy which should contain Cortex-A8 CPU ID.
  • Take CPU scan lengths from OMAP3530 CCS config.
  • Pull-down the EMU0/EMU1 pins on BeagleBoard. Jumper P3 can be used to pull-down EMU0. There is no jumper for EMU1, though. Unsure if EMU1 has to be pulled-down, too. If so, modify HW to pull down EMU1 using pin 14 of JTAG connector P2 or via R15.

TI DaVinci OpenOCD configuration can be used as example for above.

If above basics work, additionally MMU, cache support and some include files for A8 might be added to OpenOCD.

Note: If you made some progress regarding BeagleBoard OpenOCD support, please send a short note to BeagleBoard ML.

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.

USB

There are two USB ports on the BeagleBoard, one with an EHCI controller and another with an OTG controller.

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 HS hub.

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.

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 boot

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 (experimental) tools for UART boot:

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

USB boot

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.

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 rootdelay=1

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.

Complete source and binaries

BeagleBoard pre-built binaries and source code can be found at Beagle source code and downloads page. Recent patches should go as fast as possible

Additional source and binary images from OE project can be found on Koen's page.

Git

Besides above binary and source images, for various parts of Beagle software stack there are git repositories available.

X-loader

For X-loader there is a temporary git repository. Clone this using:

git-clone http://www.beagleboard.org/x-load.git xload-git

Note: Only http:// protocol works, git:// was never set up and port is still closed.

Note: This x-loader git repository for BeagleBoard is temporary. It is planned to move to http://source.mvista.com/git/?p=xloader.git;a=summary

U-Boot

Currently, Beagle community is working at getting U-Boot patches upstream to mainline U-Boot. While doing this, Steve set up a Beagle U-Boot git repository. Get it by:

git clone git://www.sakoman.net/git/u-boot-omap3.git u-boot_beagle
cd u-boot_beagle/
git checkout -b beagle origin/test

Build:

make distclean
make omap3530beagle_config
make

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

Linux kernel

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

git clone git://source.mvista.com/git/linux-omap-2.6.git

Build:

make distclean
make omap3_beagle_defconfig
make uImage

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

Tested boot

Known working combination of above code/binaries:

This combination is known to boot using MMC/SD boot.

Compiler

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

Cortex A8 ARM

CodeSourcery's ARM GNU/Linux tool chain is recommended.

Note: A user reports that he found the use of CodeSourcery tool chain version 2007q1-21 and 2008q1-126 as strange. He has been using 2007q3-53 for a couple of months now.

ARM NEON

ARM Cortex A8 used in OMAP3 on BeagleBoard supports NEON instruction set. Some information about this can be found in ARM's RealView Compilation Tools Assembler Guide and from GCC's ARM NEON Intrinsics.

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.

C64x+ DSP

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

Note: Login required.

Note: There seems to be an old/limited (no code compressor?) C64x Linux compiler available on TI FTP site.

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

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

Links

Other OMAP boards