We may earn an affiliate commission when you visit our partners.
Course image
FastBit Embedded Brain Academy and Kiran Nayak

Get started with Micro-controller Bootloader Development. This course will be suitable for beginners in the domain of embedded systems and programming.

This course is all about learning to develop a custom BootLoader for

In this course, I will guide you through a step-by-step procedures to develop your own BootLoader and we will explore many things related to BootLoader programming.

The BootLoader we are going to develop in this course will have the following features

1) It can do in-application programming(IAP). You can use the BootLoader to flash a given application binary

Read more

Get started with Micro-controller Bootloader Development. This course will be suitable for beginners in the domain of embedded systems and programming.

This course is all about learning to develop a custom BootLoader for

In this course, I will guide you through a step-by-step procedures to develop your own BootLoader and we will explore many things related to BootLoader programming.

The BootLoader we are going to develop in this course will have the following features

1) It can do in-application programming(IAP). You can use the BootLoader to flash a given application binary

2) Read microcontroller-specific data

3) Flash related configurations like setting up read and write protections for different sectors

4) Flash sector erase

5) Mass erase of the user flash

6) Read and display the protection status of the flash memory

7) Jump to the specified address to execute the code

Along with custom BootLoader development, you will also understand

1) The different memory organization of a microcontroller

2) Memory aliasing and different boot modes of STM32

3) How MCU boots after power-up

4) Vector table mapping and vector table relocation use case of arm cortex mx processor.

5) Difference between In-system programming(ISP) and in-application programming(IAP)

6) Custom boot loader design flow chart

7) Host and Boot loader communication method

8) Implementation of different boot loader commands

You can also extend this BootLoader by giving the following features once you complete the course

1) Encrypt and Decrypt the firmware sent by the host using AES

2) Over-the-air programming by interfacing WIFI or Zigbee Modules

Hardware used in this course:

In this course

If you have any other board based on the STM32 microcontroller then also you can use the codes developed in the course with no or minor changes.

Software used:

1) KEIL-MDK-5 for WINDOWS

2) OpenSTM32 SystemWorkbench for (WINDOWS/LINUX/MAC OS)

Learning order of FastBit Embedded Brain Academy Courses,

If you are a beginner in the field of embedded systems, then you can take our courses in the below-mentioned order. This is just a recommendation from the instructor for beginners.

1) Microcontroller Embedded C Programming: absolute beginners(Embedded C)

2) Embedded Systems Programming on ARM Cortex-M3/M4 Processor(ARM Cortex M4 Processor specific)

3) Mastering Microcontroller with Embedded Driver Development(MCU1)

4) Mastering Microcontroller: TIMERS, PWM, CAN, RTC,LOW POWER(MCU2)

5) Mastering Microcontroller: STM32-LTDC, LCD-TFT, LVGL(MCU3)

6) Embedded System Design using UML State Machines(State machine)

7) Mastering RTOS: Hands-on FreeRTOS and STM32Fx with Debugging(RTOS)

8) ARM Cortex M Microcontroller DMA Programming Demystified(DMA)

9) STM32Fx Microcontroller Custom Bootloader Development(Bootloader)

10) Embedded Linux Step by Step using Beaglebone Black(Linux)

11) Linux device driver programming using Beaglebone Black(LDD1)

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Learning objectives

  • Write your own custom bootloader for your stm32fx microcontroller and test
  • Host bootloader communication implementation
  • Custom bootloader command packets
  • Different boot modes of the stm32 microcontroller
  • Boot loader flash handling implementation : sector erase/program/mass erase
  • Boot loader options bytes(ob) program handling implementation
  • Boot loader flash sector protection status handling implementation
  • Boot loader in application programming implementation (iap)
  • Vector table relocation of arm cortex mx processor

Syllabus

