Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EFR32] Bump the silabs submodule pointer, update documentation #20847

Merged
merged 49 commits into from
Jul 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
35fad7d
Test added march 8 (#15957)
kowsisoundhar12 Mar 9, 2022
d5f4b0b
[OTA] Fix OTARequestorDriverImpl inclusion (#15981)
carol-apple Mar 9, 2022
9bee828
Regen to fix CI failures (#15990)
bzbarsky-apple Mar 9, 2022
b942392
[ota] Store Default OTA Providers in flash (#15970)
Damian-Nordic Mar 9, 2022
c219807
Merge branch 'master' of github.com:project-chip/connectedhomeip
selissia Mar 11, 2022
fa279bc
Merge branch 'project-chip:master' into master
selissia Mar 11, 2022
9e18f9b
Merge branch 'project-chip:master' into master
selissia Mar 14, 2022
b6ca5ca
Merge branch 'project-chip:master' into master
selissia Mar 15, 2022
135dc25
Merge branch 'project-chip:master' into master
selissia Mar 18, 2022
0446c67
Merge branch 'project-chip:master' into master
selissia Mar 22, 2022
e69e63c
Merge branch 'project-chip:master' into master
selissia Mar 23, 2022
a40f6df
Merge branch 'project-chip:master' into master
selissia Mar 24, 2022
e5925ba
Merge branch 'project-chip:master' into master
selissia Mar 30, 2022
0435362
Merge branch 'project-chip:master' into master
selissia Apr 5, 2022
40b3412
Merge branch 'project-chip:master' into master
selissia Apr 12, 2022
d197cb5
Merge branch 'project-chip:master' into master
selissia Apr 13, 2022
e9b685d
Merge branch 'project-chip:master' into master
selissia Apr 15, 2022
ef11df2
Merge branch 'project-chip:master' into master
selissia Apr 18, 2022
b088f83
Merge branch 'project-chip:master' into master
selissia Apr 27, 2022
8530810
Merge branch 'project-chip:master' into master
selissia Apr 29, 2022
87a9581
Merge branch 'project-chip:master' into master
selissia May 4, 2022
d9b496d
Merge branch 'project-chip:master' into master
selissia May 10, 2022
2d283df
Merge branch 'project-chip:master' into master
selissia May 12, 2022
2639213
Merge branch 'project-chip:master' into master
selissia May 13, 2022
995a07e
Merge branch 'project-chip:master' into master
selissia May 18, 2022
139f480
Merge branch 'project-chip:master' into master
selissia May 19, 2022
f0beac0
Merge branch 'project-chip:master' into master
selissia May 20, 2022
70059e4
Merge branch 'project-chip:master' into master
selissia Jun 1, 2022
4faa576
Merge branch 'project-chip:master' into master
selissia Jun 2, 2022
e22e2fc
Merge branch 'project-chip:master' into master
selissia Jun 2, 2022
db5089c
Merge branch 'project-chip:master' into master
selissia Jun 6, 2022
8c46946
Merge branch 'project-chip:master' into master
selissia Jun 10, 2022
1a7e9fc
Merge branch 'project-chip:master' into master
selissia Jun 10, 2022
b823fa6
Merge branch 'project-chip:master' into master
selissia Jun 13, 2022
84968cf
Merge branch 'project-chip:master' into master
selissia Jun 14, 2022
11649cd
Merge branch 'project-chip:master' into master
selissia Jun 17, 2022
290caa2
Merge branch 'project-chip:master' into master
selissia Jun 21, 2022
e04c6c0
Merge branch 'project-chip:master' into master
selissia Jun 22, 2022
eb349eb
Merge branch 'project-chip:master' into master
selissia Jun 24, 2022
7ed2aef
Merge branch 'project-chip:master' into master
selissia Jul 7, 2022
92b9c16
Merge branch 'project-chip:master' into master
selissia Jul 8, 2022
a49c7cc
Merge branch 'project-chip:master' into master
selissia Jul 8, 2022
45c59d1
Merge branch 'project-chip:master' into master
selissia Jul 9, 2022
75e0fdc
Merge branch 'project-chip:master' into master
selissia Jul 12, 2022
93d693f
Merge branch 'project-chip:master' into master
selissia Jul 16, 2022
2c10c6a
Update silabs submodule to include booltoader binaries; update docume…
selissia Jul 16, 2022
7710aba
Remove merge artifacts
selissia Jul 16, 2022
57e60e5
Restyled by prettier-markdown
restyled-commits Jul 16, 2022
f964215
Update dictionary
selissia Jul 17, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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