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
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.
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
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?
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.
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
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