Giter VIP home page Giter VIP logo

stm32-mw-openbl's Introduction

Middleware Open Bootloader MCU Component

latest tag

Overview

Open Bootloader is an In-Application programming (IAP) provided in the STM32Cube MCU Packages and GitHub. It is fully compatible with STM32 System Bootloader so that it have the same supported interfaces and commands. It's also using the same Tools such as STM32CubeProgrammer.

Open Bootloader is provided as an example that can be used by any customer who wants to build and customize his own Bootloader starting from a good basis. It allows all possible bootloader operations (Read, write, erase, jump...) into internal (Flash, SRAM, OTP...) or external memory using one of the available communication interfaces (USART, I2C, SPI, USB-DFU, FDCAN...).

Open Bootloader supplies services to the Host (can be STM32CubeProgrammer or another user made host) in order to perform all possible Bootloader operations.

Open Bootloader relies on STM32Cube HAL/LL drivers for hardware system initialization such as the clocks and the communication interfaces configuration.

Open Bootloader code can be loaded at any address of user Flash memory with taking necessary precautions to avoid erasing or corrupting it by error (for example use write protection mechanism).

Open Bootloader is executed by Cortex-M processor on the non-secure domain and uses the following resources:

  • Non secure internal flash memory/SRAM1
  • Interrupts
  • Clocks and power
  • Communication interfaces
  • GPIOs
  • Systick
  • IWDG

Open Bootloader can be customized by changing its location (ie. load it in last user Flash sector or other sectors), its supported protocols, its supported interfaces, and its supported operations.

Open Bootloader applications can be found in STM32Cube MCU Packages under the directory /Projects/<STM32xxBoardyy>/Applications/OpenBootloader/, where <STM32xxBoardyy> is the reference of the used board e.g., B-U585I-IOT02A.

Documentation

Since Open Bootloader supports exactly same protocol interfaces as STM32 System Bootloader, following list of documents provide details of how to use each protocol:

  • AN3155: USART protocol used in the STM32 Bootloader
  • AN5405: FDCAN protocol used in the STM32 Bootloader
  • AN4221: I2C protocol used in the STM32 Bootloader
  • AN3156: USB DFU protocol used in the STM32 Bootloader
  • AN4286: SPI protocol used in the STM32 Bootloader

A useful introductory video series, in six parts, explaining how to use Open Bootloader step by step, can be found here:

  • Part 1: Introduction
  • Part 2: Using a NUCLEO-G474RE
  • Part 3: Loading an application
  • Part 4: Adding support for the I2C interface
  • Part 5: STLINK-V3SET I2C setup
  • Part 6: Loading an application over I2C

List of Supported Commands

All STM32 System Bootloader commands can be supported by Open Bootloader, which includes:

  • Get Version
  • Get Device ID
  • Get Available Command List
  • Write Memory
  • Read Memory
  • Write Protection setting
  • Read Protection setting
  • Jump to Application
  • Flash Erase
  • Special Command
  • Extended Special Command

How to use

Open Bootloader examples showing how to use this library are available in dedicated repositories, the list of which can be found here.

Description

This stm32-mw-openbl MCU component repository is one element common to all STM32Cube MCU packages, providing the Open Bootloader MCU Middleware part.

Release note

Details about the content of this release are available in the release note here.

Troubleshooting

Caution : The issues are strictly limited to submit problems or suggestions related to the software delivered in this repository.

For any other question related to the product, the hardware performance or characteristics, the tools, the environment, you can submit it to the ST Community on the STM32 MCUs related page.

stm32-mw-openbl's People

Contributors

alaastm avatar alabstm avatar aselstm avatar stmicroelectronics-github avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stm32-mw-openbl's Issues

Some functions are placed in the RAM

Hello,

could you please explain why in the file spi_interface.c some functions are placed in the RAM ?
For exaple:
#if defined (ICCARM)
__ramfunc void OPENBL_SPI_SendByte(uint8_t Byte)
#else
attribute((section(".ramfunc"))) void OPENBL_SPI_SendByte(uint8_t Byte)
#endif /* (ICCARM) */

Thank you for your help.
Regards,
Marco

Where is Get Memory Checksum command (i2c interface)

According to AN4221, the i2c bootloaders starting from version 1.2 support "No-Stretch Get Memory Checksum" command. However, I simply cannot find that command implementation or handling in the files modules/i2c/openbl_i2c.cmd.h or modules/i2c/openbl_i2c.cmd.h

Support of High Speed USB

Support for the High Speed USB interface?

Currently using the STM32H743I-EVAL2 board and would like to use the openbl on the high speed usb interface instead of the full speed usb port.

Developing in the STM32CUBE IDE.

Why is the compatibility of openbl so poor?

According to the content described in the readme, openbl should be a bootloader compatible with all stm32 chips. However, when I transplanted openbl to stm32f1 following the program of stm32u5, there were a lot of errors. The flash_interface should be a file compatible with all devices. , but now there are so many errors I don't know how to fix it

openbl memory and flash usage

I learned that OPenbootloader has been updated and has reached the 6th version. When I opened STM32CubeU5, I found that OPENBL_RAM_SIZE is 90kBytes. Is there any detailed document to explain how to cut this BootLoader, because chips with small resources cannot use this bootloader at all

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.