Intermediate Embedded Software Design

Course Description

The proliferation of smart devices such as sensors, smart grids, mobile devices and more is resulting in a plethora of new technologies with microprocessors at their heart.  Each of these systems uses embedded software to initialize, run and maintain the system.


This course is designed for both newbies and experienced engineers looking to get a new understanding or a refresh on the fundamentals how to write drivers for embedded systems.  This class explores a number of common peripherals in detail and presents design patterns on how to communicate with those drivers in a reusable way.

What's Included

This course includes

  • One day of hands on training of four two hour online sessinos
  • Recording of the course session(s)
  • Freescale Kinetis-L ARM M0+ Development Board (purchased separately for $13)
  • Course manual with presentation material
  • Hands on lab exercises, code and tutorials
  • Embedded C Coding Standard (Beningo Style)
  • Access to white papers, tips and tricks
  • Non-Commercial License for Beningo Engineering Kinetis-L Driver Framework
  • Move at your own pace!


This course costs $100.  Plus the purchase of a Kinetis-L Freedom Board for $13.

Course Details

Overview of Microcontroller Architecture and Peripherals

  • Common Architectures
  • What peripherals are common
  • ow are they used?
  • Vendor differences

Review of C Fundamentals for Driver Design

  • Review of pointers
  • Pointer Arrays
  • Hands on Experiment
Design Patterns in Driver Design
  • Reusable API design
  • Mapping hardware registers
  • Setting up configuration tables
  • A digital I/O driver
  • Hands on Experiment
Design Patterns for Serial Peripheral Interface (SPI)
  • Introduction to SPI
  • SPI Driver Patterns
  • Communicating with external EEPROM
  • Hands on Experiment
Design Patterns for Communication Devices
  • Introduction to UART
  • UART Drver Patterns
  • Introduction to I2C
  • I2C Driver Patterns
  • Hands on Experiment