Skip to content

Commit 907883f

Browse files
dinabenamarmarius-alex-tachechapongatienmarian-chereji-nxpandrei-menzopol
authored
[NXP] Integrating code updates for RW61X and K32W platforms (#32615)
* [NXP][platform][common] Adding platform common code * [NXP][platform][k32w] Adding platform code changes for k32w * [NXP][platform][rw61x] Adding platform code changes for rw61x * [NXP][tools][common] Adding nxp tools updates * [NXP][examples][common] Adding examples common updates * [NXP][examples][rw61x] Adding examples updates * [NXP][examples][k32w] Adding examples updates * [NXP][doc][common] Adding documentation updates * [NXP][scripts][common] Add checkout_submodules NXP target All submodules that don't have a platforms field will be selected when the script is run. Additionally, if --platform nxp is used, submodules that have nxp under their platform field will also be checked out. Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][CI][rw61x] Enabling CI workflow for RW61x examples (all-clusters-app, thermostat, laundry-washer) * [NXP][examples][common] Fix laundry-washer app by removing af-enums.h include in the operational-state-delegate-impl.h * [NXP][platform][k32w1] Fix clang formatting Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][doc][rw61x] Adding information to run bootstrap script + submodule update script + Updating gn information to build Matter target that will support BR Signed-off-by: Gatien Chapon <gatien.chapon@nxp.com> * [NXP][platform] Fix string keys saving failure The "NXPConfig" class member function which is supposed to save the string keys to persistent storage was, in fact, invoking the "NvSaveOnIdle" function using the INTEGER keys RAM buffer descriptor, instead of using the STRING keys RAM buffer descriptor. Most likely a typical copy-paste error. Signed-off-by: Marian Chereji <marian.chereji@nxp.com> * [NXP][platform][k32w] Small fixes for k32w platform code * correct typos * remove executable access permissions * remove unused files * change openthread_root to ot-nxp/openthread-k32w1 Signed-off-by: Andrei Menzopol <andrei.menzopol@nxp.com> * [NXP][examples][k32w] Fixes for k32w examples code * small changes for existing code Signed-off-by: Andrei Menzopol <andrei.menzopol@nxp.com> * [NXP][sdk][common] Remove chip_enable_icd_lit * argument has been moved to src/app/icd/icd.gni Signed-off-by: Andrei Menzopol <andrei.menzopol@nxp.com> * [NXP][examples][common] Fix missing QR code log * [NXP][platform][k32w1] Fix gn issue Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][examples][k32w0] Update default args.gni for reference apps Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][examples][k32w1] Update default args.gni for reference apps Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][platform][k32w0] Move subscription and groups KVS keys to dedicated storages To avoid a large KVS RAM buffer and memory allocation issues when running TC-RR-1.1, move some specific keys in dedicated RAM storage instaces: * subscription keys will be stored in sSubscriptionStorage. * groups keys will be stored in sGroupsStorage. This RAM storage will use the extended search feature, because its size will be greater than current backend region size (2K). The key/value storage will be selected in each API based on some criteria: if the key is related to either subscription/groups, then both the key and the value will be stored in the same storage. Otherwise, the default keys and values storages are used. Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][platform][k32w0] Add conversion for subscription and groups keys When CONFIG_CHIP_K32W0_KVS_MOVE_KEYS_TO_SPECIFIC_STORAGE is set to 1, the application can opt to move some keys from current KVS storage to a dedicated storage, based on the key name. Currently, the mechanism supports moving keys and values for: * subscriptions * groups Note: the system is meant to ensure backwards compatibility. This should only be used once, but, if this feature is still enabled after the first conversion, the corresponding keys will not be found in KVS default storage. This does not affect the functionality, but it introduces a delay in the initialization. Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][examples][common] Updating laundry washer zap file to be consistent with current PICS * [NXP][examples][common] Updating thermostat zap files to be consistent with current PICS * [NXP][platform][rw61x] Add define for encrypted factory data CONFIG_CHIP_ENCRYPTED_FACTORY_DATA is defined by default when factory data is enabled. The common code should leverage this flag to make some actions when implicit encrypted factory data is enabled. Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][examples][common][factory-data] Enclose encryption code Encrypted factory data related code should be enclosed based on the CONFIG_CHIP_ENCRYPTED_FACTORY_DATA flag. Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][examples][common] Add a way to include a specific OTAImageProcessor header CONFIG_CHIP_OTA_IMAGE_PROCESSOR_HEADER should specify an OTA image processor implementation header. It can be a custom one, such as the header for OTA multi-image implementation. This will ease the transition of current reference apps that are not using the processor from the NXP common area. Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][examples][common] Enclose binding usage based on EMBER_AF_PLUGIN_BINDING EMBER_AF_PLUGIN_BINDING is defined when the server side of the Binding cluster is used. The common app task code should initialize Binding handlers only if this flag is defined. Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][examples][k32w][contact-sensor][zap] Enable Diagnostic Logs Cluster Signed-off-by: Doru Gucea <doru-cristian.gucea@nxp.com> * [NXP][platform][common] Add Diagnostic Logs common Signed-off-by: Doru Gucea <doru-cristian.gucea@nxp.com> * [NXP][platform][common] create nxp_diagnostic_logs Signed-off-by: Doru Gucea <doru-cristian.gucea@nxp.com> * [NXP][examples][k32w1] enable Diagnostic Logs for contact-sensor app Signed-off-by: Doru Gucea <doru-cristian.gucea@nxp.com> * [NXP][example][common] Fixing PLATFORM_InitTimerManager return value check issue Signed-off-by: Gatien Chapon <gatien.chapon@nxp.com> * [NXP][examples][common] Fix contact-sensor zap files Signed-off-by: Doru Gucea <doru-cristian.gucea@nxp.com> * [NXP][examples][common] Fix laundry-washer-app build : remove zap_generated_dir from BUILD.gn as it does not exist anymore * [NXP][doc] Adding support for the laundry-washer example inside docs/examples/index.md * [NXP][doc][rw61x] Update readme to support SDK 2.13.3 * [NXP][examples][k32w][mw320] Remove not upstreamed and not supported apps * drop light-switch-combo-app as it isn't upstreamed yet * remove lock-app as it is not supported anymore (at least for the moment) * remove shell-app as it is not supported anymore (at least for the moment) Signed-off-by: Andrei Menzopol <andrei.menzopol@nxp.com> * [NXP][scripts] Remove unsused binaries Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][platform][k32w] Remove duplicated code introduced in a merge conflict Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][common] Update OT-NXP repo commit Signed-off-by: Andrei Menzopol <andrei.menzopol@nxp.com> * [NXP][CI][rw61x] Updating docker image version for SDK support * [NXP][CI][k32w] Update workflows and docker image version for SDK support Signed-off-by: Andrei Menzopol <andrei.menzopol@nxp.com> * [NXP][examples][k32w] Fix spelling Signed-off-by: Andrei Menzopol <andrei.menzopol@nxp.com> * [NXP][rw61x] Fix doc, spelling and zap errors * [NXP][rw61x] Fix doc spelling errors * [NXP][k32w0] Fix SDK path Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * Restyled by whitespace * Restyled by clang-format * Restyled by gn * Restyled by prettier-markdown * Restyled by autopep8 * Restyled by isort * [NXP][doc][k32w] Fix docs issues Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][scripts][common] Fix lint errors Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][CI][k32w] Remove deprecated examples Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][docs] Remove lock app from commissioning guide Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][platform][common] Remove unused header Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][platform][k32w1] Remove custom openthread_root Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][platform][rw61x] Fix lint code error * [NXP][k32w0] Fix gn import order Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][sdk][k32w0] Fix SDK path condition When official repo CI is used, the docker image sets the west github SDK to /opt/sdk/core. This caused gn SDK files to mistakenly treat the SDK as a package SDK, which affected the paths. Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][scripts][k32w] Take into account low power flags for k32w0 Pigweed tokenizer logging and expansion board gn args are enabled by default in the reference apps args.gni. Disable them explicitly for low power case. Signed-off-by: marius-alex-tache <marius.tache@nxp.com> * [NXP][examples][k32w1] Move diagnostic_logs to a common examples area This type of app specific implementation should reside in the application space, instead of the device layer. Signed-off-by: marius-alex-tache <marius.tache@nxp.com> --------- Signed-off-by: marius-alex-tache <marius.tache@nxp.com> Signed-off-by: Gatien Chapon <gatien.chapon@nxp.com> Signed-off-by: Marian Chereji <marian.chereji@nxp.com> Signed-off-by: Andrei Menzopol <andrei.menzopol@nxp.com> Signed-off-by: Doru Gucea <doru-cristian.gucea@nxp.com> Co-authored-by: marius-alex-tache <marius.tache@nxp.com> Co-authored-by: Gatien Chapon <gatien.chapon@nxp.com> Co-authored-by: Marian Chereji <marian.chereji@nxp.com> Co-authored-by: Andrei Menzopol <andrei.menzopol@nxp.com> Co-authored-by: Martin Girardot <martin.girardot@nxp.com> Co-authored-by: Doru Gucea <doru-cristian.gucea@nxp.com> Co-authored-by: Restyled.io <commits@restyled.io>
1 parent 16ab164 commit 907883f

