July 20–24, 2015
Portland, OR

Introduction to developing embedded Linux device drivers

Nick Gudman (Hewlett Packard)
10:40am–11:20am Wednesday, 07/22/2015
Mobility D139/140
Average rating: ****.
(4.55, 11 ratings)
Slides:   1-ODP 

Prerequisite Knowledge

Attendees should have at least a basic understanding of C and the GNU/Linux operating system. Experience with microcontrollers, specifically Arduino, would be beneficial, but is not required.


Is your Arduino too weak to get the job done? Does your next project need a “real” operating system? You do not have to be a kernel guru in order to write a Linux device driver; all you need is a basic understanding of C and the GNU/Linux operating system. As the use of Linux on embedded systems grows and as cheap development boards like the RaspberryPi, BeagleBone Black, and Intel Edison become more popular, the need for embedded Linux device drivers and developers will only increase.

This presentation is intended for someone who wants to make the jump from writing Arduino Wiring sketches to writing actual device drivers for an embedded Linux board. We will discuss the following:

  • Character, block, network, and binary blob device drivers
  • How Linux device drivers are written, represented, and interacted with
  • Interfacing with GPIO
  • Handling interrupts
  • Debugging tools and techniques

Throughout the presentation, code examples in both C and Wiring will be provided for a monochromatic character display driver. An Intel Edison with Arduino Breakout Board running Yocto Linux will be used, as it is compatible with Arduino sketches.

Photo of Nick Gudman

Nick Gudman

Hewlett Packard

Nick Gudman is a firmware engineer at HP who specializes in wireless networking and network throughput testing. As a native Portlander, he grew up tearing apart and building computers at FreeGeek, refurbishing arcade cabinets, and playing with Linux. His other interests include Python, electronics, sound synthesis, hackathons, and banjo. Nick earned a B.S. in embedded systems engineering from Oregon Institute of Technology. He can be contacted at njgudman@gmail.com or www.linkedin.com/in/njgudman.