Embedded Systems Tim Harder August 16, 2011 OSU Picture © Greg Keene
Introduction Programmer at OSL
Open source experience Gentoo
MeeGo Embedded experience OSWALD project
OpenWRT
Various microcontroller experiments
Embedded explosion
Why Linux and Open Source? No royalties/licensing fees
Active development community
Extensive driver availability
Open development tools
Vast application library
Large amount of ports
Current issues Development moves too fast
Kernel maintenance
Memory footprint
Embedded feature development
Upstreaming
Fragmentation http://xkcd.com/619/
Patent problems Graphic by George Kokkinidis http://news.designlanguage.com/post/1252039209

Editor's Notes

  • #3 Programmer Analyst, OSU Open Source Lab Previously grad student at OSU working on the OSWALD Gentoo dev Involved in open source for about 11 years
  • #4 - Embedded computing platform development has been expanding at a tremendous rate and Linux has become an important driver for many products in the market space.   - See if you can name all the hardware on this slide.
  • #5 - Royalties: many companies are starting to pay patent licensing fees - Community: interested members often create a lot more open content and examples than similar closed systems - Porting requirements: knowledge of C, OS concepts (interrupt handling, system calls, memory management, etc), familiarity with Linux and target arch, plenty of time
  • #6 - Development moves too fast: interfaces change a lot - Stable kernels required dedicated maintenance – companies often lag upstream by a few versions (or sometimes a lot) - Memory: while it runs great on “lightweight” systems but only to a certain point - Fragmentation: show distro timeline image? Google forcing companies to sign agreements to support devices X amount of time and provide timely updates
  • #7 - too many lawsuits going on in the mobile marketspace - turning into a patent portfolio size contests - if project/platform becomes popular, lawsuits will soon follow
  • #8 - Consumer hardware arches: x86, ARM, MIPS (much lesser extent) - Most electronic component designs rely on proprietary components - Still considered open hardware even though it relies on proprietary parts - Disputed by some, but most developers accept the reality that it is not always feasible to create every component in a complex design - Beagle/PandaBoard: TI beagle, Panda community (dual core) -Bug Labs: modular open hardware design Rapid device prototyping and experimentation - Gumstix: single board computer ARM: OMAP-based Overo series, Marvell XScale-based Verdex Pro Used in various commercial/hobbyist/educational projects
  • #9 - Pandora: inspired by the GP2X (Linux based handheld gaming console by GamePark Holdings of South Korea) - Designed by suggestions/requests on gp32x forums - Runs custom Angstrom build - homebrew and emulated games - Ben NanoNote: “handheld laptop” MIPS based Standard software base OpenWRT based Copyleft hardware: spawn open variations - Elphel: camera running Linux - mainly scientific applications (and some web/traffic cameras) - Eyesis: 8 x 5 Mpx in array, 1 x 5 Mpx upwards - Used for Google Street View (primarily to mount on vehicles)
  • #10 - ADK firmware can be run on more standard hardware - First Arduino prototype (bottom left) - Lilypad: minimal design for wearable applications
  • #11 - Low power: many youtube videos showing hardware being driven by various acidic things used as an electrolyte for makeshift battery: fruit, coffee, etc - Idle mode current drawn <1 microamp - Does this by having a number of low power modes that various clocks and CPU - Cost: LaunchPad platform available for $5-6 - Engineer part numbering - Limitations: No external memory bus - limited to on-chip memory (256K flash and 16K ram)
  • #12 - Overview of software projects - corporate vs community - Most well-known although it hides its Linux usage well enough for it to be unknown by the masses -CyanogenMod: customized firmware distro for rooted devices - Android ADK: Arduino based, allow hardware hackers to build things which interact with Android, Google I/O giant labyrinth, robots/gardens/sensors
  • #14 - Also used to build many SDKs, toolchains, or rootfs for embedded systems - OpenWRT: routers and several other devices (Ben NanoNote)
  • #15 Embedded distro/OS usage:     - Angstrom     - webOS     - Openmoko (Neo Freerunner) Bitbake: based on Portage
  • #16 - Software development tools: toolchains, emulators, IDEs/frameworks, debugging, etc Varies widely between platforms Lots of 3rd party solutions (free/non-free/OSS/etc) - Hardware: serial console, JTAG adapters (single stepping/breakingpoint/etc) - Major platforms usually have a standard method/set of tools (Android/Eclipse) - Never a one size fits all approach
  • #17 Generate your own toolchains:     - crosstool-NG, OpenEmbedded / Yocto, Buildroot, crossdev 3rd party:     - CodeSourcery         - minimal version free for various arches         - Only contains core toolchain cli tools         - Windows version avail.     - Linaro (ARM)     - Scratchbox: supports ARM/x86 Difficulties: - Software often untested for cross-compiling - Common problems: exec test failures, linking against host libs, build tools with weak/nonexistant cross-compile support  
  • #18 - qemu: popular embedded emulation platform choice - supports many embedded architectures - many third party repos adding system specific emulation
  • #19 - GDB: remote debugging Kernel level: kgdb/kdb Access kernel memory and data structures KDB: can debug the kernel on the machine you're running - Many proprietary development tools out there: i.e. ARM Development Studio 5 (often very expensive) - Similar, lots of specialized hardware embedded debugging/development ($$$)
  • #20 Documentation: Embedded Linux wiki (elinux.org) Many community projects have decent wikis and how to guides to get started working with examples - GsoC – as mentioned earlier, great way to have something interesting to do during the summer and get paid for it - GCI – contest for HS students to complete various tasks for OSS projects -Do what you're interested in: Kernel development Distro development / packaging Bug reporting / triage Docs Translation