Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into more_doc_reorg
Browse files Browse the repository at this point in the history
  • Loading branch information
cecille committed Aug 7, 2024
2 parents 189de21 + e0a765b commit 03d2a2f
Show file tree
Hide file tree
Showing 432 changed files with 17,766 additions and 8,966 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'

container:
image: ghcr.io/project-chip/chip-build:54
image: ghcr.io/project-chip/chip-build:65
volumes:
- "/:/runner-root-volume"
- "/tmp/log_output:/tmp/test_logs"
Expand Down
9 changes: 2 additions & 7 deletions .github/workflows/qemu.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ concurrency:

env:
CHIP_NO_LOG_TIMESTAMPS: true

jobs:

qemu-esp32:
Expand Down Expand Up @@ -75,12 +75,7 @@ jobs:
name: Tizen

runs-on: ubuntu-latest
# NOTE: job temporarely disabled as it seems flaky. The flake does not result in usable
# logs so the current theory is that we run out of space. This is unusual as
# larger docker images succeed at bootstrap, however it needs more investigation
# to detect an exact/real root cause.
if: false
# if: github.actor != 'restyled-io[bot]'
if: github.actor != 'restyled-io[bot]'

container:
image: ghcr.io/project-chip/chip-build-tizen-qemu:54
Expand Down
108 changes: 3 additions & 105 deletions .github/workflows/tests.yaml

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion .restyled.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ exclude:
- "scripts/tools/zap/tests/outputs/**/*" # Matches generated output 1:1
- "examples/chef/sample_app_util/test_files/*.yaml"
- "examples/chef/zzz_generated/**/*"
- "examples/platform/nxp/k32w/k32w0/scripts/demo_generated_certs/**/*"
- "examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/zap-generated/*" # zap-generated files
- "integrations/cloudbuild/*.yaml" # uglier long command line content
- "scripts/run_codegen_targets.sh" # shellharden breaks for loops over command outputs
Expand Down
4 changes: 3 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,9 @@
"thread": "cpp",
"variant": "cpp",
"any": "cpp",
"future": "cpp"
"future": "cpp",
"list": "cpp",
"unordered_set": "cpp"
},
// Configure paths or glob patterns to exclude from file watching.
"files.watcherExclude": {
Expand Down
6 changes: 3 additions & 3 deletions BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -689,23 +689,23 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") {

if (enable_k32w_lighting_app_build) {
group("k32w_lighting_app") {
deps = [ "${chip_root}/examples/lighting-app/nxp/k32w/k32w0/(${chip_root}/config/k32w/toolchain:k32w_lighting_app)" ]
deps = [ "${chip_root}/examples/lighting-app/nxp/k32w0/(${chip_root}/config/k32w/toolchain:k32w_lighting_app)" ]
}

extra_build_deps += [ ":k32w_lighting_app" ]
}

if (enable_k32w_lock_app_build) {
group("k32w_lock_app") {
deps = [ "${chip_root}/examples/lock-app/nxp/k32w/k32w0/(${chip_root}/config/k32w/toolchain:k32w_lock_app)" ]
deps = [ "${chip_root}/examples/lock-app/nxp/k32w0/(${chip_root}/config/k32w/toolchain:k32w_lock_app)" ]
}

extra_build_deps += [ ":k32w_lock_app" ]
}

if (enable_k32w_shell_app_build) {
group("k32w_shell_app") {
deps = [ "${chip_root}/examples/shell/nxp/k32w/k32w0/(${chip_root}/config/k32w/toolchain:k32w_shell_app)" ]
deps = [ "${chip_root}/examples/shell/nxp/k32w0/(${chip_root}/config/k32w/toolchain:k32w_shell_app)" ]
}

extra_build_deps += [ ":k32w_shell_app" ]
Expand Down
7 changes: 6 additions & 1 deletion build/config/compiler/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,11 @@ config("warnings_third_party") {
}

config("symbols_default") {
cflags = [ "-g${symbol_level}" ]
if (strip_symbols) {
cflags = [ "-s" ]
} else {
cflags = [ "-g${symbol_level}" ]
}
}

config("std_default") {
Expand Down Expand Up @@ -489,6 +493,7 @@ config("libfuzzer_fuzzing") {

config("oss_fuzz") {
cflags = string_split(getenv("CFLAGS"))
cflags_cc = string_split(getenv("CXXFLAGS"))
ldflags = string_split(getenv("CXXFLAGS"))
ldflags += [ getenv("LIB_FUZZING_ENGINE") ]
}
Expand Down
9 changes: 6 additions & 3 deletions build/config/compiler/compiler.gni
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@ declare_args() {
symbol_level = 2

# Enable position independent code (-fPIC).
enable_pic =
current_os == "linux" || current_os == "mac" || current_os == "android"
enable_pic = current_os == "linux" || current_os == "mac" ||
current_os == "android" || current_os == "tizen"

# Enable position independent executables (-pie).
enable_pie = current_os == "linux"
enable_pie = current_os == "linux" || current_os == "tizen"

# Remove unwind tables from the binary to save space.
exclude_unwind_tables = current_os != "android"
Expand All @@ -48,6 +48,9 @@ declare_args() {
# enable libfuzzer
is_libfuzzer = false

# Remove all symbol table and relocation information from the binary.
strip_symbols = false

# Generate code coverage analysis artifacts when enabled.
use_coverage = false

Expand Down
8 changes: 4 additions & 4 deletions config/k32w/toolchain/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,27 @@ import("${build_root}/toolchain/arm_gcc/arm_toolchain.gni")
arm_toolchain("k32w_lighting_app") {
toolchain_args = {
current_os = "freertos"
import("${chip_root}/examples/lighting-app/nxp/k32w/k32w0/args.gni")
import("${chip_root}/examples/lighting-app/nxp/k32w0/args.gni")
}
}

arm_toolchain("k32w_lock_app") {
toolchain_args = {
current_os = "freertos"
import("${chip_root}/examples/lock-app/nxp/k32w/k32w0/args.gni")
import("${chip_root}/examples/lock-app/nxp/k32w0/args.gni")
}
}

arm_toolchain("k32w_contact_sensor_app") {
toolchain_args = {
current_os = "freertos"
import("${chip_root}/examples/contact-sensor-app/nxp/k32w/k32w0/args.gni")
import("${chip_root}/examples/contact-sensor-app/nxp/k32w0/args.gni")
}
}

arm_toolchain("k32w_shell_app") {
toolchain_args = {
current_os = "freertos"
import("${chip_root}/examples/shell/nxp/k32w/k32w0/args.gni")
import("${chip_root}/examples/shell/nxp/k32w0/args.gni")
}
}
232 changes: 232 additions & 0 deletions docs/guides/nxp/nxp_k32w0_ota_guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
# NXP K32W0x1 OTA guide

## The Secondary Stage Bootloader (SSBL)

There are multiple SSBL binaries provided by the SDK:

| description | github SDK path | package SDK path |
| ------------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Default SSBL | NA | `boards/k32w061dk6/wireless_examples/framework/ssbl/binary/ssbl.bin` |
| SSBL with PDM in external flash | `examples/k32w061dk6/wireless_examples/framework/ssbl/binary/ssbl_ext_flash_pdm_support.bin` | `boards/k32w061dk6/wireless_examples/framework/ssbl/binary/ssbl_ext_flash_pdm_support.bin` |

The SSBL is also built alongside the reference application and it can be
configured according to the following table:

| gn arg | default | description |
| --------------------------------- | --------------------------- | ---------------------------------------------------------------------------------------- |
| `ssbl_pdm_external_flash` | true | Enable/disable PDM in external flash |
| `ssbl_multi_image_support` | true | Enable/disable multi-image OTA feature |
| `ssbl_ota_entry_storage` | "OTACustomStorage_ExtFlash" | Configure custom OTA entry storage type |
| `ssbl_simple_hash_verification` | false | Enable/disable simple hash verification alternative to secure boot |
| `ssbl_optimize_spifi_flash` | false | Optimize `SPIFI` flash driver size |
| `ssbl_spifi_dual_mode` | false | Enable/disable `SPIFI` dual mode support (e.g. used by K32W041AM variant) |
| `ssbl_version` | 0 | Set SSBL version |
| `ssbl_use_redlib` | false | Enable/disable usage of `redlib` NXP library. If false, the build will use `newlib` nano |
| `ssbl_ota_data_in_external_flash` | false | Enable/disable OTA support for application with sections stored in external flash |

## Simple hash verification

When secure boot is not used, a simple hash can be appended at the end of the
image for integrity check. Applications should be built with
`chip_simple_hash_verification=1`.

## Writing the SSBL

Before writing the SSBL, it it recommanded to fully erase the internal flash.

Using DK6Programmer utility from Windows:

```
DK6Programmer.exe -V 5 -P 1000000 -s <COM_PORT> -e Flash
```

Using `dk6prog` from `SPSDK`:

```
$ dk6prog listdev
This is an experimental utility. Use with caution!
List of available devices:
DEVICE ID: DN038ZH3, VID: 0x403, PID: 0x6015, Serial number: DN038ZH3, Description: DK6 Carrier Board, Address: 9, Backend: Backend.PYFTDI
$ dk6prog -d DN038ZH3 erase 0 0x9de00
This is an experimental utility. Use with caution!
Erasing memory [####################################] 100%
```

`chip-k32w0x-ssbl.bin` must be written at address 0 in the internal flash:

Using DK6Programmer utility from Windows:

```
DK6Programmer.exe -V2 -s <COM_PORT> -P 1000000 -Y -p FLASH@0x00="chip-k32w0x-ssbl.bin"
```

Using `dk6prog` from `SPSDK`:

```
$ dk6prog -d DN038ZH3 write 0 ~/path/to/bin/chip-k32w0x-ssbl.bin
This is an experimental utility. Use with caution!
Writing memory [####################################] 100%
Written 7890 bytes to memory ID 0 at address 0x0
```

### Writing the PSECT

This is the list of all supported partitions:

```
0000000010000000 : SSBL partition
00000000 -----------> Start Address
1000 ---------------> 0x0010 Number of 512-bytes pages
00 -----------------> 0x00 Bootable flag
00 -----------------> 0x00 Image type (0x00 = SSBL)
00400000c9040101: Application partition
00400000 -----------> 0x00004000 Start Address
c904 ---------------> 0x04c9 Number of 512-bytes pages
01 -----------------> 0x01 Bootable flag
01 -----------------> 0x01 Image type (0x01 = Application)
00000010800000fe: Ext Flash text partition
00000010 -----------> 0x10000000 Start Address (external flash)
8000 ---------------> 0x0080 Number of 512-bytes pages
00 -----------------> 0x00 Bootable flag
fe -----------------> 0xFE Image type (0xFE = Ext Flash text)
00000110300200fc : OTA Image partition
00000110 -----------> 0x10010000 Start Address
3002----------------> 0x0230 Number of 512-bytes pages
00 -----------------> 0x00 Bootable flag
fc -----------------> 0xFC Image type (0xFC = OTA partition)
00000510100000fd: NVM partition
00000510 -----------> 0x10050000 Start Address
1000 ---------------> 0x0010 Number of 512-bytes pages
00 -----------------> 0x00 Bootable flag
fd -----------------> 0xFD Image type (0xFD = NVM partition)
```

First, image directory 0 (SSBL partition) must be written:

Using DK6Programmer utility from Windows:

```
DK6Programmer.exe -V5 -s <COM port> -P 1000000 -w image_dir_0=0000000010000000
```

Using `dk6prog` from `SPSDK`:

```
$ dk6prog -d DN038ZH3 write 0x160 [[0000000010000000]] 8 PSECT
This is an experimental utility. Use with caution!
Writing memory [####################################] 100%
Written 8 bytes to memory ID PSECT at address 0x160
```

Here is the interpretation of the fields:

```
00000000 -> start address 0x00000000
1000 -> size = 0x0010 pages of 512-bytes (= 8kB)
00 -> not bootable (only used by the SSBL to support SSBL update)
00 -> SSBL Image Type
```

Second, image directory 1 (application partition) must be written:

Using DK6Programmer utility from Windows:

```
DK6Programmer.exe -V5 -s <COM port> -P 1000000 -w image_dir_1=00400000C9040101
```

Using `dk6prog` from `SPSDK`:

```
$ dk6prog -d DN038ZH3 write 0x168 [[00400000C9040101]] 8 PSECT
This is an experimental utility. Use with caution!
Writing memory [####################################] 100%
Written 8 bytes to memory ID PSECT at address 0x168
```

Here is the interpretation of the fields:

```
00400000 -> start address 0x00004000
C904 -> 0x4C9 pages of 512-bytes (= 612.5kB)
01 -> bootable flag
01 -> image type for the application
```

Please note the user can write additional partitions by writing
`image_dir_2/3/4` with the wanted configuration. In case of using the `SPSDK`
tool, the appropriate offset must be calculated

## Removing SSBL Upgrade Region

The example also offers the possibility to remove SSBL upgrade region, for
reserving more space for application level.

A new flag `chip_reduce_ssbl_size` is introduced. In order to remove the SSBL
upgrade region, `chip_reduce_ssbl_size=true` must be provided to the build
system

The programming method will change:

- Writing image directory 1 should change to Using DK6Programmer utility from
Windows:

```
DK6Programmer.exe -V5 -s <COM port> -P 1000000 -w image_dir_1=00200000D9040101
```
Using `dk6prog` from `SPSDK`:
```
$ dk6prog -d DN038ZH3 write 0x168 [[00200000D9040101]] 8 PSECT
This is an experimental utility. Use with caution!
Writing memory [####################################] 100%
Written 8 bytes to memory ID PSECT at address 0x168
```
Here is the interpretation of the fields:
```
00200000 -> start address 0x00002000
D904 -> 0x4D9 pages of 512-bytes (= 620.5kB)
01 -> bootable flag
01 -> image type for the application
```
- Matter application offset address should change to Using DK6Programmer
utility from Windows:
```
DK6Programmer.exe -V2 -s <COM_PORT> -P 1000000 -Y -p FLASH@0x2000="chip-k32w0x-contact-example.bin"
```
Using `dk6prog` from `SPSDK`:
```
$ dk6prog -d DN038ZH3 write 0x2000 ~/path/to/bin/chip-k32w0x-contact-example.bin
This is an experimental utility. Use with caution!
Writing memory [####################################] 100%
Written 596450 bytes to memory ID 0 at address 0x2000
```
Loading

0 comments on commit 03d2a2f

Please sign in to comment.