Rochester Institute of Technology BeagleBoard Workshop Gerald Coley gerald@beagleboard.org December 2nd , 2010 Agenda The Embedded Processor Evolution Introduction to the BeagleBoard ◦ Hands On #1 – Board Power-up, explore Desktop, In Linux, everything is a file ◦ Hands On #2 – Toggle LEDs, read switches, read I2C, and USB GUI building with Qt ◦ Hands On #3 – Toggle an LED from a GUI Getting help from peer developers Expanding the BeagleBoard Questions The Embedded Evolution The embedded world is changing ◦ QUIZ What has a 7” LCD, Touchscreen, BT, WIFI, Power management, and Sensors? Classical embedded processors can’t handle these new requirements Applications demand more capabilities ◦ ◦ ◦ ◦ ◦ Connectivity Application infrastructure and SW reuse On-demand performance Complex Power Management Time to market The new embedded world holds a wealth of opportunities ARM® is leading the way in the Embedded Evolution Find the ® right ARM Solution for you Comprehensive developer ecosystem 32-bit ARM Cortex™-M3 MCUs ® TMS570 Stellaris ARM Cortex-R4™ ARM Cortex-M3 ARM Cortex-A8 & ARM9™ MPUs Sitara™ ARM Cortex-A8 & ARM9 DSP DSP+ARM C6000™ Integra™ DaVinci™ Digital Media processors Up to 250 DMIPS/ 160 MHz Up to 80 MHz 375MHz to >1GHz 2 MB Flash, 160 KB RAM Flash 8 KB to 256 KB USB, ENET MAC+PHY CAN, ADC, PWM, SPI Connectivity,Security, Motion Control, HMI, Industrial Automation Cache, RAM, ROM 300MHz to >1Ghz +Accelerator Cache RAM, ROM USB, CAN, SATA, SPI, PCIe, EMAC USB, ENET, PCIe, SATA, SPI Industrial automation, POS & portable data terminals $1.00 to $8.00 $5.00 to $25.00 Floating/Fixed Point Video, Audio, Voice, Security, Conferencing $5.00 to $200.00 FPU, ECC, Timer/PWM Co-Proc, 12bit ADCs, CAN, EMIF, LIN, SPI, Flexray Transportation, Motor Control, Certified for use in safety critical (SIL3) systems $7.00 to $18.00 Responsive design support Development tools Software support 32-bit ARM MCU for Safety-Critical Applications ARM® Cortex™-A8 : Block Level Support for ARMv7 Added new support for Thumb-2, Thumb2EE(,Jazelle-RCT) and NEON Advanced Dynamic Branch Prediction 95% accurate across industry benchmarks Integrated L2 Cache 256KB (low latency/high BW i/f w/L1) Optimizes access to larger data sets and minimizes bus traffic Dual issue In-Order Superscalar Pipeline 2.0 DMIPS/MHz High speed Level 1 Caches (16KB) Dual 32 entry memory translation TLB Integrated NEON coprocessor for media and signal processing 2 to 4x performance improvement Integer and Floating Point support VFPv3-IEEE754 compliant (single and double precision) floating point support. Community Development > 3,200 participants and growing Personally affordable $125/$149 Active & technical community Freedom to innovate ® Open access to hardware documentation Opportunity to tinker and learn Wikis, blogs/RSS, promotion of community activity Android, Ubuntu, Angstrom, FFmpeg, MeeGo, Symbian, … Free software Why such an active community? Affordable Freedom to tinker at all levels Lots of open starting points Large and experienced community Open ecosystem provides real options Low cost for the same core processing as used in more expensive, yet popular, commercial products Focus on open source, open hardware and DIY >25,000 boards sold exclusively in small quantities All design, test, web, etc. materials shared Teaching tool for high-level OS on embedded Ubuntu, Debian, Angstrom, Gentoo, WinCE, Symbian, QNX, and many others The BeagleBoard community shares Over 150 registered projects on BeagleBoard.org Part of the Google Summer of Code with 6 projects to improve Linux, XBMC, and other open source Average of around 5 articles or blog posts per day Over 3,200 English-language mailing list subscribers with additional dedicated mailing lists in Japanese and Portuguese and numerous project oriented mailing lists in dozens of languages Hundreds of followers on each of Facebook, Twitter, and LinkedIn Rich ecosystem using the design materials Compatible or enhanced system-on-module/computer-on-module designs See http://beagleboard.org/resources Innovative mobile computers (TouchBook) Radios (BeagleBrick) Modular rapid prototyping development systems (Bug2.0) And many add-ons… BeagleBoard C4…$125 OMAP3530 Processor 720MHz 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 256MB LPDDR RAM 256MB NAND flash 3.1” 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, … 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.1” 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 BeagleBoard–xM xM means Extra MHz and Extra MB $149 2,000 Dhrystone MIPS performance with ARM® Cortex™-A8 512MB POP memory enabling ◦ Native builds of Ubuntu and other distros ◦ More multitasking with complex apps like Firefox or OpenOffice.org Robust expansion with more direct connectivity without external hubs; onboard Ethernet and five USB 2.0 ports USB-powered board via low power processor integration Active and growing open source community at beagleboard.org 10 BeagleBoard-xM details Laptop-like performance DM3730 processor (AM37xcompatibile) 1GHz superscaler ARM® Cortex ™-A8 More than 2,000 Dhrystone MIPS Up to 20 Million polygons per sec graphics 512KB L2$ HD video capable C64x+™ DSP core POP Memory 512MB LPDDR RAM 3.25” DM3730 LCD Expansion I2C, I2S, SPI, MMC/SD Expansion DVI-D Camera Header S-Video JTAG 4-port USB 2.0 Hub** Stereo Out Stereo In 10/100 Ethernet USB 2.0 HS OTG Alternate Power RS-232 Serial microSD Slot Use your BeagleBoard like a desktop SD USB Stereo in Stereo out DVI-D Power Take your BeagleBoard anywhere & crank code on the go Serial Port Power over USB Hands On #1 ….Boot your board 14 Hands On #1 …Connect the Display Display Connector Connect cable to the Board Confirm cable is connected to monitor Be careful when connecting a TV. Most of the time the default timing is not compatible. Hands On #1 …Connect the Keyboard & Mouse Keyboard Mouse Connect the Keyboard to one of the USB ports Connect the Mouse to one of the USB ports Hands On #1…Insert the SD Card Insert the SD card printing side up Be careful not to exert upward pressure on the card when inserting it. Hands On #1…Optional Stuff...Debug Port Connect the serial cable here -Requires a USB to Serial Cable or a straight cable -Laptop or a PC -Terminal SW set to 115K,8,n,1, no handshaking Hands On #1…Connect the Power Connect 5V supply here Be careful doing this and make sure you have 5V supply and the correct polarity of power supply. Hands On #1…Board Powers Up 1) Power LED comes on 2) User0/1 LEDs comes on 3) User0 LED blinks 4) User1 LED flashes Hands On #1…Board Boots Angstrom Screen Mouse pointer Login Screen ◦ Do nothing White screen and Mouse pointer Matrix Application Launcher Hands On #1…TI Matrix GUI Web browser with HTML code served up from the board Written in Qt Includes ability to launch apps click 3D Graphics click Chameleon close window select Main select Exit Hands On #1…Angstrom Gnome Desktop Just one of the desktop options as part of the Angstrom Distribution Menu bar at top gives list of installed programs Add other applications using ‘opkg’ select Applications Scroll down the Menu close window Hands On #1…System Monitor Monitors the system performance Displays CPU loading select Applications select System Tools click System Monitor click Resources Tab close Window Hands On #1…Frequency Scaling Sets System Speed click 1GHz Icon click 600MHz click 600 MHz Icon click 1GHz Hands On #1…Multimedia Player GNOME Multimedia player Comes standard in Desktop Image Big Buck Bunny is an open source movie from the Peach Open Movie Project. double Click BigBuck Icon close Window Hands On #1…Linux Command Line Allows direct access to the Linux Kernel Enter Linux Commands Can also use an external debug port over the serial port select Applications select Accessories select Terminal type ls -al In Linux, everything is a file Learning about Linux through SYSFS Thanks to Bill Gatliff The file interface abstraction What can we do with files? ◦ open, read, write, close, delete ◦ What is an ‘ioctl’? Gets you to the HW! What is a virtual file system? ◦ Looks like a file, but executes code in the driver ◦ Not really storing anything to media ◦ A bit like a “ram disk” What is SYSFS? Virtual file system that exposes drivers to userspace mount ◦ sysfs on /sys type sysfs (rw,realtime) /sys/devices driver hierarchy /sys/bus symbolic links to bus owners /sys/class common interfaces /sys/block block interface Let’s go thru some examples… Hands On #2…..Test USR0 and USR1 LED select Applications select Terminal type testled Cycles through a short LED test type cd /sys/class/leds; ls type ls "beagleboard::usr0" type cat "beagleboard::usr0/trigger“ USR0 LED will Turn on and off. 31 Hands On #2…Reading the User Button type cd /sys/class/gpio; ls type echo “4“ > export; ls type echo "in“ > gpio4/direction type cat gpio4/value type readgpio 4 press User Button press <ctrl> C to stop 32 Hands On #2…Reading Events When the mouse is moved, events are triggered and sent via the USB port to the processor type opkg install evtest press <ctrl> C to stop type evtest /dev/input/event3 move the Mouse press <ctrl> C to stop 33 Hands On #2…Reading I2C Bus Read the EEPROM inside the display that provides information about that display. type cd /sys/bus; ls type cd i2c/devices; ls type echo "eeprom 0x50” > i2c-3/new device; ls type i2cdump -y 0x3 0x50 b type fbset 34 Hands On #2…Reading USB Ports •Read what USB devices are connected to the processor type cd /sys/bus/usb/devices; ls type cat usb1/speed type cat usb?/manufacturer type lsusb close Terminal Window 35 GUI building with Qt Qt C++ framework is just one option for creating graphical applications, but it is fast, flexible, crossplatform and well-supported by an open source community Thanks to Gregg Lebovitz of ICS Qt architecture Qt Creator http://qt.nokia.com Integrated development environment ◦ Runs on Windows, Mac, or Linux ◦ Designer for your GUIs ◦ C++ editor and debugger Build your GUI on your PC, then move it over to the BeagleBoard to add I/O, etc. ◦ Angstrom Linux distribution has the compiler and libraries ready to build Qt apps natively on your BeagleBoard Hands On #3…Qt Demos Lots of different GUI tools Many other programming tools, like networking, IPC, 3D, database, … open Terminal Program type qtdemo close Window Hands On #3 – Button & LED GUI close Terminal Program open Labs from desktop type cd lab2; ls –al type gedit ./lab2.cpp & close GEDIT type qmake2 && make type ./lab2 click Push me! Watch the Flashing LED on the board close the application Getting help from your peers How to work in the Linux community Baseline tools and software http://beagleboard.org/resources Hardware verification procedure (http://beagleboard.org/support) ◦ GPL x-load, u-boot, Linux kernel, and demo distro for validation ◦ Code images, procedure, and sources are provided to verify the board functionality GPL ARM GNU compiler collection (GCC) ◦ Code Sourcery version 2009q1 is the latest supported by TI Runs on Linux/Windows and generates ARMv7/Thumb2 ◦ Angstrom version is utilized in ESC training and demo image on xM Access to C6000 with compilers and open source software ◦ Free TI C6000 compiler for non-commercial use x86-Linux hosted (ARM hosted version in evaluation) ◦ GPL GCC compiler in progress (http://linux-c6x.org) ◦ C6Run (DSPEasy) project to simplify development model ◦ BSD/GPL DSP/Link interface software Free 3D graphics libraries (OpenGLES 2.0) Free production audio/video codecs for the DSP How to ask for help http://catb.org/~esr/faqs/smart-questions.html Know the on-line resources Know the on-line community Know the manual Listen to the answers Pay for performance Share the answers you find 43 Order of resources 1. Search beagleboard.org, eLinux.org, the mailing list archive, and IRC logs 2. Read and search BBSRM_latest.pdf 3. Check the http://beagleboard.org/faq link 4. Search the web 5. Try something Gives you some perspective on what to ask Ask on IRC and be patient/polite 6. Doesn’t disrupt everyone Mailing list 7. Individual developers will go away if load isn’t shared 44 The community perspective Earn respect by saying what you’ve done and how you’ve tried to find an answer ◦ Where did you search? ◦ What did you try on the board? You aren’t entitled to an answer ◦ Show that you are willing to work for it and the community will feel you are a part of it ◦ Impatience implies that your time is more valuable than others in the community 45 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://webchat.freenode.net ◦ ◦ ◦ ◦ ◦ #beagle: discussion of the BeagleBoard #gst-ti: discussion of GStreamer with TI DSP components #ubuntu-arm: discussion of Ubuntu on ARM processors #rowboat: discussion of Android on OMAP & Sitara devices #linux-omap: discussion of OMAP Linux kernel IRC clients ◦ http://beagleboard.org/chat ◦ http://pidgin.im ◦ http://www.mirc.com /List_of_IRC_clients ◦ http://www.ircreviews.org/clients ◦ http://en.wikipedia.org/wiki OSs and Distributions Angstrom and Open Embedded http://www.angstrom-distribution.org/demo/beagleboard Angstrom is what you are running Ubuntu https://wiki.ubuntu.com/ARM/Beagle Most popular Linux distribution Has support for the BeagleBoard (Netbook, server, and network installers) Android http://arowboat.org At least half-a-dozen companies provide commercial support for Android on the BeagleBoard;Rowboat is the one endorsed by TI MeeGo http://wiki.meego.com/ARM/Meego_on_Beagleboard_from_scratch The combination of Moblin and Maemo 48 OSs and Distributions Gentoo https://www.slashorg.net/48-Gentoo-port-for-BeagleBoard.html The Linux distribution the BeagleBoard.org web server runs Builds ARM applications both natively and cross QNX http://www.qnx.com/products/reference-design/ti-reference-design.html Not Linux, but Posix compliant and real-time Symbian http://developer.symbian.org/wiki/index.php/BeagleBoard_Quick_Start Most popular smart phone operating system Initial open source release was on the BeagleBoard 49 WinCE http://beagleboard.org/esc Advanced GUI and code tools Lots of code libraries available Low-cost entry through “Spark” 50 Expanding the BeagleBoard Create your own expansion cards ◦ Rev C4 does not come with expansion connectors (Can be added by user) ◦ -xM does come with connectors ◦ Mounting holes are the same ◦ Common connectors in the same place Gerber and CAD files available to assist in making your own PCB Expansion Cards & Accessories ZIPPY TRAINER LCD DISPLAY ZIPPY2 PLASTIC CASE VGA ADAPTER METAL CASE Cables & Supplies Available Resources Beagle Hardware Documentation ◦ http://beagleboard.org/hardware/design Processor Documentation ◦ http://focus.ti.com/docs/prod/folders/print/omap3530.html Add-On Boards and Accessories ◦ http://www.beagleboardtoys.com/ ◦ http://www.tincantools.com/home.php?cat=255 ◦ https://specialcomp.com/beagleboard/index.htm Thank you! g-coley1@ti.com gerald@beagleboard.org http://beagleboard.org/discuss ========================== jdk@ti.com jkridner@beagleboard.org http://beagleboard.org/chat ◦ IRC nickname: jkridner