BeagleBoard101-esc-boston-2009b
Download
Report
Transcript BeagleBoard101-esc-boston-2009b
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
ApplicationsSettingsLogin 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: NANDUSBserialMMC/SD
Pressed: USBserialMMC/SDNAND
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
[email protected]
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!
[email protected]
[email protected]
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?