An Introduction to Bootloader Design Techniques

Course Description

Microcontrollers have proliferated into every nook and cranny of our daily lives from simple 8-bit devices that control our toaster ovens to powerful 32-bit DSP’s that provide us with the rich media and entertainment that we have all become accustomed to. Without microcontrollers, our lives would not only be less exciting but we would lose a level of control over our world that we can no longer live without. Billions of microcontrollers are sold each year with the number continually climbing.

What happens to these microcontroller based products when millions of units have shipped and a software “enhancement” needs to be made? Does every unit need to be returned to the manufacturer every time the software is updated? Are televisions, blue-ray players and other devices returned to the manufacturer periodically so that the customer can continue to have the latest and greatest software operating on their device? The obvious answer to these questions is absolutely not and the primary reason why is that most systems ship with a boot-loader on-board.


This course is designed for both newbies and experienced engineers looking to get a new understanding or a refresh on the fundamentals of bootloaders for microcontrollers.  This course takes a hands on approach of tying key concepts with real world practice in the class room with a cutting edge Arm M0+ processor.  A review of requirements definitions, memory maps, linkers files and much more are explored.  Attendees will have no problem developing their own bootloader after this course.  


What's Included

This course includes

  • Two hours of training plus hands on exercises
  • Recording of the course session(s)
  • Move at your own pace!
  • 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


This course costs $100.

Course Details

Overview of Bootloaders

  • What are they?
  • How are they used?

A Review of Requirements Definition

The Bootloader System

  • Bootloader behavior
  • Application behavior
  • Bootloader design patterns
  • Hands on Experiment
Writing the Bootloader
  • Start-up branching
  • Memory Partitioning
  • Reset and Interrupt Vectors
  • Application File Formats
  • Hands on Experiment
Bootloader Application Design
  • Mobile Platforms
  • PC Platforms 

Troubleshooting Techniques