File tree

237 files changed

+19298
-4703
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

237 files changed

+19298
-4703
lines changed

.github/workflows/examples-k32w.yaml

+2-11
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
if: github.actor != 'restyled-io[bot]'
3838

3939
container:
40-
image: ghcr.io/project-chip/chip-build-k32w:33
40+
image: ghcr.io/project-chip/chip-build-k32w:38
4141
volumes:
4242
- "/tmp/bloat_reports:/tmp/bloat_reports"
4343
steps:
@@ -46,7 +46,7 @@ jobs:
4646
- name: Checkout submodules & Bootstrap
4747
uses: ./.github/actions/checkout-submodules-and-bootstrap
4848
with:
49-
platform: k32w
49+
platform: nxp
5050

5151
- name: Set up environment for size reports
5252
uses: ./.github/actions/setup-size-reports
@@ -59,11 +59,8 @@ jobs:
5959
scripts/run_in_build_env.sh "\
6060
./scripts/build/build_examples.py \
6161
--target k32w-k32w0-light-crypto-platform-tokenizer \
62-
--target k32w-k32w0-lock-crypto-platform-tokenizer \
63-
--target k32w-k32w0-lock-crypto-platform-low-power-nologs \
6462
--target k32w-k32w0-contact-crypto-platform-tokenizer \
6563
--target k32w-k32w0-contact-crypto-platform-low-power-nologs \
66-
--target k32w-k32w0-shell-crypto-platform \
6764
--target k32w-k32w1-light-crypto-platform-openthread-ftd \
6865
--target k32w-k32w1-contact-crypto-platform-low-power-nologs \
6966
build \
@@ -79,12 +76,6 @@ jobs:
7976
k32w k32w1+release light \
8077
out/artifacts/k32w-k32w1-light-crypto-platform-openthread-ftd/chip-k32w1-light-example.elf \
8178
/tmp/bloat_reports/
82-
- name: Get lock size stats
83-
run: |
84-
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
85-
k32w k32w0+release lock \
86-
out/artifacts/k32w-k32w0-lock-crypto-platform-tokenizer/chip-k32w0x-lock-example.elf \
87-
/tmp/bloat_reports/
8879
- name: Get contact size stats
8980
run: |
9081
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \

