Embedded Linux Systems Basics -What it is and when to use it -Pro/con consideration -System architectures -Physical platforms -Custom distributions: Yocto -Demo with uSOM (SSH via USB, GPIO, streaming images, Bash scripting)
What It Is ● A miniature computer (with operating system) running in an embedded device ● Runs a flavor of linux (generally custom) ● Allows applications level code to be utilized in an embedded device setting ● Easily obtain: High definition displays (HDMI), good sound, internet connectivity (wifi / Ethernet), file transfer (USB), consumer computer connectivity (SSH, bluetooth etc.)
When To Use It ● Want to make something with a high degree of connectivity / computer like qualities but also want it to interact with the physical world? ● Any system with a high degree of “human interface” or data manipulation requirements that can not be implemented on a smart phone, web interface, or computer application alone is a candidate. ● Want to use the abstraction and development speed of Python in an embedded setting?
Good Candidates
Probably Not A Good Idea Flight Controls
Pros ● Abstraction through applications level code (massive improvements in development time) ● Easy internet connectivity (wifi, ethernet) ● Powerful data manipulation ● Low development time to achieve big wow factor: pretty screens / sounds etc. ● Ability to interact with the physical world (motors, valves, lights) without having to deeply understand “bare metal” embedded C ● Your gateway to building“Internet of Things” devices ● Can publish code updates to all devices via the internet
Cons ● Safety critical / very high reliability applications: 99%+ of the code on your device you did not write, can you guarantee its functionality? ● Significant amount of power is required (Example: R Pi is ~4W). Presents challenges for low power /battery operated devices ● Cost: about 25USD minimum (up to 120USD) for embedded computer board ● Regulatory agency: Whats in your code? You - “I don't know but it works”. ● Boot time is ~45secounds. How is screen activated during booting? How do you respond instantly to a button press when in a sleep state? ● Tight timing requirements: difficult / impossible to achieve timing accuracy and speeds commonly seen in embedded C and RTOS ● Heat generation can be significant in an enclosed product ● Team needed: Hardware, software, firmware skills ● If using an off the shelf embedded computer, your ability to produce relies heavily on your supplier – what if they make a mistake / stop producing?
Simple Architecture
Parallel Architecture
Physical Platforms ● Raspberry Pi Compute Module ● $25USD ● Can use Raspbian Jessie Lite image for a start https://www.raspberrypi.org/downloads/raspbian/ ● https://www.raspberrypi.org/blog/raspberry-pi-compute-module-new-product/
Physical Platforms Continued ● BeagleBone Black ● SSH over USB ● $55USD ● Debian Linux Image ● https://www.adafruit.com/products/1996
Physical Platforms Continued ● Solidrun uSOM ● Wifi, SSH over USB ● $70USD ● https://www.solid-run.com/product/microsom-i2/
Custom Physical Platform ● Huge sustainment, cost and design “elegance” advantages ● Get ready to spend a lot of time with Yocto ● Clementine Core is probably a good place to start (has image to start working with) http://circuitmaker.com/Projects/Details/Jay-Carlson- 2/Clementine-Core ● IMX6 Processor series from Freescale
What about Hardware? ● Remember: to pull this off we need hardware, software, and firmware knowledge. ● Geppetto for basic carrier board designs (2kUSD for a board) ● https://geppetto.gumstix.com/#!/
Yocto ● Why do you want a custom linux distribution? ● Set pin map and pin default state via layer ● Define drivers for peripherals such as wifi chip sets ● Allows for smaller, more controlled and reliable code base ● Builds can take several hours ● To quote a fellow engineer - “It's all very magical but it seems to work...”
Yocto Resources ● Good place to start: build an image for Raspberry Pi http://www.jumpnowtek.com/rpi/Raspberry-Pi-Systems-with-Yocto.html ● Good book: https://www.amazon.com/Embedded-Systems- Prentice-Software-Development/dp/0133443248 ● https://www.yoctoproject.org/downloads ● https://www.yoctoproject.org/sites/default/files/y pdd-2016.04-san_diego_1.pdf
Demo

