Course Overview:

The ability to update firmware in the field or over-the-air is a critical component in every embedded system. The complexity and the skills necessary to successfully develop the capability to update firmware in the field are often under-estimated and result in buggy updates or bricked systems. The Bootloader Design Techniques for MCU’s Workshop walks engineers through every stage of the bootloader design process and provides hands-on examples and case studies to accelerate the engineers’ abilities and allow them to walk away with the skills and knowledge necessary to implement a bootloader on any microcontroller with any communication interface.

The live course and self-paced access early-bird special is $750 until March 8th, 2019. With the next run dates:

Session 1 – April 22nd, 2019
Session 2 – April 25th, 2019
Session 3 – April 30th, 2019
Session 4 – May 2nd, 2019
Session 5 – May 6th, 2019

The self-paced course can be ordered and started at anytime.

Live Online Course with Self-Paced Access – $750 (Early Bird)

Who Should Attend?

Attendees are engineers who are interested in or will be designing a bootloader for a production product. The course covers the fundamentals and advanced topics in bootloader design. The course is appropriate for engineers with little experience in the area or experienced engineers looking for new techniques and skills. Attendees should understand the fundamentals of the C programming language. Advanced concepts are reviewed as they apply.

Key Take-a-ways:

  • Hands-on experience developing a boot-loader
  • Bootloader implementation models and how to select the correct one
  • Bootloader design, implementation and testing from concept through production
  • Design and implementation of a bootloader protocol
  • Example code and test hardware platform
  • Key concepts related to security, robustness and fast updates
  • Troubleshooting and debugging techniques
  • Best practices for bootloaders
  • Techniques to port the boot-loader to other peripherals

Hardware and Software:

This course is designed to allow developers to quickly get a bootloader up and running on their own hardware no matter the vendor. The examples in this course are based on the Beningo Bootloader Framework and includes an educational license. Developers can easily use any hardware of their choosing, however, all the examples in the course will use the following hardware and software:

  • Beningo Embedded Group Bootloader Framework (Educational License)
  • ARM Cortex-M Processor
  • Atollic TrueStudio IDE w/ ARM Toochain

Sessions Overview:

Session 1 – Overview of Bootloaders

  • Introduction to bootloaders
  • Bootloader models
  • Bootloader components
  • Bootloader system elements
  • Features and requirements
  • Memory Maps
  • Linker file fundamentals
  • Software architecture techniques

Session 2 – Bootloader Protocol and GUI Design

  • Bootloader protocol design
  • Bootloader commands
  • Restart strategies
  • Partitioning memory
  • File formats
  • Application record generation
  • GUI fundamentals
  • Basic implementation model

Session 3 – Bootloader Implementation Part 1

  • Bootloader linker file updates
  • Branching code development
    • Decision making process
    • Verifying checksums
    • Backdoors
  • Robust design techniques
  • Bootloader organization
  • Understanding time and space requirements
  • Bootloader protocol implementation

Session 4 – Bootloader Implementation Part 2

  • Vector table relocation
  • Record assembly and writing
  • Error handling
  • Locking down the system
  • Testing a bootloader system
  • Debugging techniques

Session 5 – Advanced Techniques

  • Handling multiple application spaces
  • Updating the bootloader
  • Encrypting and Decrypting an image
  • Difference generators
  • Locating code blocks
  • Production deployment


Exercise 1 – Bootloader Project Setup

  • Select a bootloader model
  • Define the requirements
  • Design boot-loader
  • Bootloader Project setup
  • Bootloader Building blocks
    • Communication Driver
    • LED Driver
    • Task Scheduler
    • Flash Driver
  • Create basic test application

Exercise 2 – Bootloader Protocol and GUI Design

  • Bootloader hooks into application code
    • Bootloader commands
    • Reset strategies
  • Application record generation
  • GUI project setup
  • GUI design and command setup
  • Bootloader project setup

Exercise 3 – Bootloader Implementation Part 1

  • Bootloader linker file setup
  • Branching code development
  • Bootloader protocol implementation
  • GUI updates and integration

Exercise 4 – Bootloader Implementation Part 2

  • Final boot-loader commands
  • Vector table relocation
  • Record assembly and writing
  • Error handling
  • Locking down the system
  • Full bootloader test
  • Debugging techniques

The live course early-bird special is $750. With the next run dates:

Live Online Course with Self-Paced Access – $750 (Early Bird)

Contact Jacob for more information on this workshop.