Beagle board101 esc-boston-2009b

96
1 Beagle Board 101 Gerald Coley and Jason Kridner September 22, 2009 Archived at: http://beagleboard.org/esc

description

Beagle Board presentation

Transcript of Beagle board101 esc-boston-2009b

Page 1: Beagle board101 esc-boston-2009b

1

Beagle Board 101

Gerald Coley and Jason Kridner

September 22, 2009

Archived at:http://beagleboard.org/esc

Page 2: Beagle board101 esc-boston-2009b

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

Page 3: Beagle board101 esc-boston-2009b

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

Page 4: Beagle board101 esc-boston-2009b

$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

Page 5: Beagle board101 esc-boston-2009b

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

Page 6: Beagle board101 esc-boston-2009b

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

Page 7: Beagle board101 esc-boston-2009b

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

Page 8: Beagle board101 esc-boston-2009b

Desktop development

Note: Beagle Boardcan be powered fromthe alternate jack (as shown) or via USB

Stereo in SD

Power

DVI-D

USB

Stereo out

Page 9: Beagle board101 esc-boston-2009b

Development on-the-go

Power + IP

over USB

Serial

Port

Page 10: Beagle board101 esc-boston-2009b

10

Photo by Philip Balister

USRP

USB

SD2GB

Stereo out

Power

Expand with custom hardware

Page 11: Beagle board101 esc-boston-2009b

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

Page 12: Beagle board101 esc-boston-2009b

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)

Page 13: Beagle board101 esc-boston-2009b

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

Page 14: Beagle board101 esc-boston-2009b

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

Page 15: Beagle board101 esc-boston-2009b

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

Page 16: Beagle board101 esc-boston-2009b

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

Page 17: Beagle board101 esc-boston-2009b

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…

Page 18: Beagle board101 esc-boston-2009b

Booting the Beagle Board

Page 19: Beagle board101 esc-boston-2009b

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

Page 20: Beagle board101 esc-boston-2009b

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 &

Page 21: Beagle board101 esc-boston-2009b

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

Page 22: Beagle board101 esc-boston-2009b

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

Page 23: Beagle board101 esc-boston-2009b

