BeagleBoard101-esc-boston-2009b

advertisement
Beagle Board 101
Gerald Coley and Jason Kridner
September 22, 2009
Archived at:
http://beagleboard.org/esc
1
Agenda

Overview of the Beagle Board





Board features and community
Booting the Beagle Board
Some simple tests (learning Linux)
Writing our own boot script
Native, managed, and web-based UI code
development
 Collaboration tools and community participation
 Resources for more information and support

Hardware presentation
 Lessons from building Beagle
What’s in a name…






Bring your own peripherals
Entry-level cost ($149)
ARM Cortex-A8 (superscalar)
Graphics and DSP accelerated
Linux and open source community
Environment for innovators
Community development
$149
> 2,000 participants
and growing
Active &
technical
community
Open access to
hardware
documentation
Opportunity
to tinker and
learn
Personally
affordable
Wikis, blogs,
promotion of
community
activity
Freedom to
innovate
Addressing
open source
community
needs
Instant access to
>10 million lines
of code
Free
software
Fast, low power, flexible
expansion
OMAP3530 Processor
 600MHz Cortex-A8
 NEON+VFPv3
 16KB/16KB L1$
 256KB L2$
 430MHz C64x+ DSP
 32K/32K L1$
 48K L1D
 32K L2
 PowerVR SGX GPU
 64K on-chip RAM
POP Memory
 128MB* LPDDR RAM
 256MB NAND flash
3”
Peripheral I/O
 DVI-D video out
 SD/MMC+
 S-Video out
 USB 2.0 HS OTG
 I2C, I2S, SPI,
MMC/SD
 JTAG
 Stereo in/out
 Alternate power
 RS-232 serial
USB Powered
 2W maximum consumption
 OMAP is small % of that
 Many adapter options
 Car, wall, battery, solar, …
* Revision C has 256MB LPDDR RAM
And more…
Other Features
 4 LEDs
 USR0
 USR1
 PMU_STAT
 PWR
 2 buttons
 USER
 RESET
 4 boot sources
 SD/MMC
 NAND flash
 USB
 Serial
On-going collaboration at BeagleBoard.org
 Live chat via IRC for 24/7 community support
 Links to software projects to download
3”
Peripheral I/O
 DVI-D video out
 SD/MMC+
 S-Video out
 USB HS on-the-go
 I2C, I2S, SPI,
MMC/SD
 JTAG
 Stereo in/out
 Alternate power
 RS-232 serial
New for Revision C
3”
Peripheral I/O
 USB HS/host-only
(in addition to existing
USB HS on-the-go)
 LCD expansion
256MB LPDDR RAM
(up from 128MB)
Desktop development
DVI-D
Power
Stereo out
SD
Stereo in
USB
Note: Beagle Board
can be powered from
the alternate jack (as
shown) or via USB
Development on-the-go
Power + IP
over USB
Serial
Port
Expand with custom
hardware
USRP
Stereo out
USB
Power
SD
2GB
Photo by Philip Balister
10
Typical peripherals

Available from Digi-Key
 Serial cable (BBC01-ND)
 Needed for serial console
 HDMI-to-DVI-D cable (AE10260-ND)
 Needed for connection to digital monitors
 USB hub (DA-70227-ND)
 Needed for adding USB peripherals
 5V power supply (T450-P5P-ND)
 Frees USB OTG port

Hardware specifications and recommended
peripherals
 http://BeagleBoard.org/hardware

RSS feed of newly verified peripherals
 http://feeds.feedburner.com/BeagleBoardPeripherals
Other
design
benefits
http://beagleboard.org/hardware/design


Open source hardware design
Low power



No fan for silent operation
Use a USB cable to power the board (barrel connector power option)
USB 2.0 high-speed on-the-go (OTG) and host-only (EHCI) ports


Host an almost endless set of USB peripheral devices
On-the go port
 Acts as ‘device’ when connected to a PC and ‘host’ when connected to a hub

OTG port requires a mini-A to standard-A adapter to act as a host
http://BeagleBoard.org/hardware
 Able to emulate a network connection to a PC
 Provides power to board

Boot options


Boot from NAND, MMC/SD, serial, or USB using OMAP3530 ROM
User button





Boot default: NAND  USB  serial  MMC/SD
Button pressed: USB  serial  MMC/SD  NAND
Avoids “bricking”
Reusable in applications
Reset button (function may be altered with software)
Verifying the hardware

Code images, procedure, and
sources are provided to verify the
board functionality
 Links to the diagnostics found at
