Rapid Embedded Prototyping with Open Source:
          Software and Hardware


                            Alison Chaiken
                       Nokia Mobility Solutions
                            Sunnyvale CA
                        alchaiken@gmail.com
                            July 12, 2011


Principles:
      Reuse components, both own and COTS, HW and SW
      Modular, flexible design
      Unit testing at regular preplanned intervals
Open Source Platform Features to Consider

●   Compatible CPU architectures
●   Vendor support, documentation and maintenance and
    license
●   Ported applications, “app store”
●   Toolchain (compiler, debugger, package manager)
●   Software development kit and integrated dev.
    environment
●   Real-time performance
Popular Embedded Operating Systems
MeyerSound's D-Mitri




EmDebian runs real-time audio for Cirque du Soleil, Disney.
Embedded Linux or alternative?

                           Soft real-
Have MMU?                                               GPLv2 OK?
                           time OK?




              Want Linux                  Driver
                                                                    Power use
              features?                 availability?
                                                                      OK?




                                                          Tools,
  Existing
                                                         support
Linux port?
                                                           OK?
MeeGo             Linaro            Android           Ångstrom


Organization    Foundation        Non-profit        Consortium        Community


Membership      None              Core, Club,       Unclear           None
                                  Community
Planning/gov    Open on IRC +     Board, TSGs in    Private           Come again?
er-nance        private           private
process
License         LGPL              Upstreams'        Apache v2         Upstreams'


Corporate       16∓: Intel, TI,   ARM,              “over 80,” esp.   None
participants    Nokia?, AMD,      Freescale, IBM,   Mentor in
                Fujitsu,          Samsung, ST       embedded
                Renesas           Ericsson, TI
Supported       Atom (x86),    ARMv7: Cortex        ARMv7, ARMv5, ARM, PowerPC,
architectures   ARMv7, MIPS in A8, A9, & A15        PowerPC, x86, MIPS, SuperH,
                progress                            MIPS          AVR
Shipping        WeTab,            Not yet           legion            Gumstix
products        IndaMixx,
                Amino, Geely,
                HawTai
Cross-Platform Apps on Mobile POSIX

                                     Plus, port of iOS apps to MeeGo led by Intel's
                                     S. Crabtree with LLVM developers in Argentina!




Myriad's Alien DalvÍk on Maemo
                                                    RIM's AndroidPlayer on QNX




                             Debian's Iced Robot
Qt Includes Beautiful UI, Featureful Back-end
     Qt Mobility: extensive support for location-based services




Excellent IDE, easy and rapid prototyping with Javascript-like QML.
Qt Runs Everywhere




Deeply embedded (“bare metal”) or headless all the way to desktop.
MeeGo is more like Desktop Linux than Android
MeeGo “Special Sauce”
●   Qt application framework and GUI toolkit
●   Connman connection manager
●   Simplified Mandatory Access Control Kernel
    (Smack)
●   Intended to be reconfigured and reskinned: an
    “upstream”
●   Easier to port mainline Linux components to
    MeeGo than to Android
connman Connection Manager
Surprisingly strong developer support




Reflects big efforts by Intel and MeeGo vendor community.
MeeGo Problems
●   Security and synchronization systems left
    dangling due to project changes
●   Lack of continuity and predictability
    ●   GTK → Qt
    ●   Debian package manager to RedHat one
    ●   Nokia exit
    ●   Netbook and handset now unsupported, TV and
        tablet added
●   5th place (?) in handset/tablet space
    ●   Do “deeply embedded” OEMs care?
Nokia




        MeeGo
        Community
HW Development Platform Requirements

●   Versatility: support for different buses, comms
    and display protocols
●   Expandability: ports, headers and daughter
    cards
●   Software platform support
●   Documentation: manuals, gerbers
●   Device drivers!
Notable ARM Dev Boards in use by aMeeGos




                                 TI BeagleBoard XM
                                 x1 Cortex A8 with SGX530 GPU




  TI Pandaboard
  x2 Cortex A9 with SGX540 GPU        ST-Ericsson Snowball
                                      x2 Cortex A9 with Mali GPU
Other Prototyping possibilities


                                 Gumstix Overo
                                 x1 Cortex A8 with SGX530 GPU
