Beagle board101 esc-boston-2009b
-
Upload
michael-hallak-stamler -
Category
Documents
-
view
9.401 -
download
3
description
Transcript of Beagle board101 esc-boston-2009b
1
Beagle Board 101
Gerald Coley and Jason Kridner
September 22, 2009
Archived at:http://beagleboard.org/esc
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
$149> 2,000 participants
and growing
Open access to hardware
documentation
Wikis, blogs, promotion of community
activity
Freesoftware
Freedom to innovate
Personally affordable
Active & technical
community
Opportunity to tinker and
learn
Instant access to >10 million lines
of code
Addressing open source community
needs
Community development
USB Powered 2W maximum consumption
OMAP is small % of that Many adapter options
Car, wall, battery, solar, …
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
Fast, low power, flexible expansion
3”
* Revision C has 256MB LPDDR RAM
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
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
3”
On-going collaboration at BeagleBoard.org Live chat via IRC for 24/7 community support Links to software projects to downloadAnd more…
Other Features 4 LEDs
USR0 USR1 PMU_STAT PWR
2 buttons USER RESET 4 boot
sources SD/MMC NAND flash USB Serial
3”
New for Revision C
256MB LPDDR RAM(up from 128MB)
Peripheral I/O USB HS/host-only
(in addition to existing
USB HS on-the-go)
LCD expansion
Desktop development
Note: Beagle Boardcan be powered fromthe alternate jack (as shown) or via USB
Stereo in SD
Power
DVI-D
USB
Stereo out
Development on-the-go
Power + IP
over USB
Serial
Port
10
Photo by Philip Balister
USRP
USB
SD2GB
Stereo out
Power
Expand with custom hardware
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 benefitshttp://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 softwarehttp://beagleboard.org/resources
Hardware verification procedure (http://beagleboard.org.support) Code images, procedure, and sources are provided to verify the board functionality
GPL ARM GNU compiler collection Code Sourcery version 2007q3 is one known-good option Runs on Linux/Windows and generates ARMv7/Thumb2
Free C6000 compiler for non-commercial use x86-Linux hosted
GPL x-load version 1.4.2 GPL u-boot version 2009.01
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 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
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
BeagleBoard.org
Community projects and distroshttp://www.flickr.com/groups/beagleboard/pool/ and http://beagleboad.org/project
Ångström Linux Distribution Firefox 3.0, Epiphany-WebKit, etc. AbiWord, GIMP, etc. 3D graphics and DSP codec integration ARMv7+NEON gcc tool-chain
Maemo.org FFmpeg
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 Several more and growing…
Kernel
Windowing System
CreativityTools
OfficeSuite
Browser
Vehicle telematics
Linux/Firefox web add-on for the TV in the house
SDR platform Speech recognition applications
Media centre Bachelor
thesis
Home security cameras and powered-curtains
Powerful nas with media server and transcoding capabilities
Clutter & Qt development
Port OKL4Port
OpenMoko
No idea yet
Mobile DTV tuner and receiver
Small linux home fileserver
Processing images and pattern recognition
Home monitoring
Networked digital signage
Port Google-Android Port OpenWrtAutonomous robot Port xnuLCD picture frameLinux thin client
Bluez and GUI using direct frame buffering
Low cost linux pc/gaming device
Wearable computer
VLC VideoLANCamera streaming
application Audio processing Linux home fileserver
Fanless multimedia/internet terminal
Low-cost kiosk terminal
I'm interested to buy 2 to 10 rev-B boards
(10 preferred ;) congratulations for your
project and its spirit !
Development platform for mobile VoIP phone
I'm not interested in waiting for the platform to mature any
longer. Let me know how to get hold of a beagleboard now.
CMUcam-style applications Smart home
After discussing with my dev guys,
I confirm I would like to order
20 beagleboards
Autonomous vehicles
Project for masters degree
I'd like my students to design and build hardware and
software to do for Linux what TimeCapsule does for MacOS
A handful of the thousands…
Booting the Beagle Board
Equipment at ESC Boston For you to keep
Beagle Board Rev. C3 SD card
Content for each class Serial cable
IDC10-to-DB9 adapter Null modem cable
Hub: Powered USB 2.0 HS
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
19
SD
USBPower DVI-D
Monitor
Powered USB hub
Desktop Computer Configuration
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?)
20
#opkg install font-misc-miscxterm -fn 10x20 &
Default boot behavior
21
Is USER pressed?
RESET
Is u-boot.bin on SD card?
Is env var set?
Poll USB, Serial, and SD before trying NAND
Run u-boot.bin from SD card, possibly ignoring environment
Execute commands stored in ‘bootcmd’ environment var
Execute default commands
The five (5) boot phases
1. ROM loads x-load (MLO)
2. X-load loads u-boot
3. U-boot reads commands
4. Commands load kernel
5. Kernel reads root file system
22
MLO: 0x000000U-boot: 0x020000Env: 0x260000Kernel: 0x280000File sys: 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) X-load loads u-boothttp://gitorious.org/projects/x-load-omap3
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 commandshttp://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 Chttp://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 summaryhttp://www.denx.de/wiki/DULG/Manual
Basic commands 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
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 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 displayhttp://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
Understanding the basics of Linux
Some simple tests
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 eventshttp://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.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 web-based 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 developmenthttp://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’ Conferencehttp://www.beagleboard.org/gitweb/?p=beagle-web-control-demo.git;a=summary
cd If not root: sudo
./beagle-web-control-demo/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
Readhttp://www.muru.com/linux/omap/README_OMAP_PATCHES
Post your patch to mailing [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 organizedhttps://community.ti.com/forums/32.aspx (minimal activity to avoid disrupting community critical mass)
Blogs provide emphasis, filtering, and timelinesshttp://beagleboard.org/news and http://beagleboard.blogspot.com
Wikis enable inputs to become documentationhttp://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 projectshttp://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?
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.
Read more here: 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
Git supports rapid and convenient branching and merging Includes powerful tools for visualizing and navigating a non-linear development history
Distributed development 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 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 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 treesRefer 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• Save the file
To store the file in repository:$ git status $ git update-index arch/arm/plat-omap/myfile.c $ git commit -s
To generate patches using GIT tool:$ git format-patch -o <output_dir>
abcdef0123456789abcdef0123456789abcdef01
Other methods: - Create another local branch and take a normal diff between the too. - Use Quilt. (http://download.savannah.gnu.org/releases/quilt/)
00
11
Linux OMAPLinux OMAP
00
11
My-CloneMy-Clone
00
Linus Main LineLinus Main Line
TAG
TAG
TAG
Everyday Githttp://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 NANDhttp://beagleboard.org/demo/angstrom
SD card FAT formatted (default, optionally bootable) boot/kernel/ramdisk to get into OE console
Can store kernel (and ramdisk) in flash Copy of tar.bz2 of full file system image desired
Boot console image 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
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
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 Meta-data
Package recipes and classes A number of distribution definitions A number of platform definitions
A version control repository of the meta-data Uses Monotone for SCM (moving to Git) Maintains dev and (recently) stable branches
OE reference: typical processing Satisfy all dependencies Build (default command)
Fetch get the source code Unpack extract the source code Patch apply patches (local or
fetched) Configure run any configuration
steps Compile do actual compilation Stage install locally for use by
other packages Install install product files to
temporary directory Package take installed files and
place into packageshelloworld, 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 optionshttp://wiki.omap.com/index.php?title=OMAP3_Boards
TI/Mistral OMAP35x EVMNokia Internet TabletsLogicPD OMAPZoomGumstix OveroAnalogue & Micro Cobra3530Cogent CSB740 LogicPD OMAP34x Mobile
Development Kit3.8” x 6.3” x .95”
LogicPD OMAP35x Dev. Kit / Medical EVM5.75” x 6.25”
OMAP35x EVM4.25” x 7”
Not to scale. Approximate size noted (in inches)
OMAP34x SDP8.5” x 11”Beagle
Board3” x 3”
Gumstix Overo
Mini Board3” x 3”
Many tools optionshttp://focus.ti.com/dsp/docs/dspplatformscontenttp.tsp?sectionId=2&familyId=1525&tabId=2224
Tool / Top features Debug Compile Other
TI CodeComposer
Studio
Low-level ARM and DSP
Low-level ARM (ARMv7) and DSP (NEON roadmap)
Power-aware debug
ARM RealView Low-level ARM Application-level ARM (ARMv7, NEON)
Lauterbach Low-level and app ARM and DSP
None Extensive trace
GreenHills
Low-level and app ARM and DSP
Low-level ARM Trace
CodeSourcery Linux application debug
Linux kernel/app ARM (ARMv7, NEON)
•Cortex-A8 uses ARMv7 instructions Additional third party information: here
The many OS vendors for are OMAP35x not listed here
OS vendors for OMAP35x
MontaVista RidgeRun TimeSys bSquare QNX Many, many more
82
GFX ARM
Linux Kernel / WinCE& Power Management audio
GFX Driver
2D/3D APIs
C64x+ DSP and Video Acceleration
Applications
video image audio
Codec Engine
Codec Engine and Link
video image audio
FC BIOS
TI OMAP35x software architecturehttp://www.ti.com/omap35x
video image
MultimediaFramework
Optional
DRM
App Framework
GUI
Accessing the C64x™+ DSP
OMAP/DaVinci “Dummies Book”http://www.ti.com/dummiesbook
DSP/BIOS™ Link source availablehttp://tiexpressdsp.com
Provides code loading and data passing Kernel portions licensed as GPL
DSP/BIOS RTOS and componentshttp://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 projecthttp://www.eclipsecon.org/2006/Sub.do?id=268
Video of Greg Kroah-Hartman on the Linux kernelhttp://www.linuxelectrons.com/news/linux/16774/greg-kroah-hartman-linux-kernel
Sending kernel patches upstreamhttp://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!
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
Features 3” x 3” Power
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?