Course Overview
About the instructor
Important Note
Source Code Repository
Read more
Introduction
What is Boot-Loader and Why it is needed ?
MCU memory, Reset Sequence and Boot configs
MCU-Embedded Memory Organization
Understanding Reset Sequence and memory Aliasing of the MCU
Boot Configurations of the STM32 MCU.
Development board used in our courses
Note for the students
About MCU Development board
STM32F4 Discovery and Nucleo : Board Details
ST-Link Driver Installation
ST Link Firmware Upgrade
KEIL-MDK-5 IDE setup for ARM Cortex M based MCUs
KEIL-MDK-5 Installation
KEIL-MDK-5 Installation Contd.
KEIL-MDK-5 Pack Installation
Locating Pack Installation files
Creating a KEIL Project
Creating a LED Toggling App using Board BSP APIs
Creating a LED Toggling App using Board BSP APIs-Nucleo
Installing OpenSTM32 System-Workbench
Downloading and Installing OpenSTM32 System-Workbench
STM32CubeMX
STM32CubeMX Installation
Exploring STM32 Native Bootloader
Activating ST’s Bootloader Part-1
Activating ST’s Bootloader Part-2
Activating ST’s Bootloader Part-3
Activating ST’s Bootloader Part-4
Custom Bootloader Communication with HOST
Bootloader Transport
Bootloader code placement
Bootloader Supported Commands
Host – Bootloader Communication
Boot-Loader Project Creation
Bootloader Project Exploration Part-1
Boot-Loader UART Testing
Command UART testing
Debug UART Testing
Boot-loader Jumping to User Code
Boot-loader Jumping to User application Part-1
Boot-loader Jumping to User application Part-2
Boot-loader Jumping to User application Part-3
Flash Code Placement using OpenSTM32 System Workbench
Vector Table offset Register(VTOR) use case
Boot-loader Jumping to User application Part-4
Boot-loader Read Commands from Host
Boot-loader command format
Boot-loader read commands implementation
Command Handle Functions Implementation
Implementing BL_GET_VER Command
Boot-loader Command Handling Flow-Chart
BL_GET_VER Handle Function Implementation
Boot-Loader ACK/NACK Implementation
Boot-Loader Verify CRC
Sending BL_GET_VER_CMD Reply
BL_GET_VER_CMD Testing Part-1
Python Installation on Host
Python Pyserial module installation
BL_GET_VER_CMD Testing Part-2
BL_GET_VER_CMD Debugging
Implementing BL_GET_HELP_CMD
BL_GET_HELP_CMD Implementation and Testing
Implementing BL_GET_CID_CMD
BL_GET_CID_CMD Implementation and Testing
Implementing BL_GET_RDP_LEVEL_CMD
Understanding Flash Read Protection Levels
BL_GET_RDP_LEVEL Command Testing
Implementing BL_GET_GO_TO_ADDR_CMD
BL_GO_TO_ADDR Command Implementation
BL_GO_TO_ADDR Command Testing
Implementing BL_FLASH_ERASE_CMD
BL_FLASH_ERASE Command Implementation
BL_FLASH_ERASE Command Implementation contd.
Testing Flash Sector Erase
Testing Flash Mass Erase
Implementing BL_MEM_WRITE_CMD
BL_MEM_WRITE Commadn Implementation
BL_MEM_WRITE Command Testing
Options Bytes and Flash Sector Protection
Options Bytes Programming
Implementing Flash Sector Protection Commands
Summary of the commands
Exploring HOST Application
HOST application Source files and Details
Procedure to Add your own command
BONUS LECTURE

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Suitable for beginners in embedded systems and programming
This course offers a step-by-step guide to bootloader development
Provides hands-on implementation of different bootloader commands
Covers essential topics like memory organization and boot modes of STM32 microcontrollers
Offers the opportunity to extend the bootloader with features like encryption and over-the-air programming
Recommended as part of a comprehensive learning path for embedded systems development

Save this course

Save STM32Fx Microcontroller Custom Bootloader Development to your list so you can find it easily later:
Save

Reviews summary

Well-explained bootloader development

According to students, this course is great for learners who already work with embedded systems. Kiran presents the material in a clear and engaging manner. Learners say that they are looking forward to taking more of Kiran's courses in the future.
Learners are interested in taking more of the instructor's courses.
"I'm looking for his next courses in the future"
Course is relevant to embedded systems engineers.
"I'm Engineer and professional in Embedded systems"
Instructor is clear and engaging.
"Kiran explains it very well"

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in STM32Fx Microcontroller Custom Bootloader Development with these activities:
Review the basics of microcontrollers
This activity will refresh your knowledge of the basics of microcontrollers which will be beneficial for this course.
Browse courses on Embedded Systems
Show steps
  • Review your notes from an introductory course on microcontrollers.
  • Watch a few videos on microcontrollers.
  • Complete a few practice quizzes on microcontrollers.
