The objective of this project is to develop a STM32 microcontroller bootloader in the Ada programming language.

Team Members

Xavier Zhang | Alan Everett | Joseph Smith | |

Project Poster

Click on any image to enlarge.


Watch the Project Video

Video Player Icon


Project Summary

Overview

Our sponsor AdaCore has been expanding their driver support for microcontrollers with the development of the Ada Drivers Library. We were tasked with creating a bootloader written entirely in Ada utilising the Ada Drivers Library. The goal of the project was to create an open source bootloader so that current and future Ada developers may take inspiration and continue developing the bootloader. As such, we have built a strong foundation, including the bootloader and a host application that communicates with the bootloader, which have the potential to be expanded upon in the future.

Objectives

The goal of this project was to create a bootloader for an STM32F7 microcontroller which would begin the execution of other programs loaded in the microcontroller’s internal flash memory. This bootloader also has other functionality besides the execution of other programs. These include loading programs onto the microcontroller, erasing programs from the microcontroller, as well as verifying the integrity of programs.

Approach

  • Researched different development environments and tools for Ada development
  • Met weekly with our industry advisor (Olivier Henley) to ensure transparency with implementation progress
  • Analysed different microcontroller programs written both in Ada and C/C++ for inspiration
  • Planned the architecture of our systems to ensure an organised development plan
  • Developed the bootloader system along with its corresponding bootloader operations
  • Created a command line interface for handling user commands for bootloader operations
  • Established communication between our command line tool and bootloader using serial ports
  • Implemented continuous automated testing to ensure system stability

Outcomes

Our project’s main purpose is to showcase the capabilities of the Ada programming language in microcontroller development. Our MCU bootloader and host application system can accomplish various of tasks, such as:

  • Jumping to the application program
  • Loading a program into flash memory
  • Erasing sectors of flash memory
  • Verifying data in flash memory