52 lines
2.2 KiB
ReStructuredText
52 lines
2.2 KiB
ReStructuredText
|
Building and using mcuboot with RIOT
|
||
|
######################################
|
||
|
|
||
|
*mcuboot* began its life as the bootloader for Mynewt. It has since
|
||
|
acquired the ability to be used as a bootloader for RIOT as well.
|
||
|
Currently the support is limited to the nrf52dk platform.
|
||
|
|
||
|
Building the bootloader itself
|
||
|
==============================
|
||
|
|
||
|
In this first version, a prebuilt Mynewt binary is downloaded at
|
||
|
compile time. This binary was compiled to do an integrity check, but
|
||
|
not a signature check. In order to configure the bootloader for
|
||
|
signature check it is necessary to re-compile it either with Mynewt
|
||
|
or Zephyr, following the provided instructions.
|
||
|
|
||
|
In the next version, it is planned to compile mcuboot using RIOT,
|
||
|
which should be able to boot any of the supported OS images.
|
||
|
|
||
|
Building Applications for the bootloader
|
||
|
========================================
|
||
|
|
||
|
A compatible mcuboot image can be compiled by typing: :code:`make mcuboot`.
|
||
|
|
||
|
The only variable which needs to be set is :code:`IMAGE_VERSION` loaded
|
||
|
with a valid formatted value. The format is :code:`major.minor.patch+other`
|
||
|
(e.g. :code:`export IMAGE_VERSION= 1.1.1+1`. This variable can be either
|
||
|
exported in the Makefile or manually, prior to the compilation process.
|
||
|
|
||
|
The goal is to produce an ELF file which is linked to be flashed at a
|
||
|
:code:`BOOTLOADER_OFFSET` offset rather than the beginning of ROM. mcuboot
|
||
|
also expects an image padded with some specific headers containing the
|
||
|
version information, and trailer type-length-value records (TLVs) with
|
||
|
hash and signing information. This is done through the imgtool.py
|
||
|
application, which is executed automatically by the RIOT build system.
|
||
|
|
||
|
Signing the application
|
||
|
-----------------------
|
||
|
|
||
|
The application will be automatically signed with the provided key.
|
||
|
If no key is provided, a new key will be automatically generated. The
|
||
|
default key type is RSA-2048.
|
||
|
|
||
|
In order to use your provided key, you need to recompile the bootloader
|
||
|
using you public key, either in Zephyr or Mynewt by following the
|
||
|
provided procedure for the selected OS.
|
||
|
|
||
|
Flashing the application
|
||
|
------------------------
|
||
|
The application can be flashed by typing: :code:`make flash-mcuboot`.
|
||
|
This will flash both the bootloader and the application.
|