-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3a7b6ee
commit f7c2aa7
Showing
1 changed file
with
60 additions
and
43 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,71 +1,88 @@ | ||
# Matter Software Update with Infineon PSoC6 and OPTIGA™ Trust M example applications | ||
|
||
The Over The Air (OTA) Software Update functionality can be added to any of the Infineon PSoC6 example applications by passing the | ||
The Over The Air (OTA) Software Update functionality can be added to any of the | ||
Infineon PSoC6 example applications by passing the | ||
`chip_enable_ota_requestor=true` option to the build script. | ||
|
||
## Running the OTA Download scenario | ||
|
||
- An OTA Provider is a node that can respond to the OTA Requestors' queries about available software updates and share the update packages with them. An OTA Requestor is any node that needs to be updated and can communicate with the OTA Provider to fetch applicable software updates. In the procedure described below, the OTA Provider will be a Linux application and the example running on the Infineon PSoC6 board will work as the OTA Requestor. | ||
|
||
- On a Linux or Darwin platform build the chip-tool and the ota-provider-app as follows: | ||
|
||
This step can be ignored if Test Harness(Raspberry Pi) is used as OTA Provider. | ||
|
||
- An OTA Provider is a node that can respond to the OTA Requestors' queries | ||
about available software updates and share the update packages with them. An | ||
OTA Requestor is any node that needs to be updated and can communicate with | ||
the OTA Provider to fetch applicable software updates. In the procedure | ||
described below, the OTA Provider will be a Linux application and the | ||
example running on the Infineon PSoC6 board will work as the OTA Requestor. | ||
|
||
- On a Linux or Darwin platform build the chip-tool and the ota-provider-app | ||
as follows: | ||
|
||
This step can be ignored if Test Harness(Raspberry Pi) is used as OTA | ||
Provider. | ||
|
||
``` | ||
scripts/examples/gn_build_example.sh examples/chip-tool out/ | ||
scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/debug chip_config_network_layer_ble=false | ||
``` | ||
|
||
- Build the PSoC6 OTA Requestor application with OPTIGA™ Trust M from the connectedhomeip root dir: | ||
|
||
``` | ||
$ scripts/build/build_examples.py --enable-flashbundle --target infineon-psoc6-lock-trustm-ota build | ||
$ third_party/infineon/psoc6/psoc6_sdk/ota/ota_base_build.sh out/infineon-psoc6-lock-trustm-ota chip-psoc6-lock-example | ||
``` | ||
- Build the PSoC6 OTA Requestor application with OPTIGA™ Trust M from the | ||
connectedhomeip root dir: | ||
|
||
``` | ||
$ scripts/build/build_examples.py --enable-flashbundle --target infineon-psoc6-lock-trustm-ota build | ||
$ third_party/infineon/psoc6/psoc6_sdk/ota/ota_base_build.sh out/infineon-psoc6-lock-trustm-ota chip-psoc6-lock-example | ||
``` | ||
|
||
Note: In order for the Provider to successfully serve the image to a device during the OTA Software Update process the softwareVersion parameter in the Provider config file must be greater than the CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION parameter set in the application's CHIPProjectConfig.h file. | ||
Note: In order for the Provider to successfully serve the image to a device | ||
during the OTA Software Update process the softwareVersion parameter in the | ||
Provider config file must be greater than the | ||
CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION parameter set in the | ||
application's CHIPProjectConfig.h file. | ||
|
||
* Build the PSoC6 OTA Update application with OPTIGA™ Trust M from the connectedhomeip root dir and create OTA file | ||
* Build the PSoC6 OTA Update application with OPTIGA™ Trust M from the | ||
connectedhomeip root dir and create OTA file | ||
|
||
``` | ||
$ scripts/build/build_examples.py --enable-flashbundle --no-log-timestamps --target infineon-psoc6-lock-trustm-ota-updateimage build | ||
$ third_party/infineon/psoc6/psoc6_sdk/ota/ota_update_build.sh out/infineon-psoc6-lock-trustm-ota-updateimage chip-psoc6-lock-example | ||
``` | ||
``` | ||
$ scripts/build/build_examples.py --enable-flashbundle --no-log-timestamps --target infineon-psoc6-lock-trustm-ota-updateimage build | ||
$ third_party/infineon/psoc6/psoc6_sdk/ota/ota_update_build.sh out/infineon-psoc6-lock-trustm-ota-updateimage chip-psoc6-lock-example | ||
``` | ||
|
||
* Additionally a pre-compiled bootloader must be flashed to the board using [Cypress Programmer](https://softwaretools.infineon.com/tools/com.ifx.tb.tool.cypressprogrammer). | ||
* Additionally a pre-compiled bootloader must be flashed to the board using | ||
[Cypress Programmer](https://softwaretools.infineon.com/tools/com.ifx.tb.tool.cypressprogrammer). | ||
This image can be found at: | ||
|
||
$ ./third_party/infineon/psoc6/psoc6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex | ||
$ ./third_party/infineon/psoc6/psoc6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex | ||
|
||
* In a terminal start the Provider app passing to it the path to the Matter | ||
* In a terminal start the Provider app passing to it the path to the Matter | ||
OTA file created in the previous step:(output of ota_update_build step) | ||
|
||
``` | ||
rm -r /tmp/chip_* | ||
./chip-ota-provider-app --discriminator 3840 --passcode 20202021 -f ../chip-psoc6-lock-example.ota | ||
``` | ||
``` | ||
rm -r /tmp/chip_* | ||
./chip-ota-provider-app --discriminator 3840 --passcode 20202021 -f ../chip-psoc6-lock-example.ota | ||
``` | ||
|
||
* In a separate terminal run the chip-tool commands to provision the Provider: | ||
|
||
``` | ||
./chip-tool pairing onnetwork-long 1 20202021 3840 | ||
./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": null}]' 1 0 | ||
``` | ||
|
||
Note: If the application device had been previously commissioned press USER Button2 to factory-reset the device. | ||
|
||
* In the chip-tool terminal enter: | ||
* In a separate terminal run the chip-tool commands to provision the Provider: | ||
|
||
``` | ||
./chip-tool pairing ble-wifi 2 <WIFI_SSID> <WIFI_PASSWORD> 20202021 3840 | ||
./chip-tool pairing onnetwork-long 1 20202021 3840 | ||
./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": null}]' 1 0 | ||
``` | ||
|
||
* Once the commissioning process completes enter: | ||
Note: If the application device had been previously commissioned press USER | ||
Button2 to factory-reset the device. | ||
|
||
``` | ||
./chip-tool otasoftwareupdaterequestor announce-ota-provider 1 0 0 0 2 0 | ||
``` | ||
* In the chip-tool terminal enter: | ||
|
||
``` | ||
./chip-tool pairing ble-wifi 2 <WIFI_SSID> <WIFI_PASSWORD> 20202021 3840 | ||
``` | ||
|
||
* Once the commissioning process completes enter: | ||
|
||
* The application device will connect to the Provider and start the image download. Status of the transfer can be monitored in the OTA Provider | ||
terminal. Once the image is downloaded the device will reboot into the downloaded image. | ||
``` | ||
./chip-tool otasoftwareupdaterequestor announce-ota-provider 1 0 0 0 2 0 | ||
``` | ||
|
||
* The application device will connect to the Provider and start the image | ||
download. Status of the transfer can be monitored in the OTA Provider | ||
terminal. Once the image is downloaded the device will reboot into the | ||
downloaded image. |