Refresh your C programming skills
This activity will refresh your knowledge of C programming, which is essential for this course.
Browse courses on C Programming
Show steps
  • Review your notes from a previous C programming course.
  • Take a practice quiz on C programming.
  • Complete a few coding exercises in C.
Embedded Systems: Design and Implementation by Jonathan Valvano
This book provides a comprehensive overview of embedded systems design and implementation and will supplement what you learn in this course.
Show steps
  • Read the book's introduction.
  • Review the chapters on microcontrollers and embedded systems.
  • Complete the exercises and projects in the book.
Three other activities
Expand to see all activities and additional details
Show all six activities
Form a study group with other students in the course
This activity will provide you with the opportunity to connect with other students and learn from each other.
Browse courses on Peer Support
Show steps
  • Find other students who are taking the same course.
  • Schedule regular study sessions with your group.
  • Discuss the course material, work on assignments together, and quiz each other.
Write C code to configure the UART peripheral
This activity will test your understanding of how to configure the UART peripheral on the STM32 microcontroller.
Show steps
  • Create a new project in your preferred development environment.
  • Add the necessary header files for the UART peripheral.
  • Write the code to configure the UART peripheral.
  • Upload the code to the microcontroller and test it using a terminal program.
Build a simple bootloader using the knowledge gained from the course
This activity will challenge you to apply what you have learned in this course by creating your simple bootloader for the STM32 microcontroller.
Show steps
  • Design the architecture of your bootloader.
  • Write the code for the bootloader.
  • Test the bootloader on a microcontroller.
  • Document your bootloader.

Career center

Learners who complete STM32Fx Microcontroller Custom Bootloader Development will develop knowledge and skills that may be useful to these careers:
Embedded Systems Software Engineer
An Embedded Systems Software Engineer designs, develops, and maintains software for embedded systems. Embedded systems are computer systems that are designed to perform a specific task and are often found in devices such as cars, appliances, and medical equipment. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, are essential for a successful Embedded Systems Software Engineer. This course provides a strong foundation for understanding the fundamentals of embedded systems and how to develop software for them.
Embedded Systems Hardware Engineer
An Embedded Systems Hardware Engineer designs and develops hardware for embedded systems. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, are essential for a successful Embedded Systems Hardware Engineer. This course provides a strong foundation for understanding the hardware architecture of embedded systems and how to design and develop hardware for them.
Firmware Engineer
A Firmware Engineer designs, develops, and maintains firmware for embedded systems. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, are essential for a successful Firmware Engineer. This course provides a strong foundation for understanding the firmware development process and how to design and develop firmware for embedded systems.
Microcontroller Programmer
A Microcontroller Programmer designs, develops, and maintains software for microcontrollers. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, are essential for a successful Microcontroller Programmer. This course provides a strong foundation for understanding the architecture of microcontrollers and how to develop software for them.
embedded systems architect
An Embedded Systems Architect designs and develops the architecture of embedded systems. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, are essential for a successful Embedded Systems Architect. This course provides a strong foundation for understanding the principles of embedded systems architecture and how to design and develop embedded systems.
Embedded Systems Test Engineer
An Embedded Systems Test Engineer tests and verifies the functionality of embedded systems. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, are essential for a successful Embedded Systems Test Engineer. This course provides a strong foundation for understanding the testing process for embedded systems and how to test and verify their functionality.
Software Developer
A Software Developer designs, develops, and maintains software applications. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, may be useful for a Software Developer who wants to work on embedded systems. This course provides a foundation for understanding the principles of software development and how to design and develop software applications.
Computer Engineer
A Computer Engineer designs, develops, and maintains computer systems. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, may be useful for a Computer Engineer who wants to work on embedded systems. This course provides a foundation for understanding the principles of computer engineering and how to design and develop computer systems.
Electrical Engineer
An Electrical Engineer designs, develops, and maintains electrical systems. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, may be useful for an Electrical Engineer who wants to work on embedded systems. This course provides a foundation for understanding the principles of electrical engineering and how to design and develop electrical systems.
Electronics Engineer
An Electronics Engineer designs, develops, and maintains electronic systems. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, may be useful for an Electronics Engineer who wants to work on embedded systems. This course provides a foundation for understanding the principles of electronics engineering and how to design and develop electronic systems.
Mechatronics Engineer
A Mechatronics Engineer designs, develops, and maintains mechatronic systems. Mechatronic systems are systems that combine mechanical, electrical, and computer engineering. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, may be useful for a Mechatronics Engineer who wants to work on embedded systems. This course provides a foundation for understanding the principles of mechatronics engineering and how to design and develop mechatronic systems.
Robotics Engineer
A Robotics Engineer designs, develops, and maintains robots. Robots are machines that are capable of carrying out a complex series of actions automatically. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, may be useful for a Robotics Engineer who wants to work on embedded systems. This course provides a foundation for understanding the principles of robotics engineering and how to design and develop robots.
Artificial Intelligence Engineer
An Artificial Intelligence Engineer designs, develops, and maintains artificial intelligence systems. Artificial intelligence systems are systems that are capable of performing tasks that normally require human intelligence. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, may be useful for an Artificial Intelligence Engineer who wants to work on embedded systems. This course provides a foundation for understanding the principles of artificial intelligence engineering and how to design and develop artificial intelligence systems.
Data Scientist
A Data Scientist collects, analyzes, and interprets data. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, may be useful for a Data Scientist who wants to work on embedded systems. This course provides a foundation for understanding the principles of data science and how to collect, analyze, and interpret data.
Machine Learning Engineer
A Machine Learning Engineer designs, develops, and maintains machine learning systems. Machine learning systems are systems that are capable of learning from data and making predictions. The skills and knowledge learned in this course, such as memory organization, boot modes, and vector table relocation, may be useful for a Machine Learning Engineer who wants to work on embedded systems. This course provides a foundation for understanding the principles of machine learning engineering and how to design and develop machine learning systems.