Intel N450 Mini-ITX
x1 Atom, “integrated graphics”




                                    Variscite AM35
 Freescale iMX53 QuickStart         x1 Cortex A8 600 MHz, CAN bus
 x1 Cortex A8 1 GHz, SATA
Gentil's Demo at ELC2011




http://elinux.org/images/5/5c/ELC-AlwaysInnovating-Gentil.pdf
Lessons from the Trenches


●   chroot approach demonstrated by Gentil is fast,
    powerful and widely applicable
●   Pick popular HW platform for accessories, docs
    and tools
●   Device driver situation is painful no matter what
    selection is made
Summary
●   Wide selection, decent tools and good docs
    enable rapid prototyping using open source.
●   Embedded Linux is useful in many cases.
●   Where “app store” is irrelevant, MeeGo is
    easier than Android.
●   Starting with ARM or Atom reference board
    saves a lot of headaches.
●   Linaro and Yocto projects are promising.
●   Proprietary device drivers are the biggest
    problem on any platform.
MeeGo IVI Running on ExoPC
MeeGo-IVI Homescreen on Atom ExoPC Slate
Linux Security for Embedded Environments




●   Sandboxing and cgroups
●   Hardware approach like DRM → GPU decoding
●   SELinux versus Smack
●   Java approach:
    ●   don't prevent impermissible actions in policy; instead
        intentionally omit the facility for implementation of them
●   Nothing like “airgap” security at the end of the day
ConnMan Architecture overview
TI's OMAP4430 SoC




6 cores: 2x Cortex A-9, SGX540 GPU, C64X DSP plus 2x Cortex-M
MeeGo-IVI On OMAP4 Pandaboard withHW-
          accelerated Graphics
Yocto Project Eases Custom Linux Builds


●   Based on Open Embedded, with better UI and more quality control

●   Source for board-support packages and device drivers,even
    proprietary and binary ones, where available

●   Complete toolchain including revision control,
    compilation,packaging and testing

●   Support for many architectures and software variants

●   Broad industrial support
Linaro: improving Linux on ARM


●   Industry contributions for ARM to Linux kernel
    are a mess
●   Tools lag x86
●   Broad industrial support can enable code reuse
    and encourage best practices
●   Primarily funded by Canonical and IBM
●   Still early in development

