CEC – Bootloader Design for Microcontrollers

Course Overview:

The ability to remotely update embedded software to add features and fix bugs is a critical piece of many embedded systems. Bootloaders are normally small programs, but they often bring out the worst and nastiest bugs for a developer. There is a need to fully understand not just the system but also the most intricate details of your microcontroller to make bootloaders work seamlessly. This course will take a deep dive into memory maps, re-locatable vector tables, copy-down functions, flash partitioning, code branching, and a number of other concepts which are critical to updating firmware in the field.

CECDay 1 – Bootloader Models and Concepts

Updating firmware in the field or over-the-air can take on many different forms, and there are many models a developer can choose from to get the job done. This session will explore these different update models and discuss the advantages and disadvantages of each one as well as when they can be best applied. Attendees will be exposed to requirements development and walk away with an overview of how a bootloader works.

Registration and Playback located here (May require login to access)

Day 2 – Interface Protocol Design

Developing a robust and reusable interface protocol is a critical step in the bootloader development process. Ensuring that the application update gets onto the microcontroller without errors is no trivial task. This session will walk attendees through the design of a generic bootloader protocol and provide key insights into what it takes to develop a robust bootloader and the associated design documentation.

Registration and Playback located here (May require login to access)

Day 3 – Setting Up a Test Application

In this session attendees will go through the process of developing a test application for use with a bootloader. The major components, such as linker setup, watchdog maintenance, flash access, and system rebooting, will be discussed in detail. Attendees will walk away with an expert understanding of how to set up and build a test application that can be deployed in the field using a bootloader.

Registration and Playback located here (May require login to access)

Day 4 – Bootloader Application

Implementing a bootloader in C is no trivial exercise. This session will examine the inner workings of a bootloader and walk attendees through the setup of a bootloader implementation. Important concepts, such a vector table locations, application verification, and branch decision-making, will be covered. Attendees will also be exposed to reusable concepts and handling drivers within the bootloading application.

Registration and Playback located here (May require login to access)

Day 5 – Troubleshooting Techniques

The bootloader development process is riddled with stumbling blocks. In this session, firsthand, real-world experiences with designing and debugging bootloader applications, and how to quickly recognize some of the most common and worst bugs, will be discussed. Attendees will leave the weeklong course with troubleshooting techniques for bootloaders and verification tricks which many developers don’t even know exist tucked away in their pockets.

Registration and Playback located here (May require login to access)

Course Resourses

  • Bootloader Design for MCU’s white paper here
  • Sign-Up for the Embedded Bytes Newsletter here
  • Embedded Software Design Techniques – An API Standard for MCU’s here
  • Doxygen C Templates Download can be here
  • Course Source Code can be found here
  • EDN Blog Articles can be found here
  • Bootloader Hands-On Workshop here

Bootloader Survey and Drawing

Fill out the survey located here and enter to win a chance to get a free entry fee into a hands-on bootloader workshop or a Micro Python self paced course.

Take the bootloader survey to enter the drawing!

Leave a Reply

Your email address will not be published. Required fields are marked *