Embedded Systems

4,939 views

Published on

Published in: Education, Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,939
On SlideShare
0
From Embeds
0
Number of Embeds
2,435
Actions
Shares
0
Downloads
90
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • 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
  • Embedded Systems

    1. 1. <ul>Embedded Systems </ul><ul>Tim Harder August 16, 2011 </ul><ul>OSU Picture © Greg Keene </ul>
    2. 2. <ul>Introduction </ul><ul><ul><li>Programmer at OSL
    3. 3. Open source experience </li></ul></ul><ul><ul><ul><li>Gentoo
    4. 4. MeeGo </li></ul></ul></ul><ul><ul><li>Embedded experience </li></ul></ul><ul><ul><ul><li>OSWALD project
    5. 5. OpenWRT
    6. 6. Various microcontroller experiments </li></ul></ul></ul>
    7. 7. <ul>Embedded explosion </ul>
    8. 8. <ul>Why Linux and Open Source? </ul><ul><ul><li>No royalties/licensing fees
    9. 9. Active development community
    10. 10. Extensive driver availability
    11. 11. Open development tools
    12. 12. Vast application library
    13. 13. Large amount of ports </li></ul></ul>
    14. 14. <ul>Current issues </ul><ul><ul><li>Development moves too fast
    15. 15. Kernel maintenance
    16. 16. Memory footprint
    17. 17. Embedded feature development
    18. 18. Upstreaming
    19. 19. Fragmentation </li></ul></ul><ul>http://xkcd.com/619/ </ul>
    20. 20. <ul>Patent problems </ul><ul>Graphic by George Kokkinidis http://news.designlanguage.com/post/1252039209 </ul>
    21. 21. <ul>Open hardware projects </ul><ul><ul><li>BeagleBoard / PandaBoard
    22. 22. Bug Labs
    23. 23. Gumstix </li></ul></ul>
    24. 24. <ul>Lesser known projects </ul><ul><ul><li>Pandora
    25. 25. OSWALD
    26. 26. Ben NanoNote
    27. 27. Elphel </li></ul></ul>
    28. 28. <ul>Microcontrollers – Arduino </ul><ul><ul><li>Large community
    29. 29. AVR based
    30. 30. Many form factors
    31. 31. Android Open Accessory Development Kit (ADK) </li></ul></ul>
    32. 32. <ul>Microcontrollers – MSP430 </ul><ul><ul><li>TI hardware
    33. 33. Built around 16-bit CPU
    34. 34. Low cost, low power
    35. 35. Memory limitations </li></ul></ul>
    36. 36. <ul>Android </ul><ul>  </ul><ul><ul><li>Probably most well-known
    37. 37. CyanogenMod
    38. 38. Android Open Accessory Development Kit (ADK) </li></ul></ul>
    39. 39. <ul>MeeGo </ul><ul><ul><li>Combination of former Moblin and Maemo projects
    40. 40. Focusing on mobile and informational devices for consumers
    41. 41. Various hardware targets: netbooks, handhelds, tablets, in-vehicle, smart TV </li></ul></ul>
    42. 42. <ul>Buildroot </ul><ul><ul><li>Set of Makefiles and patches
    43. 43. Toolchain generation
    44. 44. Embedded system
    45. 45. OpenWRT </li></ul></ul>
    46. 46. <ul>OpenEmbedded and Yocto Project </ul><ul><ul><li>Build framework for embedded Linux </li></ul></ul><ul><ul><ul><li>Bootloaders, kernel, and applications
    47. 47.   Set of metadata used to cross-compile, package, and install software </li></ul></ul></ul><ul><ul><li>Bitbake build tool
    48. 48. Used by many embedded distros </li></ul></ul>
    49. 49. <ul>Developing in the embedded space </ul><ul><ul><li>Extremely heterogeneous environment
    50. 50. Software development tools
    51. 51. Useful hardware tools </li></ul></ul>
    52. 52. <ul>Cross-compile Toolchains </ul><ul><ul><li>Roll your own
    53. 53. Distro specific packages
    54. 54. 3rd party alternatives
    55. 55. Various project SDKs </li></ul></ul>
    56. 56. <ul>Emulation </ul><ul><ul><li>QEMU (KVM)
    57. 57. Full system emulation </li></ul></ul><ul><ul><ul><li>Rootfs image testing
    58. 58. UI testing
    59. 59. Device specific functionality </li></ul></ul></ul><ul><ul><li>User mode emulation </li></ul></ul><ul><ul><ul><li>Execute native binaries on host system
    60. 60. Chroot setups </li></ul></ul></ul>
    61. 61. <ul>Debugging tools </ul><ul><ul><li>GDB
    62. 62. Various programming language, architecture, and IDE centric tools
    63. 63. Serial console
    64. 64. JTAG
    65. 65. Emulation
    66. 66. Remote debugging
    67. 67. Hardware level tools </li></ul></ul>
    68. 68. <ul>Learn more and get hacking </ul><ul><ul><li>Documentation
    69. 69. Joining projects
    70. 70. GSoC / GCI
    71. 71. Do what interests you </li></ul></ul><ul>http://xkcd.com/456/ </ul>
    72. 72. <ul>Questions? </ul><ul>Tim Harder [email_address] @radhermit </ul>

    ×