.github/workflows/examples-rw61x.yaml

+87
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# Copyright (c) 2023 Project CHIP Authors
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
name: Build example - RW61X
16+
17+
on:
18+
push:
19+
pull_request:
20+
merge_group:
21+
22+
concurrency:
23+
group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
24+
cancel-in-progress: true
25+
26+
env:
27+
CHIP_NO_LOG_TIMESTAMPS: true
28+
29+
jobs:
30+
rw61x:
31+
name: RW61X
32+
33+
env:
34+
BUILD_TYPE: gn_rw61x
35+
36+
runs-on: ubuntu-latest
37+
if: github.actor != 'restyled-io[bot]'
38+
39+
container:
40+
image: ghcr.io/project-chip/chip-build-rw61x:37
41+
volumes:
42+
- "/tmp/bloat_reports:/tmp/bloat_reports"
43+
steps:
44+
- name: Checkout
45+
uses: actions/checkout@v4
46+
- name: Checkout submodules & Bootstrap
47+
uses: ./.github/actions/checkout-submodules-and-bootstrap
48+
with:
49+
platform: rw61x
50+
51+
- name: Set up environment for size reports
52+
uses: ./.github/actions/setup-size-reports
53+
if: ${{ !env.ACT }}
54+
with:
55+
gh-context: ${{ toJson(github) }}
56+
57+
- name: Build RW61X all clusters example app
58+
run: |
59+
scripts/run_in_build_env.sh "\
60+
./scripts/build/build_examples.py \
61+
--target rw61x-all-clusters-app-wifi \
62+
build \
63+
--copy-artifacts-to out/artifacts \
64+
"
65+
66+
- name: Build RW61X thermostat example app
67+
run: |
68+
scripts/run_in_build_env.sh "\
69+
./scripts/build/build_examples.py \
70+
--target rw61x-thermostat-wifi \
71+
build \
72+
--copy-artifacts-to out/artifacts \
73+
"
74+
75+
- name: Build RW61X laundry-washer example app
76+
run: |
77+
scripts/run_in_build_env.sh "\
78+
./scripts/build/build_examples.py \
79+
--target rw61x-laundry-washer-wifi \
80+
build \
81+
--copy-artifacts-to out/artifacts \
82+
"
83+
- name: Uploading Size Reports
84+
uses: ./.github/actions/upload-size-reports
85+
if: ${{ !env.ACT }}
86+
with:
87+
platform-name: RW61X

