blob: 45766b1db8d44fc74e0c10ed9d2c3bbce8b96b42 [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.
## Supported platforms
- K32W0 -
[K32W OTA README](../../../../src/platform/nxp/k32w/common/K32W_OTA_README.md)
## 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**:
```
# Application options
--app-input-file --> Path to the application binary.
--app-version --> Application version. It's part of the descriptor and
can be different than the OTA image header version: -vn.
--app-version-str --> Application version string. Same as above.
--app-build-date --> Application build date. Same as above.
# SSBL options
--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 options
--factory-data --> If set, enables the generation of factory data.
--cert_declaration --> Certification Declaration.
--dac_cert --> DAC certificate.
--dac_key --> DAC private key.
--pai_cert --> PAI certificate.
# Custom TLV options
--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.