Reading list

We've selected nine books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in STM32Fx Microcontroller Custom Bootloader Development.
Comprehensive guide to the ARM architecture, including the Cortex-M series of processors. It great resource for those who want to learn more about the ARM architecture and how to use it in embedded systems.
Comprehensive guide to the ARM Cortex-M3 and Cortex-M4 processors. It covers everything from the architecture of the processors to the programming and interfacing of them. It great resource for those who want to learn more about the Cortex-M3 and Cortex-M4 and how to use them in embedded systems.
Provides a practical guide to the design of embedded systems. It great resource for those who want to learn more about the challenges and techniques involved in embedded systems design.
Provides a comprehensive overview of the ARM Cortex-M4 processor, including its architecture, programming, and interfacing. It valuable resource for those who want to learn more about the Cortex-M4 and how to use it in embedded systems.
Provides a hands-on introduction to embedded systems. It great resource for those who want to learn more about the basics of embedded systems and how to build them.
Provides a practical guide to programming embedded systems using C and GNU development tools. It great resource for those who want to learn more about the basics of embedded systems programming.
Provides a comprehensive overview of embedded systems, including hardware, software, and interfacing. It great resource for those who want to learn more about the basics of embedded systems.
Provides a comprehensive overview of embedded systems, including hardware, software, and interfacing. It great resource for those who want to learn more about the basics of embedded systems.
Provides a comprehensive overview of embedded system design, including hardware, software, and interfacing. It great resource for those who want to learn more about the basics of embedded systems.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to STM32Fx Microcontroller Custom Bootloader Development.
Mastering RTOS: Hands on FreeRTOS and STM32Fx with...
Most relevant
Embedded Systems Programming on ARM Cortex-M3/M4 Processor
Most relevant
Microcontroller Embedded C Programming: Absolute Beginners
Most relevant
Mastering Microcontroller and Embedded Driver Development
Most relevant
ARM Cortex (STM32) Fundamentals: Building Embedded Systems
Most relevant
ARM Cortex (STM32) Deep Dive: Mastering Embedded Systems
Most relevant
Embedded Software and Hardware Architecture
Most relevant
Embedded Systems Bare-Metal Programming Ground Up™ (STM32)
Most relevant
Deploying TinyML
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser