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