Beagle board101 esc-boston-2009b


Published on

Beagle Board presentation

  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Overall message: Empowerment You can push patches back Non-schedule driven development Solve your customer’s problems Benefits You might save other customers’ problems You might get fame and glory Positioning of community development Most benefit to customers on the bleeding edge
  • Linux upstream BYOP and Entry-level cost: Is… Inexpensive as possible Deferring some costs to the user (ex. LCD), and A give-away to key developers Is Not… Subsidizing the board (Price: $149+shipping), Subsidizing the peripherals, or Free for everyone who contributes Because… We can build more boards if they cost less So we will… Keep the cost down by limiting the board layers Include only interfaces to useful peripherals ARM Cortex-A8: Is… Capable of running real applications, Using standard busses for expansion, and A subset of other OMAP3 EVMs Is Not… The most complete OMAP3 development platform, An all-purpose expansion solution, or A target for complex kernel builds Because… Serious customers shouldn’t mind paying $1000, It keeps the kernel and debug relatively simple, and It allows applications to be ported up to other EVMs So we will… Include support for an external monitor, MMC/SD, and USB Not add an LCD or features unsupported on other EVMs Graphics and DSP/Video accelerated, Linux port, and Environment: Is… OMAP3530 based (ARM Cortex-A8/Neon, 2D/3D, C64x+) Interesting for home applications Is Not… OMAP3503, 3515, or 3525 based (subsets of processors) A consumer electronics product Because… Stickiness comes from using the ARM+DSP architecture Open source developers may help simplify DSP programming We don’t want to compete with Nokia or Neuros So we will… Begin with select partners under NDA, and Wait to publicly announce until after the TI OMAP3530 EVM is announced Not target it for any specific end-application (“browser” and “computer” are generic roles) GOALS Leverage community to develop feature-rich robust open source code base on OMAP3530 1,000 external developers 50 major internal/external contributors 10 commercial interests started 10 software IP offerings pushed upstream Phase 1 “Close Friends” Baseline software (kernel, bootloader, …) and website CES demonstrations created Phase 2 “100 OMAP-motivated Developers” Baseline applications and “buzz” Launched at TIDC with targeted individuals and partners Phase 3 “1,000 OSS-motivated Developers” Reach open source and web developers Press release in May before summer “blackout” Phase 4 “10,000 Students and Partners” Educational and programming contest programs created API and demonstration applications with partners released
  • Let’s take a look at an example application – a software radio. A complete SDR system using Beagle is using the on board DSP, software and stereo out and a microphone to communicate over radio waves. Here is more of a HW oriented project. The USRP (universal software radio peripheral – FPGA based board for interfacing to different antennas for SDR.
  • Some typical standard PC like peripherals and connectors that are useful with BeagleBoard, and available from Digi-Key, include: A 5V power supply (T450-P5P-ND) , Which connects into the option barrel power connector for power to free the USB port for use as a host A Null-modem serial cable (AE9879-ND), Which is useful for bootloader and boot console I/O A HDMI-to-DVI-D cable (AE10260-ND), Which enables connection to digital monitors via DVI-D And a USB hub (DA-70227-ND), Which is useful for adding USB peripherals Also, a serial adapter to convert from IDC10 to DB9 may be needed for a serial console. To really get the technical scoop on a fresh basis, tap into the Links for hardware specifications and peripherals at And for RSS feed of updates on newly validated peripherals working with BeagleBoard, tap into
  • Now let’s highlight the benefits to you of the low power consumption of BeagleBoard. Low power means NO FANS are needed, which means Silent operation….you can use it in your media center without annoying fan noise. Low power means USB cable power, such that you can take BeagleBoard with you on the road with your laptop or a cell phone charger. NO additional power supply needed. Low power means no heat sinks and smaller size and lower cost board. Or, if you choose, Alternate power means you can use the USB Host for expansion. The alternate power can even be derived from USB!
  • The first thing to do once you get BeagleBoard is to verify that the hardware is operating correctly. Only basic software is provided on BeagleBoard, as most of the software is intended to be downloaded from or developed in conjunction with the technical community at Find the links to the diagnostics code and step by step instructions for beagleboard at Many links to other software can be found via reference from
  • Is… Intended to unite multiple audiences Linux hackers/experts and open source zealots Web application developers ARM embedded programmers and integrators DSP programmers and theorists Students and educators Is Not… Just for kernel developers Because… A lot more open source content can leverage OMAP Rich applications will demonstrate OMAP value So we will… Promote and discuss every Beagle application gStreamer, Firefox, Quake, Miro, Java, Helma, drivers, … Provide additional support packages from Tools, Graphics, Codecs, CE+Link, …
  • The Linux kernel repository ARM Linux The Linux Documentation Project Linux Device Drivers News Other
  • Make shorter. Version control: git, svn, … Compilers: task-native-sdk/gcc, perl, python, ruby, tcl Java: phoneme_advanced_foundation, cacao, jamvm Other VMs: mono UI kits: Sugar, SWT/Swing, Tcl/Tk, Gnome, … Dynamic repositories: OSGi (Java), some CPAN (Perl)
  • Finally, in closing, we want to remind you that is a community of developers and hobbyists and provide unpaid support for BeagleBoard users. Those that participate in and contribute to the technical community will likely get the most out of their BeagleBoard experience. The openness of enables developers, be they hobbyists or product developers, to share advances in code, and helps to keep keeps costs low and enables more people to participate. Remember, There is online 24/7 access to fellow developers at Go ahead, ask your questions before you buy… Participate and enjoy! And to buy your BagleBoard to get started, go to, click on the Digi-Key link to buy a BeagleBoard, and go for it!
  • Beagle board101 esc-boston-2009b

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