Skip to content

Commit

Permalink
[EFR32] Bump the silabs submodule pointer, update documentation (#20847)
Browse files Browse the repository at this point in the history
* Test added march 8 (#15957)

* Added new manual scripts

* Added Auto generated File

* [OTA] Fix OTARequestorDriverImpl inclusion (#15981)

* Regen to fix CI failures (#15990)

* [ota] Store Default OTA Providers in flash (#15970)

* [ota] Store Default OTA Providers in flash

Store Default OTA Providers in flash each time the attribute
is modified and load it back on the application startup.

* Restyled by clang-format

* Fix build and reduce flash usage

Co-authored-by: Restyled.io <[email protected]>

* Update silabs submodule to include booltoader binaries; update documentation

* Remove merge artifacts

* Restyled by prettier-markdown

* Update dictionary

Co-authored-by: kowsisoundhar12 <[email protected]>
Co-authored-by: Carol Yang <[email protected]>
Co-authored-by: Boris Zbarsky <[email protected]>
Co-authored-by: Damian Królik <[email protected]>
Co-authored-by: Restyled.io <[email protected]>
  • Loading branch information
6 people authored Jul 18, 2022
1 parent 21490a2 commit af5f7c9
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 16 deletions.
2 changes: 2 additions & 0 deletions .github/.wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -761,6 +761,7 @@ LTE
LTS
LwIP
LwIP's
LZMA
macaddr
machineType
MacOS
Expand Down Expand Up @@ -884,6 +885,7 @@ NodeId
nongnu
nordicsemi
NotAvailable
NotifyUpdateApplied
notValue
npm
nRF
Expand Down
77 changes: 62 additions & 15 deletions docs/guides/silabs_efr32_software_update.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,15 @@ all of the EFR32 example applications.
scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/debug chip_config_network_layer_ble=false
```

- Build or download the Gecko Bootloader binary. Bootloader should be built
with the Gecko SDK version 3.2.1 or earlier. For the bootloader using the
external flash select the "external SPI" bootloader type configured with a
single slot of at least 1000 KB. For the bootloader using the internal flash
(supported on MG24 boards only) select the "internal storage" bootloader
type. Follow the instructions in "UG266: Silicon Labs Gecko Bootloader
User’s Guide". Pre-built binaries for some configurations should be
available in
- Build or download the Gecko Bootloader binary. Follow the instructions in
"UG266: Silicon Labs Gecko Bootloader User’s Guide". For the bootloader
using the external flash select the "external SPI" bootloader type
configured with a single slot of at least 1000 KB. For the bootloader using
the internal flash see the Internal Storage Bootloader section below.
Pre-built binaries for some configurations should be available in

```
third_party/efr32_sdk/repo/platform/bootloader/sample-apps/bootloader-storage-spiflash-single
third_party/silabs/matter_support/matter/efr32/bootloader_binaries
```

- Using the commander tool upload the bootloader to the device running the
Expand All @@ -45,7 +43,7 @@ all of the EFR32 example applications.
- Create the Matter OTA file from the bootable image file:

```
./src/app/ota_image_tool.py create -v 0xFFF1 -p 0x8005 -vn 1 -vs "1.0" -da sha256 chip-efr32-lighting-example.gbl chip-efr32-lighting-example.ota
./src/app/ota_image_tool.py create -v 0xFFF1 -p 0x8005 -vn 2 -vs "2.0" -da sha256 chip-efr32-lighting-example.gbl chip-efr32-lighting-example.ota
```

- In a terminal start the Provider app passing to it the path to the Matter
Expand Down Expand Up @@ -84,7 +82,55 @@ where operationalDataset is obtained from the OpenThread Border Router.
download. Once the image is downloaded the device will reboot into the
downloaded image.

## Managing the Software Version, Vendor and Product ID
## Internal Storage Bootloader

Internal storage bootloader for Matter OTA software update is supported on MG24
boards only. In this use case both the running image and the downloadable update
image must fit on the internal flash at the same time. This in turn requires
that both images are built with a reduced feature set such as disabled logging
and Matter shell. The following set of compile flags leaves out all the optional
features and results in the minimal image size:

```
chip_detail_logging=false chip_automation_logging=false chip_progress_logging=false is_debug=false show_qr_code=false chip_build_libshell=false enable_openthread_cli=false chip_openthread_ftd=true
```

Using LZMA compression when building the .gbl file ( passing `--compress lzma`
parameter to the `commander gbl create` command) further reduces the downloaded
image size.

When building an internal storage bootloader the two key configuration
parameters are the Slot Start Address and Slot Size in the Bootloader Storage
Slot component. The storage slot must not overlap with the running image and the
NVM section of the flash. In other words, the slot start address must be greater
than the end of the running image address and the sum of the start address and
the slot size must be less than the address of the NVM section. The simplest way
to get the relevant addresses for the running image and NVM would be by using
the Silicon Labs `commander` tool (Device Info->Main Flash->Flash Map).

The pre-built bootloader binaries are configured with slot start address of
0x080EC000 and slot size of 548864

## Managing the Software Version

In order for the Provider to successfully serve the image to a device during the
OTA Software Update process the Software Version parameter that the .ota file
was built with must be greater than the
CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION parameter set in the application's
`CHIPProjectConfig.h` file. The Software Version parameter is set by the `-vn`
parameter passed to the `ota_image_tool.py create` command. For example, if the
application's running image was built with
CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION set to 1 and if the `.ota` file is
built with `-vn 2` then the Provider will serve the update image when requested.

In order for the OTA Software Update subsystem to consider an update to be
successful and for the NotifyUpdateApplied command to be transmitted the
CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION in the updated image must exceed the
software version of the running image (continuing the above example, the image
for the update must be built with CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION set
to 2).

## Managing the Vendor and Product ID

Starting the ota-provider-app with the --otaImageList command line option allows
the user to supply a JSON file specifying the Software Version, Vendor and
Expand All @@ -102,7 +148,8 @@ Example provider configuration file:
}
```

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.
## Additional Info

Developers can find more resources on
[Silicon Labs Matter Community Page](https://community.silabs.com/s/article/connected-home-over-ip-chip-faq?language=en_US)
.
2 changes: 1 addition & 1 deletion third_party/silabs/matter_support
Submodule matter_support updated 19 files
+10 −0 matter/efr32/bootloader_binaries/README.md
+970 −0 matter/efr32/bootloader_binaries/bootloader-storage-internal-single-512k-BRD4186C-gsdk4.1.s37
+977 −0 matter/efr32/bootloader_binaries/bootloader-storage-internal-single-512k-BRD4187C-gsdk4.1.s37
+1,124 −0 matter/efr32/bootloader_binaries/bootloader-storage-spiflash-single-1024k-BRD4161A-gsdk4.1.s37
+1,124 −0 matter/efr32/bootloader_binaries/bootloader-storage-spiflash-single-1024k-BRD4162A-gsdk4.1.s37
+1,124 −0 matter/efr32/bootloader_binaries/bootloader-storage-spiflash-single-1024k-BRD4164A-gsdk4.1.s37
+1,124 −0 matter/efr32/bootloader_binaries/bootloader-storage-spiflash-single-1024k-BRD4166A-gsdk4.1.s37
+1,124 −0 matter/efr32/bootloader_binaries/bootloader-storage-spiflash-single-1024k-BRD4170A-gsdk4.1.s37
+1,043 −0 matter/efr32/bootloader_binaries/bootloader-storage-spiflash-single-1024k-BRD4186C-gsdk4.1.s37
+1,050 −0 matter/efr32/bootloader_binaries/bootloader-storage-spiflash-single-1024k-BRD4187C-gsdk4.1.s37
+1,124 −0 matter/efr32/bootloader_binaries/bootloader-storage-spiflash-single-1024k-BRD4304A-gsdk4.1.s37
+ sl_openthread_cert_library/EFR32MG12/ot-ftd/libsl_ot_stack_ftd_efr32mg12_gcc.a
+ sl_openthread_cert_library/EFR32MG12/ot-ftd/libsl_platform_efr32mg12_gcc.a
+ sl_openthread_cert_library/EFR32MG12/ot-mtd/libsl_ot_stack_mtd_efr32mg12_gcc.a
+ sl_openthread_cert_library/EFR32MG12/ot-mtd/libsl_platform_efr32mg12_gcc.a
+ sl_openthread_cert_library/EFR32MG24/ot-ftd/libsl_ot_stack_ftd_efr32mg24_gcc.a
+ sl_openthread_cert_library/EFR32MG24/ot-ftd/libsl_platform_efr32mg24_gcc.a
+ sl_openthread_cert_library/EFR32MG24/ot-mtd/libsl_ot_stack_mtd_efr32mg24_gcc.a
+ sl_openthread_cert_library/EFR32MG24/ot-mtd/libsl_platform_efr32mg24_gcc.a

0 comments on commit af5f7c9

Please sign in to comment.