blob: 9a7dafd630327073eb272bd399916937bb2a4145 [file] [log] [blame] [view]
Francesco Servidio4ff0c182021-10-20 15:27:16 +02001# [MCUboot](http://mcuboot.com/)
Fabio Utzig811205e2017-08-10 14:55:27 -03002
Fabio Utzig0be390e2020-11-12 10:45:07 -03003[![Package on PyPI](https://img.shields.io/pypi/v/imgtool.svg)][pypi]
Fabio Utzig811205e2017-08-10 14:55:27 -03004[![Coverity Scan Build Status](https://scan.coverity.com/projects/12307/badge.svg)][coverity]
Fabio Utzig0be390e2020-11-12 10:45:07 -03005[![Build Status (Sim)](https://github.com/mcu-tools/mcuboot/workflows/Sim/badge.svg)][sim]
6[![Build Status (Mynewt)](https://github.com/mcu-tools/mcuboot/workflows/Mynewt/badge.svg)][mynewt]
Fabio Utzig0d2772c2023-08-09 15:05:12 -03007[![Build Status (Espressif)](https://github.com/mcu-tools/mcuboot/workflows/Espressif/badge.svg)][espressif]
Fabio Utzig0be390e2020-11-12 10:45:07 -03008[![Publishing Status (imgtool)](https://github.com/mcu-tools/mcuboot/workflows/imgtool/badge.svg)][imgtool]
David Brownfe0bfcf2021-05-14 10:12:10 -06009[![Build Status (Travis CI)](https://img.shields.io/travis/mcu-tools/mcuboot/main.svg?label=travis-ci)][travis]
Fabio Utzig0be390e2020-11-12 10:45:07 -030010[![Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)][license]
Fabio Utzig811205e2017-08-10 14:55:27 -030011
Fabio Utzig0be390e2020-11-12 10:45:07 -030012[pypi]: https://pypi.org/project/imgtool/
Fabio Utzig811205e2017-08-10 14:55:27 -030013[coverity]: https://scan.coverity.com/projects/mcuboot
Fabio Utzigba042982020-11-12 13:17:46 -030014[sim]: https://github.com/mcu-tools/mcuboot/actions?query=workflow:Sim
15[mynewt]: https://github.com/mcu-tools/mcuboot/actions?query=workflow:Mynewt
Fabio Utzig0d2772c2023-08-09 15:05:12 -030016[espressif]: https://github.com/mcu-tools/mcuboot/actions?query=workflow:Espressif
Fabio Utzigba042982020-11-12 13:17:46 -030017[imgtool]: https://github.com/mcu-tools/mcuboot/actions?query=workflow:imgtool
Fabio Utzigde1d72d2020-11-10 12:35:04 -030018[travis]: https://travis-ci.org/mcu-tools/mcuboot
David Brownfe0bfcf2021-05-14 10:12:10 -060019[license]: https://github.com/mcu-tools/mcuboot/blob/main/LICENSE
Sterling Hughesb6903ec2017-02-07 13:12:19 -080020
David Brown9bbe0a02024-04-22 12:37:29 -060021This is MCUboot version 2.1.0-rc1
David Browna3be2642017-07-26 19:02:33 -060022
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010023MCUboot is a secure bootloader for 32-bits microcontrollers. It defines a
24common infrastructure for the bootloader and the system flash layout on
25microcontroller systems, and provides a secure bootloader that enables easy
26software upgrade.
Sterling Hughesb6903ec2017-02-07 13:12:19 -080027
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010028MCUboot is not dependent on any specific operating system and hardware and
29relies on hardware porting layers from the operating system it works with.
30Currently, MCUboot works with the following operating systems and SoCs:
31- [Zephyr](https://www.zephyrproject.org/)
32- [Apache Mynewt](https://mynewt.apache.org/)
33- [Apache NuttX](https://nuttx.apache.org/)
34- [RIOT](https://www.riot-os.org/)
35- [Mbed OS](https://os.mbed.com/)
Almir Okato553315c2022-01-26 18:13:50 -030036- [Espressif](https://www.espressif.com/)
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010037- [Cypress/Infineon](https://www.cypress.com/)
Sterling Hughesb6903ec2017-02-07 13:12:19 -080038
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010039RIOT is supported only as a boot target. We will accept any new
40port contributed by the community once it is good enough.
Carles Cufi3b61e702018-01-23 15:43:46 +010041
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010042## MCUboot How-tos
43
44See the following pages for instructions on using MCUboot with different
45operating systems and SoCs:
Carles Cufi3b61e702018-01-23 15:43:46 +010046- [Zephyr](docs/readme-zephyr.md)
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010047- [Apache Mynewt](docs/readme-mynewt.md)
48- [Apache NuttX](docs/readme-nuttx.md)
Carles Cufi3b61e702018-01-23 15:43:46 +010049- [RIOT](docs/readme-riot.md)
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010050- [Mbed OS](docs/readme-mbed.md)
Almir Okato553315c2022-01-26 18:13:50 -030051- [Espressif](docs/readme-espressif.md)
David Browne802cd42022-05-17 08:50:55 -060052- [Cypress/Infineon](boot/cypress/README.md)
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010053
54There are also instructions for the [Simulator](sim/README.rst).
Carles Cufi3b61e702018-01-23 15:43:46 +010055
Sterling Hughesb6903ec2017-02-07 13:12:19 -080056## Roadmap
57
Sigvart M. Hovland68b30532018-09-29 18:58:55 +020058The issues being planned and worked on are tracked using GitHub issues. To
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010059give your input, visit [MCUboot GitHub
60Issues](https://github.com/mcu-tools/mcuboot/issues).
Sterling Hughesb6903ec2017-02-07 13:12:19 -080061
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010062## Source files
Sigvart M. Hovland68b30532018-09-29 18:58:55 +020063
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010064You can find additional documentation on the bootloader in the source files.
65For more information, use the following links:
66- [boot/bootutil](https://github.com/mcu-tools/mcuboot/tree/main/boot/bootutil) - The core of the bootloader itself.
67- [boot/boot\_serial](https://github.com/mcu-tools/mcuboot/tree/main/boot/boot_serial) - Support for serial upgrade within the bootloader itself.
68- [boot/zephyr](https://github.com/mcu-tools/mcuboot/tree/main/boot/zephyr) - Port of the bootloader to Zephyr.
69- [boot/mynewt](https://github.com/mcu-tools/mcuboot/tree/main/boot/mynewt) - Bootloader application for Apache Mynewt.
70- [boot/nuttx](https://github.com/mcu-tools/mcuboot/tree/main/boot/nuttx) - Bootloader application and port of MCUboot interfaces for Apache NuttX.
71- [boot/mbed](https://github.com/mcu-tools/mcuboot/tree/main/boot/mbed) - Port of the bootloader to Mbed OS.
72- [boot/espressif](https://github.com/mcu-tools/mcuboot/tree/main/boot/espressif) - Bootloader application and MCUboot port for Espressif SoCs.
73- [boot/cypress](https://github.com/mcu-tools/mcuboot/tree/main/boot/cypress) - Bootloader application and MCUboot port for Cypress/Infineon SoCs.
74- [imgtool](https://github.com/mcu-tools/mcuboot/tree/main/scripts/imgtool.py) - A tool to securely sign firmware images for booting by MCUboot.
75- [sim](https://github.com/mcu-tools/mcuboot/tree/main/sim) - A bootloader simulator for testing and regression.
Sterling Hughesb6903ec2017-02-07 13:12:19 -080076
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010077## Joining the project
Sterling Hughesb6903ec2017-02-07 13:12:19 -080078
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010079Developers are welcome!
Sterling Hughesb6903ec2017-02-07 13:12:19 -080080
Francesco Domenico Servidio50f11012021-11-03 13:48:58 +010081Use the following links to join or see more about the project:
Sterling Hughesb6903ec2017-02-07 13:12:19 -080082
Francesco Servidio18488632021-10-20 14:57:50 +020083* [Our developer mailing list](https://groups.io/g/MCUBoot)
84* [Our Slack channel](https://mcuboot.slack.com/) <br />
85 Get [your invite](https://join.slack.com/t/mcuboot/shared_invite/MjE2NDcwMTQ2MTYyLTE1MDA4MTIzNTAtYzgyZTU0NjFkMg)