Rapid prototyping with open source

  • 1.
    Rapid Embedded Prototypingwith Open Source: Software and Hardware Alison Chaiken Nokia Mobility Solutions Sunnyvale CA alchaiken@gmail.com July 12, 2011 Principles: Reuse components, both own and COTS, HW and SW Modular, flexible design Unit testing at regular preplanned intervals
  • 2.
    Open Source PlatformFeatures to Consider ● Compatible CPU architectures ● Vendor support, documentation and maintenance and license ● Ported applications, “app store” ● Toolchain (compiler, debugger, package manager) ● Software development kit and integrated dev. environment ● Real-time performance
  • 3.
  • 4.
    MeyerSound's D-Mitri EmDebian runsreal-time audio for Cirque du Soleil, Disney.
  • 5.
    Embedded Linux oralternative? Soft real- Have MMU? GPLv2 OK? time OK? Want Linux Driver Power use features? availability? OK? Tools, Existing support Linux port? OK?
  • 6.
    MeeGo Linaro Android Ångstrom Organization Foundation Non-profit Consortium Community Membership None Core, Club, Unclear None Community Planning/gov Open on IRC + Board, TSGs in Private Come again? er-nance private private process License LGPL Upstreams' Apache v2 Upstreams' Corporate 16∓: Intel, TI, ARM, “over 80,” esp. None participants Nokia?, AMD, Freescale, IBM, Mentor in Fujitsu, Samsung, ST embedded Renesas Ericsson, TI Supported Atom (x86), ARMv7: Cortex ARMv7, ARMv5, ARM, PowerPC, architectures ARMv7, MIPS in A8, A9, & A15 PowerPC, x86, MIPS, SuperH, progress MIPS AVR Shipping WeTab, Not yet legion Gumstix products IndaMixx, Amino, Geely, HawTai
  • 7.
    Cross-Platform Apps onMobile POSIX Plus, port of iOS apps to MeeGo led by Intel's S. Crabtree with LLVM developers in Argentina! Myriad's Alien DalvÍk on Maemo RIM's AndroidPlayer on QNX Debian's Iced Robot
  • 8.
    Qt Includes BeautifulUI, Featureful Back-end Qt Mobility: extensive support for location-based services Excellent IDE, easy and rapid prototyping with Javascript-like QML.
  • 9.
    Qt Runs Everywhere Deeplyembedded (“bare metal”) or headless all the way to desktop.
  • 10.
    MeeGo is morelike Desktop Linux than Android
  • 11.
    MeeGo “Special Sauce” ● Qt application framework and GUI toolkit ● Connman connection manager ● Simplified Mandatory Access Control Kernel (Smack) ● Intended to be reconfigured and reskinned: an “upstream” ● Easier to port mainline Linux components to MeeGo than to Android
  • 12.
  • 13.
    Surprisingly strong developersupport Reflects big efforts by Intel and MeeGo vendor community.
  • 14.
    MeeGo Problems ● Security and synchronization systems left dangling due to project changes ● Lack of continuity and predictability ● GTK → Qt ● Debian package manager to RedHat one ● Nokia exit ● Netbook and handset now unsupported, TV and tablet added ● 5th place (?) in handset/tablet space ● Do “deeply embedded” OEMs care?
  • 15.
    Nokia MeeGo Community
  • 16.
    HW Development PlatformRequirements ● Versatility: support for different buses, comms and display protocols ● Expandability: ports, headers and daughter cards ● Software platform support ● Documentation: manuals, gerbers ● Device drivers!
  • 17.
    Notable ARM DevBoards in use by aMeeGos TI BeagleBoard XM x1 Cortex A8 with SGX530 GPU TI Pandaboard x2 Cortex A9 with SGX540 GPU ST-Ericsson Snowball x2 Cortex A9 with Mali GPU
  • 18.
    Other Prototyping possibilities Gumstix Overo x1 Cortex A8 with SGX530 GPU Intel N450 Mini-ITX x1 Atom, “integrated graphics” Variscite AM35 Freescale iMX53 QuickStart x1 Cortex A8 600 MHz, CAN bus x1 Cortex A8 1 GHz, SATA
  • 19.
    Gentil's Demo atELC2011 http://elinux.org/images/5/5c/ELC-AlwaysInnovating-Gentil.pdf
  • 20.
    Lessons from theTrenches ● chroot approach demonstrated by Gentil is fast, powerful and widely applicable ● Pick popular HW platform for accessories, docs and tools ● Device driver situation is painful no matter what selection is made
  • 21.
    Summary ● Wide selection, decent tools and good docs enable rapid prototyping using open source. ● Embedded Linux is useful in many cases. ● Where “app store” is irrelevant, MeeGo is easier than Android. ● Starting with ARM or Atom reference board saves a lot of headaches. ● Linaro and Yocto projects are promising. ● Proprietary device drivers are the biggest problem on any platform.
  • 22.
  • 23.
    MeeGo-IVI Homescreen onAtom ExoPC Slate
  • 24.
    Linux Security forEmbedded Environments ● Sandboxing and cgroups ● Hardware approach like DRM → GPU decoding ● SELinux versus Smack ● Java approach: ● don't prevent impermissible actions in policy; instead intentionally omit the facility for implementation of them ● Nothing like “airgap” security at the end of the day
  • 25.
  • 26.
    TI's OMAP4430 SoC 6cores: 2x Cortex A-9, SGX540 GPU, C64X DSP plus 2x Cortex-M
  • 27.
    MeeGo-IVI On OMAP4Pandaboard withHW- accelerated Graphics
  • 28.
    Yocto Project EasesCustom Linux Builds ● Based on Open Embedded, with better UI and more quality control ● Source for board-support packages and device drivers,even proprietary and binary ones, where available ● Complete toolchain including revision control, compilation,packaging and testing ● Support for many architectures and software variants ● Broad industrial support
  • 29.
    Linaro: improving Linuxon ARM ● Industry contributions for ARM to Linux kernel are a mess ● Tools lag x86 ● Broad industrial support can enable code reuse and encourage best practices ● Primarily funded by Canonical and IBM ● Still early in development