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
- 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.
- 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
- 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
- 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
- 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
- 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)
- ADK firmware can be run on more standard hardware - First Arduino prototype (bottom left) - Lilypad: minimal design for wearable applications
- 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)
- 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
- Also used to build many SDKs, toolchains, or rootfs for embedded systems - OpenWRT: routers and several other devices (Ben NanoNote)
Embedded distro/OS usage: - Angstrom - webOS - Openmoko (Neo Freerunner) Bitbake: based on Portage
- 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
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
- qemu: popular embedded emulation platform choice - supports many embedded architectures - many third party repos adding system specific emulation
- 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 ($$$)
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