blob: d2f8fd17a5d0281465eaf2d108e2fea96a03146c [file] [log] [blame] [view]
---
orphan: true
---
# NXP OTA image tool
## Overview
This tool can generate an OTA image in the `|OTA standard header|TLV1|...|TLVn|`
format. The payload contains data in standard TLV format (not Matter TLV
format). During OTA transfer, these TLV can span across multiple BDX blocks,
thus the `OTAImageProcessorImpl` instance should take this into account.
For details related to the OTA implementation, please see
[OTA README](../../../../src/platform/nxp/common/ota/README.md).
## Supported platforms
- `k32w0`
- `k32w1`
- `mcxw71`
## Usage
This is a wrapper over standard `ota_image_tool.py`, so the options for `create`
are also available here:
```
python3 ./scripts/tools/nxp/ota/ota_image_tool.py create -v 0xDEAD -p 0xBEEF -vn 50000 -vs "1.0" -da sha256
```
followed by **custom options**- and a positional argument (should be last) that
specifies the output file. Please see the `create_ota_images.sh` for some
reference commands.
The list of **custom options**:
| option | description |
| -------------------- | -------------------------------------------------- |
| `--app-input-file` | Path to the application binary |
| `--app-version` | Application version. Can differ from `-vn` |
| `--app-version-str` | Application version string. Same as above |
| `--app-build-date` | Application build date. Same as above |
| `--bl-input-file` | Path to the SSBL binary |
| `--bl-version` | SSBL version |
| `--bl-version-str` | SSBL version string |
| `--bl-build-date` | SSBL build date |
| `--factory-data` | Enable the generation of factory data |
| `--cert_declaration` | Matter Certification Declaration |
| `--dac_cert` | Matter DAC certificate |
| `--dac_key` | Matter DAC private key |
| `--pai_cert` | Matter PAI certificate |
| `--json` | Path to a JSON file following `ota_payload.schema` |
Please note that the options above are separated into four categories:
application, bootloader, factory data and custom TLV (`--json` option). If no
descriptor options are specified for app/SSBL, the script will use the default
values (`50000`, `"50000-default"`, `"2023-01-01"`). The descriptor feature is
optional, TLV processors having the option to register a callback for descriptor
processing.
## Custom payload
When defining a custom processor, a user is able to also specify the custom
format of the TLV by creating a JSON file based on the `ota_payload.schema`. The
tool offers support for describing multiple TLV in the same JSON file. Please
see the `examples/ota_max_entries_example.json` for a multi-app + SSBL example.
Option `--json` must be used to specify the path to the JSON file.
## Examples
A set of examples can be found in `./examples`. Please run `create_ota_image.sh`
to generate the examples:
- Application image with default descriptor
- Application image with specified descriptor
- Factory data image
- SSBL image
- Application + SSBL + factory data image
- Maximum number of entries image, using `ota_max_entries_example.json`. The
examples uses 8 SSBL binaries because they have a small size and fit in
external flash.
The binaries from `./examples/binaries` should only be used only as an example.
The user should provide their own binaries when generating the OTA image.