Embedded Linux Systems Basics

  • 1.
    Embedded Linux SystemsBasics -What it is and when to use it -Pro/con consideration -System architectures -Physical platforms -Custom distributions: Yocto -Demo with uSOM (SSH via USB, GPIO, streaming images, Bash scripting)
  • 2.
    What It Is ●A miniature computer (with operating system) running in an embedded device ● Runs a flavor of linux (generally custom) ● Allows applications level code to be utilized in an embedded device setting ● Easily obtain: High definition displays (HDMI), good sound, internet connectivity (wifi / Ethernet), file transfer (USB), consumer computer connectivity (SSH, bluetooth etc.)
  • 3.
    When To UseIt ● Want to make something with a high degree of connectivity / computer like qualities but also want it to interact with the physical world? ● Any system with a high degree of “human interface” or data manipulation requirements that can not be implemented on a smart phone, web interface, or computer application alone is a candidate. ● Want to use the abstraction and development speed of Python in an embedded setting?
  • 4.
  • 5.
    Probably Not AGood Idea Flight Controls
  • 6.
    Pros ● Abstraction throughapplications level code (massive improvements in development time) ● Easy internet connectivity (wifi, ethernet) ● Powerful data manipulation ● Low development time to achieve big wow factor: pretty screens / sounds etc. ● Ability to interact with the physical world (motors, valves, lights) without having to deeply understand “bare metal” embedded C ● Your gateway to building“Internet of Things” devices ● Can publish code updates to all devices via the internet
  • 7.
    Cons ● Safety critical/ very high reliability applications: 99%+ of the code on your device you did not write, can you guarantee its functionality? ● Significant amount of power is required (Example: R Pi is ~4W). Presents challenges for low power /battery operated devices ● Cost: about 25USD minimum (up to 120USD) for embedded computer board ● Regulatory agency: Whats in your code? You - “I don't know but it works”. ● Boot time is ~45secounds. How is screen activated during booting? How do you respond instantly to a button press when in a sleep state? ● Tight timing requirements: difficult / impossible to achieve timing accuracy and speeds commonly seen in embedded C and RTOS ● Heat generation can be significant in an enclosed product ● Team needed: Hardware, software, firmware skills ● If using an off the shelf embedded computer, your ability to produce relies heavily on your supplier – what if they make a mistake / stop producing?
  • 8.
  • 9.
  • 10.
    Physical Platforms ● RaspberryPi Compute Module ● $25USD ● Can use Raspbian Jessie Lite image for a start https://www.raspberrypi.org/downloads/raspbian/ ● https://www.raspberrypi.org/blog/raspberry-pi-compute-module-new-product/
  • 11.
    Physical Platforms Continued ●BeagleBone Black ● SSH over USB ● $55USD ● Debian Linux Image ● https://www.adafruit.com/products/1996
  • 12.
    Physical Platforms Continued ●Solidrun uSOM ● Wifi, SSH over USB ● $70USD ● https://www.solid-run.com/product/microsom-i2/
  • 13.
    Custom Physical Platform ●Huge sustainment, cost and design “elegance” advantages ● Get ready to spend a lot of time with Yocto ● Clementine Core is probably a good place to start (has image to start working with) http://circuitmaker.com/Projects/Details/Jay-Carlson- 2/Clementine-Core ● IMX6 Processor series from Freescale
  • 14.
    What about Hardware? ●Remember: to pull this off we need hardware, software, and firmware knowledge. ● Geppetto for basic carrier board designs (2kUSD for a board) ● https://geppetto.gumstix.com/#!/
  • 15.
    Yocto ● Why doyou want a custom linux distribution? ● Set pin map and pin default state via layer ● Define drivers for peripherals such as wifi chip sets ● Allows for smaller, more controlled and reliable code base ● Builds can take several hours ● To quote a fellow engineer - “It's all very magical but it seems to work...”
  • 16.
    Yocto Resources ● Goodplace to start: build an image for Raspberry Pi http://www.jumpnowtek.com/rpi/Raspberry-Pi-Systems-with-Yocto.html ● Good book: https://www.amazon.com/Embedded-Systems- Prentice-Software-Development/dp/0133443248 ● https://www.yoctoproject.org/downloads ● https://www.yoctoproject.org/sites/default/files/y pdd-2016.04-san_diego_1.pdf
  • 17.