.gitmodules

+3-3
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,16 @@
5454
path = third_party/freertos/repo
5555
url = https://github.com/FreeRTOS/FreeRTOS-Kernel.git
5656
branch = V10.3.1-kernel-only
57-
platforms = ameba,cc13xx_26xx,bouffalolab,esp32,k32w,infineon,qpg,cc32xx
57+
platforms = ameba,cc13xx_26xx,bouffalolab,esp32,infineon,qpg,cc32xx
5858
[submodule "simw-top-mini"]
5959
path = third_party/simw-top-mini/repo
6060
url = https://github.com/NXP/plug-and-trust.git
6161
branch = int/CHIPSE_Release
62-
platforms = k32w
62+
platforms = nxp
6363
[submodule "third_party/openthread/ot-nxp"]
6464
path = third_party/openthread/ot-nxp
6565
url = https://github.com/NXP/ot-nxp.git
66-
platforms = k32w
66+
platforms = nxp
6767
[submodule "third_party/openthread/ot-qorvo"]
6868
path = third_party/openthread/ot-qorvo
6969
url = https://github.com/openthread/ot-qorvo.git

docs/examples/index.md

+9
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,15 @@ kotlin-matter-controller/README
112112
virtual-device-app/**/README
113113
```
114114

115+
## Laundry washer example
116+
117+
```{toctree}
118+
:glob:
119+
:maxdepth: 1
120+
121+
laundry-washer-app/**/README
122+
```
123+
115124
## Lighting example
116125

117126
```{toctree}

docs/guides/nxp_k32w_android_commissioning.md

