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