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.

Please note that the course is $1000 for the self-paced recording. The live course early-bird special is $750. With the next run dates:

Tuesday January 9, 2018
Tuesday January 23, 2018
Tuesday February 6, 2018
Tuesday February 20 2018
Tuesday March 6, 2018

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

Live Course Early-bird Special – $750
Self-paced Recording – $1000

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

Exercises

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

Please note that the course is $1000 for the self-paced recording. The live course early-bird special is $750. With the next run dates:

Tuesday January 9, 2018
Tuesday January 23, 2018
Tuesday February 6, 2018
Tuesday February 20 2018
Tuesday March 6, 2018

Live Course Early-bird Special – $750
Self-paced Recording – $1000

Contact Jacob for more information on this workshop.