+9-14
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
This article describes how to use
44
[CHIPTool](../../examples/android/CHIPTool/README.md) for Android smartphones to
55
commission an NXP K32W061 DK6 running
6-
[NXP K32W Lock/Light Example Application](#building-and-programming-nxp-k32w-locklight-example-application)
6+
[NXP K32W Light Example Application](#building-and-programming-nxp-k32w-light-example-application)
77
onto a CHIP-enabled Thread network.
88

99
<hr>
@@ -12,7 +12,7 @@ onto a CHIP-enabled Thread network.
1212
- [Requirements](#requirements)
1313
- [Building and programming OpenThread RCP firmware](#building-and-programming-openthread-rcp-firmware)
1414
- [Configuring PC as Thread Border Router](#configuring-pc-as-a-thread-border-router)
15-
- [Building and programming NXP K32W Lock/Light Example Application](#building-and-programming-nxp-k32w-locklight-example-application)
15+
- [Building and programming NXP K32W Light Example Application](#building-and-programming-nxp-k32w-light-example-application)
1616
- [Building and installing Android CHIPTool](#building-and-installing-android-chiptool)
1717
- [Forming a Thread network on the Border Router](#forming-a-thread-network-on-the-border-router)
1818
- [Preparing accessory device](#preparing-accessory-device)
@@ -44,7 +44,7 @@ with a spare Wi-Fi card and an
4444
device.
4545

4646
The following diagram shows the connectivity between network components required
47-
to allow communication between devices running the CHIPTool and Lock/Light
47+
to allow communication between devices running the CHIPTool and Light
4848
applications:
4949

5050
![nxp_hw_connectivity](../../examples/platform/nxp/k32w/k32w0/doc/images/nxp_hw_connectivity.JPG)
@@ -345,11 +345,7 @@ To make your PC work as a Thread Border Router, complete the following tasks:
345345
346346
<hr>
347347
348-
## Building and programming NXP K32W Lock/Light Example Application
349-
350-
See
351-
[NXP K32W Lock Example Application README](../../examples/lock-app/nxp/k32w/k32w0/README.md)
352-
to learn how to build and program the lock example onto an K32W061 DK6.
348+
## Building and programming NXP K32W Light Example Application
353349
354350
See
355351
[NXP K32W Light Example Application README](../../examples/lighting-app/nxp/k32w/k32w0/README.md)
@@ -491,11 +487,10 @@ section, complete the following steps:
491487
492488
2. Verify that the text box on the screen is not empty and contains the IPv6
493489
address of the accessory device.
494-
3. Tap the following buttons to change the lock/light state:
490+
3. Tap the following buttons to change the light state:
495491
496-
- _ON_ and _OFF_ buttons lock/turn on and unlock/turn off the door/light
497-
bulb, respectively.
498-
- _TOGGLE_ changes the lock/light state to the opposite.
492+
- _ON_ and _OFF_ buttons turn on and turn off the light bulb, respectively.
493+
- _TOGGLE_ changes the light state to the opposite.
499494
500-
The _LED D3_ on the device turns on or off based on the changes of the
501-
lock/light state.
495+
The _LED D3_ on the device turns on or off based on the changes of the light
496+
state.

docs/guides/nxp_manufacturing_flow.md

+60-26
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
---
2-
orphan: true
3-
---
4-
5-
# NXP manufacturing data guide
1+
# NXP Manufacturing data
62

73
By default, the example application is configured to use generic test
84
certificates and provisioning data embedded with the application code. It is
@@ -112,30 +108,30 @@ Here is the interpretation of the **required** parameters:
112108
--pai_cert -> path to the PAI (der format) location
113109
--spake2p_path -> path to the spake2p tool
114110
--out -> name of the binary that will be used for storing all the generated data
115-
116-
117111
```
118112

119113
Here is the interpretation of the **optional** parameters:
120114

121115
```shell
122-
--dac_key_password -> Password to decode DAC key
123-
--dac_key_use_sss_blob -> Used when --dac_key contains a path to an encrypted blob, instead of the
124-
actual DAC private key. The blob metadata size is 24, so the total length
125-
of the resulting value is private key length (32) + 24 = 56. False by default.
126-
--spake2p_verifier -> SPAKE2+ verifier (passed as base64 encoded string). If this option is set,
127-
all SPAKE2+ inputs will be encoded in the final binary. The spake2p tool
128-
will not be used to generate a new verifier on the fly.
129-
--aes128_key -> 128 bits AES key used to encrypt the whole dataset. Please make sure
130-
that the target application/board supports this feature: it has access to
131-
the private key and implements a mechanism which can be used to decrypt
132-
the factory data information.
133-
--date -> Manufacturing Date (YYYY-MM-DD format)
134-
--part_number -> Part number as string
135-
--product_url -> Product URL as string
136-
--product_label -> Product label as string
137-
--serial_num -> Serial Number
138-
--unique_id -> Unique id used for rotating device id generation
116+
--dac_key_password -> Password to decode DAC key
117+
--dac_key_use_sss_blob -> Used when --dac_key contains a path to an encrypted blob, instead of the
118+
actual DAC private key. The blob metadata size is 24, so the total length
119+
of the resulting value is private key length (32) + 24 = 56. False by default.
120+
--spake2p_verifier -> SPAKE2+ verifier (passed as base64 encoded string). If this option is set,
121+
all SPAKE2+ inputs will be encoded in the final binary. The spake2p tool
122+
will not be used to generate a new verifier on the fly.
123+
--aes128_key -> 128 bits AES key used to encrypt the whole dataset. Please make sure
124+
that the target application/board supports this feature: it has access to
125+
the private key and implements a mechanism which can be used to decrypt
126+
the factory data information.
127+
--date -> Manufacturing Date (YYYY-MM-DD format)
128+
--part_number -> Part number as string
129+
--product_url -> Product URL as string
130+
--product_label -> Product label as string
131+
--serial_num -> Serial Number
132+
--unique_id -> Unique id used for rotating device id generation
133+
--product_finish -> Visible finish of the product
134+
--product_primary_color -> Representative color of the visible parts of the product
139135
```
140136

141137
## 3. Write provisioning data
@@ -157,8 +153,18 @@ loadfile factory_data.bin 0xf4000
157153
where `0xf4000` is the value of `__MATTER_FACTORY_DATA_START` in the
158154
corresponding .map file (can be different if using a custom linker script).
159155

160-
For the **RT1060**, **RT1170** and **RW61X** platform, the binary needs to be
161-
written using `MCUXpresso Flash Tool GUI` at the address value corresponding to
156+
For **RW61X** platform, the binary needs to be written in the internal flash at
157+
location given by `__MATTER_FACTORY_DATA_START`, using `JLink`:
158+
159+
```
160+
loadfile factory_data.bin 0xBFFF000
161+
```
162+
163+
where `0xBFFF000` is the value of `__FACTORY_DATA_START` in the corresponding
164+
.map file (can be different if using a custom linker script).
165+
166+
For the **RT1060** and **RT1170** platform, the binary needs to be written using
167+
`MCUXpresso Flash Tool GUI` at the address value corresponding to
162168
`__FACTORY_DATA_START` (the map file of the application should be checked to get
163169
the exact value).
164170

@@ -198,6 +204,8 @@ Also, demo **DAC**, **PAI** and **PAA** certificates needed in case
198204

199205
## 6. Increased security for DAC private key
200206

207+
### 6.1 K32W1
208+
201209
Supported platforms:
202210

203211
- K32W1 - `src/plaftorm/nxp/k32w/k32w1/FactoryDataProviderImpl.h`
@@ -242,3 +250,29 @@ python3 ./scripts/tools/nxp/factory_data_generator/generate.py -i 10000 -s UXKLz
242250

243251
Please note that `--dac_key` now points to a binary file that contains the
244252
encrypted blob.
253+
254+
### 6.2 RW61X
255+
256+
Supported platforms:
257+
258+
- RW61X - `src/plaftorm/nxp/rt/rw61x/FactoryDataProviderImpl.h`
259+
260+
For platforms that have a secure subsystem (`SE50`), the DAC private key can be
261+
converted to an encrypted blob. This blob will overwrite the DAC private key in
262+
factory data and will be imported in the `SE50` before to sign, by the factory
263+
data provider instance.
264+
265+
The conversion process shall happen at manufacturing time and should be run one
266+
time only:
267+
268+
- Write factory data binary.
269+
- Build the application with
270+
`chip_with_factory_data=1 chip_convert_dac_private_key=1` set.
271+
- Write the application to the board and let it run.
272+
273+
After the conversion process:
274+
275+
- Make sure the application is built with `chip_with_factory_data=1`, but
276+
without `chip_convert_dac_private_key` arg, since conversion already
277+
happened.
278+
- Write the application to the board.

0 commit comments

Comments
 (0)