blob: c42e7bc75a2036cbe8a513cb6973ef2c81d56d35 [file] [log] [blame] [view]
David Brown37f8afd2017-09-12 10:59:39 -06001# MCUboot Release Notes
2
3- Table of Contents
4{:toc}
5
David Brown4d0c5fa2019-10-08 09:57:31 -06006## Version 1.4.0
7
8The 1.4.0 release of MCUboot primarily adds support for multi-image
9booting. With this release, MCUboot can manage two images that can be
10updated independently. With this, it also supports additions to the
11TLV that allow these dependencies to be specified.
12
13Multi-image support adds backward-incompatible changes to the format
14of the images: specifically adding support for protected TLV entries.
15If multiple images and dependencies are not used, the images will be
16compatible with previous releases of MCUboot.
17
18### About this release
19
20- Fixed CVE-2019-5477. This fixes an issue with a dependency used in
21 the generation of the documentation on github.
22- Numerous code cleanups and refactorings
23- Documentation updates for multi-image features
24- Update imgtool.py to support the new features
25
Szymon Janc7fea8462019-07-04 14:45:52 +020026## Version 1.3.1
27
28The 1.3.1 release of MCUboot consists mostly of small bug fixes and updates.
29There are no breaking changes in functionality. This release should work with
30Mynewt 1.6.0 and up, and any Zephyr `master` after sha
31f51e3c296040f73bca0e8fe1051d5ee63ce18e0d.
32
33### About this release
34
35- Fixed a revert interruption bug
36- Added ed25519 signing support
37- Added RSA-3072 signing support
38- Allow ec256 to run on CC310 interface
39- Some preparation work was done to allow for multi image support, which
40 should land in 1.4.0. This includes a simulator update for testing
41 multi-images, and a new name for slot0/slot1 which are now called
42 "primary slot" and "secondary slot".
43- Other minor bugfixes and improvements
44
David Brownb1d15a72019-01-22 16:22:08 -070045## Version 1.3.0
46
47The 1.3.0 release of MCUboot brings in many fixes and updates. There
48are no breaking changes in functionality. Many of the changes are
49refactorings that will make the code easier to maintain going forward.
50In addition, support has been added for encrypted images. See [the
51docs](encrypted_images.md) for more information.
52
53### About this release
54
55- Modernize the Zephyr build scripts.
56- Add a `ptest` utility to help run the simulator in different
57 configurations.
58- Migrate the simulator to Rust 2018 edition. The sim now requires at
59 least Rust 1.32 to build.
60- Simulator cleanups. The simulator code is now built the same way
61 for every configuration, and queries the MCUboot code for how it was
62 compiled.
63- Abstract logging in MCUboot. This was needed to support the new
64 logging system used in Zephyr.
65- Add multiple flash support. Allows slot1/scratch to be stored in an
66 external flash device.
67- Add support for [encrypted images](encrypted_images.md).
68- Add support for flash devices that read as '0' when erased.
69- Add support to Zephyr for the `nrf52840_pca10059`. This board
70 supports serial recovery over USB with CDC ACM.
71- imgtool is now also available as a python package on pypi.org.
72- Add an option to erase flash pages progressively during recovery to
73 avoid possible timeouts (required especially by serial recovery
74 using USB with CDC ACM).
75- imgtool: big-endian support
76- imgtool: saves in intel-hex format when output filename has `.hex`
77 extension; otherwise saves in binary format.
78
Fabio Utzig3c939012018-06-25 13:26:32 -030079## Version 1.2.0
80
81The 1.2.0 release of MCUboot brings a lot of fixes/updates, where much of the
82changes were on the boot serial functionality and imgtool utility. There are
83no breaking changes in MCUBoot functionality, but some of the CLI parameters
84in imgtool were changed (either removed or added or updated).
85
86### About this release
87
88- imgtool accepts .hex formatted input
89- Logging system is now configurable
90- Most Zephyr configuration has been switched to Kconfig
91- Build system accepts .pem files in build system to autogenerate required
92 key arrays used internally
93- Zephyr build switched to using built-in flash_map and TinyCBOR modules
94- Serial boot has substantially decreased in space usage after refactorings
95- Serial boot build doesn't require newlib-c anymore on Zephyr
96- imgtool updates:
97 + "create" subcommand can be used as an alias for "sign"
98 + To allow imgtool to always perform the check that firmware does not
99 overflow the status area, `--slot-size` was added and `--pad` was updated
100 to act as a flag parameter.
101 + `--overwrite-only` can be passed if not using swap upgrades
102 + `--max-sectors` can be used to adjust the maximum amount of sectors that
103 a swap can handle; this value must also be configured for the bootloader
104 + `--pad-header` substitutes `--included-header` with reverted semantics,
105 so it's not required for firmware built by Zephyr build system
106
107### Known issues
108
109None
110
Fabio Utzig49045cc2018-01-09 15:56:29 -0200111## Version 1.1.0
112
Carles Cufi90eda802018-01-29 18:33:20 +0100113The 1.1.0 release of MCUboot brings a lot of fixes/updates to its
Fabio Utzig49045cc2018-01-09 15:56:29 -0200114inner workings, specially to its testing infrastructure which now
115enables a more thorough quality assurance of many of the available
116options. As expected of the 1.x.x release cycle, no breaking changes
117were made. From the tooling perpective the main addition is
118newt/imgtool support for password protected keys.
119
120### About this release
121
122- serial recovery functionality support under Zephyr
123- simulator: lots of refactors were applied, which result in the
124 simulator now leveraging the Rust testing infrastructure; testing
125 of ecdsa (secp256r1) was added
126- imgtool: removed PKCS1.5 support, added support for password
127 protected keys
128- tinycrypt 0.2.8 and the mbed-tls ASN1 parser are now bundled with
129 mcuboot (eg secp256r1 is now free of external dependencies!)
130- Overwrite-only mode was updated to erase/copy only sectors that
131 actually store firmware
132- A lot of small code and documentation fixes and updates.
133
134### Known issues
135
136None
137
David Brown37f8afd2017-09-12 10:59:39 -0600138## Version 1.0.0
139
Carles Cufi90eda802018-01-29 18:33:20 +0100140The 1.0.0 release of MCUboot introduces a format change. It is
David Brown37f8afd2017-09-12 10:59:39 -0600141important to either use the `imgtool.py` also from this release, or
142pass the `-2` to recent versions of the `newt` tool in order to
143generate image headers with the new format. There should be no
144incompatible format changes throughout the 1.x.y release series.
145
146### About this release
147
148- Header format change. This change was made to move all of the
149 information about signatures out of the header and into the TLV
150 block appended to the image. This allows
151 - The signature to be replaced without changing the image.
152 - Multiple signatures to be applied. This can be used, for example,
153 to sign an image with two algorithms, to support different
154 bootloader configurations based on these image.
155 - The public key is referred to by its SHA1 hash (or a prefix of the
156 hash), instead of an index that has to be maintained with the
157 bootloader.
158 - Allow new types of signatures in the future.
159- Support for PKCS#1 v1.5 signatures has been dropped. All RSA
160 signatures should be made with PSS. The tools have been changed to
161 reflect this.
162- The source for Tinycrypt has been placed in the MCUboot tree. A
163 recent version of Tinycrypt introduced breaking API changes. To
164 allow MCUboot to work across various platforms, we stop using the
165 Tinycrypt bundled with the OS platform, and use our own version. A
166 future release of MCUboot will update the Tinycrypt version.
167- Support for some new targets:
168 - Nordic nRF51 and nRF52832 dev kits
169 - Hexiwear K64
170- Clearer sample applications have been added under `samples`.
Fabio Utzig4dce6aa2018-02-12 15:31:32 -0200171- Test plans for [zephyr](testplan-zephyr.md), and
172 [mynewt](testplan-mynewt.md).
David Brown37f8afd2017-09-12 10:59:39 -0600173- The simulator is now able to test RSA signatures.
174- There is an unimplemented `load_addr` header for future support for
175 RAM loading in the bootloader.
176- Numerous documentation.
177
178### Known issues
179
180None
181
182## Version 0.9.0
183
Carles Cufi90eda802018-01-29 18:33:20 +0100184This is the first release of MCUboot, a secure bootloader for 32-bit MCUs.
David Brown37f8afd2017-09-12 10:59:39 -0600185It is designed to be operating system-agnostic and works over any transport -
186wired or wireless. It is also hardware independent, and relies on hardware
187porting layers from the operating system it works with. For the first release,
188we have support for three open source operating systems: Apache Mynewt, Zephyr
189and RIOT.
190
191### About this release
192
193- This release supports building with and running Apache Mynewt and Zephyr
194 targets.
195- RIOT is supported as a running target.
196- Image integrity is provided with SHA256.
197- Image originator authenticity is provided supporting the following
198 signature algorithms:
199 - RSA 2048 and RSA PKCS#1 v1.5 or v2.1
200 - Elliptic curve DSA with secp224r1 and secp256r1
201- Two firmware upgrade algorithms are provided:
202 - An overwrite only which upgrades slot 0 with the image in slot 1.
203 - A swapping upgrade which enables image test, allowing for rollback to a
204 previous known good image.
205- Supports both mbed-TLS and tinycrypt as backend crypto libraries. One of them
206 must be defined and the chosen signing algorithm will require a particular
207 library according to this list:
208 - RSA 2048 needs mbed TLS
209 - ECDSA secp224r1 needs mbed TLS
210 - ECDSA secp256r1 needs tinycrypt as well as the ASN.1 code from mbed TLS
211 (so still needs that present).
212
213### Known issues
214
215- The image header and TLV formats are planned to change with release 1.0:
216 https://runtimeco.atlassian.net/browse/MCUB-66