Rapid prototyping with open source

Post on 10-May-2015

2.398 views 4 download

Tags:

description

Reuse of open-source hardware and software components in a modular

Transcript of Rapid prototyping with open source

Rapid Embedded Prototyping with Open Source:Software and Hardware

Alison ChaikenNokia Mobility Solutions

Sunnyvale CAalchaiken@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?

Have MMU? Soft real-time OK?

GPLv2 OK?

Existing Linux port?

Tools, support

OK?

Power use OK?

Want Linux features?

Driver availability?

MeeGo Linaro Android Ångstrom

Organization Foundation Non-profit Consortium Community

Membership None Core, Club, Community

Unclear None

Planning/gover-nance process

Open on IRC + private

Board, TSGs in private

Private Come again?

License LGPL Upstreams' Apache v2 Upstreams'

Corporate participants

16 : Intel, TI, ∓Nokia?, AMD, Fujitsu, Renesas

ARM, Freescale, IBM, Samsung, ST Ericsson, TI

“over 80,” esp. Mentor in embedded

None

Supported architectures

Atom (x86), ARMv7, MIPS in progress

ARMv7: Cortex A8, A9, & A15

ARMv7, ARMv5, PowerPC, x86, MIPS

ARM, PowerPC, MIPS, SuperH, AVR

Shippingproducts

WeTab, IndaMixx, Amino, Geely, HawTai

Not yet legion Gumstix

Cross-Platform Apps on Mobile POSIX

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

Debian's Iced Robot

RIM's AndroidPlayer on QNXMyriad's Alien DalvÍk on Maemo

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

MeeGoCommunity

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 XMx1 Cortex A8 with SGX530 GPU

ST-Ericsson Snowballx2 Cortex A9 with Mali GPU

TI Pandaboardx2 Cortex A9 with SGX540 GPU

Other Prototyping possibilities

Intel N450 Mini-ITXx1 Atom, “integrated graphics”

Gumstix Overox1 Cortex A8 with SGX530 GPU

Variscite AM35x1 Cortex A8 600 MHz, CAN busFreescale iMX53 QuickStart

x1 Cortex A8 1 GHz, SATA

http://elinux.org/images/5/5c/ELC-AlwaysInnovating-Gentil.pdf

Gentil's Demo at ELC2011

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