(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

Page 24: Beagle board101 esc-boston-2009b

(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

Page 25: Beagle board101 esc-boston-2009b

(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

Page 26: Beagle board101 esc-boston-2009b

(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

Page 27: Beagle board101 esc-boston-2009b

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

Page 28: Beagle board101 esc-boston-2009b

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

Page 29: Beagle board101 esc-boston-2009b

(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

Page 30: Beagle board101 esc-boston-2009b

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

Page 31: Beagle board101 esc-boston-2009b

Other bootargs

nohz=off Power management

mem=88M Reserve memory

31

Page 32: Beagle board101 esc-boston-2009b

Understanding the basics of Linux

Some simple tests

Page 33: Beagle board101 esc-boston-2009b

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

Page 34: Beagle board101 esc-boston-2009b

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

Page 35: Beagle board101 esc-boston-2009b

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

Page 36: Beagle board101 esc-boston-2009b

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

Page 37: Beagle board101 esc-boston-2009b

USB OTG and EHCI

cd /sys/bus/usb/devices ls cat usb1/speed cat usb1/1-2/1-2.2/manufacturer cd lsusb

37

Page 38: Beagle board101 esc-boston-2009b

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

Page 39: Beagle board101 esc-boston-2009b

Writing our own boot script

39

Page 40: Beagle board101 esc-boston-2009b

Build u-boot and mkimage

cd ~/u-boot-omap3 make omap3_beagle_config make

40

Page 41: Beagle board101 esc-boston-2009b

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

Page 42: Beagle board101 esc-boston-2009b

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

Page 43: Beagle board101 esc-boston-2009b

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

Page 44: Beagle board101 esc-boston-2009b

Native, managed, and web-based UI code development

Page 45: Beagle board101 esc-boston-2009b

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

Page 46: Beagle board101 esc-boston-2009b

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

Page 47: Beagle board101 esc-boston-2009b

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

Page 48: Beagle board101 esc-boston-2009b

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(“…”)

Page 49: Beagle board101 esc-boston-2009b

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

Page 50: Beagle board101 esc-boston-2009b

Collaboration tools

Page 51: Beagle board101 esc-boston-2009b

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/

Page 52: Beagle board101 esc-boston-2009b

Post patch to OMAP community

Readhttp://www.muru.com/linux/omap/README_OMAP_PATCHES

Post your patch to mailing [email protected]

Page 53: Beagle board101 esc-boston-2009b

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

Page 54: Beagle board101 esc-boston-2009b

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/

Page 55: Beagle board101 esc-boston-2009b

E-mail regarding OMAP Linux

http://BeagleBoard.org/discuss http://vger.kernel.org/vger-lists.html#linux-omap

Page 56: Beagle board101 esc-boston-2009b

Forums

http://community.ti.com

Page 57: Beagle board101 esc-boston-2009b

Blogs (RSS feeds) http://beagleboard.blogspot.com

Page 58: Beagle board101 esc-boston-2009b

Wikis http://wiki.davincidsp.com http://tiexpressdsp.com http://elinux.org/BeagleBoard

Page 59: Beagle board101 esc-boston-2009b

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

Page 60: Beagle board101 esc-boston-2009b

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

Page 61: Beagle board101 esc-boston-2009b

Community Participation with Git

Page 62: Beagle board101 esc-boston-2009b

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

Page 63: Beagle board101 esc-boston-2009b

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

Page 64: Beagle board101 esc-boston-2009b

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

Page 65: Beagle board101 esc-boston-2009b

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.

Page 66: Beagle board101 esc-boston-2009b

Community participation with Open Embedded

Page 67: Beagle board101 esc-boston-2009b

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

Page 68: Beagle board101 esc-boston-2009b

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

Page 69: Beagle board101 esc-boston-2009b

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/

Page 70: Beagle board101 esc-boston-2009b

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

Page 71: Beagle board101 esc-boston-2009b

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

Page 72: Beagle board101 esc-boston-2009b

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

Page 73: Beagle board101 esc-boston-2009b

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

Page 74: Beagle board101 esc-boston-2009b

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

Page 75: Beagle board101 esc-boston-2009b

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

Page 76: Beagle board101 esc-boston-2009b

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

Page 77: Beagle board101 esc-boston-2009b

Resources for more information and support

79

Page 78: Beagle board101 esc-boston-2009b

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”

Page 79: Beagle board101 esc-boston-2009b

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

Page 80: Beagle board101 esc-boston-2009b

OS vendors for OMAP35x

MontaVista RidgeRun TimeSys bSquare QNX Many, many more

82

Page 81: Beagle board101 esc-boston-2009b

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

Page 82: Beagle board101 esc-boston-2009b

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

Page 83: Beagle board101 esc-boston-2009b

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!

Page 84: Beagle board101 esc-boston-2009b

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

Page 85: Beagle board101 esc-boston-2009b

Summary

Open source is very diverse and OMAP35x supports that diversity

Beagle Board enables new possibilities for open collaboration

Enjoy programming again!

Page 86: Beagle board101 esc-boston-2009b

Thank you!

[email protected] [email protected] http://beagleboard.org/chat

IRC nickname: jkridner

Page 87: Beagle board101 esc-boston-2009b

BeagleBoard Hardware

Page 88: Beagle board101 esc-boston-2009b

Topics Covered

Overview Features Hardware Support Upcoming Revisions Questions and discussion

Page 89: Beagle board101 esc-boston-2009b

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

Page 90: Beagle board101 esc-boston-2009b

Overview (Cont) Multiple Distributors

DigiKey >1,000 per month

Mouser SparkFun (Pending) IDA Systems (India)

Production Built in the US Plans for Asia

Page 91: Beagle board101 esc-boston-2009b

Features 3” x 3” Power

USB 5V DC

Processor OMAP3530 600MHz DSP 3D Graphics

256MB DRAM 256MB FLASH

Page 92: Beagle board101 esc-boston-2009b

Features (cont) Serial Port

Header Audio

Stereo Input 3.5mm Jack Output 3.5mm Jack

Display port DVI-D LCD Header S-Video

Page 93: Beagle board101 esc-boston-2009b

Features (cont) SD/MMC Connector Expansion Header

MMC UART SPI GPIO Power

Button Reset User

LEDs Power User (2) PMIC

Page 94: Beagle board101 esc-boston-2009b

Hardware Support Material Schematics

PDF, OrCAD PCB

Gerber, Allegro Database System Reference Manual

Block Diagram Circuit descriptions Schematic

Debug SectionBOM Excel

Open Source Hardware

Page 95: Beagle board101 esc-boston-2009b

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

Page 96: Beagle board101 esc-boston-2009b

Questions and Discussion?