Title: Beagle Board 101
1Beagle Board 101
- Gerald Coley and Jason Kridner
- September 22, 2009
- Archived athttp//beagleboard.org/esc
2Agenda
- 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
3Whats 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
4Community development
Wikis, blogs, promotion of community activity
gt 2,000 participants and growing
Addressing open source communityneeds
Instant access to gt10 million lines of code
Open access to hardware documentation
5Fast, low power, flexible expansion
- OMAP3530 Processor
- 600MHz Cortex-A8
- NEONVFPv3
- 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 2.0 HS OTG
- I2C, I2S, SPI,MMC/SD
- JTAG
- Stereo in/out
- Alternate power
- RS-232 serial
3
- USB Powered
- 2W maximum consumption
- OMAP is small of that
- Many adapter options
- Car, wall, battery, solar,
Revision C has 256MB LPDDR RAM
6And more
- On-going collaboration at BeagleBoard.org
- Live chat via IRC for 24/7 community support
- Links to software projects to download
- Other Features
- 4 LEDs
- USR0
- USR1
- PMU_STAT
- PWR
- 2 buttons
- USER
- RESET
- 4 boot sources
- SD/MMC
- NAND flash
- USB
- Serial
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
7New for Revision C
3
- Peripheral I/O
- USB HS/host-only(in addition to existingUSB HS
on-the-go) - LCD expansion
256MB LPDDR RAM (up from 128MB)
8Desktop development
Note Beagle Boardcan be powered fromthe
alternate jack (as shown) or via USB
9Development on-the-go
10Expand with custom hardware
USRP
Stereo out
USB
Power
SD2GB
Photo by Philip Balister
10
11Typical 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
12Other design benefitshttp//beagleboard.org/hardw
are/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)
13Verifying 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
14Baseline 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
15BeagleBoard.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
16Community projects and distroshttp//www.flickr.c
om/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
- ARMv7NEON gcc tool-chain
- Maemo.org
- FFmpeg
- 720P-24 MPEG4 decode on ARMNEON only
- Beagle SDR (low-power software defined radio)
- Windows Embedded for BeagleBoard
- Handheld.orgs 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
17A handful of the thousands
Camera streaming application
Audio processing
Linux home fileserver
VLC VideoLAN
Fanless multimedia/internet terminal
Low-cost kiosk terminal
Wearable computer
Development platform for mobile VoIP phone
CMUcam-style applications
Low cost linux pc/gaming device
Smart home
Bluez and GUI using direct frame buffering
I'm interested to buy 2 to 10 rev-B boards (10
preferred ) congratulations for your project
and its spirit !
LCD picture frame
Linux thin client
Port xnu
Autonomous robot
Port OpenWrt
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 beagleboard now.
Port OpenMoko
Mobile DTV tuner and receiver
Port OKL4
Clutter Qt development
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 20 beagleboards
Bachelor thesis
I'd like my students to design and build hardware
and software to do for Linux what TimeCapsule
does for MacOS
Media centre
SDR platform
Speech recognition applications
Vehicle telematics
Linux/Firefox web add-on for the TV in the house
Project for masters degree
18Booting the Beagle Board
19Equipment 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
Powered USB hub
USBPower
DVI-DMonitor
SD
Desktop Computer Configuration
20First boot of 101 image
- Connect everything and then apply power
- Image boots up as root by default
- Applications?Settings?Login Setup
- Dont 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
21Default 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
22The five (5) boot phases
- ROM loads x-load (MLO)
- X-load loads u-boot
- U-boot reads commands
- Commands load kernel
- Kernel reads root file system
MLO 0x000000 U-boot 0x020000 Env
0x260000 Kernel 0x280000 File sys 0x680000
23(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
24(2) X-load loads u-boothttp//gitorious.org/proje
cts/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)
25(3) U-boot reads commandshttp//gitorious.org/pro
jects/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
26(4) Commands load kernel
- U-boot loads kernel and passes it bootargs
- Default environment is used when variables
havent 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 ltRAM addrgt executes kernel from RAM
27Default bootcmd for Rev Chttp//gitorious.org/pro
jects/beagleboard-default-u-boot/repos/jason-clone
/blobs/for-khasim-rebase/include/configs/omap3_bea
gle.h
- bootcmdif 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
28U-boot command summaryhttp//www.denx.de/wiki/DUL
G/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 ltvariablegt string sets environment
variable - autoscr ltRAM addrgt 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 ltRAM addrgt ltfilenamegt load a file
into RAM - NAND
- nand unlock enables writing to the NAND
- nandecc ltswhwgt configures ECC mode (OMAP3
specific) - nand erase ltstartgt ltlengthgt erases portion of
NAND flash - nand read ltRAM addrgt ltstartgt ltlengthgt reads
into RAM - nand write ltRAM addrgt ltstartgt ltlengthgt writes
from RAM - Serial
- loadb ltRAM addrgt reads into RAM via kermit file
send
29(5) Kernel reads root file system
- Kernel mounts root file system based on
bootargs - NAND (JFFS2) root/dev/mtdblock4 rw
rootfstypejffs2 - RAMDISK root/dev/ram0 rw ramdisk_size32768
initrd0x81600000,32M - MMC/SD root/dev/mmcblk0p2 rw rootwait
- NFS root/dev/nfs rw nfsroot192.168.123.1/data/
target ip192.168.123.2255.255.255.0
nolock,rsize1024,wsize1024 rootdelay2
30Configuring the displayhttp//groups.google.com/g
roup/beagleboard/msg/4c64b2c614622053
- videoomapfb
- vram10M
- omap-dss.def_displcd
- omapfb.vram4M,3M,3M
- omapfb.video_mode1024x768MR-16_at_60
31Other bootargs
- nohzoff
- Power management
- mem88M
- Reserve memory
32Some simple tests
- Understanding the basics of Linux
33Getting 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/chapte
r/book/index.html) - http//kerneltrap.org
- The kernel GitWeb
- http//git.kernel.org/?plinux/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?plinux-2.6.git
- http//www.arm.linux.org.uk/
- http//www.sakoman.net/cgi-bin/gitweb.cgi
34Everything is a file http//free-electrons.com/do
c/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 gt /sys/class/leds/beagleboard\\usr0/
trigger - echo 1 gt /sys/class/leds/beagleboard\\usr0/bri
ghtness - echo 0 gt /sys/class/leds/beagleboard\\usr0/bri
ghtness - echo heartbeat gt /sys/class/leds/beagleboard\\
usr0/trigger
35Read eventshttp//git.kernel.org/?plinux/kernel/
git/torvalds/linux-2.6.gitablobfDocumentation/
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
36Access monitor EDID
- cd /sys/bus ls cd
- cat /sys/bus/i2c/devices/3-0050/eeprom
- i2cdump -y 0x3 0x50 b
- decode-edid
- fbset
37USB OTG and EHCI
- cd /sys/bus/usb/devices
- ls
- cat usb1/speed
- cat usb1/1-2/1-2.2/manufacturer
- cd
- lsusb
38Networking
- 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
39Writing our own boot script
40Build u-boot and mkimage
- cd /u-boot-omap3
- make omap3_beagle_config
- make
41Build 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
42Edit 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
43Trying 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
44Creating a ramdisk.gz
- dd if/dev/zero oframdisk bs1k count32768
- mkfs.ext2 ramdisk
- mount -o loop ramdisk /mnt
- tar -xvjf fs.tar.bz2 -C /mnt
- Other methods to copy may be fine
- umount /mnt
- gzip ramdisk
45Native, managed, and web-based UI code development
46Native 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
47Managed 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
48Web-based UI developmenthttp//www.programmablewe
b.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
49Web-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
- rtPackages.java.lang.Runtime.getRuntime()
rt.exec() - new Packages.java.io.File()
50Beagle web control demo
- beagle-web-control-demo used at ARM Developers
Conferencehttp//www.beagleboard.org/gitweb/?pbe
agle-web-control-demo.gitasummary - 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//localhost8080/demo/static/ARM_DevCon/slide
34.html - Turn LEDs on and off
51Collaboration tools
52Distributed version control
- GIT is differenteliminates 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/
53Post patch to OMAP community
- Readhttp//www.muru.com/linux/omap/README_OMAP_PA
TCHES - Post your patch to mailing listlinux-omap_at_vger.ke
rnel.org
54Chat, mail, forums, blogs, and wikis!
- All exist because they all solve different
problems - Chat allows you to know someones
listeninghttp//beagleboard.org/chat or beagle
on irc.freenode.net - Great for beginner questions and rapid
coordination - Mail allows you to reach almost
anyonehttp//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//com
munity.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
55Chat 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/
56E-mail regarding OMAP Linux
- http//BeagleBoard.org/discuss
- http//vger.kernel.org/vger-lists.htmllinux-omap
57Forums
58Blogs (RSS feeds)
- http//beagleboard.blogspot.com
59Wikis
- http//wiki.davincidsp.com
- http//tiexpressdsp.com
- http//elinux.org/BeagleBoard
60Registering 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 managers approval
- Use the tag beagleboard
- Lets explore http//code.google.com/p/beagleboar
d
61Git
- 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?v4XpnKHJAok8
62Community Participation with Git
63Features 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
64How to build Git tool from source
Download GIT from http//git.or.cz/
How to build GIT ? gt tar xzvf
git-1.5.5.1.tar.gz gt cd ltto extracted
directorygt gt make How to install GIT ? gt make
prefixltmy directorygt install Example gt make
prefix/home/ubuntu/mygit/ install GIT tools
will be installed at /home/ubuntu/mygit/bin
(export this PATH to get the GIT commands)
65Commands used to pull trees
- Refer to Tonys 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/k
ernel/git/tmlind/linux-omap-2.6.git - Note Setup Proxy Server before cloning the
tree - Example gt export http_proxyhttp//my.proxy.he
report/ - To re-sync your branch with mainline
- git-pull
66What 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 ltoutput_dirgt
abcdef0123456789abcdef0123456789abcdef01 - Other methods
- - Create another local branch and take a normal
diff between the too. - - Use Quilt. (http//download.savannah.gnu.org/re
leases/quilt/)
67Everyday Githttp//www.kernel.org/pub/software/sc
m/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.
68Community participation with Open Embedded
69What is Open Embedded (OE)?http//www.openembedde
d.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
70What 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
71What does Ångstrøm provide today?http//beagleboa
rd.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/
72Installing Å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 consolettyS2,115200n8
ramdisk_size32768 root/dev/ram0 rw
rootfstypeext2 initrd0x81600000,32M - bootcmd mmcinitfatload mmc 0 80300000
uImagefatload 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 consolettyS2,115200n8 consoletty0
root/dev/mtdblock4 rw rootfstypejffs2 nohzoff
videoomapfbvram2M,vram4M - bootcmd nand read 80200000 280000 400000 bootm
80200000
73What 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
74OE 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
packages - helloworld, helloworld-dbg, helloworld-dev,
helloworld-doc, helloworld-local
75Top 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
76Alternate 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
77What 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
78Limitations 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
79Resources for more information and support
80 Some hardware optionshttp//wiki.omap.com/index.
php?titleOMAP3_Boards
- TI/Mistral OMAP35x EVM
- Nokia Internet Tablets
- LogicPD OMAPZoom
- Gumstix Overo
- Analogue Micro Cobra3530
- Cogent CSB740
Not to scale. Approximate size noted (in inches)
81Many tools optionshttp//focus.ti.com/dsp/docs/ds
pplatformscontenttp.tsp?sectionId2familyId1525
tabId2224
The many OS vendors for are OMAP35x not listed
here
Tool / Top features Debug Compile Other
TI Code Composer 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
Green Hills Low-level and app ARM and DSP Low-level ARM Trace
CodeSourcery Linux application debug Linux kernel/app ARM (ARMv7, NEON)
Additional third party information here
- Cortex-A8 uses ARMv7 instructions
82OS vendors for OMAP35x
- MontaVista
- RidgeRun
- TimeSys
- bSquare
- QNX
- Many, many more
83TI OMAP35x software architecturehttp//www.ti.com
/omap35x
Applications
GUI
App Framework
2D/3D APIs
MultimediaFramework
OptionalDRM
GFX Driver
Codec Engine and Link
Codec Engine
FC
BIOS
Linux Kernel / WinCE Power Management
audio
video
image
video
image
audio
video
image
audio
C64x DSP and Video Acceleration
ARM
GFX
84Accessing the C64x DSP
- OMAP/DaVinci Dummies Bookhttp//www.ti.com/dumm
iesbook - DSP/BIOS Link source availablehttp//tiexpressds
p.com - Provides code loading and data passing
- Kernel portions licensed as GPL
- DSP/BIOS RTOS and componentshttp//tiexpressdsp.c
om - Enables sharing of the DSP as a resource
- Free TI DSP compilerhttps//www-a.ti.com/download
s/sds_support/targetcontent/LinuxDspTools/index.ht
ml - Non-commercial use
- Full support in Code Composer Studiohttp//www.ti
.com/expressdsp
85The 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!
86Participating in the community
- Joining the herd of catshttp//lwn.net/talks/elc2
007 - Building Community for your open source
projecthttp//www.eclipsecon.org/2006/Sub.do?id2
68 - Video of Greg Kroah-Hartman on the Linux
kernelhttp//www.linuxelectrons.com/news/linux/16
774/greg-kroah-hartman-linux-kernel - Sending kernel patches upstreamhttp//wiki.omap.c
om/index.php?titlePatch_upstream_sending
87Summary
- Open source is very diverse and OMAP35x supports
that diversity - Beagle Board enables new possibilities for open
collaboration - Enjoy programming again!
88Thank you!
- jdk_at_ti.com
- jkridner_at_beagleboard.org
- http//beagleboard.org/chat
- IRC nickname jkridner
89BeagleBoard Hardware
90Topics Covered
- Overview
- Features
- Hardware Support
- Upcoming Revisions
- Questions and discussion
91Project 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
- gt2100 subscribers
- Beagleboard.org handles the RMAs
92Overview (Cont)
- Multiple Distributors
- DigiKey
- gt1,000 per month
- Mouser
- SparkFun (Pending)
- IDA Systems (India)
- Production
- Built in the US
- Plans for Asia
93Features
- 3 x 3
- Power
- USB
- 5V DC
- Processor
- OMAP3530
- 600MHz
- DSP
- 3D Graphics
- 256MB DRAM
- 256MB FLASH
94Features (cont)
- Serial Port
- Header
- Audio
- Stereo
- Input 3.5mm Jack
- Output 3.5mm Jack
- Display port
- DVI-D
- LCD Header
- S-Video
95Features (cont)
- SD/MMC Connector
- Expansion Header
- MMC
- UART
- SPI
- GPIO
- Power
- Button
- Reset
- User
- LEDs
- Power
- User (2)
- PMIC
96Hardware Support Material
- Schematics
- PDF, OrCAD
- PCB
- Gerber, Allegro Database
- System Reference Manual
- Block Diagram
- Circuit descriptions
- Schematic
- Debug SectionBOM
- Excel
- Open Source Hardware
97Upcoming 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
98Questions and Discussion?