http://BeagleBoard.org/support
 Includes bootloader, Linux kernel,
and minimal file system for testing

These sources act as examples for
software developers
Baseline
tools
and
software
http://beagleboard.org/resources

Hardware verification procedure (http://beagleboard.org.support)


GPL ARM GNU compiler collection






Interact over UART or USB and program flash
Boot kernel from UART, NAND, or MMC/SD (FAT32)
Test UART, DVI-D, S-Video, NAND, and MMC/SD
GPL Linux kernel version 2.6.28 for diagnostics


x86-Linux hosted
GPL x-load version 1.4.2
GPL u-boot version 2009.01




Code Sourcery version 2007q3 is one known-good option
Runs on Linux/Windows and generates ARMv7/Thumb2
Free C6000 compiler for non-commercial use


Code images, procedure, and sources are provided to verify the board functionality
Test UART, DVI-D, S-Video, ALSA audio, NAND, MMC/SD, USB OTG, and USB Host
Free 3D graphics libraries (OpenGLES 2.0)
BSD/GPL DSP interface software
Free production audio/video codecs for the DSP
BeagleBoard.org

Four primary activities
 Buy a board
 Learn how to use existing
projects
 Learn how to join or start a
project
 Learn about the latest project
news

Plans for site
 Multi-lingual
 Wiki-like editing-through-web
 Keep website source open &
leverage OpenID

Facilitates community
 Aggregates blogs
 Provides community chat
 “Of, by, and for” members


Promotes member actions
OMAP3530 collaboration
 Focus “upstream”
 Long-term presence
 Broad set of problems
 Aggregate “downstream”
 Inform users of the broader
world
 Avoid information deluge
Community projects and distros
http://www.flickr.com/groups/beagleboard/pool/ and http://beagleboad.org/project

Ångström Linux Distribution






Maemo.org
FFmpeg









Firefox 3.0, Epiphany-WebKit, etc.
AbiWord, GIMP, etc.
3D graphics and DSP codec integration
ARMv7+NEON gcc tool-chain
720P-24 MPEG4 decode on ARM+NEON only
Beagle SDR (low-power software defined radio)
Windows Embedded for BeagleBoard
Handheld.org’s Mojo Ubuntu build for ARM
Android for Beagle
ARM Linux Internet Platform
Ubuntu, Debian, OpenOCD, Mamona, Ethernet, OKL4, robots, home automation, vision, e-ink
displays, FreeBSD, QEMU, Fedora, …
Kernel, boot-loader, and boot utilities
Kernel
Several more and growing…
Creativity
Tools
Browser
Office
Suite
Windowing
System
A handful of the thousands…
Camera streaming application
Audio processing
Linux home fileserver
Fanless multimedia/internet terminal
VLC VideoLAN
Low-cost kiosk terminal
Development platform for mobile VoIP phone
Wearable computer
CMUcam-style applications
Bluez and GUI using direct frame buffering
Low cost linux pc/gaming device
Smart home
Linux thin client
I'm interested to buy 2 to 10 rev-B boards
LCD picture frame
Port xnu
(10 preferred ;) congratulations for your
Autonomous robot
Port OpenWrt
project and its spirit !
Port Google-Android
Networked digital signage
Processing images and pattern recognition
Home monitoring
No idea yet
Small linux home fileserver
I'm not interested in waiting for the platform to mature
any longer. Let me know how to get hold of a
Port OpenMoko
Mobile DTV tuner and receiver
Clutter & Qt development
Port OKL4
beagleboard now.
Powerful nas with media server and transcoding capabilities
Autonomous vehicles
Home security cameras and powered-curtains
After discussing with my dev guys,
I confirm I would like to order
Bachelor thesis I'd like my students to design and build hardware and
20 beagleboards
Media centre
software to do for Linux what TimeCapsule does for
SDR platform
MacOS
Speech recognition applications
Vehicle telematics
Project for masters degree
Linux/Firefox web add-on for the TV in the house
Booting the Beagle Board
Equipment at ESC Boston

For you to keep


Powered
USB hub
 Content for each class

USB
Power
Beagle Board Rev. C3
SD card
Serial cable
 IDC10-to-DB9 adapter
 Null modem cable
DVI-D
Monitor

Hub:
 Powered USB 2.0 HS
SD

Cables:
 USB to Beagle power
 HDMI to DVI-D
 USB A to mini-B

For you to use in the labs


DVI-D monitor
USB keyboard and mouse
Desktop Computer Configuration
19
First boot of “101” image


Connect everything and then apply power
Image boots up as root by default
 ApplicationsSettingsLogin Setup

Don’t do the next step yet!
 Start ‘root terminal’ and use ‘/switchboot’ to
start other images
 Use ‘halt’ to power down (optional?)
#opkg install font-misc-misc
xterm -fn 10x20 &
20
Default boot behavior
RESET
Is USER
pressed?
Poll USB, Serial, and SD
before trying NAND
Is u-boot.bin
on SD card?
Run u-boot.bin from SD card,
possibly ignoring environment
Is env var
set?
Execute commands stored in
‘bootcmd’ environment var
Execute default commands
21
The five (5) boot phases
1.
2.
3.
4.
5.
ROM loads x-load (MLO)
X-load loads u-boot
U-boot reads commands
Commands load kernel
Kernel reads root file system
MLO:
U-boot:
Env:
Kernel:
File sys:
22
0x000000
0x020000
0x260000
0x280000
0x680000
(1) ROM
loads
x-load
(MLO)
http://www.ti.com/litv/pdf/sprufd6a

ROM attempts to load boot image
 Sequence of attempts depends if USER button
pressed
 Not-pressed: NANDUSBserialMMC/SD
 Pressed: USBserialMMC/SDNAND

For MMC/SD boot
 Must have 255 heads and 63 sectors/track
 First partition is FAT and bootable
 Must have “MLO” as first file and directory entry
 “MLO” is x-load.bin.ift renamed

X-load image must be “signed”
 signGP app is open source

There are utilities for USB and serial boot
23
(2) http://gitorious.org/projects/x-load-omap3
X-load loads u-boot

X-load is a utility derived from u-boot
 Small enough to fit in internal RAM
 Configures external RAM
 Only configured to read NAND or
MMC/SD

X-load 1.4.2 looks first on MMC/SD
 If it finds u-boot.bin, loads and runs it
 Otherwise loads u-boot from the
second NAND partition (mtd1)
24
(3) U-boot
reads
commands
http://gitorious.org/projects/u-boot-omap3

U-boot version allows interaction over the serial and
USB ports
 Serial cable provided in case you have a laptop
 USB driver looks like a USB-to-serial converter device
 Use gserial.inf to install a driver in Windows

U-boot environment variables read from flash
 Stored in the third flash partition (mtd2)
 ‘bootcmd’ variable stores the commands to execute
 ‘bootdelay’ is number of seconds to allow interruption of
the boot

Default ‘bootcmd’ reads ‘boot.scr’ auto-script
25
(4) Commands load kernel

U-boot loads kernel and passes it ‘bootargs’
 Default environment is used when variables haven’t been
stored in flash
 Rev C boards are shipped without variables stored in flash
 Console can be used to interrupt the boot process and
modify variables
 The Rev B u-boot only supported the console over the
serial port
 The Rev C u-boot adds support for the console over the
USB OTG port
 Future modifications may support USB keyboard/mouse
and DVI-D monitor
 Fourth flash partition (mtd3) is reserved for the kernel

bootm <RAM addr> – executes kernel from RAM
26
Default bootcmd for Rev C
http://gitorious.org/projects/beagleboard-default-u-boot/repos/jason-clone/blobs/for-khasim-rebase/include/configs/omap3_beagle.h

bootcmd=
if mmcinit; then
if run loadbootscript; then
run bootscript;
else
if run loaduimage; then
if run loadramdisk; then
run ramboot;
else
run mmcboot;
fi;
else run nandboot;
fi;
fi;
else run nandboot;
fi
27
U-boot
command
summary
http://www.denx.de/wiki/DULG/Manual

Basic commands






MMC/SD




mmcinit – initializes the MMC/SD card
fatls mmc 0 – reads FAT directory on the first partition
fatload mmc 0 <RAM addr> <filename> – load a file into RAM
NAND






help – provide the list of commands (varies by build)
printenv – lists the contents of the current environment
saveenv – writes the current environment to the flash
setenv <variable> ‘string’ – sets environment variable
autoscr <RAM addr> – run script from RAM
nand unlock – enables writing to the NAND
nandecc <sw|hw> – configures ECC mode (OMAP3 specific)
nand erase <start> <length> – erases portion of NAND flash
nand read <RAM addr> <start> <length> – reads into RAM
nand write <RAM addr> <start> <length> – writes from RAM
Serial

loadb <RAM addr> – reads into RAM via kermit file send
28
(5) Kernel reads root file
system

Kernel mounts root file system based on ‘bootargs’




NAND (JFFS2): root=/dev/mtdblock4 rw rootfstype=jffs2
RAMDISK: root=/dev/ram0 rw ramdisk_size=32768 initrd=0x81600000,32M
MMC/SD: root=/dev/mmcblk0p2 rw rootwait
NFS: root=/dev/nfs rw nfsroot=192.168.123.1:/data/target
ip=192.168.123.2::255.255.255.0 nolock,rsize=1024,wsize=1024 rootdelay=2
29
Configuring
the
display
http://groups.google.com/group/beagleboard/msg/4c64b2c614622053





video=omapfb
vram=10M
omap-dss.def_disp=lcd
omapfb.vram=4M,3M,3M
omapfb.video_mode=1024x768MR-16@60
30
Other bootargs

nohz=off
 Power management

mem=88M
 Reserve memory
31
Some simple tests
Understanding the basics of
Linux
Getting started with Linux

Starting references






http://free-electrons/training
http://kernelnewbies.org (/UpstreamMerge)
The Linux Documentation Project (http://www.tldp.org/)
Device Drivers Book (http://www.xml.com/ldd/chapter/book/index.html)
http://kerneltrap.org
“The” kernel GitWeb
 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git

Linux-omap kernel
 http://linux.omap.com
 http://source.mvista.com/git/ (Tony Lindgren)

Others that feed “the” kernel or linux-omap kernel
 http://www.linux-arm.org/git?p=linux-2.6.git
 http://www.arm.linux.org.uk/
 http://www.sakoman.net/cgi-bin/gitweb.cgi
Everything is a file
http://free-electrons.com/doc/unix_linux_introduction.pdf


In Linux, you typically talk to devices using file I/O
GPIO example





ls /sys; ls /proc; cat /proc/cmdline
echo “none” > /sys/class/leds/beagleboard\:\:usr0/trigger
echo “1” > /sys/class/leds/beagleboard\:\:usr0/brightness
echo “0” > /sys/class/leds/beagleboard\:\:usr0/brightness
echo “heartbeat” > /sys/class/leds/beagleboard\:\:usr0/trigger
34
Read
events
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux2.6.git;a=blob;f=Documentation/input/input.txt



cd ~/utils
gcc -o evtest evtest.c
./evtest /dev/input/event0
 Press the “USER” button
 ^C to exit

./evtest /dev/input/event4
 Move the mouse
 ^C to exit
35
Access monitor EDID





cd /sys/bus; ls; cd
cat /sys/bus/i2c/devices/3-0050/eeprom
i2cdump -y 0x3 0x50 b
decode-edid
fbset
36
USB OTG and EHCI






cd /sys/bus/usb/devices
ls
cat usb1/speed
cat usb1/1-2/1-2.2/manufacturer
cd
lsusb
37
Networking








Copy linux.inf from SD card to host and connect Beagle
ifconfig
nano /etc/networking/interfaces
ifdown usb0; ifup usb0
ifconfig
Configure your host using linux.inf
ping 192.168.123.1
VNC
 x11vnc &
 Connect with your VNC viewer from your host

Synergy
 Start Synergy server on your host
 synergyc --daemon --restart 192.168.123.1
38
Writing our own boot script
39
Build u-boot and mkimage



cd ~/u-boot-omap3
make omap3_beagle_config
make
40
Build my.scr





cd ~/u-boot-omap3
cp /media/mmcblk0p1/menu/kridner.script
my.script
nano my.script
./tools/mkimage -A arm -T script -C none -d
my.script my.scr
Be very careful before executing the next step
 cp my.scr /media/mmcblk0p1/boot.scr
 If unsure, run /switchboot now
 boot
41
Edit environment in flash


make env
nano /etc/fw_env.config
 /dev/mtd2 0 0x20000 0x20000







./tools/env/fw_printenv
ln -s tools/env/fw_printenv fw_setenv
./fw_setenv usbtty ‘cdc_acm’
./fw_setenv stdout ‘serial,usbtty’
./fw_setenv stdin ‘serial,usbtty’
./fw_setenv stderr ‘serial,usbtty’
./tools/env/fw_printenv
42
Trying usbtty





cp ~/gserial.inf /media/mmcblk0p1/
halt
Remove power and SD card
Copy gserial.inf from SD to PC
Plug USB from Beagle to your PC
 Select driver

Start Hyperterminal
 Newest serial port, max baud, n81, no flow

Optional
 nand erase 0x260000 0x20000
43
Native, managed, and webbased UI code development
Native development

Not limited to embedded/cross tools
 Reach out to broader developer community


Native tools easy to install
Immediately see impact of your changes
 Edit local source files with familiar editors
 You still need to manage your code!
 Version control with git, svn, cvs, …

Also possible to perform distributed builds
 Some packages may require larger memory
Managed code


Easier to create an emulation environment
But what about performance?
 JIT compilers may be sufficient
 Performance bottlenecks are often in just a few
places
 Just optimize where the issue is, but build the
rest fast!
 Important to make sure the rest is open for
optimization

Certainly not for every market
 If you already know C/GTK+/Qt, use what you
know!
 If you are new, this may be a way to get started
Web-based
UI
development
http://www.programmableweb.com/scorecard




Familiar paradigm for consumers
Enables remote control and
monitoring
Many HTML/JavaScript developers
Opens up use of other web services




Mapping
Order fulfillment
Storage
Social networking and media
Web-based UI development


Helma is one option for the server side
 Based on Java Servlet Container and Mozilla Rhino
 Provides sessions, user management,
 Write entire applications in XML/HTML and JavaScript
 No recompilation required, allowing for dynamic development
 Database options for object storage with automatic persistence
 Native XML database for flexibility
 Java database connection (JDBC) for scale
 Drop-in Java .jar files for access to huge libraries of functions
Accessing Linux shell and drivers
 rt=Packages.java.lang.Runtime.getRuntime(); rt.exec(“…”)
 new Packages.java.io.File(“…”)
Beagle web control demo

beagle-web-control-demo used at ARM Developers’ Conference
http://www.beagleboard.org/gitweb/?p=beagle-web-control-demo.git;a=summary

cd
 If not root: sudo ./beagle-web-controldemo/script/permissions.sh

./helma-1.6.1/start.sh &

tail -f helma-1.6.1/log/helma.beaglewebcontroldemo.event.log

Browse (using Midori) to
 http://localhost:8080/demo/static/ARM_DevCon/slide34.html

Turn LEDs “on” and “off”
50
Collaboration tools
Distributed version control


GIT is different—eliminates often bad assumptions
Instead of everyone pushing into Linus’ repository





Linus pulls patches from people he trusts
Everyone has all of Linus’ history (and their own) locally
Patches enter “system” as e-mail messages
When a merge is non-trivial, he simply asks others to rebase
Mailing list
 Archives available to everyone
 Accepted patches applied to ‘git’ repositories

Guides to GIT
 http://linux.yyz.us/git-howto.html
 http://git.or.cz/
 http://www.kernel.org/pub/software/scm/git/docs/
Post patch to OMAP
community

Read
http://www.muru.com/linux/omap/README_OMAP_PATCHES

Post your patch to mailing list
linux-omap@vger.kernel.org
Chat, mail, forums, blogs,
and wikis!


All exist because they all solve different problems
Chat allows you to know someone’s listening
http://beagleboard.org/chat or #beagle on irc.freenode.net
 Great for beginner questions and rapid coordination

Mail allows you to reach almost anyone
http://groups.google.com/group/beagleboard
 Brings larger group into the conversation
 Provides you with a personal log in your inbox

Forums helps get the threads organized
https://community.ti.com/forums/32.aspx (minimal activity to avoid disrupting

community critical mass)
Blogs provide emphasis, filtering, and timeliness
http://beagleboard.org/news and http://beagleboard.blogspot.com

Wikis enable inputs to become documentation
http://eLinux.org/BeagleBoard and http://code.google.com/p/beagleboard/wiki
Chat on IRC

http://freenode.net





#beagle: discussion regarding the Beagle Board
#neuros: discussion
#davinci: discussion regarding TI DaVinci products
#ol: discussion regarding OMAP Linux (not active)
IRC clients





http://beagleboard.org/chat
http://pidgin.im
http://www.mirc.com
http://en.wikipedia.org/wiki/List_of_IRC_clients
http://www.ircreviews.org/clients/
E-mail regarding OMAP
Linux


http://BeagleBoard.org/discuss
http://vger.kernel.org/vger-lists.html#linux-omap
Forums

http://community.ti.com
Blogs (RSS feeds)

http://beagleboard.blogspot.com
Wikis



http://wiki.davincidsp.com
http://tiexpressdsp.com
http://elinux.org/BeagleBoard
Registering
Beagle
projects
http://code.google.com


Anyone can create a new
open source project
Features
 Site is “cleaner” than
sf.net, but sf.net is OK too
 Source control is
Subversion
 Issue tracking is custom
 Provides downloads and
wiki support



Use common sense and
get your manager’s
approval
Use the tag “beagleboard”
Let’s explore:
http://code.google.com/p/beagleboard
Git

What is Git?




Read more here:


Git is a popular version control system designed to handle very
large projects with speed and efficiency; it is used mainly for
various open source projects, most notably the Linux kernel.
Git falls in the category of distributed source code management
tools, similar to e.g. GNU Arch or Monotone (or BitKeeper in the
proprietary world). Every Git working directory is a full-fledged
repository with full revision tracking capabilities, not dependent on
network access or a central server.
Git is an Open Source project covered by the GNU General
Public License v2. It was originally written by Linus Torvalds and
is currently maintained by Junio C Hamano.
http://git.or.cz/
Learn from Linus here:

http://www.youtube.com/watch?v=4XpnKHJAok8
Community Participation
with Git
Features of Git

Strong support for non-linear development



Distributed development




Very fast and scales well even when working with large projects and long histories
Commonly an order of magnitude faster
Extremely efficient packed format for long-term revision storage
Cryptographic authentication of history




Remote changes are imported as additional development branches and can be merged in the
same way as a locally developed branch
Repositories can be easily accessed via the efficient Git protocol (optionally under ssh) or HTTP
No special web server configuration required
Efficient handling of large projects




Git supports rapid and convenient branching and merging
Includes powerful tools for visualizing and navigating a non-linear development history
History is stored in such a way that the name of a particular revision (a "commit" in Git terms)
depends upon the complete development history leading up to that commit
Once published, it is not possible to change the old versions without it being noticed
Tags can be cryptographically signed
Toolkit design


Following the Unix tradition, Git is a collection of many small tools written in C, and a number of
scripts that provide convenient wrappers
Easy to chain components together to do other clever things
Commands used to pull trees
Refer to Tony’s README on muru.com for detailed description on working with OMAP GIT
tree.
http://www.muru.com/linux/omap/README_OMAP_GIT
Few important commands:
To clone OMAP GIT Tree:
$ git clone http://www.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git
Note: Setup Proxy Server before cloning the tree:
Example: #> export http_proxy=http://my.proxy.here:port/
To re-sync your branch with mainline:
$ git-pull
What do you do with Git?
To add new changes:
•
•
•
Open file in any unix compatible editor.
Do the modifications
Linus Main Line
Save the file
TAG
0
To store the file in repository:
$ git status
$ git update-index arch/arm/plat-omap/myfile.c
$ git commit -s
Linux OMAP
0
My-Clone
To generate patches using GIT tool:
TAG
1
0
$ git format-patch -o <output_dir>
abcdef0123456789abcdef0123456789abcdef01
Other methods:
TAG
1
- Create another local branch and take a normal diff between the too.
- Use Quilt. (http://download.savannah.gnu.org/releases/quilt/)
Everyday
Git
http://www.kernel.org/pub/software/scm/git/docs/everyday.html










git-show-branch(1) to see where you are.
git-log(1) to see what happened.
git-checkout(1) and git-branch(1) to switch branches.
git-add(1) to manage the index file.
git-diff(1) and git-status(1) to see what you are in the
middle of doing.
git-commit(1) to advance the current branch.
git-reset(1) and git-checkout(1) (with pathname
parameters) to undo changes.
git-merge(1) to merge between local branches.
git-rebase(1) to maintain topic branches.
git-tag(1) to mark known point.
Community participation with
Open Embedded
What is Open
Embedded
(OE)?
http://www.openembedded.org

OE is like a top-level ‘Makefile’
 Sophisticated layer on top of ‘make’
 Tool for building distributions
 Maintains meta-data database for building open source

BitBake is a python tool core to OE
 Database is built of recipes for each package
 Inheritance for reuse (autotools, …)
 Satisfies dependencies and follows build steps
 Fetch, unpack, patch, configure, compile, stage, install,
& package

Opkg tool for package management
 Replacement for Debian ‘dpkg’
 Utilizes pre-built package feeds
What role does OE play?

Collaboration on entire distribution
 “Ångstrøm” is a distribution built with OE

Full control over almost every aspect
 Tool chain, package set, patches,
kernel,...

Relatively complete starting point
 ‘armv7a’ compiled binaries in “Ångstrøm”

Possible to take a “demo” snapshot
 Play with higher-level development
What does Ångstrøm provide
today?
http://beagleboard.org/project/angstrom

Browsers
 Gecko: Firefox 3, Fennec, …
 WebKit: Epiphany, …

Media
 FFmpeg, XMMS, GStreamer, MythTV, …

Development
 C, Java, Python, Perl, Mono, Ruby, Tk, …

Gaming, Networking, …
http://www.angstrom-distribution.org/repo/
Installing
Ångstrøm
to
NAND
http://beagleboard.org/demo/angstrom

SD card FAT formatted (default, optionally bootable)

boot/kernel/ramdisk to get into OE console




bootargs = console=ttyS2,115200n8 ramdisk_size=32768
root=/dev/ram0 rw rootfstype=ext2 initrd=0x81600000,32M
bootcmd = mmcinit;fatload mmc 0 80300000 uImage;
fatload mmc 0 81600000 angstrom-console-rd.gz
Flash board





Copy of tar.bz2 of full file system image desired
Boot console image


Can store kernel (and ramdisk) in flash
opkg install mtd-utils; opkg install mkfs-jffs2
flash_eraseall /dev/mtd4; mkfs.jffs2 -o /dev/mtdblock4
mkdir /mnt/flash; mount -t jffs2 /dev/mtdblock4 /mnt/flash
tar xvjf Angstrom-XXX.rootfs.tar.bz2 -C /mnt/flash
Boot new file system


bootargs = console=ttyS2,115200n8 console=tty0 root=/dev/mtdblock4
rw rootfstype=jffs2 nohz=off video=omapfb:vram:2M,vram:4M
bootcmd = nand read 80200000 280000 400000; bootm 80200000
What is Open Embedded
made from?

BitBake build tool

Meta-data

A version control repository of the meta-data
 Specifically written for top level make problem
space
 Uses inheritance to factor common support from
recipes
 Simple language with shell sequences
 Language elements and functions can use
Python for advanced cases
 Package recipes and classes
 A number of distribution definitions
 A number of platform definitions
 Uses Monotone for SCM (moving to Git)
 Maintains dev and (recently) stable branches
OE reference: typical
processing


Satisfy all dependencies
Build (default command)






Fetch
Unpack
Patch
Configure
Compile
Stage
packages
 Install
directory
 Package
packages
get the source code
extract the source code
apply patches (local or fetched)
run any configuration steps
do actual compilation
install locally for use by other
install product files to temporary
take installed files and place into
helloworld, helloworld-dbg, helloworld-dev,
helloworld-doc, helloworld-local
Top Level Default OE flow




Build toolchain and libraries
Build needed components to
packages
Build file-system image from
packages
Will take Gigabytes of storage and hours to
perform the above on a clean install
Alternate OE flows





Use precompiled toolchain
Use pre-downloaded source archives
Build toolchain and package as an
SDK
Build collection of packages only
Build file-system image from pre-built
packages***
*** This may not be a current capability
What is OE not good for
(today) ?

Active development of a given
component
 There are ways to use OE in this
fashion but it is not a strength and you
can lose code if you are not careful

GUI tools to guide and monitor
 All config is edit of text files
 Build log is very verbose and not
visually structured
Limitations and alternatives

Limitations
 Build environment not always well isolated
 Many build scripts do native build environment tests

Alternatives
 Matrix
 Sponsored by ARM: http://linux.onarm.com
 Utilizes Scratchbox and QEMU
 Reproduces target environment in cross-compile
 Relies on emulation on build host
 Mamona




Targets Nokia Internet Tablets
Utilizes Open Embedded, Scratchbox, and QEMU
Generates Debian source/binary packages
Solves some “partial emulation” problems
 Native development or managed code environments
Resources for more
information and support
79
Some
hardware
options
http://wiki.omap.com/index.php?title=OMAP3_Boards
TI/Mistral OMAP35x EVM
Nokia Internet Tablets
LogicPD OMAPZoom
Gumstix Overo
Analogue & Micro Cobra3530
Cogent CSB740

LogicPD OMAP35x Dev. Kit /
Medical EVM
5.75” x 6.25”
Mini
Board
3” x 3”
LogicPD OMAP34x Mobile
Development Kit
3.8” x 6.3” x .95”
Gumstix Overo
Not to scale.
Approximate size
noted (in inches)
Beagle
Board
3” x 3”
OMAP3
5x EVM
4.25” x
7”
OMAP34x SDP
8.5” x 11”
Many tools options
http://focus.ti.com/dsp/docs/dspplatformscontenttp.tsp?sectionId=2&familyId=1525&tabId=2224
The many OS vendors for are OMAP35x not listed here
Tool / Top features
Debug
TI Code Low-level ARM and
Composer DSP
Studio
ARM RealView
Compile
Other
Low-level ARM (ARMv7)
and DSP (NEON roadmap)
Poweraware
debug
Low-level ARM
Application-level ARM
(ARMv7, NEON)
Lauterbach
Low-level and app
ARM and DSP
None
Extensive
trace
Green
Hills
Low-level and app
ARM and DSP
Low-level ARM
Trace
Linux application
debug
Linux kernel/app ARM
(ARMv7, NEON)
CodeSourcery
•Cortex-A8 uses ARMv7 instructions
Additional third party information: here
OS vendors for OMAP35x






MontaVista
RidgeRun
TimeSys
bSquare
QNX
Many, many more
82
TI OMAP35x software
architecture
http://www.ti.com/omap35x
Applications
GUI
App Framework
2D/3D APIs
GFX Driver
Multimedia
Framework
Optional
DRM
Codec Engine and Link
Codec Engine
Linux Kernel / WinCE
& Power Management
GFX
ARM
audio video image
FC
BIOS
video image audio video image audio
C64x+ DSP and Video Acceleration
Accessing the C64x™+ DSP

OMAP/DaVinci “Dummies Book”
http://www.ti.com/dummiesbook

DSP/BIOS™ Link source available
http://tiexpressdsp.com
 Provides code loading and data passing
 Kernel portions licensed as GPL

DSP/BIOS RTOS and components
http://tiexpressdsp.com
 Enables sharing of the DSP as a resource

Free TI DSP compiler
https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/index.html
 Non-commercial use

Full support in Code Composer Studio
http://www.ti.com/expressdsp
The Beagle Board
community


Support for this board is provided through an
active community of hobbyists and developers
Being very open enables developers to share
 Keeps costs low
 Enables more people to participate




24/7 access to fellow developers
http://BeagleBoard.org/discuss
Ask your questions before you buy…
Participate and enjoy!
Participating in the
community

Joining the herd of cats
http://lwn.net/talks/elc2007

Building Community for your open
source project
http://www.eclipsecon.org/2006/Sub.do?id=268

Video of Greg Kroah-Hartman on the
Linux kernel
http://www.linuxelectrons.com/news/linux/16774/greg-kroahhartman-linux-kernel

Sending kernel patches upstream
http://wiki.omap.com/index.php?title=Patch_upstream_sending
Summary



Open source is very diverse and
OMAP35x supports that diversity
Beagle Board enables new
possibilities for open collaboration
Enjoy programming again!
Thank you!



jdk@ti.com
jkridner@beagleboard.org
http://beagleboard.org/chat
 IRC nickname: jkridner
BeagleBoard
Hardware
Topics Covered





Overview
Features
Hardware Support
Upcoming Revisions
Questions and discussion
Project Overview

Shipped First Board July 2008
 10,000 Boards shipped

Open Source Hardware
 Schematics, PCB, and BOM


Continual improvements
 Community input
 Balanced against cost
 Rev B4,B5,B6,B7,C2,C3
Community Supported
 http://beagleboard.org
 >2100 subscribers
 Beagleboard.org handles the RMAs
Overview (Cont)

Multiple Distributors
 DigiKey
 >1,000 per month
 Mouser
 SparkFun (Pending)
 IDA Systems (India)

Production
 Built in the US
 Plans for Asia


3” x 3”
Power
Features
 USB
 5V DC

Processor






OMAP3530
600MHz
DSP
3D Graphics
256MB DRAM
256MB FLASH
Features (cont)

Serial Port
 Header

Audio
 Stereo
 Input 3.5mm Jack
 Output 3.5mm Jack

Display port
 DVI-D
 LCD Header
 S-Video
Features (cont)


SD/MMC Connector
Expansion Header
 MMC
 UART
 SPI
 GPIO
 Power

Button
 Reset
 User

LEDs
 Power
 User (2)
 PMIC
Hardware Support Material



Schematics
 PDF, OrCAD
PCB
 Gerber, Allegro Database
System Reference Manual
 Block Diagram
 Circuit descriptions
 Schematic

Debug SectionBOM
 Excel

Open Source Hardware
Upcoming Revisions


C4
 Production version of the OMAP3530
 OMAP3530DCBB
 No SW Impact
 Limited number of units planned
C5
 USB Host Issue Fix
 Minor PCB change
 No Impact on SW

Rev D?/2.0
 Q2 2010
 Price?
 Adding good stuff
Questions and Discussion?
Download