NXP : Add support of RT1060 and RT1170 boards (#35842)
* [NXP][rt1170] Matter enablement on RT1170
It includes:
- Matter port files for RT1170
- example files for Laundry-washer, thermostat and all-cluster-app
- documentations
Signed-off-by: Gatien Chapon <gatien.chapon@nxp.com>
[border router][rt1170] RT1170 platform and README updates to support OTBR with new OT stack version
(cherry picked from commit f97d5c58c866774c787ec4417bca075ce45eece0)
[platform][rt1170] Enable lwip and ephemeral key CLI addons
(cherry picked from commit fb3320eabd3c3f6c8c75c4094d6426fcc0cfed57)
[2.16][rt1170] SDK 2.16 rt1170 API name changed
Signed-off-by: Gatien Chapon <gatien.chapon@nxp.com>
(cherry picked from commit 67f183263466267bc1c7da6fd3a05743fd268ea2)
Signed-off-by: Gatien Chapon <gatien.chapon@nxp.com>
[examples][rt1170] Enable Disgnostic log for thermostat app
Signed-off-by: Martin Girardot <martin.girardot@nxp.com>
(cherry picked from commit cce6267446d035e7966c7f5f17d112fb5f1557c5)
[platform][rt1170] Rename rt_nvm_component to nxp_nvm_component
Signed-off-by: Dina Benamar <dina.benamarelmaaroufi@nxp.com>
(cherry picked from commit f5fb5f4e8b2be45fc97c2a7c7a2d5a453adf9b34)
[doc][rt1170] update OTA guidelines to generate mcuboot binary
(cherry picked from commit 27f58810a07343234d0d884f385eb407998a9220)
* [NXP][rt1060] Adding RT1060 Matter support
It includes following changes:
- Matter port files for RT1060
- examples support for Laundry-washer, thermostat and all-cluster-app
- Support for configurations: RT1060 evkb+8801, RT1060 evkb+IW416, RT1060 evkc+IW612 and RT1060 evkb+k32w0
Signed-off-by: Gatien Chapon <gatien.chapon@nxp.com>
[platform][rt1060] Rename rt_nvm_component to nxp_nvm_component
Signed-off-by: Dina Benamar <dina.benamarelmaaroufi@nxp.com>
(cherry picked from commit 316450da02b365aa61bcb53a0dc6b50512fb6435)
[border router][rt1060] RT1060 platform and README updates to support OTBR with new OT stack version
(cherry picked from commit 231a4c15c4abca40d5759194fb61b9636c8f67e8)
[platform][rt1060] Enable lwip and ephemeral key CLI addons
(cherry picked from commit 463749a12abcc68fc5f6569f98c27b574b3516bd)
[2.16][rt1060] SDK 2.16 rt1060 API name changed
Signed-off-by: Gatien Chapon <gatien.chapon@nxp.com>
(cherry picked from commit 42f7d8771329172aaeedfde1b2bab86b1799f6d9)
[examples][rt1060] Enable Diagnostic log for thermostat app
Signed-off-by: Martin Girardot <martin.girardot@nxp.com>
(cherry picked from commit 7c4cbeb41d3a00ec90525bb084f7bc278d5ecb8e)
* [NXP][rt1060][doc] Update WiFi build instructions
* [NXP][border router][rt1060] Platform updates to support TBR cluster and secondary nwk if
A new gn variable was created, chip_enable_secondary_nwk_if, to enable or disable Thread as secondary network commissioning interface when building with BR support.
* [NXP][border router][rt1170] Platform updates to support TBR cluster and secondary nwk if
A new gn variable was created, chip_enable_secondary_nwk_if, to enable or disable Thread as secondary network commissioning interface when building with BR support.
* [NXP] Add targets RT1060 and RT1170 to NXP builds
* [NXP][OTA][doc] update OTA doc for RTs boards
* [NXP][border router][rt1060] fix compilation issue
* [NXP][border router][rt1170] fix compilation issue
* [NXP][doc][rt1060] minor changes
* [NXP] [rt1060] OTA requestor enablement on RT1060-EVKC+Firecrest
* [NXP] Add OTA variant to RT1060 and RT1170 builds
* [NXP][doc][rt] changes since workflow feedback
* [NXP][examples][rt1060] Update empty button registration path
Signed-off-by: marius-alex-tache <marius.tache@nxp.com>
* [NXP][examples][rt1170] Update empty button registration path
Signed-off-by: marius-alex-tache <marius.tache@nxp.com>
* [NXP] [gn] Restyle gn files
* [NXP][doc] Restyle md files
* [NXP] Restyle build scripts
* [NXP][RT] fix OTBR compile issue
* [NXP][RT][doc] rework documentation
* [NXP] Reduce and collapse NXP targets list
* [NXP] filter which target to be build on PR
* [NXP] [rt1170] remove useless flag
* [NXP] [rt1060] remove useless flag
* [NXP] [doc] fix path to referenced docs since NXP documentation moved
---------
Signed-off-by: marius-alex-tache <marius.tache@nxp.com>
Co-authored-by: Gatien Chapon <gatien.chapon@nxp.com>
Co-authored-by: Mihai Ignat <mihai.ignat@nxp.com>
Co-authored-by: Marius Preda <marius.preda@nxp.com>
Co-authored-by: marius-alex-tache <marius.tache@nxp.com>
Co-authored-by: Restyled.io <commits@restyled.io>
diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt
index 76485a2..a5dee88 100644
--- a/.github/.wordlist.txt
+++ b/.github/.wordlist.txt
@@ -735,6 +735,7 @@
itemName
iterable
itsfoss
+IW
JDK
jinja
JLink
@@ -893,6 +894,7 @@
microcontrollers
MicroSD
middleware
+MIMXRT
minApplicableSoftwareVersion
Minicom
MinInterval
@@ -924,6 +926,7 @@
multilib
Multiprotocol
multithreaded
+Murata
mutex
mutexes
mv
diff --git a/.github/workflows/examples-nxp.yaml b/.github/workflows/examples-nxp.yaml
index 6354718..c4b6eb1 100644
--- a/.github/workflows/examples-nxp.yaml
+++ b/.github/workflows/examples-nxp.yaml
@@ -30,68 +30,11 @@
CHIP_NO_LOG_TIMESTAMPS: true
jobs:
- k32w0:
- name: K32W0
+ FreeRTOS:
+ name: FREERTOS
env:
- BUILD_TYPE: gn_k32w
-
- runs-on: ubuntu-latest
- if: github.actor != 'restyled-io[bot]'
-
- container:
- image: ghcr.io/project-chip/chip-build-nxp:80
- volumes:
- - "/tmp/bloat_reports:/tmp/bloat_reports"
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Checkout submodules & Bootstrap
- uses: ./.github/actions/checkout-submodules-and-bootstrap
- with:
- platform: nxp
-
- - name: Set up environment for size reports
- uses: ./.github/actions/setup-size-reports
- if: ${{ !env.ACT }}
- with:
- gh-context: ${{ toJson(github) }}
-
- - name: Build examples
- run: |
- scripts/run_in_build_env.sh "\
- ./scripts/build/build_examples.py \
- --target nxp-k32w0-freertos-lighting \
- --target nxp-k32w0-freertos-lighting-factory \
- --target nxp-k32w0-freertos-lighting-rotating-id \
- --target nxp-k32w0-freertos-contact-sensor \
- --target nxp-k32w0-freertos-contact-sensor-low-power \
- --target nxp-k32w0-freertos-contact-sensor-low-power-factory \
- build \
- --copy-artifacts-to out/artifacts \
- "
- - name: Get lighting app size stats
- run: |
- .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- nxp k32w0+release light \
- out/artifacts/nxp-k32w0-freertos-lighting/chip-k32w0x-light-example.elf \
- /tmp/bloat_reports/
- - name: Get contact sensor size stats
- run: |
- .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- nxp k32w0+release contact \
- out/artifacts/nxp-k32w0-freertos-contact-sensor-low-power/chip-k32w0x-contact-example.elf \
- /tmp/bloat_reports/
- - name: Uploading Size Reports
- uses: ./.github/actions/upload-size-reports
- if: ${{ !env.ACT }}
- with:
- platform-name: K32W0
- k32w1:
- name: K32W1
-
- env:
- BUILD_TYPE: gn_k32w
+ BUILD_TYPE: gn_FreeRTOS
runs-on: ubuntu-latest
if: github.actor != 'restyled-io[bot]'
@@ -109,170 +52,187 @@
platform: nxp
extra-submodule-parameters: --recursive
+ - name: Detect changed paths
+ uses: dorny/paths-filter@v3
+ id: changed_paths
+ with:
+ filters: |
+ nxp:
+ - '**/nxp/**'
+
- name: Set up environment for size reports
uses: ./.github/actions/setup-size-reports
if: ${{ !env.ACT }}
with:
gh-context: ${{ toJson(github) }}
- - name: Build examples
+ - name: Build K32W0 examples
+ run: |
+ scripts/run_in_build_env.sh "\
+ ./scripts/build/build_examples.py \
+ --target nxp-k32w0-freertos-lighting-factory \
+ --target nxp-k32w0-freertos-contact-sensor-low-power-factory \
+ build \
+ --copy-artifacts-to out/artifacts \
+ "
+ - name: Get K32W0 lighting app size stats
+ run: |
+ .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
+ nxp k32w0+release light \
+ out/artifacts/nxp-k32w0-freertos-lighting-factory/chip-k32w0x-light-example.elf \
+ /tmp/bloat_reports/
+ - name: Get K32W0 contact sensor size stats
+ run: |
+ .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
+ nxp k32w0+release contact \
+ out/artifacts/nxp-k32w0-freertos-contact-sensor-low-power-factory/chip-k32w0x-contact-example.elf \
+ /tmp/bloat_reports/
+
+ - name: clean build
+ run: rm -rf ./out
+
+ - name: Build K32W1 examples
run: |
scripts/run_in_build_env.sh "\
./scripts/build/build_examples.py \
--target nxp-k32w1-freertos-lighting \
- --target nxp-k32w1-freertos-contact-sensor-low-power \
- --target nxp-k32w1-freertos-lock-app \
build \
--copy-artifacts-to out/artifacts \
"
- - name: Get lighting app size stats
+ - name: Get K32W1 lighting app size stats
run: |
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
nxp k32w1+release light \
out/artifacts/nxp-k32w1-freertos-lighting/chip-k32w1-light-example.elf \
/tmp/bloat_reports/
- - name: Get contact sensor size stats
- run: |
- .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- nxp k32w1+release contact \
- out/artifacts/nxp-k32w1-freertos-contact-sensor-low-power/chip-k32w1-contact-example.elf \
- /tmp/bloat_reports/
- - name: Get lock app size stats
- run: |
- .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- nxp k32w1+release lock \
- out/artifacts/nxp-k32w1-freertos-lock-app/chip-k32w1-lock-example.elf \
- /tmp/bloat_reports/
- - name: Uploading Size Reports
- uses: ./.github/actions/upload-size-reports
- if: ${{ !env.ACT }}
- with:
- platform-name: K32W1
- mcxw71:
- name: MCXW71
- env:
- BUILD_TYPE: gn_k32w
+ - name: clean build
+ run: rm -rf ./out
- runs-on: ubuntu-latest
- if: github.actor != 'restyled-io[bot]'
-
- container:
- image: ghcr.io/project-chip/chip-build-nxp:81
- volumes:
- - "/tmp/bloat_reports:/tmp/bloat_reports"
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Checkout submodules & Bootstrap
- uses: ./.github/actions/checkout-submodules-and-bootstrap
- with:
- platform: nxp
- extra-submodule-parameters: --recursive
-
- - name: Set up environment for size reports
- uses: ./.github/actions/setup-size-reports
- if: ${{ !env.ACT }}
- with:
- gh-context: ${{ toJson(github) }}
-
- - name: Build examples
+ - name: Build MCXW71 examples
run: |
scripts/run_in_build_env.sh "\
./scripts/build/build_examples.py \
- --target nxp-mcxw71-freertos-lighting \
--target nxp-mcxw71-freertos-contact-sensor-low-power \
--target nxp-mcxw71-freertos-lock-app \
build \
--copy-artifacts-to out/artifacts \
"
- - name: Get lighting app size stats
- run: |
- .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- nxp mcxw71+release light \
- out/artifacts/nxp-mcxw71-freertos-lighting/chip-mcxw71-light-example.elf \
- /tmp/bloat_reports/
- - name: Get contact sensor size stats
+ - name: Get MCXW71 contact sensor size stats
run: |
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
nxp mcxw71+release contact \
out/artifacts/nxp-mcxw71-freertos-contact-sensor-low-power/chip-mcxw71-contact-example.elf \
/tmp/bloat_reports/
- - name: Get lock app size stats
+ - name: Get MCXW71 lock app size stats
run: |
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
nxp mcxw71+release lock \
out/artifacts/nxp-mcxw71-freertos-lock-app/chip-mcxw71-lock-example.elf \
/tmp/bloat_reports/
- - name: Uploading Size Reports
- uses: ./.github/actions/upload-size-reports
- if: ${{ !env.ACT }}
- with:
- platform-name: MCXW71
- rw61x:
- name: RW61X
- env:
- BUILD_TYPE: gn_rw61x
+ - name: clean build
+ run: rm -rf ./out
- runs-on: ubuntu-latest
- if: github.actor != 'restyled-io[bot]'
+ - name: Build RT1060 all clusters example app
+ run: |
+ scripts/run_in_build_env.sh "\
+ ./scripts/build/build_examples.py \
+ --target nxp-rt1060-freertos-all-clusters-wifi-iw416 \
+ --target nxp-rt1060-freertos-all-clusters-wifi-w8801 \
+ --target nxp-rt1060-freertos-all-clusters-wifi-ota-evkc-iwx12 \
+ build \
+ --copy-artifacts-to out/artifacts \
+ "
+ - name: Build RT1060 thermostat example app
+ if: github.event_name == 'push' || steps.changed_paths.outputs.nxp == 'true'
+ run: |
+ scripts/run_in_build_env.sh "\
+ ./scripts/build/build_examples.py \
+ --target nxp-rt1060-freertos-thermostat-thread-wifi-evkc-iwx12 \
+ build \
+ --copy-artifacts-to out/artifacts \
+ "
+ - name: Build RT1060 laundry-washer example app
+ if: github.event_name == 'push' || steps.changed_paths.outputs.nxp == 'true'
+ run: |
+ scripts/run_in_build_env.sh "\
+ ./scripts/build/build_examples.py \
+ --target nxp-rt1060-freertos-laundry-washer-wifi-evkc-iwx12 \
+ --target nxp-rt1060-freertos-laundry-washer-thread-evkc-iwx12 \
+ build \
+ --copy-artifacts-to out/artifacts \
+ "
- container:
- image: ghcr.io/project-chip/chip-build-nxp:81
- volumes:
- - "/tmp/bloat_reports:/tmp/bloat_reports"
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Checkout submodules & Bootstrap
- uses: ./.github/actions/checkout-submodules-and-bootstrap
- with:
- platform: nxp
- extra-submodule-parameters: --recursive
+ - name: clean build
+ run: rm -rf ./out
- - name: Set up environment for size reports
- uses: ./.github/actions/setup-size-reports
- if: ${{ !env.ACT }}
- with:
- gh-context: ${{ toJson(github) }}
+ - name: Build RT1170 all clusters example app
+ if: github.event_name == 'push' || steps.changed_paths.outputs.nxp == 'true'
+ run: |
+ scripts/run_in_build_env.sh "\
+ ./scripts/build/build_examples.py \
+ --target nxp-rt1170-freertos-all-clusters-wifi-iwx12 \
+ --target nxp-rt1170-freertos-all-clusters-wifi-ota-iwx12 \
+ build \
+ --copy-artifacts-to out/artifacts \
+ "
+ - name: Build RT1170 thermostat example app
+ run: |
+ scripts/run_in_build_env.sh "\
+ ./scripts/build/build_examples.py \
+ --target nxp-rt1170-freertos-thermostat-thread-wifi-iwx12 \
+ build \
+ --copy-artifacts-to out/artifacts \
+ "
+ - name: Build RT1170 laundry-washer example app
+ if: github.event_name == 'push' || steps.changed_paths.outputs.nxp == 'true'
+ run: |
+ scripts/run_in_build_env.sh "\
+ ./scripts/build/build_examples.py \
+ --target nxp-rt1170-freertos-laundry-washer-thread-iwx12 \
+ build \
+ --copy-artifacts-to out/artifacts \
+ "
+
+ - name: clean build
+ run: rm -rf ./out
- name: Build RW61X all clusters example app
run: |
scripts/run_in_build_env.sh "\
./scripts/build/build_examples.py \
--target nxp-rw61x-freertos-all-clusters-wifi \
- --target nxp-rw61x-freertos-all-clusters-thread \
--target nxp-rw61x-freertos-all-clusters-wifi-ota-cmake \
build \
--copy-artifacts-to out/artifacts \
"
-
- name: Build RW61X thermostat example app
run: |
scripts/run_in_build_env.sh "\
./scripts/build/build_examples.py \
- --target nxp-rw61x-freertos-thermostat-wifi \
- --target nxp-rw61x-freertos-thermostat-thread \
--target nxp-rw61x-freertos-thermostat-thread-wifi \
build \
--copy-artifacts-to out/artifacts \
"
-
- name: Build RW61X laundry-washer example app
+ if: github.event_name == 'push' || steps.changed_paths.outputs.nxp == 'true'
run: |
scripts/run_in_build_env.sh "\
./scripts/build/build_examples.py \
--target nxp-rw61x-freertos-laundry-washer-wifi \
- --target nxp-rw61x-freertos-laundry-washer-thread \
build \
--copy-artifacts-to out/artifacts \
"
+
+ - name: clean build
+ run: rm -rf ./out
+
- name: Uploading Size Reports
uses: ./.github/actions/upload-size-reports
if: ${{ !env.ACT }}
with:
- platform-name: RW61X
+ platform-name: NXP-FREERTOS
zephyr:
name: ZEPHYR
@@ -289,8 +249,15 @@
uses: ./.github/actions/checkout-submodules-and-bootstrap
with:
platform: nxp
-
+ - name: Detect changed paths
+ uses: dorny/paths-filter@v3
+ id: changed_paths
+ with:
+ filters: |
+ nxp:
+ - '**/nxp/**'
- name: Build NXP Zephyr examples
+ if: github.event_name == 'push' || steps.changed_paths.outputs.nxp == 'true'
run: |
scripts/run_in_build_env.sh "\
./scripts/build/build_examples.py \
diff --git a/docs/platforms/nxp/index.md b/docs/platforms/nxp/index.md
index be225ac..fc11ed7 100644
--- a/docs/platforms/nxp/index.md
+++ b/docs/platforms/nxp/index.md
@@ -10,5 +10,5 @@
- [NXP - Android Commissioning](nxp_k32w_android_commissioning.md)
- [NXP - Linux Examples](nxp_imx8m_linux_examples.md)
- [NXP - Manufacturing Data](nxp_manufacturing_flow.md)
-- [NXP - RW61x OTA Software Update Guide](nxp_rw61x_ota_software_update.md)
+- [NXP - RTs OTA Software Update Guide](nxp_RTs_ota_software_update.md)
- [NXP - Zephyr OTA Software Update Guide](nxp_zephyr_ota_software_update.md)
diff --git a/docs/platforms/nxp/nxp_rw61x_ota_software_update.md b/docs/platforms/nxp/nxp_RTs_ota_software_update.md
similarity index 68%
rename from docs/platforms/nxp/nxp_rw61x_ota_software_update.md
rename to docs/platforms/nxp/nxp_RTs_ota_software_update.md
index af67b14..696f507 100644
--- a/docs/platforms/nxp/nxp_rw61x_ota_software_update.md
+++ b/docs/platforms/nxp/nxp_RTs_ota_software_update.md
@@ -1,13 +1,19 @@
-# Matter Over-The-Air Software Update with NXP RW61x example applications
+# Matter Over-The-Air Software Update with NXP RTs example applications
## Overview
+This document describes OTA feature on NXP devices:
+
+- RW61x
+- RT1060_EVK-C
+- RT1170_EVK-B
+
The OTA Requestor feature enables the device to be informed of, download and
apply a software update from an OTA Provider.
-This section explains how to perform an OTA Software Update with NXP RW61x
-example applications. Throughout this guide, the all-clusters application is
-used as an example.
+This section explains how to perform an OTA Software Update with NXP RTs example
+applications. Throughout this guide, the all-clusters application is used as an
+example.
In general, the Over-The-Air Software Update process consists of the following
steps :
@@ -24,10 +30,9 @@
### Flash Memory Layout
-The RW61x Flash is divided into different regions as follow :
+The RTs Flash is divided into different regions as follow :
-- Bootloader : MCUBoot resides at the base of the flash and occupies 0x20000
- (128 kB).
+- Bootloader : MCUBoot resides at the base of the flash.
- Primary application partition : The example application which would be run
by the bootloader (active application). The size reserved for this partition
is 4.4 MB.
@@ -36,11 +41,12 @@
Notes :
-- The CPU1/CPU2 firmware are embedded in the CPU3 example application.
+- For RW61x: The CPU1/CPU2 firmware are embedded in the CPU3 example
+ application.
- The sizes of the primary and secondary applications are provided as an
example (currently 4.4 MB is reserved for each partition). The size can be
changed by modifying the `m_app_max_sectors` value in the linker script of
- the application (`RW610_flash.ld`).
+ the application .
### MCUBoot Bootloader
@@ -48,11 +54,11 @@
self-upgrade. For more details, please refer to the
[MCUBoot documentation](https://github.com/mcu-tools/mcuboot/blob/main/docs/design.md).
-For RW61x platform, the bootloader is configured to use the flash remapping
+For RTs platform, the bootloader is configured to use the flash remapping
mechanism by default, in order to perform the image upgrade. This is achieved by
using the `MCUBoot DIRECT-XIP` upgrade mode.
-## OTA Software Update process for RW61x example application
+## OTA Software Update process for RTs example application
### Flashing the bootloader
@@ -71,9 +77,11 @@
Run the following commands :
-```
+Connect J-Link debugger to device:
+
+```sh
J-Link > connect
-Device> ? # you will be presented with a dialog -> select `RW612`
+Device> ? # you will be presented with a dialog -> select `RW612` for RW61x, `MIMXRT1062XXX6B` for RT1060, `MIMXRT1176xxxA_M7` for RT1170
Please specify target interface:
J) JTAG (Default)
S) SWD
@@ -81,34 +89,60 @@
TIF> S
Specify target interface speed [kHz]. <Default>: 4000 kHz
Speed> # <enter>
+```
+
+Erase flash:
+
+```
J-Link > exec EnableEraseAllFlashBanks
+```
+
+For RW61x
+
+```
J-Link > erase 0x8000000, 0x88a0000
```
+For RT1060-EVK-C
+
+```
+J-Link > erase 0x60000000, 0x61000000
+```
+
+For RT1170-EVK-B
+
+```
+J-Link > erase 0x30000000, 0x34000000
+```
+
- MCUBoot application can be built with SDK installed, using instructions
-
below.
+- Retrieve the mcuboot directory located at
+ _'<matter_repo_root>/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/<a href="#1" id="1-ref">`RTboard`<sup>1</sup></a>/ota_examples/`mcuboot_opensource/armgcc`'_
-- Retrieve the mcuboot directory with :
+_<a id="1" href="#1-ref"><sup>1</sup></a> `rdrw612bga` or `frdmrw612` for RW61x,
+`evkcmimxrt1060` for RT1060-EVK-C, `evkbmimxrt1170` for RT1170-EVK-B_
```
-user@ubuntu: cd ~/Desktop/connectedhomeip/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/<rw612 board>/ota_examples/mcuboot_opensource/armgcc
+user@ubuntu: cd ~/Desktop/connectedhomeip/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/<RT_board>/ota_examples/mcuboot_opensource/armgcc
```
-`<rw612 board>`: Supported rw612 boards are: `rdrw612bga` or `frdmrw612`
-
-- Build the mcuboot application :
+- Build the mcuboot application with running
+ <a href="#2" id="2-ref">`build_script`<sup>2</sup></a>
```
-user@ubuntu: chmod +x build_flash_release.sh
+user@ubuntu: chmod +x <build_script>
user@ubuntu: export ARMGCC_DIR=/opt/gcc-arm-none-eabi-10.3-2021.10 # with ARMGCC_DIR referencing the compiler path
-user@ubuntu: ./build_flash_release.sh
+user@ubuntu: ./<build_script>
```
+_<a id="2" href="#2ref"><sup>2</sup></a> `build_flash_release.sh` for RW61x,
+`build_flexspi_nor_release.sh` for RT1060 and RT1170_
+
- Program the generated binary to the target board.
```
-J-Link > loadbin ~/Desktop/connectedhomeip/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/<rw612 board>/ota_examples/mcuboot_opensource/armgcc/flash_release/mcuboot_opensource.elf
+J-Link > loadbin <path_to_mcuboot>/mcuboot_opensource.elf
```
- If it runs successfully, the following logs will be displayed on the
@@ -126,10 +160,11 @@
Note : By default, mcuboot application considers the primary and secondary
partitions to be the size of 4.4 MB. If the size is to be changed, the partition
-addresses should be modified in the flash_partitioning.h accordingly. For more
+addresses should be modified in the `flash_partitioning.h` accordingly. For more
information about the flash partitioning with mcuboot, please refer to the
-dedicated readme.txt located in
-"`<matter_repo_root>/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/<rw612 board>/ota_examples/mcuboot_opensource/`".
+dedicated `readme.txt` located in
+
+> _<matter_repo_root>/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/<a href="#1" id="1ref">`RTboard`<sup>1</sup></a>/ota_examples/`mcuboot_opensource`/._
### Generating and flashing the signed application image
@@ -143,15 +178,25 @@
signature, the upgrade type, the swap status...
The all-clusters application can be generated using the instructions from the
-[README.md 'Building'](../../../examples/all-clusters-app/nxp/rt/rw61x/README.md#building)
-section. The application is automatically linked to be executed from the primary
-image partition, taking into consideration the offset imposed by mcuboot.
-The resulting executable file found in out/debug/chip-rw61x-all-cluster-example
+README.md<a href="#3" id="3-ref"><sup>3</sup></a>'Building' section. The
+application is automatically linked to be executed from the primary image
+partition, taking into consideration the offset imposed by mcuboot.
+
+_<a id="3" href="#3-ref"><sup>3</sup></a>
+[RW61x README.md 'Building'](../../../examples/all-clusters-app/nxp/rt/rw61x/README.md#building),
+[RT1060 README.md 'Building'](../../../examples/all-clusters-app/nxp/rt/rt1060/README.md#building),
+[RT1170 README.md 'Building'](../../../examples/all-clusters-app/nxp/rt/rt1170/README.md#building)_
+
+The resulting executable file found in
+out/release/chip-<a href="#4" id="4-ref">`board`<sup>4</sup></a>-all-cluster-example
needs to be converted into raw binary format as shown below.
-```
-arm-none-eabi-objcopy -R .flash_config -R .NVM -O binary chip-rw61x-all-cluster-example chip-rw61x-all-cluster-example.bin
+_<a id="4" href="#4-ref"><sup>4</sup></a> `rw61x` for RW61x, `rt1060` for
+RT1060-EVK-C, `rt1170` for RT1170-EVK-B_
+
+```sh
+arm-none-eabi-objcopy -R .flash_config -R .NVM -O binary chip-<"board">-all-cluster-example chip-<"board">-all-cluster-example.bin
```
To sign the image and wrap the raw binary of the application with the header and
@@ -161,10 +206,10 @@
The following commands can be run (make sure to replace the /path/to/file/binary
with the adequate files):
-```
+```sh
user@ubuntu: cd ~/Desktop/<matter_repo_root>/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/middleware/mcuboot_opensource/scripts/
-user@ubuntu: python3 imgtool.py sign --key ~/Desktop/<matter_repo_root>/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/<rw612 board>/ota_examples/mcuboot_opensource/keys/sign-rsa2048-priv.pem --align 4 --header-size 0x1000 --pad-header --pad --confirm --slot-size 0x440000 --max-sectors 1088 --version "1.0" ~/Desktop/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x/out/debug/chip-rw61x-all-cluster-example.bin ~/Desktop/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x/out/debug/chip-rw61x-all-cluster-example_SIGNED.bin
+user@ubuntu: python3 imgtool.py sign --key ~/Desktop/<matter_repo_root>/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/<RT board>/ota_examples/mcuboot_opensource/keys/sign-rsa2048-priv.pem --align 4 --header-size 0x1000 --pad-header --pad --confirm --slot-size 0x440000 --max-sectors 1088 --version "1.0" ~/Desktop/connectedhomeip/examples/all-clusters-app/nxp/rt/<"rt_board">/out/debug/chip-<"rt_board">-all-cluster-example.bin ~/Desktop/connectedhomeip/examples/all-clusters-app/nxp/rt/<"rt_board">/out/debug/chip-<"rt_board">-all-cluster-example_SIGNED.bin
```
Notes :
@@ -176,7 +221,7 @@
adjusted accordingly.
- In this example, the image is signed with the private key provided by the
SDK as an example
- (`<matter_repo_root>/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/<rw612 board>/ota_examples/mcuboot_opensource/keys/sign-rsa2048-priv.pem`),
+ (`<matter_repo_root>/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/<RT_board>/ota_examples/mcuboot_opensource/keys/sign-rsa2048-priv.pem`),
MCUBoot is built with its corresponding public key which would be used to
verify the integrity of the image. It is possible to generate a new pair of
keys using the following commands. This procedure should be done prior to
@@ -195,18 +240,31 @@
```
- The extracted public key can then be copied to the
- `<matter_repo_root>/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/<rw612 board>/ota_examples/mcuboot_opensource/keys/sign-rsa2048-pub.c`,
+ `<matter_repo_root>/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/<RT_board>/ota_examples/mcuboot_opensource/keys/sign-rsa2048-pub.c`,
given as a value to the rsa_pub_key[] array.
The resulting output is the signed binary of the application version "1.0".
-JLink can be used to flash the application at the address 0x8020000, using the
-command :
+JLink can be used to flash the application using the command :
+
+For RW61x
```
J-Link > loadbin chip-rw61x-all-cluster-example_SIGNED.bin 0x8020000
```
+For RT1060-EVK-C
+
+```
+J-Link > loadbin chip-rt1060-all-cluster-example_SIGNED.bin 0x60040000
+```
+
+For RT1170-EVK-B
+
+```
+J-Link > loadbin chip-rt1170-all-cluster-example_SIGNED.bin 0x30040000
+```
+
The bootloader should then be able to jump directly to the start of the
application and run it.
@@ -226,8 +284,8 @@
into OTA format. To do so, the ota_image_tool is provided in the repo and can be
used to convert a binary file into an .ota file.
-```
-user@ubuntu:~/connectedhomeip$ : ./src/app/ota_image_tool.py create -v 0xDEAD -p 0xBEEF -vn 2 -vs "2.0" -da sha256 chip-rw61x-all-cluster-example_SIGNED.bin chip-rw61x-all-cluster-example.ota
+```sh
+user@ubuntu:~/connectedhomeip$ : ./src/app/ota_image_tool.py create -v 0xDEAD -p 0xBEEF -vn 2 -vs "2.0" -da sha256 chip-<"rt_board">-all-cluster-example_SIGNED.bin chip-rw61x-all-cluster-example.ota
```
The generated OTA file can be used to perform the OTA Software Update. The
@@ -240,7 +298,7 @@
- [Chip-tool](../../../examples/chip-tool/README.md) application running on
the RPi.
- OTA Provider application built on the same RPi (as explained below).
-- RW61x board programmed with the example application (with the instructions
+- RT board programmed with the example application (with the instructions
above).
Before starting the OTA process, the Linux OTA Provider application can be built
@@ -248,9 +306,11 @@
```
user@ubuntu:~/connectedhomeip$ : ./scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/ota-provider-app chip_config_network_layer_ble=false
-
user@ubuntu:~/connectedhomeip$ : rm -rf /tmp/chip_*
-user@ubuntu:~/connectedhomeip$ : ./out/ota-provider-app/chip-ota-provider-app -f chip-rw61x-all-cluster-example.ota
+```
+
+```sh
+user@ubuntu:~/connectedhomeip$ : ./out/ota-provider-app/chip-ota-provider-app -f chip-<"rt_board">-all-cluster-example.ota
```
The OTA Provider should first be provisioned with chip-tool by assigning it the
diff --git a/examples/all-clusters-app/nxp/rt/rt1060/.gn b/examples/all-clusters-app/nxp/rt/rt1060/.gn
new file mode 100644
index 0000000..0985ed9
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1060/.gn
@@ -0,0 +1,35 @@
+# Copyright (c) 2020 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+
+# The location of the build configuration file.
+buildconfig = "${build_root}/config/BUILDCONFIG.gn"
+
+# CHIP uses angle bracket includes.
+check_system_includes = true
+
+default_args = {
+ target_cpu = "arm"
+ target_os = "freertos"
+
+ import("//args.gni")
+
+ # Import common example GN args
+ import("${chip_root}/examples/platform/nxp/common/gn/args.gni")
+
+ # Import default platform configs
+ import("${chip_root}/src/platform/nxp/rt/rt1060/args.gni")
+}
diff --git a/examples/all-clusters-app/nxp/rt/rt1060/BUILD.gn b/examples/all-clusters-app/nxp/rt/rt1060/BUILD.gn
new file mode 100644
index 0000000..16e0b03
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1060/BUILD.gn
@@ -0,0 +1,284 @@
+# Copyright (c) 2021-2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+import("//build_overrides/nxp_sdk.gni")
+import("//build_overrides/openthread.gni")
+import("${chip_root}/src/platform/device.gni")
+
+#allows to get common NXP SDK gn options
+import("${nxp_sdk_build_root}/nxp_sdk.gni")
+
+# Allows to get various RT gn options
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni")
+
+import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni")
+import(
+ "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni")
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni")
+
+assert(current_os == "freertos")
+assert(target_os == "freertos")
+assert(nxp_platform == "rt/rt1060")
+
+declare_args() {
+ # Allows to enable to ota_provider support
+ enable_ota_provider = false
+
+ # Allows to connect to a predefine Wi-Fi network at boot
+ wifi_auto_connect_at_boot = false
+ wifi_auto_connect_at_boot_ssid = ""
+ wifi_auto_connect_at_boot_password = ""
+
+ # Setup discriminator as argument
+ setup_discriminator = 3840
+}
+
+example_platform_dir =
+ "${nxp_sdk_matter_support_root}/examples/platform/${nxp_platform}"
+common_example_dir = "${chip_root}/examples/platform/nxp/common"
+
+app_common_folder = "all-clusters-app/all-clusters-common"
+
+# Create here the SDK instance.
+# Particular sources/defines/includes could be added/changed depending on the target application.
+rt_sdk("sdk") {
+ defines = []
+
+ cflags = []
+ public_deps = []
+ public_configs = []
+ sources = []
+ include_dirs = []
+
+ # Indicate paths to default board files
+ include_dirs += [ "${example_platform_dir}/board/" ]
+
+ # RT1060 rev A use same pin mux as rev B
+ # If user needs different pin mux files for rev A and rev B boards, the source and include from below needs to be updated accordingly
+ if (evkname == "evkmimxrt1060") {
+ include_dirs += [ "${example_platform_dir}/board/evkbmimxrt1060/" ]
+ sources += [ "${example_platform_dir}/board/evkbmimxrt1060/pin_mux.c" ]
+ } else {
+ include_dirs += [ "${example_platform_dir}/board/${evkname}/" ]
+ sources += [ "${example_platform_dir}/board/${evkname}/pin_mux.c" ]
+ }
+
+ sources += [ "${example_platform_dir}/board/hardware_init.c" ]
+ sources += [ "${example_platform_dir}/board/clock_config.c" ]
+ sources += [ "${example_platform_dir}/board/board.c" ]
+ sources += [ "${example_platform_dir}/board/peripherals.c" ]
+
+ # Indicate the path to CHIPProjectConfig.h
+ include_dirs += [ "include/config" ]
+
+ # Indicate the default path to FreeRTOSConfig.h
+ include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ]
+
+ # Indicate the default path to OpenThreadConfig.h
+ include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ]
+
+ # For matter with BR feature, increase FreeRTOS heap size
+ if (chip_enable_wifi && chip_enable_openthread) {
+ defines += [ "configTOTAL_HEAP_SIZE=(size_t)(170 * 1024)" ]
+ }
+
+ defines += [
+ "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}",
+ ]
+}
+
+# Create the SDK driver instance.
+# Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template
+rt1060_sdk_drivers("sdk_driver") {
+}
+
+rt_executable("all_cluster_app") {
+ output_name = "chip-rt1060-all-cluster-example"
+
+ defines = [
+ "CONFIG_RENDEZVOUS_MODE=7",
+ "CONFIG_APP_FREERTOS_OS=1",
+ ]
+
+ if (chip_enable_openthread) {
+ defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ]
+ }
+
+ include_dirs = [
+ "../../common/main/include",
+ "../../common/main",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/include",
+ "${chip_root}/examples/providers/",
+ ]
+
+ sources = [
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp",
+ "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp",
+ "../../common/main/AppTask.cpp",
+ "../../common/main/DeviceCallbacks.cpp",
+ "../../common/main/ZclCallbacks.cpp",
+ "../../common/main/include/AppEvent.h",
+ "../../common/main/include/AppTask.h",
+ "../../common/main/include/DeviceCallbacks.h",
+ "../../common/main/main.cpp",
+ ]
+
+ # App common files
+ include_dirs += [
+ "${common_example_dir}/icd/include",
+ "${common_example_dir}/matter_cli/include",
+ "${common_example_dir}/device_manager/include",
+ "${common_example_dir}/device_callbacks/include",
+ "${common_example_dir}/matter_button/include",
+ "${common_example_dir}/factory_data/include",
+ "${common_example_dir}/app_task/include",
+ ]
+
+ sources += [
+ "${chip_root}/examples/platform/nxp/${nxp_platform}/factory_data/source/AppFactoryDataExample.cpp",
+ "${common_example_dir}/app_task/source/AppTaskBase.cpp",
+ "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp",
+ "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp",
+ "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp",
+ "${common_example_dir}/icd/source/ICDUtil.cpp",
+ "${common_example_dir}/matter_button/source/ButtonDefault.cpp",
+ "${common_example_dir}/matter_button/source/ButtonManager.cpp",
+ "${common_example_dir}/matter_button/source/ButtonRegistrationDefault.cpp",
+ ]
+
+ deps = [ "${chip_root}/examples/${app_common_folder}" ]
+
+ sources += [
+ "${chip_root}/examples/${app_common_folder}/src/bridged-actions-stub.cpp",
+ "${chip_root}/examples/${app_common_folder}/src/smco-stub.cpp",
+ "${chip_root}/examples/${app_common_folder}/src/static-supported-modes-manager.cpp",
+ ]
+
+ if (chip_enable_matter_cli) {
+ defines += [ "ENABLE_CHIP_SHELL" ]
+ deps += [
+ "${chip_root}/examples/shell/shell_common:shell_common",
+ "${chip_root}/src/lib/shell:shell",
+ ]
+ sources += [
+ "${common_example_dir}/matter_cli/source/AppCLIBase.cpp",
+ "${common_example_dir}/matter_cli/source/AppCLIFreeRTOS.cpp",
+ ]
+ }
+
+ if (chip_enable_ota_requestor) {
+ include_dirs += [ "${common_example_dir}/ota_requestor/include" ]
+ sources += [
+ "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp",
+ "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp",
+ ]
+ }
+
+ if (wifi_auto_connect_at_boot) {
+ assert(wifi_auto_connect_at_boot_ssid != "" &&
+ wifi_auto_connect_at_boot_password != "",
+ "WiFi SSID and password must be specified at build time!")
+
+ defines += [
+ "CONFIG_CHIP_APP_WIFI_CONNECT_AT_BOOT=1",
+ "CONFIG_CHIP_APP_WIFI_SSID=\"${wifi_auto_connect_at_boot_ssid}\"",
+ "CONFIG_CHIP_APP_WIFI_PASSWORD=\"${wifi_auto_connect_at_boot_password}\"",
+ ]
+
+ include_dirs += [ "${common_example_dir}/wifi_connect/include" ]
+ sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ]
+ }
+
+ if (enable_ota_provider) {
+ defines += [ "CONFIG_CHIP_OTA_PROVIDER=1" ]
+
+ include_dirs += [
+ "${common_example_dir}/ota_provider/include",
+ "${common_example_dir}/ota_provider/ota-provider-common",
+ ]
+
+ sources += [
+ "${common_example_dir}/ota_provider/ota-provider-common/RTBdxOtaSender.cpp",
+ "${common_example_dir}/ota_provider/ota-provider-common/RTOTAProviderExample.cpp",
+ "${common_example_dir}/ota_provider/source/OTAProvider.cpp",
+ ]
+
+ deps += [
+ "${chip_root}/src/app/server",
+ "${chip_root}/src/protocols/bdx",
+ "${chip_root}/third_party/jsoncpp",
+ ]
+ }
+
+ # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false
+ # The would add to the build a dedicated application assert implementation.
+ if (!sdk_fsl_assert_support) {
+ sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ]
+ }
+
+ cflags = [ "-Wconversion" ]
+
+ ldscript =
+ "${example_platform_dir}/app/ldscripts/MIMXRT1062xxxxx_flexspi_nor.ld"
+
+ inputs = [ ldscript ]
+
+ ldflags = [
+ "-T" + rebase_path(ldscript, root_build_dir),
+ "-fno-common",
+ "-Wl,--defsym=__stack_size__=2048",
+ "-ffreestanding",
+ "-fno-builtin",
+ "-mapcs",
+ "-u qspiflash_config",
+ "-u image_vector_table",
+ "-u boot_data",
+ "-u dcd_data",
+ "-Wl,-print-memory-usage",
+ "-Wl,--no-warn-rwx-segments",
+ ]
+
+ if (evkname == "evkcmimxrt1060") {
+ ldflags += [ "-Wl,--defsym=gEVKCFlashSize_d=0x1000000" ]
+ }
+
+ if (enable_ota_provider) {
+ # As the OTA file will be stored in the littlefs file system, it is required to increase the size of the file system
+ # To be able to store an OTA file with a MAX size of 640K,
+ # it recommended to size the file system with:
+ # 161 sectors of 4K => reserved for the OTA file
+ # 32 sectors of 4K => reserved for Matter/OT/BLE settings storage
+ ldflags += [ "-Wl,--defsym=gNVMSectorCountLink_d=193" ]
+ }
+
+ if (chip_enable_ota_requestor) {
+ # If OTA build flag is enabled,
+ # we would need to reserve enough space for the bootloader (MCUBoot)
+ # MCUBoot requires 0x11000 Bytes to be reserved at the base of the flash
+ # Consequently, some sections will need to be shifted
+ ldflags += [ "-Wl,--defsym=__m_mcuboot_size__=0x40000" ]
+ }
+
+ output_dir = root_out_dir
+}
+
+group("rt1060") {
+ deps = [ ":all_cluster_app" ]
+}
+
+group("default") {
+ deps = [ ":rt1060" ]
+}
diff --git a/examples/all-clusters-app/nxp/rt/rt1060/README.md b/examples/all-clusters-app/nxp/rt/rt1060/README.md
new file mode 100644
index 0000000..558ae41
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1060/README.md
@@ -0,0 +1,723 @@
+# CHIP RT1060 All-clusters Application
+
+The all-clusters example implements a server which can be accessed by a CHIP
+controller and can accept basic cluster commands.
+
+The example is based on
+[Project CHIP](https://github.com/project-chip/connectedhomeip) and the NXP
+RT1060 SDK, and provides a prototype application that demonstrates device
+commissioning and different cluster control.
+
+<hr>
+
+- [CHIP RT1060 All-clusters Application](#chip-rt1060-all-clusters-application)
+ - [Introduction](#introduction)
+ - [Configurations supported](#configurations-supported)
+ - [Hardware requirements RT1060 + transceiver](#hardware-requirements-rt1060--transceiver)
+ - [Hardware requirements RT1060+IW416](#hardware-requirements-rt1060iw416)
+ - [Hardware requirements RT1060+88W8801](#hardware-requirements-rt106088w8801)
+ - [Hardware requirements RT1060 + K32W0](#hardware-requirements-rt1060--k32w0)
+ - [Hardware requirements RT1060-EVK-C+IW612](#hardware-requirements-rt1060-evk-ciw612)
+ - [Hardware requirements RT1060 + 88W8801 + K32W0x1DK6](#hardware-requirements-rt1060--88w8801--k32w0x1dk6)
+ - [Building](#building)
+ - [Building with Matter over Wifi configuration on RT1060 + transceiver](#building-with-matter-over-wifi-configuration-on-rt1060--transceiver)
+ - [Build with Matter over Thread configuration on RT1060 + transceiver](#build-with-matter-over-thread-configuration-on-rt1060--transceiver)
+ - [Build with Matter over Thread configuration on RT1060 + K32W0](#build-with-matter-over-thread-configuration-on-rt1060--k32w0)
+ - [Build with Matter over Thread configuration on RT1060-EVK-C + IW612](#build-with-matter-over-thread-configuration-on-rt1060-evk-c--iw612)
+ - [Build with Matter over Wi-Fi + OpenThread Border Router configuration on RT1060 + 88W8801 + K32W0x1DK6](#build-with-matter-over-wi-fi--openthread-border-router-configuration-on-rt1060--88w8801--k32w0x1dk6)
+ - [General Information](#general-information)
+ - [Manufacturing data](#manufacturing-data)
+ - [Flashing and debugging](#flashing-and-debugging)
+ - [Testing the example](#testing-the-example)
+ - [Matter over wifi configuration :](#matter-over-wifi-configuration-)
+ - [Matter over thread configuration :](#matter-over-thread-configuration-)
+ - [Matter over wifi with openthread border router configuration :](#matter-over-wifi-with-openthread-border-router-configuration-)
+ - [Testing the all-clusters application without Matter CLI:](#testing-the-all-clusters-application-without-matter-cli)
+ - [Testing the all-clusters application with Matter CLI enabled:](#testing-the-all-clusters-application-with-matter-cli-enabled)
+ - [Thread Border Router overview](#thread-border-router-overview)
+ <hr>
+
+<a name="intro"></a>
+
+## Introduction
+
+![RT1060 EVK-B](../../../../platform/nxp/rt/rt1060/doc/images/MIMXRT1060-EVKB-TOP.png)
+
+The RT1060 all-cluster application provides a working demonstration of the
+RT1060 board integration, built using the Project CHIP codebase and the NXP
+RT1060 SDK.
+
+The example supports:
+
+- Matter over Wi-Fi
+- Matter over Openthread
+- Matter over Wi-Fi with Openthread Border Router support
+
+The example targets the
+[NXP MIMXRT1060-EVK-B](https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/mimxrt1060-evk-i-mx-rt1060-evaluation-kit:MIMXRT1060-EVK)
+board by default. It is also possible to use the older MIMXRT1060-EVK board,
+build and board setup instructions differ in some steps.
+
+### Configurations supported
+
+Here are listed configurations supported on RT1060.
+
+Matter over Wi-Fi :
+
+- RT1060 + IW416 (Wi-Fi + BLE)
+- RT1060 + 88W8801 (Wi-Fi)
+- **Experimental:** _RT1060-EVK-C + IW612 (Wi-fi +BLE)_
+
+Matter over Thread :
+
+- RT1060 + K32W0 (15.4 + BLE)
+- **Experimental:** _RT1060-EVK-C + IW612 (15.4 + BLE)_
+
+Matter over Wi-Fi with Openthread Border Router support :
+
+- RT1060 + 88W8801 + K32W0x1DK6
+
+### Hardware requirements RT1060 + transceiver
+
+#### Hardware requirements RT1060+IW416
+
+Host part:
+
+- 1 MIMXRT1060-EVK-B or MIMXRT1060-EVK board
+- external 5V supply
+
+Transceiver part:
+
+- 1 AzureWave AW-AM510-uSD evaluation board
+
+Jumper settings for MIMXRT1060-EVK-B (enables external 5V supply):
+
+- remove J40 5-6
+- connect J40 1-2
+- connect J45 with external power (controlled by SW6 - position 3)
+
+Jumper settings for MIMXRT1060-EVK (enables external 5V supply):
+
+- remove J1 5-6
+- connect J1 1-2
+- connect J2 with external power (enabled by SW1 - position 3)
+
+The hardware should be reworked according to the chapter _Hardware Rework Guide
+for MIMXRT1060-EVK-B and AW-AM510-uSD_ or the chapter _Hardware Rework Guide for
+MIMXRT1060-EVK and AW-AM510-uSD_ in the document
+_`Hardware Rework Guide for EdgeFast BT PAL`_ which can be found in the NXP
+RT1060 SDK (_docs/wireless/bluetooth/`edgefast_bluetooth`/Hardware Rework Guide
+for EdgeFast BT PAL.pdf_):
+
+- Make sure resistors R368/R376/R347/R349/R365/R363/R193/R186 are removed.
+
+Only the SDK package downloaded from https://mcuxpresso.nxp.com contains the PDF
+document mentioned above, it is not present in the SDK downloaded from GitHub
+using the west tool.
+
+Jumper settings for AzureWave AW-AM510-uSD Module:
+
+- J4 1-2: `VIO` 1.8V (Voltage level of SD-IO pins is 1.8V)
+- J2 1-2: 3.3V `VIO_uSD` (Power Supply from uSD connector)
+- The pin 1 of J4 is not marked on the board. Please note that pin numbering
+ of J4 is opposite to J2.
+
+Plug AW-AM510-uSD into uSD connector J22 on MIMXRT1060-EVK-B or J39 on
+MIMXRT1060-EVK.
+
+Connect the following pins between RT1060 and AW-AM510-uSD to enable Bluetooth
+HCI UART:
+
+| PIN NAME | AW-AM510-uSD | MIMXRT1060-EVK-B | MIMXRT1060-EVK | PIN NAME OF RT1060 | GPIO NAME OF RT1060 |
+| :--------: | :-----------: | :--------------: | :------------: | :----------------: | :-----------------: |
+| `UART_TXD` | `J10 (pin 4)` | `J16 (pin 1)` | `J22 (pin 1)` | `LPUART3_RXD` | `GPIO_AD_B1_07` |
+| `UART_RXD` | `J10 (pin 2)` | `J16 (pin 2)` | `J22 (pin 2)` | `LPUART3_TXD` | `GPIO_AD_B1_06` |
+| `UART_RTS` | `J10 (pin 6)` | `J33 (pin 3)` | `J23 (pin 3)` | `LPUART3_CTS` | `GPIO_AD_B1_04` |
+| `UART_CTS` | `J10 (pin 8)` | `J33 (pin 4)` | `J23 (pin 4)` | `LPUART3_RTS` | `GPIO_AD_B1_05` |
+| `GND` | `J6 (pin 7)` | `J32 (pin 7)` | `J25 (pin 7)` | `GND` | `GND` |
+
+Attach external antenna into connector on AW-AM510-uSD.
+
+Additional information about the AW-AM510-uSD can be found in the user manual
+_UM11441 - Getting Started with NXP-based Wireless Modules and i.MX RT Platform
+Running RTOS_, which can be found in the NXP RT1060 SDK
+(docs/wireless/UM11441-Getting-Started-with-NXP-based-Wireless-Modules-and-i.MX-RT-Platform-Running-on-RTOS.pdf).
+Only the SDK package downloaded from https://mcuxpresso.nxp.com contains the PDF
+document, it is not present in the SDK downloaded from GitHub using the west
+tool.
+
+#### Hardware requirements RT1060+88W8801
+
+Host part:
+
+- 1 MIMXRT1060-EVK-B
+
+Transceiver part :
+
+- 1 88W8801 2DS M.2 Module (rev A)
+- 1 Murata uSD-M.2 Adapter (rev B1)
+
+The 88W8801 2DS M.2 Module should be inserted into the Murata uSD-M.2 Adapter
+and inserted in the uSD slot J22 of MIMXRT1060-EVK-B. The Murata uSD-M.2 Adapter
+can be powered up using uSD pins. For that, set the J1 jumper of Murata uSD-M.2
+to position 2-3 (Position 2-3: `VBAT supply`, typical 3.1 ~ 3.3V, from microSD
+connector).
+
+Note: as the 88W8801 module supports only the 2.4 GHz Wi-Fi band, it is
+mandatory to connect it to a Wi-Fi access point on the 2.4 GHz band.
+
+#### Hardware requirements RT1060 + K32W0
+
+Host part:
+
+- 1 MIMXRT1060-EVK-B or MIMXRT1060-EVK board
+
+Transceiver part:
+
+- 1 OM15076-3 Carrier Board (DK6 board)
+- 1 K32W0 Module to be plugged on the Carrier Board
+
+**Board settings**
+
+The below table explains pin settings (UART settings) to connect the
+MIMXRT1060-EVK-B (host) to a k32w061 transceiver (rcp).
+
+| PIN NAME | DK6 (K32W061) | MIMXRT1060-EVK-B | MIMXRT1060-EVK | PIN NAME OF RT1060 | GPIO NAME OF RT1060 |
+| :--------------: | :-----------: | :--------------: | :------------: | :----------------: | :-----------------: |
+| `UART_TXD` | `PIO, pin 8` | `J16, pin 1` | `J22, pin 1` | `LPUART3_RXD` | `GPIO_AD_B1_07` |
+| `UART_RXD` | `PIO, pin 9` | `J16, pin 2` | `J22, pin 2` | `LPUART3_TXD` | `GPIO_AD_B1_06` |
+| `UART_RTS` | `PIO, pin 6` | `J33, pin 3` | `J23, pin 3` | `LPUART3_CTS` | `GPIO_AD_B1_04` |
+| `UART_CTS` | `PIO, pin 7` | `J33, pin 4` | `J23, pin 4` | `LPUART3_RTS` | `GPIO_AD_B1_05` |
+| `GND` | `J3, pin 1` | `J32, pin 7` | `J25, pin 7` | `XX` | `XX` |
+| `RESET` | `RSTN` | `J33, pin 2` | `J23, pin 2` | `GPIO_AD_B1_11` | `GPIO_AD_B1_11` |
+| `DIO5/ISP Entry` | `PIO, pin 5` | `J33, pin 1` | `J23, pin 1` | `GPIO_AD_B1_10` | `GPIO_AD_B1_10` |
+
+The below picture shows pins connections for the MIMXRT1060-EVK.
+
+![rt1060_k32w061_pin_settings](../../../../platform/nxp/rt/rt1060/doc/images/rt1060_k32w061_pin_settings.jpg)
+
+#### Hardware requirements RT1060-EVK-C+IW612
+
+Host part:
+
+- 1 MIMXRT1060-EVK-C
+
+ Hardware should be reworked as below:
+
+ - populate R93, R96, R2155, R2156, R2157, R2158, R2159 with 0Ohm resistors
+ - J76 and J107 jumpers in 2-3 position.
+ - J109 and J110 jumpers in 1-2 position.
+ - disconnect pin15 of component U9
+
+![rt1060_evkc_IW612_hw_rework](../../../../platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework.jpg)
+
+![rt1060_evkc_IW612_hw_rework_detail](../../../../platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework_detail.jpg)
+
+Transceiver part :
+
+- 1
+ [2EL M2 A1 IW612 Secure Module](https://www.nxp.com/products/wireless/wi-fi-plus-bluetooth-plus-802-15-4/2-4-5-ghz-dual-band-1x1-wi-fi-6-802-11ax-plus-bluetooth-5-2-plus-802-15-4-tri-radio-solution:IW612)
+
+![](../../../../platform/nxp/rt/rt1170/doc/images/iwx612_2EL.jpg)
+
+#### Hardware requirements RT1060 + 88W8801 + K32W0x1DK6
+
+- i.MX RT1060 EVK-A or EVK-B board
+- 88W8801 module (for Wi-Fi connection), for example 88W8801 2DS M.2 Module
+ (rev A) and Murata uSD-M.2 Adapter (rev B1)
+- K32W0x1 mezzanine module (for Thread connection)
+- `IOT_ZTB-DK006` carrier board for the K32W0x1 module (referenced as DK6
+ carrier board)
+
+<a name="building"></a>
+
+## Building
+
+In order to build the Project CHIP example, we recommend using a Linux
+distribution. Supported Operating Systems are listed in
+[BUILDING.md](../../../../../docs/guides/BUILDING.md).
+
+- Make sure that below prerequisites are correctly installed, as described in
+ [BUILDING.md](../../../../../docs/guides/BUILDING.md).
+
+```
+sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \
+ libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \
+ python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev
+```
+
+- Step 1: checkout NXP specific submodules only
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip$ scripts/checkout_submodules.py --shallow --platform nxp --recursive
+```
+
+- Step 2: activate local environment
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip$ source scripts/activate.sh
+```
+
+If the script says the environment is out of date, you can update it by running
+the following command:
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip$ source scripts/bootstrap.sh
+```
+
+- Step 3: Init NXP SDK(s)
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip$ third_party/nxp/nxp_matter_support/scripts/update_nxp_sdk.py --platform common
+```
+
+Note: By default update_nxp_sdk.py will try to initialize all NXP SDKs. Arg "--
+help" could be used to view all available options.
+
+- Start building the application.
+
+### Building with Matter over Wifi configuration on RT1060 + transceiver
+
+- Build the Wi-fi configuration for **MIMXRT1060-EVK-B board + IW416
+ transceiver** (with BLE for commissioning).
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_wifi=true iw416_transceiver=true" out/debug
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug
+```
+
+- Build the Wi-fi configuration for **MIMXRT1060-EVK-B board + 88W8801
+ transceiver** with Matter-over-Wifi configuration and only onnetwork
+ commissioning (without BLE, the WiFi network credentials are provided at
+ build-time which will enable the device to join the Wi-Fi AP at startup):
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ export ssid_name=<nwk_ssid> && export ssid_password=<nwk_password> && gn gen --args="chip_enable_wifi=true w8801_transceiver=true chip_config_network_layer_ble=false wifi_auto_connect_at_boot=true wifi_auto_connect_at_boot_ssid=\"${ssid_name}\" wifi_auto_connect_at_boot_password=\"${ssid_password}\"" out/debug
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug
+```
+
+- Build the Wi-fi configuration for **MIMXRT1060-EVK-C board + IW612
+ transceiver** (with BLE for commissioning).
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_wifi=true iwx12_transceiver=true evkname=\"evkcmimxrt1060\" " out/debug
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug
+```
+
+- Build the Wi-fi configuration for **MIMXRT1060-EVK-C board + IW612
+ transceiver** with Matter-over-Wifi configuration and only onnetwork
+ commissioning (without BLE, the WiFi network credentials are provided at
+ build-time which will enable the device to join the Wi-Fi AP at startup):
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_wifi=true iwx12_transceiver=true evkname=\"evkcmimxrt1060\" chip_config_network_layer_ble=false tcp_download=true wifi_ssid=\"your_wifi_ssid\" wifi_password=\"your_wifi_password\"" out/debug
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug
+```
+
+### Build with Matter over Thread configuration on RT1060 + transceiver
+
+#### Build with Matter over Thread configuration on RT1060 + K32W0
+
+For this configuration a K32W0 RCP image is required and must support in a
+single image the openthread RCP configuration and the BLE HCI BB configuration.
+Messages between the host and the K32W0 transceiver are transferred on a single
+UART with flow control support. For that the HDLC-Lite framing protocol is used
+to transfer spinel and hci frames. In addition, hci and spinel frames can be
+distinguished by using the Spinel convention which is line compatible with
+BT/BLE HCI.
+
+Before building the Matter host application, it is required to generate the
+K32W0 image supporting features as described above. To build this binary the
+target `ot_rcp_ble_hci_bb_single_uart_fc` should be built by following the
+[Readme.md][ot_rcp_ble_hci_bb_k32w0_readme]. After a successful build, a `".h"`
+file will be generated and would contain the K32W0 RCP binary. As described in
+the [Readme.md][ot_rcp_ble_hci_bb_k32w0_readme], the application binaries will
+be generated in
+`ot_nxp/build_k32w061/ot_rcp_ble_hci_bb_single_uart_fc/bin/ot-rcp-ble-hci-bb-k32w061.elf.bin.h`.
+
+The generate K32W0 transceiver binary `".h"` file path must be indicated to the
+host Matter application build. In fact the Matter host application is in charge
+of storing the K32W0 firmware in its flash to be able to use the
+`The Over The Wire (OTW) protocol (over UART)` to download (at host startup) the
+k32w0 transceiver image from the host to the K32W0 internal flash. For more
+information on the k32w0 `OTW` protocol, user can consult the doxygen header of
+the file located in
+`<repo_root>/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/middleware/wireless/framework/OTW/k32w0_transceiver/fwk_otw.c`.
+
+Here is a summary of the k32w0 _gn gen_ arguments that are mandatory or
+optional:
+
+- Mandatory: `k32w0_transceiver=true`
+- Mandatory: `hci_spinel_single_uart=true`
+- Optional:
+ `k32w0_transceiver_bin_path=\"/home/ot-nxp/build_k32w061/ot_rcp_ble_hci_bb_single_uart_fc/bin/ot-rcp-ble-hci-bb-k32w061.elf.bin.h\"`
+ This argument is optional, by default, if not set, the binary file located
+ in
+ "\${chip_root}/third_party/openthread/ot_nxp/build_k32w061/ot_rcp_ble_hci_bb_single_uart_fc/bin/ot-rcp-ble-hci-bb-k32w061.elf.bin.h"
+ will be used. If the K32W061 transceiver binary is saved at another location
+ an absolute path of its location should be given.
+- Optional: `otw_logs_enabled=true` This argument is optional, by default
+ being set to false. If set to true, RT logging will print the `OTW` logs.
+
+[ot_rcp_ble_hci_bb_k32w0_readme]:
+ https://github.com/NXP/ot-nxp/blob/v1.0.0.2-tag-nxp/examples/hybrid/ot_rcp_ble_hci_bb/k32w061/README.md#building-the-examples
+
+Below is presented an example of _gn gen_ argument that could be used to
+generate the host matter application with a k32w0 transceiver.
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_openthread=true k32w0_transceiver=true k32w0_transceiver_bin_path=\"/home/ot-nxp/build_k32w061/ot_rcp_ble_hci_bb_single_uart_fc/bin/ot-rcp-ble-hci-bb-k32w061.elf.bin.h\" hci_spinel_single_uart=true chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=true" out/debug
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug
+```
+
+#### Build with Matter over Thread configuration on RT1060-EVK-C + IW612
+
+Build the OpenThread configuration for MIMXRT1060-EVK-C board + IW612
+transceiver (with BLE for commissioning).
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_openthread=true iwx12_transceiver=true evkname=\"evkcmimxrt1060\" chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=true" " out/debug
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug
+```
+
+### Build with Matter over Wi-Fi + OpenThread Border Router configuration on RT1060 + 88W8801 + K32W0x1DK6
+
+This configuration supports the Thread Border Router management cluster to
+provision the Thread credentials. Enabling the Matter CLI in order to control
+the Thread network on the Border Router is optional but recommended for other
+features like the Thread credential sharing.
+
+Note that the Thread Border Router management cluster is only supported on the
+thermostat application for now.
+
+- Build Matter with Border Router configuration with ble-wifi commissioning:
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_wifi=true w8801_transceiver=true chip_enable_matter_cli=true chip_config_network_layer_ble=true chip_enable_openthread=true k32w0_transceiver=true k32w0_transceiver_bin_path=\"/path/to/ot-rcp/ot-rcp-ble-hci-bb-k32w061.elf.bin.h\" hci_spinel_single_uart=true" out/debug
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug
+```
+
+- Build Matter with Border Router configuration with onnetwork commissioning:
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_wifi=true w8801_transceiver=true chip_enable_matter_cli=true chip_config_network_layer_ble=false wifi_auto_connect_at_boot=true wifi_auto_connect_at_boot_ssid=\"your_wifi_ssid\" wifi_auto_connect_at_boot_password=\"your_wifi_password\" chip_enable_openthread=true k32w0_transceiver=true k32w0_transceiver_bin_path=\"/path/to/ot-rcp/ot-rcp-ble-hci-bb-k32w061.elf.bin.h\"" out/debug
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug
+```
+
+### General Information
+
+The resulting output file can be found in
+out/debug/chip-rt1060-all-cluster-example.
+
+Optional GN options that can be added when building an application:
+
+- To enable the
+ [secondary network commissioning interface](../../../../../docs/platforms/nxp/nxp_otbr_guide.md#using-the-secondary-network-commissioning-interface),
+ the arguments `chip_enable_secondary_nwk_if=true` and
+ `chip_device_config_thread_network_endpoint_id=3` must be added to the _gn
+ gen_ command. Note that this is only supported when building the Matter over
+ Wifi + OpenThread Border Router configuration. Note that is only supported
+ on the on the thermostat application for now.
+- To enable the [matter CLI](README.md#matter-shell), the argument
+ `chip_enable_matter_cli=true` must be added to the _gn gen_ command.
+- To build the application in debug mode, the argument
+ `is_debug=true optimize_debug=false` must be added to the _gn gen_ command.
+- By default, the MIMXRT1060-EVK-B will be chosen. To switch to an
+ MIMXRT1060-EVK, the argument `evkname=\"evkmimxrt1060\"` must be added to
+ the _gn gen_ command.
+- To build with the option to have Matter certificates/keys pre-loaded in a
+ specific flash area the argument `chip_with_factory_data=1` must be added to
+ the _gn gen_ command. For more information, see
+ [Guide for writing manufacturing data on NXP devices](../../../../../docs/platforms/nxp/nxp_manufacturing_flow.md)
+
+<a name="manufacturing"></a>
+
+## Manufacturing data
+
+See
+[Guide for writing manufacturing data on NXP devices](../../../../../docs/platforms/nxp/nxp_manufacturing_flow.md)
+
+Other comments:
+
+The RT1060 all cluster app demonstrates the usage of encrypted Matter
+manufacturing data storage. Matter manufacturing data should be encrypted before
+flashing them to the RT1060 flash.
+
+For development purpose the RT1060 all cluster app code could use the hardcoded
+AES 128 software key. This software key should be used only during development
+stage.
+
+For production usage, it is recommended to use the `OTP key` which needs to be
+fused in the RT1060 SW_GP2. The application note AN12800 should be followed to
+get more information. In this case the all cluster app should be updated to
+indicate to the `DCP` module to use the `OTP key` instead of the software key.
+For that the call to `FactoryDataPrvdImpl().SetAes128Key()` should be changed to
+`FactoryDataPrvdImpl().SetKeySelected(KeySelect::)` with the arg value
+specifying where the `OTP key` is stored (`kDCP_OCOTPKeyLow` for [127:0] of
+SW_GP2 or `kDCP_OCOTPKeyHigh` for [255:128] of SW_GP2). For more information the
+RT1060 `FactoryDataProviderImpl` class description should be checked.
+
+<a name="flashdebug"></a>
+
+## Flashing and debugging
+
+In order to flash the application we recommend using
+[MCUXpresso IDE (version >= 11.6.0)](https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-integrated-development-environment-ide:MCUXpresso-IDE).
+
+- Import the previously downloaded NXP SDK into MCUXpresso IDE.
+
+Right click the empty space in the MCUXpresso IDE "Installed SDKs" tab to show
+the menu, select the "Import local SDK Git repository" menu item.
+
+![Import local SDK Git repository](../../../../platform/nxp/rt/rt1060/doc/images/import-local-repository.png)
+
+The "Import SDK Git" window will open. The "Repository location" text field
+should point to the west workspace
+(third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo subfolder of the
+Matter repository). The "Manifest(s) folder" text field should point to its core
+subfolder (third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/core
+subfolder of the Matter repository). Click "OK" and wait for MCUXpresso IDE to
+import the SDK.
+
+![Import SDK Git](../../../../platform/nxp/rt/rt1060/doc/images/import-sdk-git.png)
+
+Finally select the desired board's SDK manifest in the "Installed SDKs" tab.
+
+![Select SDK](../../../../platform/nxp/rt/rt1060/doc/images/select-sdk.png)
+
+- Import the connectedhomeip repo in MCUXpresso IDE as Makefile Project. Use
+ _none_ as _Toolchain for Indexer Settings_:
+
+```
+File -> Import -> C/C++ -> Existing Code as Makefile Project
+```
+
+- Configure MCU Settings:
+
+```
+Right click on the Project -> Properties -> C/C++ Build -> MCU Settings -> Select MIMXRT1060 -> Apply & Close
+```
+
+![MCU_Set](../../../../platform/nxp/rt/rt1060/doc/images/mcu-set.png)
+
+Sometimes when the MCU is selected it will not initialize all the memory regions
+(usually the `BOARD_FLASH`, `BOARD_SDRAM` and `NCACHE_REGION`) so it is required
+that this regions are added manually like in the image above. In addition to
+that on the `BOARD_FLASH` line, in the driver tab:
+
+```
+click inside the tab and on the right side a button with three horizontal dots will appear
+click on the button and an window will show
+form the dropdown menu select the MIMXRT1060_SFDP_QSPI driver
+```
+
+![flash_driver](../../../../platform/nxp/rt/rt1060/doc/images/flash_driver.png)
+
+- Configure the toolchain editor:
+
+```
+Right click on the Project -> C/C++ Build-> Tool Chain Editor -> NXP MCU Tools -> Apply & Close
+```
+
+![toolchain](../../../../platform/nxp/rt/rt1060/doc/images/toolchain.JPG)
+
+- Create a debug configuration:
+
+```
+Right click on the Project -> Debug -> As->MCUXpresso IDE LinkServer (inc. CMSIS-DAP) probes -> OK -> Select elf file
+```
+
+![debug_0](../../../../platform/nxp/rt/rt1060/doc/images/debug0.png)
+
+![debug_1](../../../../platform/nxp/rt/rt1060/doc/images/debug1.png)
+
+- Set the _Connect script_ for the debug configuration to _RT1060_connect.scp_
+ from the dropdown list:
+
+```
+Right click on the Project -> Debug As -> Debug configurations... -> LinkServer Debugger
+```
+
+![connect](../../../../platform/nxp/rt/rt1060/doc/images/gdbdebugger.png)
+
+- Set the _Initialization Commands_ to:
+
+```
+Right click on the Project -> Debug As -> Debug configurations... -> Startup
+
+set non-stop on
+set pagination off
+set mi-async
+set remotetimeout 60000
+##target_extended_remote##
+set mem inaccessible-by-default ${mem.access}
+mon ondisconnect ${ondisconnect}
+set arm force-mode thumb
+${load}
+```
+
+![init](../../../../platform/nxp/rt/rt1060/doc/images/startup.png)
+
+- Set the _vector.catch_ value to _false_ inside the .launch file:
+
+```
+Right click on the Project -> Utilities -> Open Directory Browser here -> edit *.launch file:
+
+<booleanAttribute key="vector.catch" value="false"/>
+
+```
+
+- Debug using the newly created configuration file:
+
+<a name="testing-the-example"></a>
+
+## Testing the example
+
+To know how to commission a device over BLE, follow the instructions from
+[chip-tool's README.md 'Commission a device over
+BLE'][readme_ble_commissioning_section].
+
+[readme_ble_commissioning_section]:
+ ../../../../chip-tool/README.md#commission-a-device-over-ble
+
+To know how to commissioning a device over IP, follow the instructions from
+[chip-tool's README.md 'Pair a device over
+IP'][readme_pair_ip_commissioning_section]
+
+[readme_pair_ip_commissioning_section]:
+ ../../../../chip-tool/README.md#pair-a-device-over-ip
+
+#### Matter over wifi configuration :
+
+The "ble-wifi" pairing method can be used in order to commission the device.
+
+#### Matter over thread configuration :
+
+The "ble-thread" pairing method can be used in order to commission the device.
+
+#### Matter over wifi with openthread border router configuration :
+
+In order to create or join a Thread network on the Matter Border Router, the TBR
+management cluster or the `otcli` commands from the matter CLI can be used. For
+more information about using the TBR management cluster follow instructions from
+['Using the TBR management cluster'](../../../../../docs/platforms/nxp/nxp_otbr_guide.md#using-the-thread-border-router-management-cluster).
+For more information about using the matter shell, follow instructions from
+['Testing the all-clusters application with Matter CLI'](#testing-the-all-clusters-application-with-matter-cli-enabled).
+
+In this configuration, the device can be commissioned over Wi-Fi with the
+'ble-wifi' or 'onnetwork' pairing method.
+
+### Testing the all-clusters application without Matter CLI:
+
+1. Prepare the board with the flashed `All-cluster application` (as shown
+ above).
+2. The All-cluster example uses UART1 to print logs while running the server. To
+ view raw UART output, start a terminal emulator like PuTTY and connect to the
+ used COM port with the following UART settings:
+
+ - Baud rate: 115200
+ - 8 data bits
+ - 1 stop bit
+ - No parity
+ - No flow control
+
+3. Open a terminal connection on the board and watch the printed logs.
+
+4. On the client side, start sending commands using the chip-tool application as
+ it is described
+ [here](../../../../chip-tool/README.md#using-the-client-to-send-matter-commands).
+
+### Testing the all-clusters application with Matter CLI enabled:
+
+The Matter CLI can be enabled with the all-clusters application.
+
+For more information about the Matter CLI default commands, you can refer to the
+dedicated [ReadMe](../../../../shell/README.md).
+
+The All-clusters application supports additional commands :
+
+```
+> help
+[...]
+mattercommissioning Open/close the commissioning window. Usage : mattercommissioning [on|off]
+matterfactoryreset Perform a factory reset on the device
+matterreset Reset the device
+```
+
+- `matterfactoryreset` command erases the file system completely (all Matter
+ settings are erased).
+- `matterreset` enables the device to reboot without erasing the settings.
+
+Here are described steps to use the all-cluster-app with the Matter CLI enabled
+
+1. Prepare the board with the flashed `All-cluster application` (as shown
+ above).
+2. The matter CLI is accessible in UART1. For that, start a terminal emulator
+ like PuTTY and connect to the used COM port with the following UART settings:
+
+ - Baud rate: 115200
+ - 8 data bits
+ - 1 stop bit
+ - No parity
+ - No flow control
+
+3. The All-cluster example uses UART2 to print logs while running the server. To
+ view raw UART output, a pin should be plugged to an USB to UART adapter
+ (connector J16 pin 7 in case of MIMXRT1060-EVK-B board or connector J22 pin 7
+ in case of MIMXRT1060-EVK board), then start a terminal emulator like PuTTY
+ and connect to the used COM port with the following UART settings:
+
+ - Baud rate: 115200
+ - 8 data bits
+ - 1 stop bit
+ - No parity
+ - No flow control
+
+4. On the client side, start sending commands using the chip-tool application as
+ it is described
+ [here](../../../../chip-tool/README.md#using-the-client-to-send-matter-commands).
+
+For Matter with OpenThread Border Router support, the matter CLI can be used to
+start/join the Thread network, using the following ot-cli commands. (Note that
+setting channel, panid, and network key is not enough anymore because of an Open
+Thread stack update. We first need to initialize a new dataset.)
+
+```
+> otcli dataset init new
+Done
+> otcli dataset
+Active Timestamp: 1
+Channel: 25
+Channel Mask: 0x07fff800
+Ext PAN ID: 42af793f623aab54
+Mesh Local Prefix: fd6e:c358:7078:5a8d::/64
+Network Key: f824658f79d8ca033fbb85ecc3ca91cc
+Network Name: OpenThread-b870
+PAN ID: 0xb870
+PSKc: f438a194a5e968cc43cc4b3a6f560ca4
+Security Policy: 672 onrc 0
+Done
+> otcli dataset panid 0xabcd
+Done
+> otcli dataset channel 25
+Done
+> otcli dataset commit active
+Done
+> otcli ifconfig up
+Done
+> otcli thread start
+Done
+> otcli state
+leader
+Done
+```
+
+<a name="thread-border-router-overview"></a>
+
+## Thread Border Router overview
+
+To enable Thread Border Router support see the [build](README.md#building)
+section.
+
+The complete Border Router guide is located
+[here](../../../../../docs/platforms/nxp/nxp_otbr_guide.md).
diff --git a/examples/all-clusters-app/nxp/rt/rt1060/args.gni b/examples/all-clusters-app/nxp/rt/rt1060/args.gni
new file mode 100644
index 0000000..c2d91a5
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1060/args.gni
@@ -0,0 +1,19 @@
+# Copyright (c) 2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/chip.gni")
+
+# SDK target definitions
+nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain")
+nxp_sdk_driver_target = get_label_info(":sdk_driver", "label_no_toolchain")
diff --git a/examples/all-clusters-app/nxp/rt/rt1060/build_overrides b/examples/all-clusters-app/nxp/rt/rt1060/build_overrides
new file mode 120000
index 0000000..f108670
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1060/build_overrides
@@ -0,0 +1 @@
+../../../../build_overrides
\ No newline at end of file
diff --git a/examples/all-clusters-app/nxp/rt/rt1060/include/config/CHIPProjectConfig.h b/examples/all-clusters-app/nxp/rt/rt1060/include/config/CHIPProjectConfig.h
new file mode 100644
index 0000000..dd73c6c
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1060/include/config/CHIPProjectConfig.h
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Example project configuration file for CHIP.
+ *
+ * This is a place to put application or project-specific overrides
+ * to the default configuration values for general CHIP features.
+ *
+ */
+
+#pragma once
+
+/*
+ * Tells to the platform Factory Data Provider whether to use the example configuration or real/provisioned data.
+ */
+#ifndef CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+#define CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA 0
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID
+ *
+ * 0xFFF1: Test vendor.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID
+ *
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005
+
+#if !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+// Use a default pairing code if one hasn't been provisioned in flash.
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00
+#endif
+
+// Use a default pairing code if one hasn't been provisioned in flash.
+#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS"
+
+/**
+ * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER
+ *
+ * Enables the use of a hard-coded default serial number if none
+ * is found in CHIP NV storage.
+ */
+#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN"
+
+#endif /* !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA */
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION
+ *
+ * The hardware version number assigned to device or product by the device vendor. This
+ * number is scoped to the device product id, and typically corresponds to a revision of the
+ * physical device, a change to its packaging, and/or a change to its marketing presentation.
+ * This value is generally *not* incremented for device software versions.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100
+
+#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0"
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+ *
+ * A string identifying the software version running on the device.
+ * CHIP currently expects the software version to be in the format
+ * {MAJOR_VERSION}.0d{MINOR_VERSION}
+ */
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME
+#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors"
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App"
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION
+//-> format_version = 1
+//-> vendor_id = 0xFFF1
+//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B,
+// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A,
+// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029,
+// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038,
+// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047,
+// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056,
+// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ]
+//-> device_type_id = 0x0016
+//-> certificate_id = "ZIG20142ZB330003-24"
+//-> security_level = 0
+//-> security_information = 0
+//-> version_number = 0x2694
+//-> certification_type = 0
+//-> dac_origin_vendor_id is not present
+//-> dac_origin_product_id is not present
+#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \
+ { \
+ 0x30, 0x82, 0x02, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x0a, 0x30, \
+ 0x82, 0x02, 0x06, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, \
+ 0x02, 0x01, 0x30, 0x82, 0x01, 0x71, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, \
+ 0x01, 0x62, 0x04, 0x82, 0x01, 0x5e, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, \
+ 0x05, 0x01, 0x80, 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, \
+ 0x07, 0x80, 0x05, 0x08, 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, \
+ 0x80, 0x05, 0x0e, 0x80, 0x05, 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, \
+ 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, \
+ 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, \
+ 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, \
+ 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, \
+ 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, \
+ 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, \
+ 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, \
+ 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, \
+ 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, 0x4b, 0x80, 0x05, 0x4c, 0x80, \
+ 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, 0x05, 0x52, 0x80, 0x05, \
+ 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, 0x80, 0x05, 0x59, \
+ 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, 0x5f, 0x80, \
+ 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, 0x13, \
+ 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, \
+ 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x94, 0x26, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, \
+ 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, \
+ 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \
+ 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x24, 0xe5, \
+ 0xd1, 0xf4, 0x7a, 0x7d, 0x7b, 0x0d, 0x20, 0x6a, 0x26, 0xef, 0x69, 0x9b, 0x7c, 0x97, 0x57, 0xb7, 0x2d, 0x46, 0x90, \
+ 0x89, 0xde, 0x31, 0x92, 0xe6, 0x78, 0xc7, 0x45, 0xe7, 0xf6, 0x0c, 0x02, 0x21, 0x00, 0xf8, 0xaa, 0x2f, 0xa7, 0x11, \
+ 0xfc, 0xb7, 0x9b, 0x97, 0xe3, 0x97, 0xce, 0xda, 0x66, 0x7b, 0xae, 0x46, 0x4e, 0x2b, 0xd3, 0xff, 0xdf, 0xc3, 0xcc, \
+ 0xed, 0x7a, 0xa8, 0xca, 0x5f, 0x4c, 0x1a, 0x7c \
+ }
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC
+ *
+ * Enables synchronizing the device's real time clock with a remote CHIP Time service
+ * using the CHIP Time Sync protocol.
+ */
+// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1
+
+/**
+ * CHIP_CONFIG_MAX_BINDINGS
+ *
+ * Maximum number of simultaneously active bindings per ChipExchangeManager
+ * 1 (Time Sync) + 2 (Two 1-way subscriptions) + 1 (Software Update) = 4
+ * in the worst case. Keeping another 4 as buffer.
+ */
+#define CHIP_CONFIG_MAX_BINDINGS 6
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD
+ *
+ * Select the ability to offload event logs to any interested subscribers using WDM.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD 1
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS
+ *
+ * Enable recording UTC timestamps.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1
+
+/**
+ * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE
+ *
+ * A size, in bytes, of the individual debug event logging buffer.
+ */
+#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512)
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE
+ *
+ * For a development build, set the default importance of events to be logged as Debug.
+ * Since debug is the lowest importance level, this means all standard, critical, info and
+ * debug importance level vi events get logged.
+ */
+#if BUILD_RELEASE
+#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production
+#else
+#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug
+#endif // BUILD_RELEASE
+
+/* Increasing the retransmission interval of the MRP messages after subsequent failures */
+#ifndef CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL
+#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (2000_ms32)
+#endif
diff --git a/examples/all-clusters-app/nxp/rt/rt1060/third_party/connectedhomeip b/examples/all-clusters-app/nxp/rt/rt1060/third_party/connectedhomeip
new file mode 120000
index 0000000..305f207
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1060/third_party/connectedhomeip
@@ -0,0 +1 @@
+../../../../../..
\ No newline at end of file
diff --git a/examples/all-clusters-app/nxp/rt/rt1170/.gn b/examples/all-clusters-app/nxp/rt/rt1170/.gn
new file mode 100644
index 0000000..59dcfeb
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1170/.gn
@@ -0,0 +1,35 @@
+# Copyright (c) 2020 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+
+# The location of the build configuration file.
+buildconfig = "${build_root}/config/BUILDCONFIG.gn"
+
+# CHIP uses angle bracket includes.
+check_system_includes = true
+
+default_args = {
+ target_cpu = "arm"
+ target_os = "freertos"
+
+ import("//args.gni")
+
+ # Import common example GN args
+ import("${chip_root}/examples/platform/nxp/common/gn/args.gni")
+
+ # Import default platform configs
+ import("${chip_root}/src/platform/nxp/rt/rt1170/args.gni")
+}
diff --git a/examples/all-clusters-app/nxp/rt/rt1170/BUILD.gn b/examples/all-clusters-app/nxp/rt/rt1170/BUILD.gn
new file mode 100644
index 0000000..724a6e8
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1170/BUILD.gn
@@ -0,0 +1,241 @@
+# Copyright (c) 2021-2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+import("//build_overrides/nxp_sdk.gni")
+import("//build_overrides/openthread.gni")
+import("${chip_root}/src/platform/device.gni")
+
+#allows to get common NXP SDK gn options
+import("${nxp_sdk_build_root}/nxp_sdk.gni")
+
+# Allows to get various RT gn options
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni")
+
+import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni")
+import(
+ "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni")
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni")
+
+assert(current_os == "freertos")
+assert(target_os == "freertos")
+assert(nxp_platform == "rt/rt1170")
+
+declare_args() {
+ # Allows to connect to a predefine Wi-Fi network at boot
+ wifi_auto_connect_at_boot = false
+ wifi_auto_connect_at_boot_ssid = ""
+ wifi_auto_connect_at_boot_password = ""
+
+ # Setup discriminator as argument
+ setup_discriminator = 3840
+}
+
+example_platform_dir =
+ "${nxp_sdk_matter_support_root}/examples/platform/${nxp_platform}"
+common_example_dir = "${chip_root}/examples/platform/nxp/common"
+
+app_common_folder = "all-clusters-app/all-clusters-common"
+
+# Create here the SDK instance.
+# Particular sources/defines/includes could be added/changed depending on the target application.
+rt_sdk("sdk") {
+ defines = []
+
+ cflags = []
+ public_deps = []
+ public_configs = []
+ sources = []
+ include_dirs = []
+
+ # Indicate paths to default board files
+ include_dirs += [ "${example_platform_dir}/board/" ]
+ sources += [ "${example_platform_dir}/board/pin_mux.c" ]
+ sources += [ "${example_platform_dir}/board/hardware_init.c" ]
+ sources += [ "${example_platform_dir}/board/clock_config.c" ]
+ sources += [ "${example_platform_dir}/board/board.c" ]
+ sources += [ "${example_platform_dir}/board/peripherals.c" ]
+ sources += [ "${example_platform_dir}/board/sdmmc_config.c" ]
+
+ # Indicate the path to CHIPProjectConfig.h
+ include_dirs += [ "include/config" ]
+
+ # Indicate the default path to FreeRTOSConfig.h
+ include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ]
+
+ # Indicate the default path to OpenThreadConfig.h
+ include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ]
+
+ # For matter with BR feature, increase FreeRTOS heap size
+ if (chip_enable_wifi && chip_enable_openthread) {
+ defines += [ "configTOTAL_HEAP_SIZE=(size_t)(170 * 1024)" ]
+ }
+
+ defines += [
+ "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}",
+ ]
+}
+
+# Create the SDK driver instance.
+# Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template
+rt1170_sdk_drivers("sdk_driver") {
+}
+
+rt_executable("all_cluster_app") {
+ output_name = "chip-rt1170-all-cluster-example"
+
+ defines = [
+ "CONFIG_RENDEZVOUS_MODE=7",
+ "CONFIG_APP_FREERTOS_OS=1",
+ ]
+
+ if (chip_enable_openthread) {
+ defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ]
+ }
+
+ include_dirs = [
+ "../../common/main/include",
+ "../../common/main",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/include",
+ "${chip_root}/examples/providers/",
+ ]
+
+ sources = [
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp",
+ "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp",
+ "../../common/main/AppTask.cpp",
+ "../../common/main/DeviceCallbacks.cpp",
+ "../../common/main/ZclCallbacks.cpp",
+ "../../common/main/include/AppEvent.h",
+ "../../common/main/include/AppTask.h",
+ "../../common/main/include/DeviceCallbacks.h",
+ "../../common/main/main.cpp",
+ ]
+
+ # App common files
+ include_dirs += [
+ "${common_example_dir}/icd/include",
+ "${common_example_dir}/matter_button/include",
+ "${common_example_dir}/matter_cli/include",
+ "${common_example_dir}/device_manager/include",
+ "${common_example_dir}/device_callbacks/include",
+ "${common_example_dir}/factory_data/include",
+ "${common_example_dir}/app_task/include",
+ ]
+
+ sources += [
+ "${common_example_dir}/app_task/source/AppTaskBase.cpp",
+ "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp",
+ "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp",
+ "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp",
+ "${common_example_dir}/factory_data/source/AppFactoryDataDefaultImpl.cpp",
+ "${common_example_dir}/icd/source/ICDUtil.cpp",
+ "${common_example_dir}/matter_button/source/ButtonRegistrationEmpty.cpp",
+ ]
+
+ deps = [ "${chip_root}/examples/${app_common_folder}" ]
+
+ sources += [
+ "${chip_root}/examples/${app_common_folder}/src/bridged-actions-stub.cpp",
+ "${chip_root}/examples/${app_common_folder}/src/smco-stub.cpp",
+ "${chip_root}/examples/${app_common_folder}/src/static-supported-modes-manager.cpp",
+ ]
+
+ if (chip_enable_matter_cli) {
+ defines += [ "ENABLE_CHIP_SHELL" ]
+ deps += [
+ "${chip_root}/examples/shell/shell_common:shell_common",
+ "${chip_root}/src/lib/shell:shell",
+ ]
+ sources += [
+ "${common_example_dir}/matter_cli/source/AppCLIBase.cpp",
+ "${common_example_dir}/matter_cli/source/AppCLIFreeRTOS.cpp",
+ ]
+ }
+
+ if (chip_enable_ota_requestor) {
+ include_dirs += [ "${common_example_dir}/ota_requestor/include" ]
+ sources += [
+ "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp",
+ "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp",
+ ]
+ }
+
+ if (wifi_auto_connect_at_boot) {
+ assert(wifi_auto_connect_at_boot_ssid != "" &&
+ wifi_auto_connect_at_boot_password != "",
+ "WiFi SSID and password must be specified at build time!")
+
+ defines += [
+ "CONFIG_CHIP_APP_WIFI_CONNECT_AT_BOOT=1",
+ "CONFIG_CHIP_APP_WIFI_SSID=\"${wifi_auto_connect_at_boot_ssid}\"",
+ "CONFIG_CHIP_APP_WIFI_PASSWORD=\"${wifi_auto_connect_at_boot_password}\"",
+ ]
+
+ include_dirs += [ "${common_example_dir}/wifi_connect/include" ]
+ sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ]
+ }
+
+ # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false
+ # The would add to the build a dedicated application assert implementation.
+ if (!sdk_fsl_assert_support) {
+ sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ]
+ }
+
+ cflags = [ "-Wconversion" ]
+
+ ldscript =
+ "${example_platform_dir}/app/ldscripts/MIMXRT1176xxxxx_cm7_flexspi_nor.ld"
+
+ inputs = [ ldscript ]
+
+ ldflags = [
+ "-T" + rebase_path(ldscript, root_build_dir),
+ "-fno-common",
+ "-Wl,--defsym=__stack_size__=2048",
+ "-ffreestanding",
+ "-fno-builtin",
+ "-mapcs",
+ "-u qspiflash_config",
+ "-u image_vector_table",
+ "-u boot_data",
+ "-u dcd_data",
+ "-Wl,-print-memory-usage",
+ "-Wl,--no-warn-rwx-segments",
+ ]
+
+ if (chip_enable_ota_requestor) {
+ if (no_mcuboot) {
+ # If "no_mcuboot" is set to true, the application will be linked at the base of the flash.
+ print(
+ "Warning : The OTA Requestor is enabled without MCUBoot. This will prevent the application from applying software updates.")
+ } else {
+ # we need to reserve enough space for the bootloader (MCUBoot)
+ # MCUBoot requires 0x40000 Bytes to be reserved at the base of the flash
+ # Consequently, some sections will need to be shifted
+ ldflags += [ "-Wl,--defsym=__m_mcuboot_size__=0x40000" ]
+ }
+ }
+
+ output_dir = root_out_dir
+}
+
+group("rt1170") {
+ deps = [ ":all_cluster_app" ]
+}
+
+group("default") {
+ deps = [ ":rt1170" ]
+}
diff --git a/examples/all-clusters-app/nxp/rt/rt1170/README.md b/examples/all-clusters-app/nxp/rt/rt1170/README.md
new file mode 100644
index 0000000..7ff9187
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1170/README.md
@@ -0,0 +1,505 @@
+# CHIP RT1170 All-clusters Application
+
+The all-clusters example implements a server which can be accessed by a CHIP
+controller and can accept basic cluster commands.
+
+The example is based on
+[Project CHIP](https://github.com/project-chip/connectedhomeip) and the NXP
+RT1170 SDK, and provides a prototype application that demonstrates device
+commissioning and different cluster control.
+
+<hr>
+
+- [CHIP RT1170 All-clusters Application](#chip-rt1170-all-clusters-application)
+ - [Introduction](#introduction)
+ - [Configuration(s) supported](#configurations-supported)
+ - [Hardware requirements for RT1170 + IW612](#hardware-requirements-for-rt1170--iw612)
+ - [Hardware rework for SPI support on MIMXRT1170-EVK-B](#hardware-rework-for-spi-support-on-mimxrt1170-evk-b)
+ - [Board settings (Spinel over SPI, I2C, BLE over UART)](#board-settings-spinel-over-spi-i2c-ble-over-uart)
+ - [Building](#building)
+ - [Building with Matter over Wifi configuration on RT1170 + IW612](#building-with-matter-over-wifi-configuration-on-rt1170--iw612)
+ - [Building with Matter over Thread configuration on RT1170 + IW612](#building-with-matter-over-thread-configuration-on-rt1170--iw612)
+ - [Building with Matter over Wifi + OpenThread Border Router configuration on RT1170 + IW612](#building-with-matter-over-wifi--openthread-border-router-configuration-on-rt1170--iw612)
+ - [General information](#general-information)
+ - [Manufacturing data](#manufacturing-data)
+ - [Flashing and debugging](#flashing-and-debugging)
+ - [Testing the example](#testing-the-example)
+ - [Matter over wifi configuration :](#matter-over-wifi-configuration-)
+ - [Matter over thread configuration :](#matter-over-thread-configuration-)
+ - [Matter over wifi with openthread border router configuration :](#matter-over-wifi-with-openthread-border-router-configuration-)
+ - [Testing the all-clusters application without Matter CLI:](#testing-the-all-clusters-application-without-matter-cli)
+ - [Testing the all-clusters application with Matter CLI enabled:](#testing-the-all-clusters-application-with-matter-cli-enabled)
+ - [Thread Border Router overview](#thread-border-router-overview)
+ <hr>
+
+## Introduction
+
+![RT1170 EVK](../../../../platform/nxp/rt/rt1170/doc/images/IMX-RT1170-EVK-TOP.jpg)
+
+The RT1170 all-cluster application provides a working demonstration of the
+RT1170 board integration, built using the Project CHIP codebase and the NXP
+RT1170 SDK.
+
+The example supports:
+
+- Matter over Wi-Fi
+- Matter over Openthread
+- Matter over Wi-Fi with Openthread Border Router support
+
+The example targets the
+[NXP MIMXRT1170-EVKB](https://www.nxp.com/part/MIMXRT1170-EVKB#/) board by
+default.
+
+### Configuration(s) supported
+
+Here are listed configurations that allow to support Matter over Wi-Fi & Matter
+over Thread on RT1170 :
+
+- RT1170 + IW612 (Wi-Fi + BLE + 15.4)
+
+### Hardware requirements for RT1170 + IW612
+
+Host part:
+
+- 1 MIMXRT1170-EVK-B
+
+Transceiver part :
+
+- 1
+ [2EL M2 A1 IW612 Secure Module](https://www.nxp.com/products/wireless/wi-fi-plus-bluetooth-plus-802-15-4/2-4-5-ghz-dual-band-1x1-wi-fi-6-802-11ax-plus-bluetooth-5-2-plus-802-15-4-tri-radio-solution:IW612)
+
+![](../../../../platform/nxp/rt/rt1170/doc/images/iwx612_2EL.jpg)
+
+- 1
+ [Murata uSD to M2 adapter revC](https://www.murata.com/en-eu/products/connectivitymodule/wi-fi-bluetooth/overview/lineup/usd-m2-adapter-2we-2wf)
+
+![](../../../../platform/nxp/rt/rt1170/doc/images/murata_usd-M2_adapter.jpg)
+
+- Male to female Burg cables
+
+#### Hardware rework for SPI support on MIMXRT1170-EVK-B
+
+To support SPI on the MIMXRT1170-EVK-B board, it is required to remove 0Ω
+resistors R404,R406,R2015.
+
+#### Board settings (Spinel over SPI, I2C, BLE over UART)
+
+Plug IW612 module to M.2 connector on Murata uSD to M2 adapter
+
+The Murata uSD-M2 adapter should be plugged to the RT1170 via SD-IO.
+
+The below tables explain pin settings (SPI settings) to connect the
+MIMXRT1170-EVK-B (host) to a IW612 transceiver (rcp).
+
+- Murata uSD to M2 adapter connections description:
+
+![](../../../../platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_1.jpg)
+
+![](../../../../platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_2.jpg)
+
+- Jumpers positions on Murata uSD to M2 adapter:
+
+ Use USB-C power supply | Jumper | Position| | :----: | :-----: | | J1 | 1-2
+ | | J12 | 1-2 | | J13 | 1-2 | | J14 | 1-2 | | JP1.1 (back side)| ON |
+
+- Jumpers positions on MIMXRT1170-EVK-B:
+
+ | Jumper | Position |
+ | :----: | :------: |
+ | `J56` | `2-3` |
+
+- I2C connection to program `IO_Expander` on the IW612 module
+
+ | MIMXRT1170-EVK-B | uSD-M2 adapter |
+ | :----------------: | :------------: |
+ | `I2C_SDA (J10.18)` | `J5.2` |
+ | `I2C_SDL (J10.20)` | `J5.4` |
+
+- SPI connection between RT1170 and uSD-M2 adapter
+
+ | MIMXRT1170-EVK-B | uSD-M2 adapter |
+ | :-----------------: | :------------: |
+ | `SPI_MOSI (J10.8)` | `J5.10` |
+ | `SPI_MISO (J10.10)` | `J9.7` |
+ | `SPI_CLK (J10.12)` | `J9.8` |
+ | `SPI_CS (J10.6)` | `J5.8` |
+ | `SPI_INT (J26.4)` | `J5.6` |
+ | `GND (J10.14)` | `J5.15` |
+
+- UART BLE and Reset connections between RT1170 and uSD-M2 adapter
+
+ | MIMXRT1170-EVK-B | uSD-M2 adapter |
+ | :-----------------: | :------------: |
+ | `RESET (J26.2)` | `J9.3` |
+ | `UART_RXD (J25.13)` | `J9.1` |
+ | `UART_TXD (J25.15)` | `J9.2` |
+ | `UART_CTS (J25.9)` | `J8.4` |
+ | `UART_RTS (J25.11)` | `J8.3` |
+ | `GND (J26.1)` | `J7.6` |
+
+## Building
+
+In order to build the Project CHIP example, we recommend using a Linux
+distribution. Supported Operating Systems are listed in
+[BUILDING.md](../../../../../docs/guides/BUILDING.md).
+
+- Make sure that below prerequisites are correctly installed, as described in
+ [BUILDING.md](../../../../../docs/guides/BUILDING.md).
+
+```
+sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \
+ libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \
+ python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev
+```
+
+- Step 1: checkout NXP specific submodules only
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip$ scripts/checkout_submodules.py --shallow --platform nxp --recursive
+```
+
+- Step 2: activate local environment
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip$ source scripts/activate.sh
+```
+
+If the script says the environment is out of date, you can update it by running
+the following command:
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip$ source scripts/bootstrap.sh
+```
+
+- Step 3: Init NXP SDK(s)
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip$ third_party/nxp/nxp_matter_support/scripts/update_nxp_sdk.py --platform common
+```
+
+Note: By default update_nxp_sdk.py will try to initialize all NXP SDKs. Arg "--
+help" could be used to view all available options.
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip$ cd examples/all-cluster-app/nxp/rt/rt1170/
+```
+
+### Building with Matter over Wifi configuration on RT1170 + IW612
+
+- Build the Wi-fi configuration for MIMXRT1170 board + IW612 transceiver (with
+ BLE for commissioning).
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1170$ gn gen --args="chip_enable_wifi=true iwx12_transceiver=true chip_config_network_layer_ble=true chip_enable_ble=true " out/debug
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1170$ ninja -C out/debug
+```
+
+### Building with Matter over Thread configuration on RT1170 + IW612
+
+- Build the Openthread configuration for MIMXRT1170 board + IW612 transceiver
+ (with BLE for commissioning).
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-cluster/nxp/rt/rt1170$ gn gen --args="chip_enable_openthread=true iwx12_transceiver=true chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=true" out/debug
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-cluster/nxp/rt/rt1170/$ ninja -C out/debug
+```
+
+### Building with Matter over Wifi + OpenThread Border Router configuration on RT1170 + IW612
+
+This configuration supports the Thread Border Router management cluster to
+provision the Thread credentials. Enabling the Matter CLI in order to control
+the Thread network on the Border Router is optional but recommended for other
+features like the Thread credential sharing.
+
+Note that the Thread Border Router management cluster is only supported on the
+thermostat application for now.
+
+- Build Matter with Border Router configuration with BLE commissioning
+ (ble-wifi) :
+
+```
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt11170$ gn gen --args="chip_enable_wifi=true iwx12_transceiver=true chip_config_network_layer_ble=true chip_enable_ble=true chip_enable_openthread=true chip_enable_matter_cli=true" out/debug
+user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1170$ ninja -C out/debug
+```
+
+### General information
+
+The resulting output file can be found in
+out/debug/chip-rt1170-all-cluster-example.
+
+Optional GN options that can be added when building an application:
+
+- To enable the
+ [secondary network commissioning interface](../../../../../docs/platforms/nxp/nxp_otbr_guide.md#using-the-secondary-network-commissioning-interface),
+ the arguments `chip_enable_secondary_nwk_if=true` and
+ `chip_device_config_thread_network_endpoint_id=3` must be added to the _gn
+ gen_ command. Note that this is only supported when building the Matter over
+ Wifi + OpenThread Border Router configuration. Note that is only supported
+ on the on the thermostat application for now.
+- To enable the
+ [matter CLI](#testing-the-all-clusters-application-with-matter-cli-enabled),
+ the argument `chip_enable_matter_cli=true` must be added to the _gn gen_
+ command.
+- To build the application in debug mode, the argument
+ `is_debug=true optimize_debug=false` must be added to the _gn gen_ command.
+- To build with the option to have Matter certificates/keys pre-loaded in a
+ specific flash area the argument `chip_with_factory_data=1` must be added to
+ the _gn gen_ command. For more information, see
+ [Guide for writing manufacturing data on NXP devices](../../../../../docs/platforms/nxp/nxp_manufacturing_flow.md)
+- To build the application with the OTA Requestor enabled, the arguments
+ `chip_enable_ota_requestor=true no_mcuboot=false` must be added to the _gn
+ gen_ command. More information about the OTA Requestor feature in
+ [OTA Requestor README](../../../../../docs/platforms/nxp/nxp_RTs_ota_software_update.md).
+
+## Manufacturing data
+
+See
+[Guide for writing manufacturing data on NXP devices](../../../../../docs/platforms/nxp/nxp_manufacturing_flow.md)
+
+Other comments:
+
+The all cluster app demonstrates the usage of encrypted Matter manufacturing
+data storage. Matter manufacturing data should be encrypted using an AES 128
+software key before flashing them to the device flash.
+
+## Flashing and debugging
+
+In order to flash the application we recommend using
+[MCUXpresso IDE (version >= 11.5.0)](https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-integrated-development-environment-ide:MCUXpresso-IDE).
+
+- Import the previously downloaded NXP SDK into MCUXpresso IDE. This can be
+ done by drag-and-dropping the SDK archive into MCUXpresso IDE "Installed
+ SDKs" tab;
+ ![Select SDK](../../../../platform/nxp/rt/rt1170/doc/images/select-sdk.png)
+- Import the connectedhomeip repo in MCUXpresso IDE as Makefile Project. Use
+ _none_ as _Toolchain for Indexer Settings_:
+
+```
+File -> Import -> C/C++ -> Existing Code as Makefile Project
+```
+
+- Configure MCU Settings:
+
+```
+Right click on the Project -> Properties -> C/C++ Build -> MCU Settings -> Select MIMXRT1170 -> Apply & Close
+```
+
+![MCU_Sett](../../../../platform/nxp/rt/rt1170/doc/images/mcu-set.png)
+
+Sometimes when the MCU is selected it will not initialize all the memory regions
+(usually the `BOARD_FLASH`, `BOARD_SDRAM` and `NCACHE_REGION`) so it is required
+that this regions are added manually like in the image above. In addition to
+that on the `BOARD_FLASH` line, in the driver tab:
+
+```
+click inside the tab and on the right side a button with three horizontal dots will appear
+click on the button and an window will show
+form the dropdown menu select the MIMXRT1170_SFDP_QSPI driver
+```
+
+![flash_driver](../../../../platform/nxp/rt/rt1170/doc/images/flash_driver.png)
+
+- Configure the toolchain editor:
+
+```
+Right click on the Project -> C/C++ Build-> Tool Chain Editor -> NXP MCU Tools -> Apply & Close
+```
+
+![toolchain](../../../../platform/nxp/rt/rt1170/doc/images/toolchain.JPG)
+
+- Create a debug configuration:
+
+ MIMXRT1170-EVK-B board supports CMSIS-DAP debug protocol by default. It
+ should be switched to JLink.
+
+ - download and install
+ [MCU-LINK_INSTALLER 2.263](https://www.nxp.com/webapp/Download?colCode=MCU-LINK_INSTALLER_2.263_LIN)
+ - connect jumper JP3 to get board in ISP mode when powered
+ - connect board and run installed MCU-LINK, follow steps to flash JLINK
+ firmware
+ - remove jumper JP3 and reboot board
+
+```
+Right click on the Project -> Debug -> As->SEGGER J-Link probes -> OK -> Select elf file
+```
+
+![debug_0](../../../../platform/nxp/rt/rt1170/doc/images/debug0.png)
+
+- Set the _Initialization Commands_ to:
+
+```
+Right click on the Project -> Debug As -> Debug configurations... -> Startup
+
+set non-stop on
+set pagination off
+set mi-async
+set remotetimeout 60000
+##target_extended_remote##
+set mem inaccessible-by-default ${mem.access}
+mon ondisconnect ${ondisconnect}
+set arm force-mode thumb
+${load}
+```
+
+![init](../../../../platform/nxp/rt/rt1170/doc/images/startup.png)
+
+- Set the _vector.catch_ value to _false_ inside the .launch file:
+
+```
+Right click on the Project -> Utilities -> Open Directory Browser here -> edit .launch file:
+
+<booleanAttribute key="vector.catch" value="false"/>
+
+```
+
+- Debug using the newly created configuration file:
+
+## Testing the example
+
+To know how to commission a device over BLE, follow the instructions from
+[chip-tool's README.md 'Commission a device over
+BLE'][readme_ble_commissioning_section].
+
+[readme_ble_commissioning_section]:
+ ../../../../chip-tool/README.md#commission-a-device-over-ble
+
+To know how to commissioning a device over IP, follow the instructions from
+[chip-tool's README.md 'Pair a device over
+IP'][readme_pair_ip_commissioning_section]
+
+[readme_pair_ip_commissioning_section]:
+ ../../../../chip-tool/README.md#pair-a-device-over-ip
+
+#### Matter over wifi configuration :
+
+The "ble-wifi" pairing method can be used in order to commission the device.
+
+#### Matter over thread configuration :
+
+The "ble-thread" pairing method can be used in order to commission the device.
+
+#### Matter over wifi with openthread border router configuration :
+
+In order to create or join a Thread network on the Matter Border Router, the TBR
+management cluster or the `otcli` commands from the matter CLI can be used. For
+more information about using the TBR management cluster follow instructions from
+['Using the TBR management cluster'](../../../../../docs/platforms/nxp/nxp_otbr_guide.md#using-the-thread-border-router-management-cluster).
+For more information about using the matter shell, follow instructions from
+['Testing the all-clusters application with Matter CLI'](#testing-the-all-clusters-application-with-matter-cli-enabled).
+
+In this configuration, the device can be commissioned over Wi-Fi with the
+'ble-wifi' pairing method.
+
+### Testing the all-clusters application without Matter CLI:
+
+1. Prepare the board with the flashed `All-cluster application` (as shown
+ above).
+2. The All-cluster example uses UART1 to print logs while running the server. To
+ view raw UART output, start a terminal emulator like PuTTY and connect to the
+ used COM port with the following UART settings:
+
+ - Baud rate: 115200
+ - 8 data bits
+ - 1 stop bit
+ - No parity
+ - No flow control
+
+3. Open a terminal connection on the board and watch the printed logs.
+
+4. On the client side, start sending commands using the chip-tool application as
+ it is described
+ [here](../../../../chip-tool/README.md#using-the-client-to-send-matter-commands).
+
+### Testing the all-clusters application with Matter CLI enabled:
+
+Testing the all-clusters application with Matter CLI enabled:
+
+The Matter CLI can be enabled with the all-clusters application.
+
+For more information about the Matter CLI default commands, you can refer to the
+dedicated [ReadMe](../../../../shell/README.md).
+
+The All-clusters application supports additional commands :
+
+```
+> help
+[...]
+mattercommissioning Open/close the commissioning window. Usage : mattercommissioning [on|off]
+matterfactoryreset Perform a factory reset on the device
+matterreset Reset the device
+```
+
+- `matterfactoryreset` command erases the file system completely (all Matter
+ settings are erased).
+- `matterreset` enables the device to reboot without erasing the settings.
+
+Here are described steps to use the all-cluster-app with the Matter CLI enabled
+
+1. Prepare the board with the flashed `All-cluster application` (as shown
+ above).
+2. The matter CLI is accessible in UART1. For that, start a terminal emulator
+ like PuTTY and connect to the used COM port with the following UART settings:
+
+ - Baud rate: 115200
+ - 8 data bits
+ - 1 stop bit
+ - No parity
+ - No flow control
+
+3. The All-cluster example uses UART2 to print logs while running the server. To
+ view raw UART output, a pin should be plugged to an USB to UART adapter
+ (connector J9 pin 4), then start a terminal emulator like PuTTY and connect
+ to the used COM port with the following UART settings:
+
+ - Baud rate: 115200
+ - 8 data bits
+ - 1 stop bit
+ - No parity
+ - No flow control
+
+4. On the client side, start sending commands using the chip-tool application as
+ it is described
+ [here](../../../../chip-tool/README.md#using-the-client-to-send-matter-commands).
+
+For Matter with OpenThread Border Router support, the matter CLI can be used to
+start/join the Thread network, using the following ot-cli commands. (Note that
+setting channel, panid, and network key is not enough anymore because of an Open
+Thread stack update. We first need to initialize a new dataset.)
+
+```
+> otcli dataset init new
+Done
+> otcli dataset
+Active Timestamp: 1
+Channel: 25
+Channel Mask: 0x07fff800
+Ext PAN ID: 42af793f623aab54
+Mesh Local Prefix: fd6e:c358:7078:5a8d::/64
+Network Key: f824658f79d8ca033fbb85ecc3ca91cc
+Network Name: OpenThread-b870
+PAN ID: 0xb870
+PSKc: f438a194a5e968cc43cc4b3a6f560ca4
+Security Policy: 672 onrc 0
+Done
+> otcli dataset panid 0xabcd
+Done
+> otcli dataset channel 25
+Done
+> otcli dataset commit active
+Done
+> otcli ifconfig up
+Done
+> otcli thread start
+Done
+> otcli state
+leader
+Done
+```
+
+## Thread Border Router overview
+
+To enable Thread Border Router support see the [build](README.md#building)
+section.
+
+The complete Border Router guide is located
+[here](../../../../../docs/platforms/nxp/nxp_otbr_guide.md).
diff --git a/examples/all-clusters-app/nxp/rt/rt1170/args.gni b/examples/all-clusters-app/nxp/rt/rt1170/args.gni
new file mode 100644
index 0000000..c2d91a5
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1170/args.gni
@@ -0,0 +1,19 @@
+# Copyright (c) 2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/chip.gni")
+
+# SDK target definitions
+nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain")
+nxp_sdk_driver_target = get_label_info(":sdk_driver", "label_no_toolchain")
diff --git a/examples/all-clusters-app/nxp/rt/rt1170/build_overrides b/examples/all-clusters-app/nxp/rt/rt1170/build_overrides
new file mode 120000
index 0000000..f108670
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1170/build_overrides
@@ -0,0 +1 @@
+../../../../build_overrides
\ No newline at end of file
diff --git a/examples/all-clusters-app/nxp/rt/rt1170/include/config/CHIPProjectConfig.h b/examples/all-clusters-app/nxp/rt/rt1170/include/config/CHIPProjectConfig.h
new file mode 100644
index 0000000..dd73c6c
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1170/include/config/CHIPProjectConfig.h
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Example project configuration file for CHIP.
+ *
+ * This is a place to put application or project-specific overrides
+ * to the default configuration values for general CHIP features.
+ *
+ */
+
+#pragma once
+
+/*
+ * Tells to the platform Factory Data Provider whether to use the example configuration or real/provisioned data.
+ */
+#ifndef CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+#define CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA 0
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID
+ *
+ * 0xFFF1: Test vendor.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID
+ *
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005
+
+#if !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+// Use a default pairing code if one hasn't been provisioned in flash.
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00
+#endif
+
+// Use a default pairing code if one hasn't been provisioned in flash.
+#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS"
+
+/**
+ * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER
+ *
+ * Enables the use of a hard-coded default serial number if none
+ * is found in CHIP NV storage.
+ */
+#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN"
+
+#endif /* !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA */
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION
+ *
+ * The hardware version number assigned to device or product by the device vendor. This
+ * number is scoped to the device product id, and typically corresponds to a revision of the
+ * physical device, a change to its packaging, and/or a change to its marketing presentation.
+ * This value is generally *not* incremented for device software versions.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100
+
+#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0"
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+ *
+ * A string identifying the software version running on the device.
+ * CHIP currently expects the software version to be in the format
+ * {MAJOR_VERSION}.0d{MINOR_VERSION}
+ */
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME
+#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors"
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App"
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION
+//-> format_version = 1
+//-> vendor_id = 0xFFF1
+//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B,
+// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A,
+// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029,
+// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038,
+// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047,
+// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056,
+// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ]
+//-> device_type_id = 0x0016
+//-> certificate_id = "ZIG20142ZB330003-24"
+//-> security_level = 0
+//-> security_information = 0
+//-> version_number = 0x2694
+//-> certification_type = 0
+//-> dac_origin_vendor_id is not present
+//-> dac_origin_product_id is not present
+#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \
+ { \
+ 0x30, 0x82, 0x02, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x0a, 0x30, \
+ 0x82, 0x02, 0x06, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, \
+ 0x02, 0x01, 0x30, 0x82, 0x01, 0x71, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, \
+ 0x01, 0x62, 0x04, 0x82, 0x01, 0x5e, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, \
+ 0x05, 0x01, 0x80, 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, \
+ 0x07, 0x80, 0x05, 0x08, 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, \
+ 0x80, 0x05, 0x0e, 0x80, 0x05, 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, \
+ 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, \
+ 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, \
+ 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, \
+ 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, \
+ 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, \
+ 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, \
+ 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, \
+ 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, \
+ 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, 0x4b, 0x80, 0x05, 0x4c, 0x80, \
+ 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, 0x05, 0x52, 0x80, 0x05, \
+ 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, 0x80, 0x05, 0x59, \
+ 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, 0x5f, 0x80, \
+ 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, 0x13, \
+ 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, \
+ 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x94, 0x26, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, \
+ 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, \
+ 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \
+ 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x24, 0xe5, \
+ 0xd1, 0xf4, 0x7a, 0x7d, 0x7b, 0x0d, 0x20, 0x6a, 0x26, 0xef, 0x69, 0x9b, 0x7c, 0x97, 0x57, 0xb7, 0x2d, 0x46, 0x90, \
+ 0x89, 0xde, 0x31, 0x92, 0xe6, 0x78, 0xc7, 0x45, 0xe7, 0xf6, 0x0c, 0x02, 0x21, 0x00, 0xf8, 0xaa, 0x2f, 0xa7, 0x11, \
+ 0xfc, 0xb7, 0x9b, 0x97, 0xe3, 0x97, 0xce, 0xda, 0x66, 0x7b, 0xae, 0x46, 0x4e, 0x2b, 0xd3, 0xff, 0xdf, 0xc3, 0xcc, \
+ 0xed, 0x7a, 0xa8, 0xca, 0x5f, 0x4c, 0x1a, 0x7c \
+ }
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC
+ *
+ * Enables synchronizing the device's real time clock with a remote CHIP Time service
+ * using the CHIP Time Sync protocol.
+ */
+// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1
+
+/**
+ * CHIP_CONFIG_MAX_BINDINGS
+ *
+ * Maximum number of simultaneously active bindings per ChipExchangeManager
+ * 1 (Time Sync) + 2 (Two 1-way subscriptions) + 1 (Software Update) = 4
+ * in the worst case. Keeping another 4 as buffer.
+ */
+#define CHIP_CONFIG_MAX_BINDINGS 6
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD
+ *
+ * Select the ability to offload event logs to any interested subscribers using WDM.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD 1
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS
+ *
+ * Enable recording UTC timestamps.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1
+
+/**
+ * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE
+ *
+ * A size, in bytes, of the individual debug event logging buffer.
+ */
+#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512)
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE
+ *
+ * For a development build, set the default importance of events to be logged as Debug.
+ * Since debug is the lowest importance level, this means all standard, critical, info and
+ * debug importance level vi events get logged.
+ */
+#if BUILD_RELEASE
+#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production
+#else
+#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug
+#endif // BUILD_RELEASE
+
+/* Increasing the retransmission interval of the MRP messages after subsequent failures */
+#ifndef CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL
+#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (2000_ms32)
+#endif
diff --git a/examples/all-clusters-app/nxp/rt/rt1170/third_party/connectedhomeip b/examples/all-clusters-app/nxp/rt/rt1170/third_party/connectedhomeip
new file mode 120000
index 0000000..305f207
--- /dev/null
+++ b/examples/all-clusters-app/nxp/rt/rt1170/third_party/connectedhomeip
@@ -0,0 +1 @@
+../../../../../..
\ No newline at end of file
diff --git a/examples/all-clusters-app/nxp/rt/rw61x/README.md b/examples/all-clusters-app/nxp/rt/rw61x/README.md
index df760e8..9b19031 100644
--- a/examples/all-clusters-app/nxp/rt/rw61x/README.md
+++ b/examples/all-clusters-app/nxp/rt/rw61x/README.md
@@ -171,7 +171,7 @@
- To build the application with the OTA Requestor enabled, the arguments
`chip_enable_ota_requestor=true no_mcuboot=false` must be added to the _gn
gen_ command. (More information about the OTA Requestor feature in
- [OTA Requestor README](../../../../../docs/platforms/nxp/nxp_rw61x_ota_software_update.md)
+ [OTA Requestor README](../../../../../docs/platforms/nxp/nxp_RTs_ota_software_update.md)
## Manufacturing data
@@ -407,7 +407,7 @@
Over-The-Air software updates are supported with the RW61x all-clusters example.
The process to follow in order to perform a software update is described in the
dedicated guide
-['Matter Over-The-Air Software Update with NXP RW61x example applications'](../../../../../docs/platforms/nxp/nxp_rw61x_ota_software_update.md).
+['Matter Over-The-Air Software Update with NXP RW61x example applications'](../../../../../docs/platforms/nxp/nxp_RTs_ota_software_update.md).
<a name="thread-border-router-overview"></a>
diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/.gn b/examples/laundry-washer-app/nxp/rt/rt1060/.gn
new file mode 100644
index 0000000..0985ed9
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1060/.gn
@@ -0,0 +1,35 @@
+# Copyright (c) 2020 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+
+# The location of the build configuration file.
+buildconfig = "${build_root}/config/BUILDCONFIG.gn"
+
+# CHIP uses angle bracket includes.
+check_system_includes = true
+
+default_args = {
+ target_cpu = "arm"
+ target_os = "freertos"
+
+ import("//args.gni")
+
+ # Import common example GN args
+ import("${chip_root}/examples/platform/nxp/common/gn/args.gni")
+
+ # Import default platform configs
+ import("${chip_root}/src/platform/nxp/rt/rt1060/args.gni")
+}
diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/BUILD.gn b/examples/laundry-washer-app/nxp/rt/rt1060/BUILD.gn
new file mode 100644
index 0000000..eb7ea93
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1060/BUILD.gn
@@ -0,0 +1,291 @@
+# Copyright (c) 2021-2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+import("//build_overrides/nxp_sdk.gni")
+import("//build_overrides/openthread.gni")
+import("${chip_root}/src/platform/device.gni")
+
+#allows to get common NXP SDK gn options
+import("${nxp_sdk_build_root}/nxp_sdk.gni")
+
+# Allows to get various RT gn options
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni")
+
+import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni")
+import(
+ "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni")
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni")
+
+assert(current_os == "freertos")
+assert(target_os == "freertos")
+assert(nxp_platform == "rt/rt1060")
+
+declare_args() {
+ # Allows to enable to ota_provider support
+ enable_ota_provider = false
+
+ # Allows to connect to a predefine Wi-Fi network at boot
+ wifi_auto_connect_at_boot = false
+ wifi_auto_connect_at_boot_ssid = ""
+ wifi_auto_connect_at_boot_password = ""
+
+ # Setup discriminator as argument
+ setup_discriminator = 3840
+}
+
+example_platform_dir =
+ "${nxp_sdk_matter_support_root}/examples/platform/${nxp_platform}"
+common_example_dir = "${chip_root}/examples/platform/nxp/common"
+
+app_common_folder = "laundry-washer-app/nxp/zap"
+
+# Create here the SDK instance.
+# Particular sources/defines/includes could be added/changed depending on the target application.
+rt_sdk("sdk") {
+ defines = []
+
+ cflags = []
+ public_deps = []
+ public_configs = []
+ sources = []
+ include_dirs = []
+
+ # Indicate paths to default board files
+ include_dirs += [ "${example_platform_dir}/board/" ]
+
+ # RT1060 rev A use same pin mux as rev B
+ # If user needs different pin mux files for rev A and rev B boards, the source and include from below needs to be updated accordingly
+ if (evkname == "evkmimxrt1060") {
+ include_dirs += [ "${example_platform_dir}/board/evkbmimxrt1060/" ]
+ sources += [ "${example_platform_dir}/board/evkbmimxrt1060/pin_mux.c" ]
+ } else {
+ include_dirs += [ "${example_platform_dir}/board/${evkname}/" ]
+ sources += [ "${example_platform_dir}/board/${evkname}/pin_mux.c" ]
+ }
+ sources += [ "${example_platform_dir}/board/hardware_init.c" ]
+ sources += [ "${example_platform_dir}/board/clock_config.c" ]
+ sources += [ "${example_platform_dir}/board/board.c" ]
+ sources += [ "${example_platform_dir}/board/peripherals.c" ]
+
+ # Indicate the path to CHIPProjectConfig.h
+ include_dirs += [ "include/config" ]
+
+ # Indicate the default path to FreeRTOSConfig.h
+ include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ]
+
+ # Indicate the default path to OpenThreadConfig.h
+ include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ]
+
+ # For matter with BR feature, increase FreeRTOS heap size
+ if (chip_enable_wifi && chip_enable_openthread) {
+ defines += [ "configTOTAL_HEAP_SIZE=(size_t)(170 * 1024)" ]
+ }
+
+ defines += [
+ "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}",
+ ]
+}
+
+# Create the SDK driver instance.
+# Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template
+rt1060_sdk_drivers("sdk_driver") {
+}
+
+rt_executable("laundry-washer") {
+ output_name = "chip-rt1060-laundry-washer-example"
+
+ defines = [
+ "CONFIG_RENDEZVOUS_MODE=7",
+ "CONFIG_APP_FREERTOS_OS=1",
+ ]
+
+ if (chip_enable_openthread) {
+ defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ]
+ }
+
+ include_dirs = [
+ "../../common/main/include",
+ "../../common/main",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/include",
+ "${chip_root}/examples/providers/",
+ ]
+
+ sources = [
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp",
+ "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp",
+ "../../common/main/AppTask.cpp",
+ "../../common/main/DeviceCallbacks.cpp",
+ "../../common/main/ZclCallbacks.cpp",
+ "../../common/main/include/AppEvent.h",
+ "../../common/main/include/AppTask.h",
+ "../../common/main/include/DeviceCallbacks.h",
+ "../../common/main/main.cpp",
+ ]
+
+ # App common files
+ include_dirs += [
+ "${common_example_dir}/icd/include",
+ "${common_example_dir}/matter_cli/include",
+ "${common_example_dir}/device_manager/include",
+ "${common_example_dir}/device_callbacks/include",
+ "${common_example_dir}/matter_button/include",
+ "${common_example_dir}/factory_data/include",
+ "${common_example_dir}/app_task/include",
+ ]
+
+ sources += [
+ "${chip_root}/examples/platform/nxp/${nxp_platform}/factory_data/source/AppFactoryDataExample.cpp",
+ "${common_example_dir}/app_task/source/AppTaskBase.cpp",
+ "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp",
+ "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp",
+ "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp",
+ "${common_example_dir}/icd/source/ICDUtil.cpp",
+ "${common_example_dir}/matter_button/source/ButtonDefault.cpp",
+ "${common_example_dir}/matter_button/source/ButtonManager.cpp",
+ "${common_example_dir}/matter_button/source/ButtonRegistrationDefault.cpp",
+ ]
+
+ deps = [ "${chip_root}/examples/${app_common_folder}" ]
+
+ sources += [
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/laundry-washer-controls-delegate-impl.cpp",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-temperature-levels.cpp",
+ "../../common/main/laundry-washer-mode.cpp",
+ "../../common/main/operational-state-delegate-impl.cpp",
+ ]
+
+ if (chip_enable_matter_cli) {
+ defines += [ "ENABLE_CHIP_SHELL" ]
+ deps += [
+ "${chip_root}/examples/shell/shell_common:shell_common",
+ "${chip_root}/src/lib/shell:shell",
+ ]
+ sources += [
+ "${common_example_dir}/matter_cli/source/AppCLIBase.cpp",
+ "${common_example_dir}/matter_cli/source/AppCLIFreeRTOS.cpp",
+ ]
+ }
+
+ if (chip_enable_ota_requestor) {
+ sources += [
+ "${chip_root}/examples/platform/nxp/common/mcuboot_app_support/flash_partitioning.h",
+ "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp",
+ "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp",
+
+ #Adding mcuboot files
+ "${chip_root}/examples/platform/nxp/common/mcuboot_app_support/mcuboot_app_support.c",
+ "${chip_root}/examples/platform/nxp/common/mcuboot_app_support/mcuboot_app_support.h",
+ ]
+ include_dirs += [
+ "$${common_example_dir}/ota_requestor/include",
+ "${chip_root}/examples/platform/nxp/common/mcuboot_app_support",
+ ]
+ }
+
+ if (wifi_auto_connect_at_boot) {
+ assert(wifi_auto_connect_at_boot_ssid != "" &&
+ wifi_auto_connect_at_boot_password != "",
+ "WiFi SSID and password must be specified at build time!")
+
+ defines += [
+ "CONFIG_CHIP_APP_WIFI_CONNECT_AT_BOOT=1",
+ "CONFIG_CHIP_APP_WIFI_SSID=\"${wifi_auto_connect_at_boot_ssid}\"",
+ "CONFIG_CHIP_APP_WIFI_PASSWORD=\"${wifi_auto_connect_at_boot_password}\"",
+ ]
+
+ include_dirs += [ "${common_example_dir}/wifi_connect/include" ]
+ sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ]
+ }
+
+ if (enable_ota_provider) {
+ defines += [ "CONFIG_CHIP_OTA_PROVIDER=1" ]
+
+ include_dirs += [
+ "${common_example_dir}/ota_provider/include",
+ "${common_example_dir}/ota_provider/ota-provider-common",
+ ]
+
+ sources += [
+ "${common_example_dir}/ota_provider/ota-provider-common/RTBdxOtaSender.cpp",
+ "${common_example_dir}/ota_provider/ota-provider-common/RTOTAProviderExample.cpp",
+ "${common_example_dir}/ota_provider/source/OTAProvider.cpp",
+ ]
+
+ deps += [
+ "${chip_root}/src/app/server",
+ "${chip_root}/src/protocols/bdx",
+ "${chip_root}/third_party/jsoncpp",
+ ]
+ }
+
+ # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false
+ # The would add to the build a dedicated application assert implementation.
+ if (!sdk_fsl_assert_support) {
+ sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ]
+ }
+
+ cflags = [ "-Wconversion" ]
+
+ ldscript =
+ "${example_platform_dir}/app/ldscripts/MIMXRT1062xxxxx_flexspi_nor.ld"
+
+ inputs = [ ldscript ]
+
+ ldflags = [
+ "-T" + rebase_path(ldscript, root_build_dir),
+ "-fno-common",
+ "-Wl,--defsym=__stack_size__=2048",
+ "-ffreestanding",
+ "-fno-builtin",
+ "-mapcs",
+ "-u qspiflash_config",
+ "-u image_vector_table",
+ "-u boot_data",
+ "-u dcd_data",
+ "-Wl,-print-memory-usage",
+ "-Wl,--no-warn-rwx-segments",
+ ]
+
+ if (enable_ota_provider) {
+ # As the OTA file will be stored in the littlefs file system, it is required to increase the size of the file system
+ # To be able to store an OTA file with a MAX size of 640K,
+ # it recommended to size the file system with:
+ # 161 sectors of 4K => reserved for the OTA file
+ # 32 sectors of 4K => reserved for Matter/OT/BLE settings storage
+ ldflags += [ "-Wl,--defsym=gNVMSectorCountLink_d=193" ]
+ }
+
+ if (chip_enable_ota_requestor) {
+ # If OTA build flag is enabled,
+ # we would need to reserve enough space for the bootloader (MCUBoot)
+ # MCUBoot requires 0x11000 Bytes to be reserved at the base of the flash
+ # Consequently, some sections will need to be shifted
+ ldflags += [ "-Wl,--defsym=__mcu_boot_size__=0x11000" ]
+ }
+
+ output_dir = root_out_dir
+}
+
+group("rt1060") {
+ deps = [ ":laundry-washer" ]
+}
+
+group("default") {
+ deps = [ ":rt1060" ]
+}
diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/README.md b/examples/laundry-washer-app/nxp/rt/rt1060/README.md
new file mode 100644
index 0000000..62d4847
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1060/README.md
@@ -0,0 +1,5 @@
+# CHIP RT1060 Thermostat Application
+
+All instructions describing how to use a Matter application on NXP RT1060 can be
+found in [README.md](../../../../all-clusters-app/nxp/rt/rt1060/README.md) root
+readme
diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/args.gni b/examples/laundry-washer-app/nxp/rt/rt1060/args.gni
new file mode 100644
index 0000000..d65714c
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1060/args.gni
@@ -0,0 +1,25 @@
+# Copyright (c) 2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/chip.gni")
+
+# SDK target definitions
+nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain")
+nxp_sdk_driver_target = get_label_info(":sdk_driver", "label_no_toolchain")
+
+# ICDM
+chip_enable_icd_server = true
+chip_persist_subscriptions = true
+chip_subscription_timeout_resumption = true
+chip_enable_icd_checkin = true
diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/build_overrides b/examples/laundry-washer-app/nxp/rt/rt1060/build_overrides
new file mode 120000
index 0000000..f108670
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1060/build_overrides
@@ -0,0 +1 @@
+../../../../build_overrides
\ No newline at end of file
diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/include/config/CHIPProjectConfig.h b/examples/laundry-washer-app/nxp/rt/rt1060/include/config/CHIPProjectConfig.h
new file mode 100644
index 0000000..dd73c6c
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1060/include/config/CHIPProjectConfig.h
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Example project configuration file for CHIP.
+ *
+ * This is a place to put application or project-specific overrides
+ * to the default configuration values for general CHIP features.
+ *
+ */
+
+#pragma once
+
+/*
+ * Tells to the platform Factory Data Provider whether to use the example configuration or real/provisioned data.
+ */
+#ifndef CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+#define CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA 0
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID
+ *
+ * 0xFFF1: Test vendor.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID
+ *
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005
+
+#if !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+// Use a default pairing code if one hasn't been provisioned in flash.
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00
+#endif
+
+// Use a default pairing code if one hasn't been provisioned in flash.
+#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS"
+
+/**
+ * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER
+ *
+ * Enables the use of a hard-coded default serial number if none
+ * is found in CHIP NV storage.
+ */
+#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN"
+
+#endif /* !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA */
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION
+ *
+ * The hardware version number assigned to device or product by the device vendor. This
+ * number is scoped to the device product id, and typically corresponds to a revision of the
+ * physical device, a change to its packaging, and/or a change to its marketing presentation.
+ * This value is generally *not* incremented for device software versions.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100
+
+#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0"
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+ *
+ * A string identifying the software version running on the device.
+ * CHIP currently expects the software version to be in the format
+ * {MAJOR_VERSION}.0d{MINOR_VERSION}
+ */
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME
+#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors"
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App"
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION
+//-> format_version = 1
+//-> vendor_id = 0xFFF1
+//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B,
+// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A,
+// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029,
+// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038,
+// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047,
+// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056,
+// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ]
+//-> device_type_id = 0x0016
+//-> certificate_id = "ZIG20142ZB330003-24"
+//-> security_level = 0
+//-> security_information = 0
+//-> version_number = 0x2694
+//-> certification_type = 0
+//-> dac_origin_vendor_id is not present
+//-> dac_origin_product_id is not present
+#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \
+ { \
+ 0x30, 0x82, 0x02, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x0a, 0x30, \
+ 0x82, 0x02, 0x06, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, \
+ 0x02, 0x01, 0x30, 0x82, 0x01, 0x71, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, \
+ 0x01, 0x62, 0x04, 0x82, 0x01, 0x5e, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, \
+ 0x05, 0x01, 0x80, 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, \
+ 0x07, 0x80, 0x05, 0x08, 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, \
+ 0x80, 0x05, 0x0e, 0x80, 0x05, 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, \
+ 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, \
+ 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, \
+ 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, \
+ 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, \
+ 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, \
+ 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, \
+ 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, \
+ 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, \
+ 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, 0x4b, 0x80, 0x05, 0x4c, 0x80, \
+ 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, 0x05, 0x52, 0x80, 0x05, \
+ 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, 0x80, 0x05, 0x59, \
+ 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, 0x5f, 0x80, \
+ 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, 0x13, \
+ 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, \
+ 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x94, 0x26, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, \
+ 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, \
+ 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \
+ 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x24, 0xe5, \
+ 0xd1, 0xf4, 0x7a, 0x7d, 0x7b, 0x0d, 0x20, 0x6a, 0x26, 0xef, 0x69, 0x9b, 0x7c, 0x97, 0x57, 0xb7, 0x2d, 0x46, 0x90, \
+ 0x89, 0xde, 0x31, 0x92, 0xe6, 0x78, 0xc7, 0x45, 0xe7, 0xf6, 0x0c, 0x02, 0x21, 0x00, 0xf8, 0xaa, 0x2f, 0xa7, 0x11, \
+ 0xfc, 0xb7, 0x9b, 0x97, 0xe3, 0x97, 0xce, 0xda, 0x66, 0x7b, 0xae, 0x46, 0x4e, 0x2b, 0xd3, 0xff, 0xdf, 0xc3, 0xcc, \
+ 0xed, 0x7a, 0xa8, 0xca, 0x5f, 0x4c, 0x1a, 0x7c \
+ }
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC
+ *
+ * Enables synchronizing the device's real time clock with a remote CHIP Time service
+ * using the CHIP Time Sync protocol.
+ */
+// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1
+
+/**
+ * CHIP_CONFIG_MAX_BINDINGS
+ *
+ * Maximum number of simultaneously active bindings per ChipExchangeManager
+ * 1 (Time Sync) + 2 (Two 1-way subscriptions) + 1 (Software Update) = 4
+ * in the worst case. Keeping another 4 as buffer.
+ */
+#define CHIP_CONFIG_MAX_BINDINGS 6
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD
+ *
+ * Select the ability to offload event logs to any interested subscribers using WDM.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD 1
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS
+ *
+ * Enable recording UTC timestamps.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1
+
+/**
+ * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE
+ *
+ * A size, in bytes, of the individual debug event logging buffer.
+ */
+#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512)
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE
+ *
+ * For a development build, set the default importance of events to be logged as Debug.
+ * Since debug is the lowest importance level, this means all standard, critical, info and
+ * debug importance level vi events get logged.
+ */
+#if BUILD_RELEASE
+#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production
+#else
+#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug
+#endif // BUILD_RELEASE
+
+/* Increasing the retransmission interval of the MRP messages after subsequent failures */
+#ifndef CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL
+#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (2000_ms32)
+#endif
diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/third_party/connectedhomeip b/examples/laundry-washer-app/nxp/rt/rt1060/third_party/connectedhomeip
new file mode 120000
index 0000000..305f207
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1060/third_party/connectedhomeip
@@ -0,0 +1 @@
+../../../../../..
\ No newline at end of file
diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/.gn b/examples/laundry-washer-app/nxp/rt/rt1170/.gn
new file mode 100644
index 0000000..59dcfeb
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1170/.gn
@@ -0,0 +1,35 @@
+# Copyright (c) 2020 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+
+# The location of the build configuration file.
+buildconfig = "${build_root}/config/BUILDCONFIG.gn"
+
+# CHIP uses angle bracket includes.
+check_system_includes = true
+
+default_args = {
+ target_cpu = "arm"
+ target_os = "freertos"
+
+ import("//args.gni")
+
+ # Import common example GN args
+ import("${chip_root}/examples/platform/nxp/common/gn/args.gni")
+
+ # Import default platform configs
+ import("${chip_root}/src/platform/nxp/rt/rt1170/args.gni")
+}
diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/BUILD.gn b/examples/laundry-washer-app/nxp/rt/rt1170/BUILD.gn
new file mode 100644
index 0000000..96b035e
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1170/BUILD.gn
@@ -0,0 +1,246 @@
+# Copyright (c) 2021-2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+import("//build_overrides/nxp_sdk.gni")
+import("//build_overrides/openthread.gni")
+import("${chip_root}/src/platform/device.gni")
+
+#allows to get common NXP SDK gn options
+import("${nxp_sdk_build_root}/nxp_sdk.gni")
+
+# Allows to get various RT gn options
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni")
+
+import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni")
+import(
+ "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni")
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni")
+
+assert(current_os == "freertos")
+assert(target_os == "freertos")
+assert(nxp_platform == "rt/rt1170")
+
+declare_args() {
+ # Allows to connect to a predefine Wi-Fi network at boot
+ wifi_auto_connect_at_boot = false
+ wifi_auto_connect_at_boot_ssid = ""
+ wifi_auto_connect_at_boot_password = ""
+
+ # Setup discriminator as argument
+ setup_discriminator = 3840
+}
+
+example_platform_dir =
+ "${nxp_sdk_matter_support_root}/examples/platform/${nxp_platform}"
+common_example_dir = "${chip_root}/examples/platform/nxp/common"
+
+# Use NXP custom zap files for laundry-washer device-type
+app_common_folder = "laundry-washer-app/nxp/zap"
+
+# Create here the SDK instance.
+# Particular sources/defines/includes could be added/changed depending on the target application.
+rt_sdk("sdk") {
+ defines = []
+
+ cflags = []
+ public_deps = []
+ public_configs = []
+ sources = []
+ include_dirs = []
+
+ # Indicate paths to default board files
+ include_dirs += [ "${example_platform_dir}/board/" ]
+ sources += [ "${example_platform_dir}/board/pin_mux.c" ]
+ sources += [ "${example_platform_dir}/board/hardware_init.c" ]
+ sources += [ "${example_platform_dir}/board/clock_config.c" ]
+ sources += [ "${example_platform_dir}/board/board.c" ]
+ sources += [ "${example_platform_dir}/board/peripherals.c" ]
+ sources += [ "${example_platform_dir}/board/sdmmc_config.c" ]
+
+ # Indicate the path to CHIPProjectConfig.h
+ include_dirs += [ "include/config" ]
+
+ # Indicate the default path to FreeRTOSConfig.h
+ include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ]
+
+ # Indicate the default path to OpenThreadConfig.h
+ include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ]
+
+ # For matter with BR feature, increase FreeRTOS heap size
+ if (chip_enable_wifi && chip_enable_openthread) {
+ defines += [ "configTOTAL_HEAP_SIZE=(size_t)(170 * 1024)" ]
+ }
+
+ defines += [
+ "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}",
+ ]
+}
+
+# Create the SDK driver instance.
+# Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template
+rt1170_sdk_drivers("sdk_driver") {
+}
+
+rt_executable("laundry-washer-app") {
+ output_name = "chip-rt1170-laundry-washer-example"
+
+ defines = [
+ "CONFIG_RENDEZVOUS_MODE=7",
+ "CONFIG_APP_FREERTOS_OS=1",
+ ]
+
+ if (chip_enable_openthread) {
+ defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ]
+ }
+
+ include_dirs = [
+ "../../common/main/include",
+ "../../common/main",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/include",
+ "${chip_root}/examples/providers/",
+ ]
+
+ sources = [
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp",
+ "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp",
+ "../../common/main/AppTask.cpp",
+ "../../common/main/DeviceCallbacks.cpp",
+ "../../common/main/ZclCallbacks.cpp",
+ "../../common/main/include/AppEvent.h",
+ "../../common/main/include/AppTask.h",
+ "../../common/main/include/DeviceCallbacks.h",
+ "../../common/main/main.cpp",
+ ]
+
+ # App common files
+ include_dirs += [
+ "${common_example_dir}/icd/include",
+ "${common_example_dir}/matter_button/include",
+ "${common_example_dir}/matter_cli/include",
+ "${common_example_dir}/device_manager/include",
+ "${common_example_dir}/device_callbacks/include",
+ "${common_example_dir}/factory_data/include",
+ "${common_example_dir}/app_task/include",
+ ]
+
+ sources += [
+ "${common_example_dir}/app_task/source/AppTaskBase.cpp",
+ "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp",
+ "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp",
+ "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp",
+ "${common_example_dir}/factory_data/source/AppFactoryDataDefaultImpl.cpp",
+ "${common_example_dir}/icd/source/ICDUtil.cpp",
+ "${common_example_dir}/matter_button/source/ButtonRegistrationEmpty.cpp",
+ ]
+
+ deps = [ "${chip_root}/examples/${app_common_folder}" ]
+
+ sources += [
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/laundry-washer-controls-delegate-impl.cpp",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-temperature-levels.cpp",
+ "../../common/main/laundry-washer-mode.cpp",
+ "../../common/main/operational-state-delegate-impl.cpp",
+ ]
+
+ if (chip_enable_matter_cli) {
+ defines += [ "ENABLE_CHIP_SHELL" ]
+ deps += [
+ "${chip_root}/examples/shell/shell_common:shell_common",
+ "${chip_root}/src/lib/shell:shell",
+ ]
+ sources += [
+ "${common_example_dir}/matter_cli/source/AppCLIBase.cpp",
+ "${common_example_dir}/matter_cli/source/AppCLIFreeRTOS.cpp",
+ ]
+ }
+
+ if (chip_enable_ota_requestor) {
+ include_dirs += [ "${common_example_dir}/ota_requestor/include" ]
+ sources += [
+ "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp",
+ "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp",
+ ]
+ }
+
+ if (wifi_auto_connect_at_boot) {
+ assert(wifi_auto_connect_at_boot_ssid != "" &&
+ wifi_auto_connect_at_boot_password != "",
+ "WiFi SSID and password must be specified at build time!")
+
+ defines += [
+ "CONFIG_CHIP_APP_WIFI_CONNECT_AT_BOOT=1",
+ "CONFIG_CHIP_APP_WIFI_SSID=\"${wifi_auto_connect_at_boot_ssid}\"",
+ "CONFIG_CHIP_APP_WIFI_PASSWORD=\"${wifi_auto_connect_at_boot_password}\"",
+ ]
+
+ include_dirs += [ "${common_example_dir}/wifi_connect/include" ]
+ sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ]
+ }
+
+ # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false
+ # The would add to the build a dedicated application assert implementation.
+ if (!sdk_fsl_assert_support) {
+ sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ]
+ }
+
+ cflags = [ "-Wconversion" ]
+
+ ldscript =
+ "${example_platform_dir}/app/ldscripts/MIMXRT1176xxxxx_cm7_flexspi_nor.ld"
+
+ inputs = [ ldscript ]
+
+ ldflags = [
+ "-T" + rebase_path(ldscript, root_build_dir),
+ "-fno-common",
+ "-Wl,--defsym=__stack_size__=2048",
+ "-ffreestanding",
+ "-fno-builtin",
+ "-mapcs",
+ "-u qspiflash_config",
+ "-u image_vector_table",
+ "-u boot_data",
+ "-u dcd_data",
+ "-Wl,-print-memory-usage",
+ "-Wl,--no-warn-rwx-segments",
+ ]
+
+ if (chip_enable_ota_requestor) {
+ if (no_mcuboot) {
+ # If "no_mcuboot" is set to true, the application will be linked at the base of the flash.
+ print(
+ "Warning : The OTA Requestor is enabled without MCUBoot. This will prevent the application from applying software updates.")
+ } else {
+ # we need to reserve enough space for the bootloader (MCUBoot)
+ # MCUBoot requires 0x40000 Bytes to be reserved at the base of the flash
+ # Consequently, some sections will need to be shifted
+ ldflags += [ "-Wl,--defsym=__m_mcuboot_size__=0x40000" ]
+ }
+ }
+
+ output_dir = root_out_dir
+}
+
+group("rt1170") {
+ deps = [ ":laundry-washer-app" ]
+}
+
+group("default") {
+ deps = [ ":rt1170" ]
+}
diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/README.md b/examples/laundry-washer-app/nxp/rt/rt1170/README.md
new file mode 100644
index 0000000..9710175
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1170/README.md
@@ -0,0 +1,5 @@
+# CHIP RT1170 Thermostat Application
+
+All instructions describing how to use a Matter application on NXP RT11170 can
+be found in [README.md](../../../../all-clusters-app/nxp/rt/rt1170/README.md)
+root readme
diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/args.gni b/examples/laundry-washer-app/nxp/rt/rt1170/args.gni
new file mode 100644
index 0000000..d65714c
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1170/args.gni
@@ -0,0 +1,25 @@
+# Copyright (c) 2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/chip.gni")
+
+# SDK target definitions
+nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain")
+nxp_sdk_driver_target = get_label_info(":sdk_driver", "label_no_toolchain")
+
+# ICDM
+chip_enable_icd_server = true
+chip_persist_subscriptions = true
+chip_subscription_timeout_resumption = true
+chip_enable_icd_checkin = true
diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/build_overrides b/examples/laundry-washer-app/nxp/rt/rt1170/build_overrides
new file mode 120000
index 0000000..f108670
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1170/build_overrides
@@ -0,0 +1 @@
+../../../../build_overrides
\ No newline at end of file
diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/include/config/CHIPProjectConfig.h b/examples/laundry-washer-app/nxp/rt/rt1170/include/config/CHIPProjectConfig.h
new file mode 100644
index 0000000..dd73c6c
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1170/include/config/CHIPProjectConfig.h
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Example project configuration file for CHIP.
+ *
+ * This is a place to put application or project-specific overrides
+ * to the default configuration values for general CHIP features.
+ *
+ */
+
+#pragma once
+
+/*
+ * Tells to the platform Factory Data Provider whether to use the example configuration or real/provisioned data.
+ */
+#ifndef CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+#define CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA 0
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID
+ *
+ * 0xFFF1: Test vendor.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID
+ *
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005
+
+#if !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+// Use a default pairing code if one hasn't been provisioned in flash.
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00
+#endif
+
+// Use a default pairing code if one hasn't been provisioned in flash.
+#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS"
+
+/**
+ * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER
+ *
+ * Enables the use of a hard-coded default serial number if none
+ * is found in CHIP NV storage.
+ */
+#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN"
+
+#endif /* !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA */
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION
+ *
+ * The hardware version number assigned to device or product by the device vendor. This
+ * number is scoped to the device product id, and typically corresponds to a revision of the
+ * physical device, a change to its packaging, and/or a change to its marketing presentation.
+ * This value is generally *not* incremented for device software versions.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100
+
+#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0"
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+ *
+ * A string identifying the software version running on the device.
+ * CHIP currently expects the software version to be in the format
+ * {MAJOR_VERSION}.0d{MINOR_VERSION}
+ */
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME
+#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors"
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App"
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION
+//-> format_version = 1
+//-> vendor_id = 0xFFF1
+//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B,
+// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A,
+// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029,
+// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038,
+// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047,
+// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056,
+// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ]
+//-> device_type_id = 0x0016
+//-> certificate_id = "ZIG20142ZB330003-24"
+//-> security_level = 0
+//-> security_information = 0
+//-> version_number = 0x2694
+//-> certification_type = 0
+//-> dac_origin_vendor_id is not present
+//-> dac_origin_product_id is not present
+#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \
+ { \
+ 0x30, 0x82, 0x02, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x0a, 0x30, \
+ 0x82, 0x02, 0x06, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, \
+ 0x02, 0x01, 0x30, 0x82, 0x01, 0x71, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, \
+ 0x01, 0x62, 0x04, 0x82, 0x01, 0x5e, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, \
+ 0x05, 0x01, 0x80, 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, \
+ 0x07, 0x80, 0x05, 0x08, 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, \
+ 0x80, 0x05, 0x0e, 0x80, 0x05, 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, \
+ 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, \
+ 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, \
+ 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, \
+ 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, \
+ 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, \
+ 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, \
+ 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, \
+ 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, \
+ 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, 0x4b, 0x80, 0x05, 0x4c, 0x80, \
+ 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, 0x05, 0x52, 0x80, 0x05, \
+ 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, 0x80, 0x05, 0x59, \
+ 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, 0x5f, 0x80, \
+ 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, 0x13, \
+ 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, \
+ 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x94, 0x26, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, \
+ 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, \
+ 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \
+ 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x24, 0xe5, \
+ 0xd1, 0xf4, 0x7a, 0x7d, 0x7b, 0x0d, 0x20, 0x6a, 0x26, 0xef, 0x69, 0x9b, 0x7c, 0x97, 0x57, 0xb7, 0x2d, 0x46, 0x90, \
+ 0x89, 0xde, 0x31, 0x92, 0xe6, 0x78, 0xc7, 0x45, 0xe7, 0xf6, 0x0c, 0x02, 0x21, 0x00, 0xf8, 0xaa, 0x2f, 0xa7, 0x11, \
+ 0xfc, 0xb7, 0x9b, 0x97, 0xe3, 0x97, 0xce, 0xda, 0x66, 0x7b, 0xae, 0x46, 0x4e, 0x2b, 0xd3, 0xff, 0xdf, 0xc3, 0xcc, \
+ 0xed, 0x7a, 0xa8, 0xca, 0x5f, 0x4c, 0x1a, 0x7c \
+ }
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC
+ *
+ * Enables synchronizing the device's real time clock with a remote CHIP Time service
+ * using the CHIP Time Sync protocol.
+ */
+// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1
+
+/**
+ * CHIP_CONFIG_MAX_BINDINGS
+ *
+ * Maximum number of simultaneously active bindings per ChipExchangeManager
+ * 1 (Time Sync) + 2 (Two 1-way subscriptions) + 1 (Software Update) = 4
+ * in the worst case. Keeping another 4 as buffer.
+ */
+#define CHIP_CONFIG_MAX_BINDINGS 6
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD
+ *
+ * Select the ability to offload event logs to any interested subscribers using WDM.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD 1
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS
+ *
+ * Enable recording UTC timestamps.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1
+
+/**
+ * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE
+ *
+ * A size, in bytes, of the individual debug event logging buffer.
+ */
+#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512)
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE
+ *
+ * For a development build, set the default importance of events to be logged as Debug.
+ * Since debug is the lowest importance level, this means all standard, critical, info and
+ * debug importance level vi events get logged.
+ */
+#if BUILD_RELEASE
+#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production
+#else
+#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug
+#endif // BUILD_RELEASE
+
+/* Increasing the retransmission interval of the MRP messages after subsequent failures */
+#ifndef CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL
+#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (2000_ms32)
+#endif
diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/third_party/connectedhomeip b/examples/laundry-washer-app/nxp/rt/rt1170/third_party/connectedhomeip
new file mode 120000
index 0000000..305f207
--- /dev/null
+++ b/examples/laundry-washer-app/nxp/rt/rt1170/third_party/connectedhomeip
@@ -0,0 +1 @@
+../../../../../..
\ No newline at end of file
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/MIMXRT1060-EVKB-TOP.png b/examples/platform/nxp/rt/rt1060/doc/images/MIMXRT1060-EVKB-TOP.png
new file mode 100644
index 0000000..1e9fbff
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/MIMXRT1060-EVKB-TOP.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/debug0.png b/examples/platform/nxp/rt/rt1060/doc/images/debug0.png
new file mode 100644
index 0000000..6a594f4
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/debug0.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/debug1.png b/examples/platform/nxp/rt/rt1060/doc/images/debug1.png
new file mode 100644
index 0000000..b5a9ee5
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/debug1.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/flash_driver.png b/examples/platform/nxp/rt/rt1060/doc/images/flash_driver.png
new file mode 100644
index 0000000..0e5ab13
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/flash_driver.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/gdbdebugger.png b/examples/platform/nxp/rt/rt1060/doc/images/gdbdebugger.png
new file mode 100644
index 0000000..ace1ff8
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/gdbdebugger.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/import-local-repository.png b/examples/platform/nxp/rt/rt1060/doc/images/import-local-repository.png
new file mode 100644
index 0000000..630e9f9
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/import-local-repository.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/import-sdk-git.png b/examples/platform/nxp/rt/rt1060/doc/images/import-sdk-git.png
new file mode 100644
index 0000000..440db43
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/import-sdk-git.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/mcu-set.png b/examples/platform/nxp/rt/rt1060/doc/images/mcu-set.png
new file mode 100644
index 0000000..a3d8378
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/mcu-set.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework.jpg b/examples/platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework.jpg
new file mode 100644
index 0000000..fd7c303
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework.jpg
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework_detail.jpg b/examples/platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework_detail.jpg
new file mode 100644
index 0000000..c5a43e6
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework_detail.jpg
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/rt1060_k32w061_pin_settings.jpg b/examples/platform/nxp/rt/rt1060/doc/images/rt1060_k32w061_pin_settings.jpg
new file mode 100644
index 0000000..ed616ee
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/rt1060_k32w061_pin_settings.jpg
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/select-sdk.png b/examples/platform/nxp/rt/rt1060/doc/images/select-sdk.png
new file mode 100644
index 0000000..335a050
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/select-sdk.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/startup.png b/examples/platform/nxp/rt/rt1060/doc/images/startup.png
new file mode 100644
index 0000000..cd9a8ad
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/startup.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/doc/images/toolchain.JPG b/examples/platform/nxp/rt/rt1060/doc/images/toolchain.JPG
new file mode 100644
index 0000000..068ebfb
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/doc/images/toolchain.JPG
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1060/factory_data/source/AppFactoryDataExample.cpp b/examples/platform/nxp/rt/rt1060/factory_data/source/AppFactoryDataExample.cpp
new file mode 100644
index 0000000..a37ff1b
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1060/factory_data/source/AppFactoryDataExample.cpp
@@ -0,0 +1,77 @@
+/*
+ *
+ * Copyright (c) 2023 Project CHIP Authors
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "AppFactoryData.h"
+
+#include <credentials/DeviceAttestationCredsProvider.h>
+#include <platform/CommissionableDataProvider.h>
+#include <platform/DeviceInstanceInfoProvider.h>
+
+#if CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+#include "FactoryDataProvider.h"
+/*
+ * Test key used to encrypt factory data before storing it to the flash.
+ * The software key should be used only during development stage.
+ * For production usage, it is recommended to use the OTP key which needs to be fused in the RT1060 SW_GP2.
+ */
+static const uint8_t aes128TestKey[]
+ __attribute__((aligned)) = { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c };
+#else
+#include <credentials/examples/DeviceAttestationCredsExample.h>
+#endif
+
+using namespace chip;
+using namespace ::chip::Credentials;
+using namespace ::chip::DeviceLayer;
+
+/**
+ * Allows to register Matter factory data before initializing the Matter stack
+ * Load factory data from the flash to the RAM.
+ * Needs to be done before starting other Matter modules to avoid concurrent access issues with DCP hardware module.
+ *
+ * This example demonstrates the usage of the ecb with a software key, to use other encryption mode,
+ * or to use hardware keys, check available methodes from the FactoryDataProviderImpl class.
+ */
+CHIP_ERROR NXP::App::AppFactoryData_PreMatterStackInit(void)
+{
+#if CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+
+ FactoryDataPrvdImpl().SetEncryptionMode(FactoryDataProvider::encrypt_ecb);
+ FactoryDataPrvdImpl().SetAes128Key(&aes128TestKey[0]);
+
+ return FactoryDataPrvdImpl().Init();
+#else
+ return CHIP_NO_ERROR;
+#endif
+}
+
+/**
+ * Allows to register Matter factory data after initializing the Matter stack
+ */
+CHIP_ERROR NXP::App::AppFactoryData_PostMatterStackInit(void)
+{
+#if CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+ SetDeviceInstanceInfoProvider(&FactoryDataPrvd());
+ SetDeviceAttestationCredentialsProvider(&FactoryDataPrvd());
+ SetCommissionableDataProvider(&FactoryDataPrvd());
+#else
+ // Initialize device attestation with example one (only for debug purpose)
+ SetDeviceAttestationCredentialsProvider(Examples::GetExampleDACProvider());
+#endif
+ return CHIP_NO_ERROR;
+}
diff --git a/examples/platform/nxp/rt/rt1170/BUILD.gn b/examples/platform/nxp/rt/rt1170/BUILD.gn
new file mode 100644
index 0000000..6585e31
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/BUILD.gn
@@ -0,0 +1,24 @@
+# Copyright (c) 2020-2022 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/chip.gni")
+import("//build_overrides/nxp_sdk.gni")
+
+config("chip_app_project_config") {
+ include_dirs = [
+ "app/project_include",
+ "../../common/util/include",
+ "../../common/mbedtls",
+ ]
+}
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/IMX-RT1170-EVK-TOP.jpg b/examples/platform/nxp/rt/rt1170/doc/images/IMX-RT1170-EVK-TOP.jpg
new file mode 100644
index 0000000..a5dc161
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/IMX-RT1170-EVK-TOP.jpg
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/debug0.png b/examples/platform/nxp/rt/rt1170/doc/images/debug0.png
new file mode 100644
index 0000000..e5b02cf
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/debug0.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/flash_driver.png b/examples/platform/nxp/rt/rt1170/doc/images/flash_driver.png
new file mode 100644
index 0000000..610acab
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/flash_driver.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/iwx612_2EL.jpg b/examples/platform/nxp/rt/rt1170/doc/images/iwx612_2EL.jpg
new file mode 100644
index 0000000..1482efe
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/iwx612_2EL.jpg
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/mcu-set.png b/examples/platform/nxp/rt/rt1170/doc/images/mcu-set.png
new file mode 100644
index 0000000..27bc4d9
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/mcu-set.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/mcuboot_demo.PNG b/examples/platform/nxp/rt/rt1170/doc/images/mcuboot_demo.PNG
new file mode 100644
index 0000000..0c228b7
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/mcuboot_demo.PNG
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/mcuboot_swap_config.png b/examples/platform/nxp/rt/rt1170/doc/images/mcuboot_swap_config.png
new file mode 100644
index 0000000..83c4fdb
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/mcuboot_swap_config.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-M2_adapter.jpg b/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-M2_adapter.jpg
new file mode 100644
index 0000000..0d81667
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-M2_adapter.jpg
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_1.jpg b/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_1.jpg
new file mode 100644
index 0000000..01febd9
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_1.jpg
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_2.jpg b/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_2.jpg
new file mode 100644
index 0000000..91bae4b
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_2.jpg
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/select-sdk.png b/examples/platform/nxp/rt/rt1170/doc/images/select-sdk.png
new file mode 100644
index 0000000..412731c
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/select-sdk.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/startup.png b/examples/platform/nxp/rt/rt1170/doc/images/startup.png
new file mode 100644
index 0000000..c805bc5
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/startup.png
Binary files differ
diff --git a/examples/platform/nxp/rt/rt1170/doc/images/toolchain.JPG b/examples/platform/nxp/rt/rt1170/doc/images/toolchain.JPG
new file mode 100644
index 0000000..068ebfb
--- /dev/null
+++ b/examples/platform/nxp/rt/rt1170/doc/images/toolchain.JPG
Binary files differ
diff --git a/examples/thermostat/nxp/rt/rt1060/.gn b/examples/thermostat/nxp/rt/rt1060/.gn
new file mode 100644
index 0000000..0985ed9
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1060/.gn
@@ -0,0 +1,35 @@
+# Copyright (c) 2020 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+
+# The location of the build configuration file.
+buildconfig = "${build_root}/config/BUILDCONFIG.gn"
+
+# CHIP uses angle bracket includes.
+check_system_includes = true
+
+default_args = {
+ target_cpu = "arm"
+ target_os = "freertos"
+
+ import("//args.gni")
+
+ # Import common example GN args
+ import("${chip_root}/examples/platform/nxp/common/gn/args.gni")
+
+ # Import default platform configs
+ import("${chip_root}/src/platform/nxp/rt/rt1060/args.gni")
+}
diff --git a/examples/thermostat/nxp/rt/rt1060/BUILD.gn b/examples/thermostat/nxp/rt/rt1060/BUILD.gn
new file mode 100644
index 0000000..5eba1a3
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1060/BUILD.gn
@@ -0,0 +1,304 @@
+# Copyright (c) 2021-2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+import("//build_overrides/nxp_sdk.gni")
+import("//build_overrides/openthread.gni")
+import("${chip_root}/src/platform/device.gni")
+
+#allows to get common NXP SDK gn options
+import("${nxp_sdk_build_root}/nxp_sdk.gni")
+
+# Allows to get various RT gn options
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni")
+
+import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni")
+import(
+ "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni")
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni")
+
+assert(current_os == "freertos")
+assert(target_os == "freertos")
+assert(nxp_platform == "rt/rt1060")
+
+declare_args() {
+ # Allows to enable to ota_provider support
+ enable_ota_provider = false
+
+ # Allows to connect to a predefine Wi-Fi network at boot
+ wifi_auto_connect_at_boot = false
+ wifi_auto_connect_at_boot_ssid = ""
+ wifi_auto_connect_at_boot_password = ""
+
+ # Setup discriminator as argument
+ setup_discriminator = 3840
+
+ chip_with_diag_logs_demo = true
+}
+
+example_platform_dir =
+ "${nxp_sdk_matter_support_root}/examples/platform/${nxp_platform}"
+common_example_dir = "${chip_root}/examples/platform/nxp/common"
+
+app_common_folder = "thermostat/nxp/zap"
+
+# Create here the SDK instance.
+# Particular sources/defines/includes could be added/changed depending on the target application.
+rt_sdk("sdk") {
+ defines = []
+
+ cflags = []
+ public_deps = []
+ public_configs = []
+ sources = []
+ include_dirs = []
+
+ # Indicate paths to default board files
+ include_dirs += [ "${example_platform_dir}/board/" ]
+
+ # RT1060 rev A use same pin mux as rev B
+ # If user needs different pin mux files for rev A and rev B boards, the source and include from below needs to be updated accordingly
+ if (evkname == "evkmimxrt1060") {
+ include_dirs += [ "${example_platform_dir}/board/evkbmimxrt1060/" ]
+ sources += [ "${example_platform_dir}/board/evkbmimxrt1060/pin_mux.c" ]
+ } else {
+ include_dirs += [ "${example_platform_dir}/board/${evkname}/" ]
+ sources += [ "${example_platform_dir}/board/${evkname}/pin_mux.c" ]
+ }
+ sources += [ "${example_platform_dir}/board/hardware_init.c" ]
+ sources += [ "${example_platform_dir}/board/clock_config.c" ]
+ sources += [ "${example_platform_dir}/board/board.c" ]
+ sources += [ "${example_platform_dir}/board/peripherals.c" ]
+
+ # Indicate the path to CHIPProjectConfig.h
+ include_dirs += [ "include/config" ]
+
+ # Indicate the default path to FreeRTOSConfig.h
+ include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ]
+
+ # Indicate the default path to OpenThreadConfig.h
+ include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ]
+
+ # For matter with BR feature, increase FreeRTOS heap size and enable TBR cluster
+ if (chip_enable_wifi && chip_enable_openthread) {
+ defines += [
+ "configTOTAL_HEAP_SIZE=(size_t)(170 * 1024)",
+ "CHIP_DEVICE_CONFIG_ENABLE_TBR=1",
+ ]
+ }
+
+ defines += [
+ "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}",
+ ]
+}
+
+# Create the SDK driver instance.
+# Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template
+rt1060_sdk_drivers("sdk_driver") {
+}
+
+rt_executable("thermostat") {
+ output_name = "chip-rt1060-thermostat-example"
+
+ defines = [
+ "CONFIG_RENDEZVOUS_MODE=7",
+ "CONFIG_APP_FREERTOS_OS=1",
+ ]
+
+ if (chip_enable_openthread) {
+ defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ]
+ }
+
+ if (chip_with_diag_logs_demo) {
+ defines += [
+ "CONFIG_DIAG_LOGS_DEMO=1",
+ "CHIP_DEVICE_CONFIG_MAX_DIAG_LOG_SIZE=1024",
+ ]
+ }
+
+ include_dirs = [
+ "../../common/main/include",
+ "../../common/main",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/include",
+ "${chip_root}/examples/providers/",
+ ]
+
+ sources = [
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp",
+ "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp",
+ "../../common/main/AppTask.cpp",
+ "../../common/main/DeviceCallbacks.cpp",
+ "../../common/main/ZclCallbacks.cpp",
+ "../../common/main/include/AppEvent.h",
+ "../../common/main/include/AppTask.h",
+ "../../common/main/include/DeviceCallbacks.h",
+ "../../common/main/main.cpp",
+ ]
+
+ if (chip_with_diag_logs_demo) {
+ include_dirs += [
+ "${common_example_dir}/diagnostic_logs/include",
+ "${chip_root}",
+ ]
+ sources += [
+ "${common_example_dir}/diagnostic_logs/source/DiagnosticLogsDemo.cpp",
+ "${common_example_dir}/diagnostic_logs/source/DiagnosticLogsProviderDelegateImpl.cpp",
+ ]
+ }
+
+ # App common files
+ include_dirs += [
+ "${common_example_dir}/icd/include",
+ "${common_example_dir}/matter_cli/include",
+ "${common_example_dir}/device_manager/include",
+ "${common_example_dir}/device_callbacks/include",
+ "${common_example_dir}/matter_button/include",
+ "${common_example_dir}/factory_data/include",
+ "${common_example_dir}/app_task/include",
+ ]
+
+ sources += [
+ "${chip_root}/examples/platform/nxp/${nxp_platform}/factory_data/source/AppFactoryDataExample.cpp",
+ "${common_example_dir}/app_task/source/AppTaskBase.cpp",
+ "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp",
+ "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp",
+ "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp",
+ "${common_example_dir}/icd/source/ICDUtil.cpp",
+ "${common_example_dir}/matter_button/source/ButtonDefault.cpp",
+ "${common_example_dir}/matter_button/source/ButtonManager.cpp",
+ "${common_example_dir}/matter_button/source/ButtonRegistrationDefault.cpp",
+ ]
+
+ deps = [ "${chip_root}/examples/${app_common_folder}" ]
+
+ if (chip_enable_matter_cli) {
+ defines += [ "ENABLE_CHIP_SHELL" ]
+ deps += [
+ "${chip_root}/examples/shell/shell_common:shell_common",
+ "${chip_root}/src/lib/shell:shell",
+ ]
+ sources += [
+ "${common_example_dir}/matter_cli/source/AppCLIBase.cpp",
+ "${common_example_dir}/matter_cli/source/AppCLIFreeRTOS.cpp",
+ ]
+ }
+
+ if (chip_enable_ota_requestor) {
+ sources += [
+ "${chip_root}/examples/platform/nxp/common/mcuboot_app_support/flash_partitioning.h",
+ "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp",
+ "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp",
+
+ #Adding mcuboot files
+ "${chip_root}/examples/platform/nxp/common/mcuboot_app_support/mcuboot_app_support.c",
+ "${chip_root}/examples/platform/nxp/common/mcuboot_app_support/mcuboot_app_support.h",
+ ]
+ include_dirs += [
+ "$${common_example_dir}/ota_requestor/include",
+ "${chip_root}/examples/platform/nxp/common/mcuboot_app_support",
+ ]
+ }
+
+ if (wifi_auto_connect_at_boot) {
+ assert(wifi_auto_connect_at_boot_ssid != "" &&
+ wifi_auto_connect_at_boot_password != "",
+ "WiFi SSID and password must be specified at build time!")
+
+ defines += [
+ "CONFIG_CHIP_APP_WIFI_CONNECT_AT_BOOT=1",
+ "CONFIG_CHIP_APP_WIFI_SSID=\"${wifi_auto_connect_at_boot_ssid}\"",
+ "CONFIG_CHIP_APP_WIFI_PASSWORD=\"${wifi_auto_connect_at_boot_password}\"",
+ ]
+
+ include_dirs += [ "${common_example_dir}/wifi_connect/include" ]
+ sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ]
+ }
+
+ if (enable_ota_provider) {
+ defines += [ "CONFIG_CHIP_OTA_PROVIDER=1" ]
+
+ include_dirs += [
+ "${common_example_dir}/ota_provider/include",
+ "${common_example_dir}/ota_provider/ota-provider-common",
+ ]
+
+ sources += [
+ "${common_example_dir}/ota_provider/ota-provider-common/RTBdxOtaSender.cpp",
+ "${common_example_dir}/ota_provider/ota-provider-common/RTOTAProviderExample.cpp",
+ "${common_example_dir}/ota_provider/source/OTAProvider.cpp",
+ ]
+
+ deps += [
+ "${chip_root}/src/app/server",
+ "${chip_root}/src/protocols/bdx",
+ "${chip_root}/third_party/jsoncpp",
+ ]
+ }
+
+ # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false
+ # The would add to the build a dedicated application assert implementation.
+ if (!sdk_fsl_assert_support) {
+ sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ]
+ }
+
+ cflags = [ "-Wconversion" ]
+
+ ldscript =
+ "${example_platform_dir}/app/ldscripts/MIMXRT1062xxxxx_flexspi_nor.ld"
+
+ inputs = [ ldscript ]
+
+ ldflags = [
+ "-T" + rebase_path(ldscript, root_build_dir),
+ "-fno-common",
+ "-Wl,--defsym=__stack_size__=2048",
+ "-ffreestanding",
+ "-fno-builtin",
+ "-mapcs",
+ "-u qspiflash_config",
+ "-u image_vector_table",
+ "-u boot_data",
+ "-u dcd_data",
+ "-Wl,-print-memory-usage",
+ "-Wl,--no-warn-rwx-segments",
+ ]
+
+ if (enable_ota_provider) {
+ # As the OTA file will be stored in the littlefs file system, it is required to increase the size of the file system
+ # To be able to store an OTA file with a MAX size of 640K,
+ # it recommended to size the file system with:
+ # 161 sectors of 4K => reserved for the OTA file
+ # 32 sectors of 4K => reserved for Matter/OT/BLE settings storage
+ ldflags += [ "-Wl,--defsym=gNVMSectorCountLink_d=193" ]
+ }
+
+ if (chip_enable_ota_requestor) {
+ # If OTA build flag is enabled,
+ # we would need to reserve enough space for the bootloader (MCUBoot)
+ # MCUBoot requires 0x11000 Bytes to be reserved at the base of the flash
+ # Consequently, some sections will need to be shifted
+ ldflags += [ "-Wl,--defsym=__mcu_boot_size__=0x11000" ]
+ }
+
+ output_dir = root_out_dir
+}
+
+group("rt1060") {
+ deps = [ ":thermostat" ]
+}
+
+group("default") {
+ deps = [ ":rt1060" ]
+}
diff --git a/examples/thermostat/nxp/rt/rt1060/README.md b/examples/thermostat/nxp/rt/rt1060/README.md
new file mode 100644
index 0000000..62d4847
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1060/README.md
@@ -0,0 +1,5 @@
+# CHIP RT1060 Thermostat Application
+
+All instructions describing how to use a Matter application on NXP RT1060 can be
+found in [README.md](../../../../all-clusters-app/nxp/rt/rt1060/README.md) root
+readme
diff --git a/examples/thermostat/nxp/rt/rt1060/args.gni b/examples/thermostat/nxp/rt/rt1060/args.gni
new file mode 100644
index 0000000..c2d91a5
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1060/args.gni
@@ -0,0 +1,19 @@
+# Copyright (c) 2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/chip.gni")
+
+# SDK target definitions
+nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain")
+nxp_sdk_driver_target = get_label_info(":sdk_driver", "label_no_toolchain")
diff --git a/examples/thermostat/nxp/rt/rt1060/build_overrides b/examples/thermostat/nxp/rt/rt1060/build_overrides
new file mode 120000
index 0000000..f108670
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1060/build_overrides
@@ -0,0 +1 @@
+../../../../build_overrides
\ No newline at end of file
diff --git a/examples/thermostat/nxp/rt/rt1060/include/config/CHIPProjectConfig.h b/examples/thermostat/nxp/rt/rt1060/include/config/CHIPProjectConfig.h
new file mode 100644
index 0000000..dd73c6c
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1060/include/config/CHIPProjectConfig.h
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Example project configuration file for CHIP.
+ *
+ * This is a place to put application or project-specific overrides
+ * to the default configuration values for general CHIP features.
+ *
+ */
+
+#pragma once
+
+/*
+ * Tells to the platform Factory Data Provider whether to use the example configuration or real/provisioned data.
+ */
+#ifndef CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+#define CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA 0
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID
+ *
+ * 0xFFF1: Test vendor.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID
+ *
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005
+
+#if !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+// Use a default pairing code if one hasn't been provisioned in flash.
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00
+#endif
+
+// Use a default pairing code if one hasn't been provisioned in flash.
+#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS"
+
+/**
+ * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER
+ *
+ * Enables the use of a hard-coded default serial number if none
+ * is found in CHIP NV storage.
+ */
+#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN"
+
+#endif /* !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA */
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION
+ *
+ * The hardware version number assigned to device or product by the device vendor. This
+ * number is scoped to the device product id, and typically corresponds to a revision of the
+ * physical device, a change to its packaging, and/or a change to its marketing presentation.
+ * This value is generally *not* incremented for device software versions.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100
+
+#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0"
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+ *
+ * A string identifying the software version running on the device.
+ * CHIP currently expects the software version to be in the format
+ * {MAJOR_VERSION}.0d{MINOR_VERSION}
+ */
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME
+#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors"
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App"
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION
+//-> format_version = 1
+//-> vendor_id = 0xFFF1
+//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B,
+// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A,
+// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029,
+// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038,
+// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047,
+// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056,
+// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ]
+//-> device_type_id = 0x0016
+//-> certificate_id = "ZIG20142ZB330003-24"
+//-> security_level = 0
+//-> security_information = 0
+//-> version_number = 0x2694
+//-> certification_type = 0
+//-> dac_origin_vendor_id is not present
+//-> dac_origin_product_id is not present
+#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \
+ { \
+ 0x30, 0x82, 0x02, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x0a, 0x30, \
+ 0x82, 0x02, 0x06, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, \
+ 0x02, 0x01, 0x30, 0x82, 0x01, 0x71, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, \
+ 0x01, 0x62, 0x04, 0x82, 0x01, 0x5e, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, \
+ 0x05, 0x01, 0x80, 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, \
+ 0x07, 0x80, 0x05, 0x08, 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, \
+ 0x80, 0x05, 0x0e, 0x80, 0x05, 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, \
+ 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, \
+ 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, \
+ 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, \
+ 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, \
+ 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, \
+ 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, \
+ 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, \
+ 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, \
+ 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, 0x4b, 0x80, 0x05, 0x4c, 0x80, \
+ 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, 0x05, 0x52, 0x80, 0x05, \
+ 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, 0x80, 0x05, 0x59, \
+ 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, 0x5f, 0x80, \
+ 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, 0x13, \
+ 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, \
+ 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x94, 0x26, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, \
+ 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, \
+ 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \
+ 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x24, 0xe5, \
+ 0xd1, 0xf4, 0x7a, 0x7d, 0x7b, 0x0d, 0x20, 0x6a, 0x26, 0xef, 0x69, 0x9b, 0x7c, 0x97, 0x57, 0xb7, 0x2d, 0x46, 0x90, \
+ 0x89, 0xde, 0x31, 0x92, 0xe6, 0x78, 0xc7, 0x45, 0xe7, 0xf6, 0x0c, 0x02, 0x21, 0x00, 0xf8, 0xaa, 0x2f, 0xa7, 0x11, \
+ 0xfc, 0xb7, 0x9b, 0x97, 0xe3, 0x97, 0xce, 0xda, 0x66, 0x7b, 0xae, 0x46, 0x4e, 0x2b, 0xd3, 0xff, 0xdf, 0xc3, 0xcc, \
+ 0xed, 0x7a, 0xa8, 0xca, 0x5f, 0x4c, 0x1a, 0x7c \
+ }
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC
+ *
+ * Enables synchronizing the device's real time clock with a remote CHIP Time service
+ * using the CHIP Time Sync protocol.
+ */
+// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1
+
+/**
+ * CHIP_CONFIG_MAX_BINDINGS
+ *
+ * Maximum number of simultaneously active bindings per ChipExchangeManager
+ * 1 (Time Sync) + 2 (Two 1-way subscriptions) + 1 (Software Update) = 4
+ * in the worst case. Keeping another 4 as buffer.
+ */
+#define CHIP_CONFIG_MAX_BINDINGS 6
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD
+ *
+ * Select the ability to offload event logs to any interested subscribers using WDM.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD 1
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS
+ *
+ * Enable recording UTC timestamps.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1
+
+/**
+ * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE
+ *
+ * A size, in bytes, of the individual debug event logging buffer.
+ */
+#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512)
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE
+ *
+ * For a development build, set the default importance of events to be logged as Debug.
+ * Since debug is the lowest importance level, this means all standard, critical, info and
+ * debug importance level vi events get logged.
+ */
+#if BUILD_RELEASE
+#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production
+#else
+#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug
+#endif // BUILD_RELEASE
+
+/* Increasing the retransmission interval of the MRP messages after subsequent failures */
+#ifndef CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL
+#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (2000_ms32)
+#endif
diff --git a/examples/thermostat/nxp/rt/rt1060/third_party/connectedhomeip b/examples/thermostat/nxp/rt/rt1060/third_party/connectedhomeip
new file mode 120000
index 0000000..305f207
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1060/third_party/connectedhomeip
@@ -0,0 +1 @@
+../../../../../..
\ No newline at end of file
diff --git a/examples/thermostat/nxp/rt/rt1170/.gn b/examples/thermostat/nxp/rt/rt1170/.gn
new file mode 100644
index 0000000..59dcfeb
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1170/.gn
@@ -0,0 +1,35 @@
+# Copyright (c) 2020 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+
+# The location of the build configuration file.
+buildconfig = "${build_root}/config/BUILDCONFIG.gn"
+
+# CHIP uses angle bracket includes.
+check_system_includes = true
+
+default_args = {
+ target_cpu = "arm"
+ target_os = "freertos"
+
+ import("//args.gni")
+
+ # Import common example GN args
+ import("${chip_root}/examples/platform/nxp/common/gn/args.gni")
+
+ # Import default platform configs
+ import("${chip_root}/src/platform/nxp/rt/rt1170/args.gni")
+}
diff --git a/examples/thermostat/nxp/rt/rt1170/BUILD.gn b/examples/thermostat/nxp/rt/rt1170/BUILD.gn
new file mode 100644
index 0000000..c89df14
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1170/BUILD.gn
@@ -0,0 +1,257 @@
+# Copyright (c) 2021-2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+import("//build_overrides/nxp_sdk.gni")
+import("//build_overrides/openthread.gni")
+import("${chip_root}/src/platform/device.gni")
+
+#allows to get common NXP SDK gn options
+import("${nxp_sdk_build_root}/nxp_sdk.gni")
+
+# Allows to get various RT gn options
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni")
+
+import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni")
+import(
+ "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni")
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni")
+
+assert(current_os == "freertos")
+assert(target_os == "freertos")
+assert(nxp_platform == "rt/rt1170")
+
+declare_args() {
+ # Allows to connect to a predefine Wi-Fi network at boot
+ wifi_auto_connect_at_boot = false
+ wifi_auto_connect_at_boot_ssid = ""
+ wifi_auto_connect_at_boot_password = ""
+
+ # Setup discriminator as argument
+ setup_discriminator = 3840
+
+ chip_with_diag_logs_demo = true
+}
+
+example_platform_dir =
+ "${nxp_sdk_matter_support_root}/examples/platform/${nxp_platform}"
+common_example_dir = "${chip_root}/examples/platform/nxp/common"
+
+app_common_folder = "thermostat/nxp/zap"
+
+# Create here the SDK instance.
+# Particular sources/defines/includes could be added/changed depending on the target application.
+rt_sdk("sdk") {
+ defines = []
+
+ cflags = []
+ public_deps = []
+ public_configs = []
+ sources = []
+ include_dirs = []
+
+ # Indicate paths to default board files
+ include_dirs += [ "${example_platform_dir}/board/" ]
+ sources += [ "${example_platform_dir}/board/pin_mux.c" ]
+ sources += [ "${example_platform_dir}/board/hardware_init.c" ]
+ sources += [ "${example_platform_dir}/board/clock_config.c" ]
+ sources += [ "${example_platform_dir}/board/board.c" ]
+ sources += [ "${example_platform_dir}/board/peripherals.c" ]
+ sources += [ "${example_platform_dir}/board/sdmmc_config.c" ]
+
+ # Indicate the path to CHIPProjectConfig.h
+ include_dirs += [ "include/config" ]
+
+ # Indicate the default path to FreeRTOSConfig.h
+ include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ]
+
+ # Indicate the default path to OpenThreadConfig.h
+ include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ]
+
+ # For matter with BR feature, increase FreeRTOS heap size and enable TBR cluster
+ if (chip_enable_wifi && chip_enable_openthread) {
+ defines += [
+ "configTOTAL_HEAP_SIZE=(size_t)(170 * 1024)",
+ "CHIP_DEVICE_CONFIG_ENABLE_TBR=1",
+ ]
+ }
+ defines += [
+ "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}",
+ ]
+}
+
+# Create the SDK driver instance.
+# Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template
+rt1170_sdk_drivers("sdk_driver") {
+}
+
+rt_executable("thermostat") {
+ output_name = "chip-rt1170-thermostat-example"
+
+ defines = [
+ "CONFIG_RENDEZVOUS_MODE=7",
+ "CONFIG_APP_FREERTOS_OS=1",
+ ]
+
+ if (chip_enable_openthread) {
+ defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ]
+ }
+
+ if (chip_with_diag_logs_demo) {
+ defines += [
+ "CONFIG_DIAG_LOGS_DEMO=1",
+ "CHIP_DEVICE_CONFIG_MAX_DIAG_LOG_SIZE=1024",
+ ]
+ }
+
+ include_dirs = [
+ "../../common/main/include",
+ "../../common/main",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/include",
+ "${chip_root}/examples/providers/",
+ ]
+
+ sources = [
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp",
+ "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp",
+ "../../common/main/AppTask.cpp",
+ "../../common/main/DeviceCallbacks.cpp",
+ "../../common/main/ZclCallbacks.cpp",
+ "../../common/main/include/AppEvent.h",
+ "../../common/main/include/AppTask.h",
+ "../../common/main/include/DeviceCallbacks.h",
+ "../../common/main/main.cpp",
+ ]
+
+ if (chip_with_diag_logs_demo) {
+ include_dirs += [
+ "${common_example_dir}/diagnostic_logs/include",
+ "${chip_root}",
+ ]
+ sources += [
+ "${common_example_dir}/diagnostic_logs/source/DiagnosticLogsDemo.cpp",
+ "${common_example_dir}/diagnostic_logs/source/DiagnosticLogsProviderDelegateImpl.cpp",
+ ]
+ }
+
+ # App common files
+ include_dirs += [
+ "${common_example_dir}/icd/include",
+ "${common_example_dir}/matter_button/include",
+ "${common_example_dir}/matter_cli/include",
+ "${common_example_dir}/device_manager/include",
+ "${common_example_dir}/device_callbacks/include",
+ "${common_example_dir}/factory_data/include",
+ "${common_example_dir}/app_task/include",
+ ]
+
+ sources += [
+ "${common_example_dir}/app_task/source/AppTaskBase.cpp",
+ "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp",
+ "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp",
+ "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp",
+ "${common_example_dir}/factory_data/source/AppFactoryDataDefaultImpl.cpp",
+ "${common_example_dir}/icd/source/ICDUtil.cpp",
+ "${common_example_dir}/matter_button/source/ButtonRegistrationEmpty.cpp",
+ ]
+
+ deps = [ "${chip_root}/examples/${app_common_folder}" ]
+
+ if (chip_enable_matter_cli) {
+ defines += [ "ENABLE_CHIP_SHELL" ]
+ deps += [
+ "${chip_root}/examples/shell/shell_common:shell_common",
+ "${chip_root}/src/lib/shell:shell",
+ ]
+ sources += [
+ "${common_example_dir}/matter_cli/source/AppCLIBase.cpp",
+ "${common_example_dir}/matter_cli/source/AppCLIFreeRTOS.cpp",
+ ]
+ }
+
+ if (chip_enable_ota_requestor) {
+ include_dirs += [ "${common_example_dir}/ota_requestor/include" ]
+ sources += [
+ "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp",
+ "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp",
+ ]
+ }
+
+ if (wifi_auto_connect_at_boot) {
+ assert(wifi_auto_connect_at_boot_ssid != "" &&
+ wifi_auto_connect_at_boot_password != "",
+ "WiFi SSID and password must be specified at build time!")
+
+ defines += [
+ "CONFIG_CHIP_APP_WIFI_CONNECT_AT_BOOT=1",
+ "CONFIG_CHIP_APP_WIFI_SSID=\"${wifi_auto_connect_at_boot_ssid}\"",
+ "CONFIG_CHIP_APP_WIFI_PASSWORD=\"${wifi_auto_connect_at_boot_password}\"",
+ ]
+
+ include_dirs += [ "${common_example_dir}/wifi_connect/include" ]
+ sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ]
+ }
+
+ # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false
+ # The would add to the build a dedicated application assert implementation.
+ if (!sdk_fsl_assert_support) {
+ sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ]
+ }
+
+ cflags = [ "-Wconversion" ]
+
+ ldscript =
+ "${example_platform_dir}/app/ldscripts/MIMXRT1176xxxxx_cm7_flexspi_nor.ld"
+
+ inputs = [ ldscript ]
+
+ ldflags = [
+ "-T" + rebase_path(ldscript, root_build_dir),
+ "-fno-common",
+ "-Wl,--defsym=__stack_size__=2048",
+ "-ffreestanding",
+ "-fno-builtin",
+ "-mapcs",
+ "-u qspiflash_config",
+ "-u image_vector_table",
+ "-u boot_data",
+ "-u dcd_data",
+ "-Wl,-print-memory-usage",
+ "-Wl,--no-warn-rwx-segments",
+ ]
+
+ if (chip_enable_ota_requestor) {
+ if (no_mcuboot) {
+ # If "no_mcuboot" is set to true, the application will be linked at the base of the flash.
+ print(
+ "Warning : The OTA Requestor is enabled without MCUBoot. This will prevent the application from applying software updates.")
+ } else {
+ # we need to reserve enough space for the bootloader (MCUBoot)
+ # MCUBoot requires 0x40000 Bytes to be reserved at the base of the flash
+ # Consequently, some sections will need to be shifted
+ ldflags += [ "-Wl,--defsym=__m_mcuboot_size__=0x40000" ]
+ }
+ }
+
+ output_dir = root_out_dir
+}
+
+group("rt1170") {
+ deps = [ ":thermostat" ]
+}
+
+group("default") {
+ deps = [ ":rt1170" ]
+}
diff --git a/examples/thermostat/nxp/rt/rt1170/README.md b/examples/thermostat/nxp/rt/rt1170/README.md
new file mode 100644
index 0000000..9710175
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1170/README.md
@@ -0,0 +1,5 @@
+# CHIP RT1170 Thermostat Application
+
+All instructions describing how to use a Matter application on NXP RT11170 can
+be found in [README.md](../../../../all-clusters-app/nxp/rt/rt1170/README.md)
+root readme
diff --git a/examples/thermostat/nxp/rt/rt1170/args.gni b/examples/thermostat/nxp/rt/rt1170/args.gni
new file mode 100644
index 0000000..c2d91a5
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1170/args.gni
@@ -0,0 +1,19 @@
+# Copyright (c) 2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/chip.gni")
+
+# SDK target definitions
+nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain")
+nxp_sdk_driver_target = get_label_info(":sdk_driver", "label_no_toolchain")
diff --git a/examples/thermostat/nxp/rt/rt1170/build_overrides b/examples/thermostat/nxp/rt/rt1170/build_overrides
new file mode 120000
index 0000000..f108670
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1170/build_overrides
@@ -0,0 +1 @@
+../../../../build_overrides
\ No newline at end of file
diff --git a/examples/thermostat/nxp/rt/rt1170/include/config/CHIPProjectConfig.h b/examples/thermostat/nxp/rt/rt1170/include/config/CHIPProjectConfig.h
new file mode 100644
index 0000000..dd73c6c
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1170/include/config/CHIPProjectConfig.h
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Example project configuration file for CHIP.
+ *
+ * This is a place to put application or project-specific overrides
+ * to the default configuration values for general CHIP features.
+ *
+ */
+
+#pragma once
+
+/*
+ * Tells to the platform Factory Data Provider whether to use the example configuration or real/provisioned data.
+ */
+#ifndef CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+#define CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA 0
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID
+ *
+ * 0xFFF1: Test vendor.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID
+ *
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005
+
+#if !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA
+// Use a default pairing code if one hasn't been provisioned in flash.
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00
+#endif
+
+// Use a default pairing code if one hasn't been provisioned in flash.
+#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS"
+
+/**
+ * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER
+ *
+ * Enables the use of a hard-coded default serial number if none
+ * is found in CHIP NV storage.
+ */
+#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN"
+
+#endif /* !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA */
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION
+ *
+ * The hardware version number assigned to device or product by the device vendor. This
+ * number is scoped to the device product id, and typically corresponds to a revision of the
+ * physical device, a change to its packaging, and/or a change to its marketing presentation.
+ * This value is generally *not* incremented for device software versions.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100
+
+#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0"
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+ *
+ * A string identifying the software version running on the device.
+ * CHIP currently expects the software version to be in the format
+ * {MAJOR_VERSION}.0d{MINOR_VERSION}
+ */
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME
+#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors"
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App"
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION
+//-> format_version = 1
+//-> vendor_id = 0xFFF1
+//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B,
+// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A,
+// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029,
+// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038,
+// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047,
+// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056,
+// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ]
+//-> device_type_id = 0x0016
+//-> certificate_id = "ZIG20142ZB330003-24"
+//-> security_level = 0
+//-> security_information = 0
+//-> version_number = 0x2694
+//-> certification_type = 0
+//-> dac_origin_vendor_id is not present
+//-> dac_origin_product_id is not present
+#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \
+ { \
+ 0x30, 0x82, 0x02, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x0a, 0x30, \
+ 0x82, 0x02, 0x06, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, \
+ 0x02, 0x01, 0x30, 0x82, 0x01, 0x71, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, \
+ 0x01, 0x62, 0x04, 0x82, 0x01, 0x5e, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, \
+ 0x05, 0x01, 0x80, 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, \
+ 0x07, 0x80, 0x05, 0x08, 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, \
+ 0x80, 0x05, 0x0e, 0x80, 0x05, 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, \
+ 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, \
+ 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, \
+ 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, \
+ 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, \
+ 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, \
+ 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, \
+ 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, \
+ 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, \
+ 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, 0x4b, 0x80, 0x05, 0x4c, 0x80, \
+ 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, 0x05, 0x52, 0x80, 0x05, \
+ 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, 0x80, 0x05, 0x59, \
+ 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, 0x5f, 0x80, \
+ 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, 0x13, \
+ 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, \
+ 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x94, 0x26, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, \
+ 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, \
+ 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \
+ 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x24, 0xe5, \
+ 0xd1, 0xf4, 0x7a, 0x7d, 0x7b, 0x0d, 0x20, 0x6a, 0x26, 0xef, 0x69, 0x9b, 0x7c, 0x97, 0x57, 0xb7, 0x2d, 0x46, 0x90, \
+ 0x89, 0xde, 0x31, 0x92, 0xe6, 0x78, 0xc7, 0x45, 0xe7, 0xf6, 0x0c, 0x02, 0x21, 0x00, 0xf8, 0xaa, 0x2f, 0xa7, 0x11, \
+ 0xfc, 0xb7, 0x9b, 0x97, 0xe3, 0x97, 0xce, 0xda, 0x66, 0x7b, 0xae, 0x46, 0x4e, 0x2b, 0xd3, 0xff, 0xdf, 0xc3, 0xcc, \
+ 0xed, 0x7a, 0xa8, 0xca, 0x5f, 0x4c, 0x1a, 0x7c \
+ }
+#endif
+
+/**
+ * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC
+ *
+ * Enables synchronizing the device's real time clock with a remote CHIP Time service
+ * using the CHIP Time Sync protocol.
+ */
+// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1
+
+/**
+ * CHIP_CONFIG_MAX_BINDINGS
+ *
+ * Maximum number of simultaneously active bindings per ChipExchangeManager
+ * 1 (Time Sync) + 2 (Two 1-way subscriptions) + 1 (Software Update) = 4
+ * in the worst case. Keeping another 4 as buffer.
+ */
+#define CHIP_CONFIG_MAX_BINDINGS 6
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD
+ *
+ * Select the ability to offload event logs to any interested subscribers using WDM.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD 1
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS
+ *
+ * Enable recording UTC timestamps.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1
+
+/**
+ * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE
+ *
+ * A size, in bytes, of the individual debug event logging buffer.
+ */
+#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512)
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE
+ *
+ * For a development build, set the default importance of events to be logged as Debug.
+ * Since debug is the lowest importance level, this means all standard, critical, info and
+ * debug importance level vi events get logged.
+ */
+#if BUILD_RELEASE
+#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production
+#else
+#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug
+#endif // BUILD_RELEASE
+
+/* Increasing the retransmission interval of the MRP messages after subsequent failures */
+#ifndef CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL
+#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (2000_ms32)
+#endif
diff --git a/examples/thermostat/nxp/rt/rt1170/third_party/connectedhomeip b/examples/thermostat/nxp/rt/rt1170/third_party/connectedhomeip
new file mode 120000
index 0000000..305f207
--- /dev/null
+++ b/examples/thermostat/nxp/rt/rt1170/third_party/connectedhomeip
@@ -0,0 +1 @@
+../../../../../..
\ No newline at end of file
diff --git a/scripts/build/build/targets.py b/scripts/build/build/targets.py
index 42738ad..c49d620 100755
--- a/scripts/build/build/targets.py
+++ b/scripts/build/build/targets.py
@@ -517,6 +517,8 @@
target.AppendFixedTargets([
TargetPart('k32w0', board=NxpBoard.K32W0),
TargetPart('k32w1', board=NxpBoard.K32W1),
+ TargetPart('rt1060', board=NxpBoard.RT1060),
+ TargetPart('rt1170', board=NxpBoard.RT1170),
TargetPart('rw61x', board=NxpBoard.RW61X),
TargetPart('rw61x_eth', board=NxpBoard.RW61X_ETH),
TargetPart('mcxw71', board=NxpBoard.MCXW71)
@@ -533,9 +535,9 @@
TargetPart('lighting', app=NxpApp.LIGHTING).OnlyIfRe('(k32w0|k32w1|mcxw71)'),
TargetPart('contact-sensor', app=NxpApp.CONTACT).OnlyIfRe('(k32w0|k32w1|mcxw71)'),
TargetPart('lock-app', app=NxpApp.LOCK_APP).OnlyIfRe('(k32w1|mcxw71)'),
- TargetPart('all-clusters', app=NxpApp.ALLCLUSTERS).OnlyIfRe('rw61x'),
- TargetPart('laundry-washer', app=NxpApp.LAUNDRYWASHER).OnlyIfRe('rw61x'),
- TargetPart('thermostat', app=NxpApp.THERMOSTAT).OnlyIfRe('rw61x')
+ TargetPart('all-clusters', app=NxpApp.ALLCLUSTERS).OnlyIfRe('rt1060|rt1170|rw61x'),
+ TargetPart('laundry-washer', app=NxpApp.LAUNDRYWASHER).OnlyIfRe('rt1060|rt1170|rw61x'),
+ TargetPart('thermostat', app=NxpApp.THERMOSTAT).OnlyIfRe('rt1060|rt1170|rw61x')
])
target.AppendModifier(name="factory", enable_factory_data=True)
@@ -547,15 +549,19 @@
target.AppendModifier(name="rotating-id", enable_rotating_id=True).ExceptIfRe('rw61x')
target.AppendModifier(name="sw-v2", has_sw_version_2=True)
target.AppendModifier(name="ota", enable_ota=True).ExceptIfRe('zephyr')
- target.AppendModifier(name="wifi", enable_wifi=True).OnlyIfRe('rw61x')
+ target.AppendModifier(name="wifi", enable_wifi=True).OnlyIfRe('rt1060|rt1170|rw61x')
target.AppendModifier(name="ethernet", enable_ethernet=True).OnlyIfRe('rw61x_eth-zephyr')
target.AppendModifier(name="thread", enable_thread=True).ExceptIfRe('zephyr')
target.AppendModifier(name="matter-shell", enable_shell=True).ExceptIfRe('k32w0|k32w1')
target.AppendModifier('data-model-disabled', data_model_interface="disabled").ExceptIfRe('-data-model-enabled')
target.AppendModifier('data-model-enabled', data_model_interface="enabled").ExceptIfRe('-data-model-disabled')
- target.AppendModifier(name="factory-build", enable_factory_data_build=True).OnlyIfRe('rw61x')
+ target.AppendModifier(name="factory-build", enable_factory_data_build=True).OnlyIfRe('rt1060|rt1170|rw61x')
target.AppendModifier(name="frdm", board_variant=NxpBoardVariant.FRDM).OnlyIfRe('rw61x')
target.AppendModifier(name="cmake", build_system=NxpBuildSystem.CMAKE).OnlyIfRe('rw61x')
+ target.AppendModifier(name="evkc", board_variant=NxpBoardVariant.EVKC).OnlyIfRe('rt1060')
+ target.AppendModifier(name="iw416", iw416_transceiver=True).OnlyIfRe('rt1060')
+ target.AppendModifier(name="w8801", w8801_transceiver=True).OnlyIfRe('rt1060')
+ target.AppendModifier(name="iwx12", iwx12_transceiver=True).OnlyIfRe('rt1060|rt1170')
return target
diff --git a/scripts/build/builders/nxp.py b/scripts/build/builders/nxp.py
index c78ea1c..6070a18 100644
--- a/scripts/build/builders/nxp.py
+++ b/scripts/build/builders/nxp.py
@@ -51,6 +51,8 @@
class NxpBoard(Enum):
K32W0 = auto()
K32W1 = auto()
+ RT1060 = auto()
+ RT1170 = auto()
RW61X = auto()
RW61X_ETH = auto()
MCXW71 = auto()
@@ -60,6 +62,10 @@
return 'k32w0x'
elif self == NxpBoard.K32W1:
return 'k32w1'
+ elif self == NxpBoard.RT1060:
+ return 'rt1060'
+ elif self == NxpBoard.RT1170:
+ return 'rt1170'
elif (self == NxpBoard.RW61X) or (self == NxpBoard.RW61X_ETH):
if os_env == NxpOsUsed.ZEPHYR:
if self == NxpBoard.RW61X_ETH:
@@ -78,6 +84,10 @@
return 'k32w0'
elif self == NxpBoard.K32W1:
return 'k32w1'
+ elif self == NxpBoard.RT1060:
+ return 'rt/rt1060'
+ elif self == NxpBoard.RT1170:
+ return 'rt/rt1170'
elif (self == NxpBoard.RW61X) or (self == NxpBoard.RW61X_ETH):
if os_env == NxpOsUsed.ZEPHYR:
return 'zephyr'
@@ -92,15 +102,16 @@
class NxpBoardVariant(Enum):
RD = auto()
FRDM = auto()
+ EVKC = auto()
+ EVKB = auto()
def BoardVariantName(self, board):
- if board != NxpBoard.RW61X:
- raise Exception('Board variants only supported for RW61X')
-
if self == NxpBoardVariant.RD:
return "rdrw612bga"
elif self == NxpBoardVariant.FRDM:
return "frdm"
+ elif self == NxpBoardVariant.EVKC:
+ return "evkcmimxrt1060"
class NxpApp(Enum):
@@ -173,7 +184,10 @@
enable_ota: bool = False,
data_model_interface: Optional[str] = None,
enable_factory_data_build: bool = False,
- disable_pairing_autostart: bool = False):
+ disable_pairing_autostart: bool = False,
+ iw416_transceiver: bool = False,
+ w8801_transceiver: bool = False,
+ iwx12_transceiver: bool = False):
super(NxpBuilder, self).__init__(
root=app.BuildRoot(root, board, os_env),
runner=runner)
@@ -200,6 +214,9 @@
self.enable_factory_data_build = enable_factory_data_build
self.disable_pairing_autostart = disable_pairing_autostart
self.board_variant = board_variant
+ self.iw416_transceiver = iw416_transceiver
+ self.w8801_transceiver = w8801_transceiver
+ self.iwx12_transceiver = iwx12_transceiver
def GnBuildArgs(self):
args = []
@@ -248,10 +265,32 @@
# thread is enabled by default on kw32
if self.board == NxpBoard.RW61X:
args.append('chip_enable_openthread=true chip_inet_config_enable_ipv4=false')
+ if self.board == NxpBoard.RT1060:
+ args.append('chip_enable_openthread=true chip_inet_config_enable_ipv4=false')
+ if self.board == NxpBoard.RT1170:
+ args.append('chip_enable_openthread=true chip_inet_config_enable_ipv4=false')
if self.data_model_interface is not None:
args.append(f'chip_use_data_model_interface="{self.data_model_interface}"')
+ if self.board_variant:
+ if self.board == NxpBoard.RT1060:
+ flag_board_variant = "evkname=\\\"%s\\\"" % self.board_variant.BoardVariantName(self.board)
+ args.append(flag_board_variant)
+ if self.board == NxpBoard.RW61X:
+ flag_board_variant = "board_version=\\\"%s\\\"" % self.board_variant.BoardVariantName(self.board)
+ args.append(flag_board_variant)
+
+ if self.iw416_transceiver:
+ args.append('iw416_transceiver=true')
+
+ if self.w8801_transceiver:
+ # BLE not supported on this transceiver
+ args.append('w8801_transceiver=true chip_enable_ble=false')
+
+ if self.iwx12_transceiver:
+ args.append('iwx12_transceiver=true')
+
return args
def CmakeBuildFlags(self):
diff --git a/scripts/build/testdata/all_targets_linux_x64.txt b/scripts/build/testdata/all_targets_linux_x64.txt
index c9a9a40..3a1c592 100644
--- a/scripts/build/testdata/all_targets_linux_x64.txt
+++ b/scripts/build/testdata/all_targets_linux_x64.txt
@@ -13,7 +13,7 @@
linux-x64-efr32-test-runner[-clang]
imx-{chip-tool,lighting-app,thermostat,all-clusters-app,all-clusters-minimal-app,ota-provider-app}[-release]
infineon-psoc6-{lock,light,all-clusters,all-clusters-minimal}[-ota][-updateimage][-trustm]
-nxp-{k32w0,k32w1,rw61x,rw61x_eth,mcxw71}-{zephyr,freertos}-{lighting,contact-sensor,lock-app,all-clusters,laundry-washer,thermostat}[-factory][-low-power][-lit][-fro32k][-smu2][-dac-conversion][-rotating-id][-sw-v2][-ota][-wifi][-ethernet][-thread][-matter-shell][-data-model-disabled][-data-model-enabled][-factory-build][-frdm][-cmake]
+nxp-{k32w0,k32w1,rt1060,rt1170,rw61x,rw61x_eth,mcxw71}-{zephyr,freertos}-{lighting,contact-sensor,lock-app,all-clusters,laundry-washer,thermostat}[-factory][-low-power][-lit][-fro32k][-smu2][-dac-conversion][-rotating-id][-sw-v2][-ota][-wifi][-ethernet][-thread][-matter-shell][-data-model-disabled][-data-model-enabled][-factory-build][-frdm][-cmake][-evkc][-iw416][-w8801][-iwx12]
mbed-cy8cproto_062_4343w-{lock,light,all-clusters,all-clusters-minimal,pigweed,ota-requestor,shell}[-release][-develop][-debug][-data-model-disabled][-data-model-enabled]
mw320-all-clusters-app
nrf-{nrf5340dk,nrf52840dk,nrf52840dongle}-{all-clusters,all-clusters-minimal,lock,light,light-switch,shell,pump,pump-controller,window-covering}[-rpc][-data-model-disabled][-data-model-enabled]
diff --git a/src/platform/nxp/rt/rt1060/BUILD.gn b/src/platform/nxp/rt/rt1060/BUILD.gn
new file mode 100644
index 0000000..1e3d8f1
--- /dev/null
+++ b/src/platform/nxp/rt/rt1060/BUILD.gn
@@ -0,0 +1,187 @@
+# Copyright (c) 2021 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+import("//build_overrides/nxp_sdk.gni")
+import("//build_overrides/openthread.gni")
+import("${chip_root}/src/platform/device.gni")
+
+# If external SDK is used, do not import ${nxp_sdk_name}.gni
+if (!nxp_external_sdk) {
+ import("${nxp_sdk_build_root}/${nxp_sdk_name}/${nxp_sdk_name}.gni")
+}
+
+import("${nxp_sdk_build_root}/nxp_sdk.gni")
+
+assert(chip_device_platform == "nxp")
+
+source_set("nxp_factory_data") {
+}
+source_set("nxp_ota") {
+}
+
+config("nxp_platform_config") {
+ defines = [ "EXTERNAL_BLEMANAGERIMPL_HEADER=\"platform/nxp/common/ble_zephyr/BLEManagerImpl.h\"" ]
+ include_dirs = [
+ ".",
+ "../../common",
+ ]
+ if (chip_with_factory_data == 1) {
+ include_dirs += [
+ ".",
+ "../../common/factory_data",
+ ]
+ defines += [ "CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA=1" ]
+ defines += [ "EXTERNAL_FACTORY_DATA_PROVIDER_IMPL_HEADER=\"platform/nxp/rt/rt1060/FactoryDataProviderImpl.h\"" ]
+ }
+
+ # When OTBR is enabled Thread network commissioning cluster is enabled using chip_enable_secondary_nwk_if
+ if (chip_enable_wifi && chip_enable_openthread &&
+ !chip_enable_secondary_nwk_if) {
+ defines += [ "_NO_GENERIC_THREAD_NETWORK_COMMISSIONING_DRIVER_" ]
+ }
+}
+
+static_library("nxp_platform") {
+ output_name = "libCHIP_NXP_Port_RT1060"
+ cflags = [
+ "-Wno-conversion",
+ "-Wno-sign-compare",
+ ]
+ deps = []
+ defines = []
+ sources = [
+ "../../../FreeRTOS/SystemTimeSupport.cpp",
+ "../../../SingletonConfigurationManager.cpp",
+ "../../common/CHIPDevicePlatformEvent.h",
+ "../../common/ConfigurationManagerImpl.cpp",
+ "../../common/ConfigurationManagerImpl.h",
+ "../../common/ConnectivityManagerImpl.cpp",
+ "../../common/ConnectivityManagerImpl.h",
+ "../../common/DiagnosticDataProviderImpl.cpp",
+ "../../common/DiagnosticDataProviderImpl.h",
+ "../../common/KeyValueStoreManagerImpl.cpp",
+ "../../common/KeyValueStoreManagerImpl.h",
+ "../../common/Logging.cpp",
+ "../../common/NXPConfig.cpp",
+ "../../common/NXPConfig.h",
+ "../../common/NetworkProvisioningServerImpl.h",
+ "../../common/PlatformManagerImpl.h",
+ "../../common/SoftwareUpdateManagerImpl.h",
+ "../../common/ram_storage.c",
+ "../../common/ram_storage.h",
+ "CHIPDevicePlatformConfig.h",
+ "PlatformManagerImpl.cpp",
+ ]
+
+ if (chip_enable_ble) {
+ sources += [
+ # Adding random file which defines the function sys_csrand_get which is called by BLEManagerImpl from Zephyr
+ "${nxp_sdk_build_root}/rt_sdk/sdk_hook/zephyr/random/random.cpp",
+ "../../common/ble_zephyr/BLEAdvertisingArbiter.cpp",
+ "../../common/ble_zephyr/BLEManagerImpl.cpp",
+ "../../common/ble_zephyr/BLEManagerImpl.h",
+ ]
+ }
+
+ public_deps = [ "${chip_root}/src/platform:platform_base" ]
+
+ deps += [
+ "${chip_root}/src/lib/dnssd:constants",
+ "${chip_root}/src/platform/logging:headers",
+ ]
+
+ # define CHIP_PLAT_NVM_SUPPORT - See NXPConfig.cpp for definition
+ if (nxp_nvm_component == "nvm_fwk") {
+ defines += [ "CHIP_PLAT_NVM_SUPPORT=1" ]
+ } else if (nxp_nvm_component == "littlefs") {
+ defines += [ "CHIP_PLAT_NVM_SUPPORT=2" ]
+ }
+
+ if (chip_enable_wifi) {
+ sources += [
+ "../../common/NetworkCommissioningDriver.h",
+ "../../common/NetworkCommissioningWiFiDriver.cpp",
+ ]
+ }
+ if (chip_enable_ota_requestor) {
+ sources += [
+ "../../common/OTAImageProcessorImpl.cpp",
+ "../../common/OTAImageProcessorImpl.h",
+ ]
+ }
+
+ if (chip_enable_openthread) {
+ sources += [
+ # Temporary fix, to be revert once PR #34662 is merged, build issue when using GN check argument
+ "${chip_root}/src/app/clusters/thread-border-router-management-server/thread-br-delegate.h",
+ "../../../OpenThread/GenericThreadBorderRouterDelegate.cpp",
+ "../../../OpenThread/GenericThreadBorderRouterDelegate.h",
+ "../../../OpenThread/OpenThreadUtils.cpp",
+ "../../common/ThreadStackManagerImpl.cpp",
+ "../../common/ThreadStackManagerImpl.h",
+ ]
+
+ deps += [ "${chip_root}/src/app/common:ids" ]
+
+ if (!nxp_build_matter_standalone_lib) {
+ deps += [ "${chip_root}/third_party/openthread:openthread" ]
+ public_deps +=
+ [ "${chip_root}/third_party/openthread:openthread-platform" ]
+ }
+
+ # dep required to include 'lib/spinel/spinel.h' in PlatformManagerImpl.cpp
+ deps += [ "${openthread_root}:libopenthread-spinel-rcp" ]
+
+ if (chip_mdns == "platform") {
+ if (chip_enable_wifi) {
+ sources += [
+ "../../../OpenThread/OpenThreadDnssdImpl.cpp",
+ "../../../OpenThread/OpenThreadDnssdImpl.h",
+ "../../common/DnssdImpl.cpp",
+ "../../common/DnssdImplBr.cpp",
+ "../../common/DnssdImplBr.h",
+ ]
+ } else {
+ sources += [
+ "../../../OpenThread/DnssdImpl.cpp",
+ "../../../OpenThread/OpenThreadDnssdImpl.cpp",
+ "../../../OpenThread/OpenThreadDnssdImpl.h",
+ ]
+ }
+ deps += [ "${chip_root}/src/lib/dnssd:platform_header" ]
+ }
+ }
+
+ if (chip_with_factory_data == 1) {
+ sources += [
+ "../../common/factory_data/FactoryDataProvider.cpp",
+ "../../common/factory_data/FactoryDataProvider.h",
+ "FactoryDataProviderImpl.cpp",
+ "FactoryDataProviderImpl.h",
+ ]
+
+ deps += [ "${chip_root}/src/credentials:credentials_header" ]
+ }
+
+ deps += [ "${nxp_sdk_build_root}:nxp_sdk" ]
+
+ public_deps += [
+ "${chip_root}/examples/platform/nxp/common/app/support:freertos_memory_utils",
+ "${chip_root}/src/crypto",
+ "${chip_root}/src/platform:syscalls_stub",
+ ]
+ public_configs = [ ":nxp_platform_config" ]
+}
diff --git a/src/platform/nxp/rt/rt1060/BlePlatformConfig.h b/src/platform/nxp/rt/rt1060/BlePlatformConfig.h
new file mode 100644
index 0000000..61ad3de
--- /dev/null
+++ b/src/platform/nxp/rt/rt1060/BlePlatformConfig.h
@@ -0,0 +1,36 @@
+/*
+ *
+ * Copyright (c) 2021-2022 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Platform-specific configuration overrides for the CHIP BLE
+ * Layer on RT1060 platforms using the NXP SDK.
+ *
+ */
+
+#pragma once
+
+// ==================== Platform Adaptations ====================
+
+/* Default NXP Platform adaptations are used */
+
+// ========== Platform-specific Configuration Overrides =========
+
+/* Default NXP Platform configuration overrides are used */
+
+// Include default nxp platform configurations
+#include "platform/nxp/common/ble_zephyr/BleNXPPlatformDefaultConfig.h"
diff --git a/src/platform/nxp/rt/rt1060/CHIPDevicePlatformConfig.h b/src/platform/nxp/rt/rt1060/CHIPDevicePlatformConfig.h
new file mode 100644
index 0000000..0e45bd4
--- /dev/null
+++ b/src/platform/nxp/rt/rt1060/CHIPDevicePlatformConfig.h
@@ -0,0 +1,42 @@
+/*
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Platform-specific configuration overrides for the chip Device Layer
+ * on NXP platforms using the NXP SDK.
+ */
+
+#pragma once
+
+// ==================== Platform Adaptations ====================
+
+/* Default NXP Platform adaptations are used */
+
+// ========== Platform-specific Configuration =========
+
+// These are configuration options that are unique to the NXP platform.
+// These can be overridden by the application as needed.
+
+// ========== Platform-specific Configuration Overrides =========
+
+/* Default NXP Platform configuration overrides are used */
+
+// Include default nxp platform configurations
+#include "platform/nxp/common/CHIPDeviceNXPPlatformDefaultConfig.h"
diff --git a/src/platform/nxp/rt/rt1060/CHIPPlatformConfig.h b/src/platform/nxp/rt/rt1060/CHIPPlatformConfig.h
new file mode 100644
index 0000000..7b08c5c
--- /dev/null
+++ b/src/platform/nxp/rt/rt1060/CHIPPlatformConfig.h
@@ -0,0 +1,54 @@
+/*
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Platform-specific configuration overrides for CHIP on
+ * NXP RT1060 platforms.
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+// ==================== General Platform Adaptations ====================
+
+/* Default NXP platform adaptations are used */
+
+// ==================== Security Adaptations ====================
+
+/* Default NXP Platform security adaptations are used */
+
+// ==================== General Configuration Overrides ====================
+
+/* Default NXP Platform general configuration overrides are used */
+
+/* For now on RT1060, due to the current file system implementation only 5 fabrics are supported */
+#define CHIP_CONFIG_MAX_FABRICS 5
+
+// ==================== Security Configuration Overrides ====================
+
+/* Default NXP Platform security configuration overrides are used */
+
+// ==================== WDM Configuration Overrides ====================
+
+/* Default NXP Platform WDM Configuration overrides are used */
+
+// Include default nxp platform configurations
+#include "platform/nxp/common/CHIPNXPPlatformDefaultConfig.h"
diff --git a/src/platform/nxp/rt/rt1060/FactoryDataProviderImpl.cpp b/src/platform/nxp/rt/rt1060/FactoryDataProviderImpl.cpp
new file mode 100644
index 0000000..3fac3c7
--- /dev/null
+++ b/src/platform/nxp/rt/rt1060/FactoryDataProviderImpl.cpp
@@ -0,0 +1,381 @@
+/*
+ *
+ * Copyright (c) 2022-2024 Project CHIP Authors
+ * Copyright 2023-2024 NXP
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "FactoryDataProviderImpl.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif /* __cplusplus */
+
+#include "fsl_dcp.h"
+#include "mflash_drv.h"
+
+#if defined(__cplusplus)
+}
+#endif /* __cplusplus */
+
+#ifndef FACTORY_DATA_PROVIDER_LOG
+#define FACTORY_DATA_PROVIDER_LOG 0
+#endif
+
+#if FACTORY_DATA_PROVIDER_LOG
+#include "fsl_debug_console.h"
+#define FACTORY_DATA_PROVIDER_PRINTF(...) \
+ PRINTF("[%s] ", __FUNCTION__); \
+ PRINTF(__VA_ARGS__); \
+ PRINTF("\n\r");
+#else
+#define FACTORY_DATA_PROVIDER_PRINTF(...)
+#endif
+
+#define BLOCK_SIZE_16_BYTES 16
+#define SHA256_OUTPUT_SIZE 32
+#define HASH_ID 0xCE47BA5E
+#define HASH_LEN 4
+#define CBC_INITIAL_VECTOR_SIZE 16
+
+/* Grab symbol for the base address from the linker file. */
+extern uint32_t __FACTORY_DATA_START_OFFSET[];
+extern uint32_t __FACTORY_DATA_SIZE[];
+
+namespace chip {
+namespace DeviceLayer {
+
+FactoryDataProviderImpl FactoryDataProviderImpl::sInstance;
+
+CHIP_ERROR FactoryDataProviderImpl::SearchForId(uint8_t searchedType, uint8_t * pBuf, size_t bufLength, uint16_t & length,
+ uint32_t * contentAddr)
+{
+ CHIP_ERROR err = CHIP_ERROR_NOT_FOUND;
+ uint8_t type = 0;
+ uint32_t index = 0;
+ uint8_t * addrContent = NULL;
+ uint8_t * factoryDataAddress = &factoryDataRamBuffer[0];
+ uint32_t factoryDataSize = sizeof(factoryDataRamBuffer);
+ uint16_t currentLen = 0;
+
+ while (index < factoryDataSize)
+ {
+ /* Read the type */
+ memcpy((uint8_t *) &type, factoryDataAddress + index, sizeof(type));
+ index += sizeof(type);
+
+ /* Read the len */
+ memcpy((uint8_t *) ¤tLen, factoryDataAddress + index, sizeof(currentLen));
+ index += sizeof(currentLen);
+
+ /* Check if the type gotten is the expected one */
+ if (searchedType == type)
+ {
+ FACTORY_DATA_PROVIDER_PRINTF("type = %d, currentLen = %d, bufLength =%d", type, currentLen, bufLength);
+ /* If pBuf is null it means that we only want to know if the Type has been found */
+ if (pBuf != NULL)
+ {
+ /* If the buffer given is too small, fill only the available space */
+ if (bufLength < currentLen)
+ {
+ currentLen = bufLength;
+ }
+ memcpy((uint8_t *) pBuf, factoryDataAddress + index, currentLen);
+ }
+ length = currentLen;
+ if (contentAddr != NULL)
+ {
+ *contentAddr = (uint32_t) factoryDataAddress + index;
+ }
+ err = CHIP_NO_ERROR;
+ break;
+ }
+ else if (type == 0)
+ {
+ /* No more type available , break the loop */
+ break;
+ }
+ else
+ {
+ /* Jump to next data */
+ index += currentLen;
+ }
+ }
+
+ return err;
+}
+
+CHIP_ERROR FactoryDataProviderImpl::SignWithDacKey(const ByteSpan & digestToSign, MutableByteSpan & outSignBuffer)
+{
+ Crypto::P256ECDSASignature signature;
+ Crypto::P256Keypair keypair;
+
+ VerifyOrReturnError(IsSpanUsable(outSignBuffer), CHIP_ERROR_INVALID_ARGUMENT);
+ VerifyOrReturnError(IsSpanUsable(digestToSign), CHIP_ERROR_INVALID_ARGUMENT);
+ VerifyOrReturnError(outSignBuffer.size() >= signature.Capacity(), CHIP_ERROR_BUFFER_TOO_SMALL);
+
+ // In a non-exemplary implementation, the public key is not needed here. It is used here merely because
+ // Crypto::P256Keypair is only (currently) constructable from raw keys if both private/public keys are present.
+ Crypto::P256PublicKey dacPublicKey;
+ uint16_t certificateSize = 0;
+ uint32_t certificateAddr;
+ ReturnErrorOnFailure(SearchForId(FactoryDataId::kDacCertificateId, NULL, 0, certificateSize, &certificateAddr));
+ MutableByteSpan dacCertSpan((uint8_t *) certificateAddr, certificateSize);
+
+ /* Extract Public Key of DAC certificate from itself */
+ ReturnErrorOnFailure(Crypto::ExtractPubkeyFromX509Cert(dacCertSpan, dacPublicKey));
+
+ /* Get private key of DAC certificate from reserved section */
+ uint16_t keySize = 0;
+ uint32_t keyAddr;
+ ReturnErrorOnFailure(SearchForId(FactoryDataId::kDacPrivateKeyId, NULL, 0, keySize, &keyAddr));
+ MutableByteSpan dacPrivateKeySpan((uint8_t *) keyAddr, keySize);
+
+ ReturnErrorOnFailure(LoadKeypairFromRaw(ByteSpan(dacPrivateKeySpan.data(), dacPrivateKeySpan.size()),
+ ByteSpan(dacPublicKey.Bytes(), dacPublicKey.Length()), keypair));
+
+ ReturnErrorOnFailure(keypair.ECDSA_sign_msg(digestToSign.data(), digestToSign.size(), signature));
+
+ return CopySpanToMutableSpan(ByteSpan{ signature.ConstBytes(), signature.Length() }, outSignBuffer);
+}
+
+CHIP_ERROR FactoryDataProviderImpl::LoadKeypairFromRaw(ByteSpan privateKey, ByteSpan publicKey, Crypto::P256Keypair & keypair)
+{
+ Crypto::P256SerializedKeypair serialized_keypair;
+ ReturnErrorOnFailure(serialized_keypair.SetLength(privateKey.size() + publicKey.size()));
+ memcpy(serialized_keypair.Bytes(), publicKey.data(), publicKey.size());
+ memcpy(serialized_keypair.Bytes() + publicKey.size(), privateKey.data(), privateKey.size());
+ return keypair.Deserialize(serialized_keypair);
+}
+
+CHIP_ERROR FactoryDataProviderImpl::Init(void)
+{
+ uint16_t len;
+ status_t status;
+ uint32_t factoryDataAddress = (uint32_t) __FACTORY_DATA_START_OFFSET;
+ uint32_t factoryDataSize = (uint32_t) __FACTORY_DATA_SIZE;
+ uint32_t hashId;
+ uint8_t currentBlock[BLOCK_SIZE_16_BYTES];
+ uint8_t calculatedHash[SHA256_OUTPUT_SIZE];
+ size_t outputHashSize = sizeof(calculatedHash);
+ uint16_t i;
+ CHIP_ERROR res;
+
+ /* Init mflash */
+ status = mflash_drv_init();
+
+ if (status != kStatus_Success || factoryDataSize > sizeof(factoryDataRamBuffer))
+ return CHIP_ERROR_INTERNAL;
+
+ /* Read hash id saved in flash */
+ if (mflash_drv_read(factoryDataAddress, (uint32_t *) &mHeader, sizeof(mHeader)) != kStatus_Success)
+ {
+ return CHIP_ERROR_INTERNAL;
+ }
+
+ if (mHeader.hashId != HASH_ID)
+ {
+ return CHIP_ERROR_NOT_FOUND;
+ }
+
+ /* Update address to start after hash id to read size of factory data */
+ factoryDataAddress += sizeof(mHeader);
+
+ /* Load the buffer into RAM by reading each 16 bytes blocks */
+ for (i = 0; i < (factoryDataSize / BLOCK_SIZE_16_BYTES); i++)
+ {
+ if (mflash_drv_read(factoryDataAddress + i * BLOCK_SIZE_16_BYTES, (uint32_t *) ¤tBlock[0], sizeof(currentBlock)) !=
+ kStatus_Success)
+ {
+ return CHIP_ERROR_INTERNAL;
+ }
+
+ /* Decrypt data if an encryptMode is set */
+ if (encryptMode != encrypt_none)
+ {
+ res = ReadEncryptedData(&factoryDataRamBuffer[i * BLOCK_SIZE_16_BYTES], ¤tBlock[0], sizeof(currentBlock));
+ if (res != CHIP_NO_ERROR)
+ return res;
+ }
+ else
+ {
+ /* Store the block unencrypted */
+ memcpy(&factoryDataRamBuffer[i * BLOCK_SIZE_16_BYTES], ¤tBlock[0], sizeof(currentBlock));
+ }
+ }
+
+ /* Calculate SHA256 value over the factory data and compare with stored value */
+ res = Hash256(&factoryDataRamBuffer[0], mHeader.size, &calculatedHash[0], &outputHashSize);
+
+ if (res != CHIP_NO_ERROR)
+ return res;
+
+ if (memcmp(&calculatedHash[0], &mHeader.hash[0], HASH_LEN) != 0)
+ {
+ return CHIP_ERROR_NOT_FOUND;
+ }
+
+ ReturnErrorOnFailure(SearchForId(FactoryDataId::kVerifierId, NULL, 0, len));
+ FACTORY_DATA_PROVIDER_PRINTF("[%d] len = %d", FactoryDataId::kVerifierId, len);
+ ReturnErrorOnFailure(SearchForId(FactoryDataId::kSaltId, NULL, 0, len));
+ FACTORY_DATA_PROVIDER_PRINTF("[%d] len = %d", FactoryDataId::kSaltId, len);
+ ReturnErrorOnFailure(SearchForId(FactoryDataId::kIcId, NULL, 0, len));
+ FACTORY_DATA_PROVIDER_PRINTF("[%d] len = %d", FactoryDataId::kIcId, len);
+ ReturnErrorOnFailure(SearchForId(FactoryDataId::kDacPrivateKeyId, NULL, 0, len));
+ FACTORY_DATA_PROVIDER_PRINTF("[%d] len = %d", FactoryDataId::kDacPrivateKeyId, len);
+ ReturnErrorOnFailure(SearchForId(FactoryDataId::kDacCertificateId, NULL, 0, len));
+ FACTORY_DATA_PROVIDER_PRINTF("[%d] len = %d", FactoryDataId::kDacCertificateId, len);
+ ReturnErrorOnFailure(SearchForId(FactoryDataId::kPaiCertificateId, NULL, 0, len));
+ FACTORY_DATA_PROVIDER_PRINTF("[%d] len = %d", FactoryDataId::kPaiCertificateId, len);
+ ReturnErrorOnFailure(SearchForId(FactoryDataId::kDiscriminatorId, NULL, 0, len));
+
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR FactoryDataProviderImpl::SetAes128Key(const uint8_t * keyAes128)
+{
+ CHIP_ERROR error = CHIP_ERROR_INVALID_ARGUMENT;
+ if (keyAes128 != nullptr)
+ {
+ pAesKey = keyAes128;
+ error = CHIP_NO_ERROR;
+ }
+ return error;
+}
+
+CHIP_ERROR FactoryDataProviderImpl::SetKeySelected(KeySelect key)
+{
+ CHIP_ERROR error = CHIP_ERROR_INVALID_ARGUMENT;
+ if (key <= kDCP_OCOTPKeyHigh)
+ {
+ selectedKey = key;
+ error = CHIP_NO_ERROR;
+ }
+ return error;
+}
+
+void FactoryDataProviderImpl::SetDCP_OTPKeySelect(void)
+{
+ switch (selectedKey)
+ {
+ case kDCP_OTPMKKeyLow:
+ IOMUXC_GPR->GPR3 &= ~(1 << IOMUXC_GPR_GPR3_DCP_KEY_SEL_SHIFT);
+ IOMUXC_GPR->GPR10 &= ~(1 << IOMUXC_GPR_GPR10_DCPKEY_OCOTP_OR_KEYMUX_SHIFT);
+ break;
+ case kDCP_OTPMKKeyHigh:
+ IOMUXC_GPR->GPR3 |= (1 << IOMUXC_GPR_GPR3_DCP_KEY_SEL_SHIFT);
+ IOMUXC_GPR->GPR10 &= ~(1 << IOMUXC_GPR_GPR10_DCPKEY_OCOTP_OR_KEYMUX_SHIFT);
+ break;
+ case kDCP_OCOTPKeyLow:
+ IOMUXC_GPR->GPR3 &= ~(1 << IOMUXC_GPR_GPR3_DCP_KEY_SEL_SHIFT);
+ IOMUXC_GPR->GPR10 |= (1 << IOMUXC_GPR_GPR10_DCPKEY_OCOTP_OR_KEYMUX_SHIFT);
+ break;
+ case kDCP_OCOTPKeyHigh:
+ IOMUXC_GPR->GPR3 |= (1 << IOMUXC_GPR_GPR3_DCP_KEY_SEL_SHIFT);
+ IOMUXC_GPR->GPR10 |= (1 << IOMUXC_GPR_GPR10_DCPKEY_OCOTP_OR_KEYMUX_SHIFT);
+ break;
+ default:
+ break;
+ }
+}
+
+CHIP_ERROR FactoryDataProviderImpl::SetCbcInitialVector(const uint8_t * iv, uint16_t ivSize)
+{
+ CHIP_ERROR error = CHIP_ERROR_INVALID_ARGUMENT;
+ if (ivSize == CBC_INITIAL_VECTOR_SIZE)
+ {
+ cbcInitialVector = iv;
+ error = CHIP_NO_ERROR;
+ }
+ return error;
+}
+
+CHIP_ERROR FactoryDataProviderImpl::SetEncryptionMode(EncryptionMode mode)
+{
+ CHIP_ERROR error = CHIP_ERROR_INVALID_ARGUMENT;
+ if (mode <= encrypt_cbc)
+ {
+ encryptMode = mode;
+ error = CHIP_NO_ERROR;
+ }
+ return error;
+}
+
+CHIP_ERROR FactoryDataProviderImpl::ReadEncryptedData(uint8_t * desBuff, uint8_t * sourceAddr, uint16_t sizeToRead)
+{
+ status_t status;
+ dcp_handle_t m_handle;
+ dcp_config_t dcpConfig;
+
+ /* Check that the length is aligned on 16 bytes */
+ if ((sizeToRead % 16) != 0)
+ return CHIP_ERROR_INVALID_ARGUMENT;
+
+ /* Check that the soft key has been correclty provisioned */
+ if (selectedKey == kDCP_UseSoftKey && pAesKey == nullptr)
+ return CHIP_ERROR_INVALID_ARGUMENT;
+
+ /* Check if the initial vector has been provisioned if CBC mode is chosen */
+ if (encryptMode == encrypt_cbc && cbcInitialVector == nullptr)
+ return CHIP_ERROR_INVALID_ARGUMENT;
+
+ if (!dcpDriverIsInitialized)
+ {
+ /* Initialize DCP */
+ DCP_GetDefaultConfig(&dcpConfig);
+ SetDCP_OTPKeySelect();
+ /* Reset and initialize DCP */
+ DCP_Init(DCP, &dcpConfig);
+ dcpDriverIsInitialized = true;
+ }
+
+ m_handle.channel = kDCP_Channel0;
+ m_handle.swapConfig = kDCP_NoSwap;
+
+ if (selectedKey == kDCP_UseSoftKey)
+ m_handle.keySlot = kDCP_KeySlot0;
+ else
+ m_handle.keySlot = kDCP_OtpKey;
+
+ status = DCP_AES_SetKey(DCP, &m_handle, pAesKey, 16);
+ if (status != kStatus_Success)
+ return CHIP_ERROR_INTERNAL;
+
+ if (encryptMode == encrypt_ecb)
+ DCP_AES_DecryptEcb(DCP, &m_handle, sourceAddr, desBuff, sizeToRead);
+ else
+ DCP_AES_DecryptCbc(DCP, &m_handle, sourceAddr, desBuff, sizeToRead, cbcInitialVector);
+
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR FactoryDataProviderImpl::Hash256(const uint8_t * input, size_t inputSize, uint8_t * output, size_t * outputSize)
+{
+ status_t status;
+ dcp_handle_t m_handle;
+
+ m_handle.channel = kDCP_Channel0;
+ m_handle.swapConfig = kDCP_NoSwap;
+ m_handle.keySlot = kDCP_KeySlot0;
+
+ status = DCP_HASH(DCP, &m_handle, kDCP_Sha256, input, inputSize, output, outputSize);
+
+ if (status != kStatus_Success)
+ return CHIP_ERROR_INTERNAL;
+
+ return CHIP_NO_ERROR;
+}
+
+} // namespace DeviceLayer
+} // namespace chip
diff --git a/src/platform/nxp/rt/rt1060/FactoryDataProviderImpl.h b/src/platform/nxp/rt/rt1060/FactoryDataProviderImpl.h
new file mode 100644
index 0000000..6eb65fa
--- /dev/null
+++ b/src/platform/nxp/rt/rt1060/FactoryDataProviderImpl.h
@@ -0,0 +1,104 @@
+/*
+ *
+ * Copyright (c) 2022-2024 Project CHIP Authors
+ * Copyright 2023-2024 NXP
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#pragma once
+
+#include <platform/nxp/common/factory_data/FactoryDataProvider.h>
+
+#define FACTORY_DATA_MAX_SIZE 4096
+
+namespace chip {
+namespace DeviceLayer {
+
+/**
+ * @brief This class provides Commissionable data and Device Attestation Credentials.
+ *
+ * This implementation allows to use the DCP RT1060 hardware module to load the Matter factory
+ * dataset in RAM at the boot.
+ *
+ * Depending on how the dataset have been encrypted, specific AES hardware of software keys can be
+ * used.
+ *
+ * Example of calls for loading the dataset using a software key:
+ *
+ * FactoryDataPrvdImpl().SetEncryptionMode(FactoryDataProvider::encrypt_ecb);
+ * FactoryDataPrvdImpl().SetAes128Key(&aes128TestKey[0]);
+ * FactoryDataPrvdImpl().Init();
+ *
+ * Example of calls for loading the dataset using a OTP key:
+ *
+ * FactoryDataPrvdImpl().SetEncryptionMode(FactoryDataProvider::encrypt_ecb);
+ * FactoryDataPrvdImpl().SetKeySelected(KeySelect::);
+ * FactoryDataPrvdImpl().Init();
+ */
+
+class FactoryDataProviderImpl : public FactoryDataProvider
+{
+public:
+ enum KeySelect
+ {
+ kDCP_UseSoftKey = 0U,
+ kDCP_OTPMKKeyLow = 1U, /* Use [127:0] from snvs key as dcp key */
+ kDCP_OTPMKKeyHigh = 2U, /* Use [255:128] from snvs key as dcp key */
+ kDCP_OCOTPKeyLow = 3U, /* Use [127:0] from ocotp key as dcp key */
+ kDCP_OCOTPKeyHigh = 4U /* Use [255:128] from ocotp key as dcp key */
+ };
+
+ static FactoryDataProviderImpl sInstance;
+
+ CHIP_ERROR Init(void);
+ CHIP_ERROR SearchForId(uint8_t searchedType, uint8_t * pBuf, size_t bufLength, uint16_t & length,
+ uint32_t * contentAddr = NULL);
+ CHIP_ERROR SignWithDacKey(const ByteSpan & digestToSign, MutableByteSpan & outSignBuffer);
+
+ CHIP_ERROR SetAes128Key(const uint8_t * keyAes128);
+ CHIP_ERROR SetKeySelected(KeySelect key);
+ CHIP_ERROR SetEncryptionMode(EncryptionMode mode);
+ CHIP_ERROR SetCbcInitialVector(const uint8_t * iv, uint16_t ivSize);
+
+private:
+ struct Header
+ {
+ uint32_t hashId;
+ uint32_t size;
+ uint8_t hash[4];
+ };
+ uint8_t factoryDataRamBuffer[FACTORY_DATA_MAX_SIZE];
+ Header mHeader;
+ const uint8_t * pAesKey = nullptr;
+ const uint8_t * cbcInitialVector = nullptr;
+ EncryptionMode encryptMode = encrypt_none;
+ KeySelect selectedKey;
+ bool dcpDriverIsInitialized;
+ void SetDCP_OTPKeySelect(void);
+ CHIP_ERROR ReadEncryptedData(uint8_t * desBuff, uint8_t * sourceAddr, uint16_t sizeToRead);
+ CHIP_ERROR Hash256(const uint8_t * input, size_t inputSize, uint8_t * output, size_t * outputSize);
+ CHIP_ERROR LoadKeypairFromRaw(ByteSpan privateKey, ByteSpan publicKey, Crypto::P256Keypair & keypair);
+};
+
+inline FactoryDataProvider & FactoryDataPrvd()
+{
+ return FactoryDataProviderImpl::sInstance;
+}
+
+inline FactoryDataProviderImpl & FactoryDataPrvdImpl()
+{
+ return FactoryDataProviderImpl::sInstance;
+}
+
+} // namespace DeviceLayer
+} // namespace chip
diff --git a/src/platform/nxp/rt/rt1060/InetPlatformConfig.h b/src/platform/nxp/rt/rt1060/InetPlatformConfig.h
new file mode 100644
index 0000000..b9153fd
--- /dev/null
+++ b/src/platform/nxp/rt/rt1060/InetPlatformConfig.h
@@ -0,0 +1,40 @@
+/*
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Platform-specific configuration overrides for the CHIP Inet
+ * Layer on RT1060 platforms using the NXP SDK.
+ *
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+// ==================== Platform Adaptations ====================
+
+/* Default NXP Platform adaptations are used */
+
+// ========== Platform-specific Configuration Overrides =========
+
+/* Default NXP Platform configuration overrides are used */
+
+// Include default nxp platform configurations
+#include "platform/nxp/common/InetNXPPlatformDefaultConfig.h"
diff --git a/src/platform/nxp/rt/rt1060/PlatformManagerImpl.cpp b/src/platform/nxp/rt/rt1060/PlatformManagerImpl.cpp
new file mode 100644
index 0000000..8ecdf01
--- /dev/null
+++ b/src/platform/nxp/rt/rt1060/PlatformManagerImpl.cpp
@@ -0,0 +1,548 @@
+/*
+ *
+ * Copyright (c) 2020-2024 Project CHIP Authors
+ * Copyright (c) 2020 Nest Labs, Inc.
+ * Copyright 2023-2024 NXP
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Provides an implementation of the PlatformManager object
+ * for RT1060 platforms using the NXP RT1060 SDK.
+ */
+/* this file behaves like a config.h, comes first */
+#include <platform/internal/CHIPDeviceLayerInternal.h>
+
+#include "DiagnosticDataProviderImpl.h"
+#include "fsl_adapter_rng.h"
+#include "fsl_os_abstraction.h"
+#include "fwk_platform_coex.h"
+#include "ksdk_mbedtls.h"
+#include <crypto/CHIPCryptoPAL.h>
+#include <platform/FreeRTOS/SystemTimeSupport.h>
+#include <platform/PlatformManager.h>
+#include <platform/internal/GenericPlatformManagerImpl_FreeRTOS.ipp>
+#include <stdlib.h>
+
+#ifdef WATCHDOG_ALLOWED
+#include "fsl_wdog.h"
+#endif
+
+#include <lwip/tcpip.h>
+
+#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR
+#include "OtaSupport.h"
+#endif
+
+#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
+#include "fwk_platform_ot.h"
+#include "ot_platform_common.h"
+#if CHIP_DEVICE_CONFIG_CHIPOBLE_DISABLE_ADVERTISING_WHEN_PROVISIONED
+#include "lib/spinel/spinel.h"
+#define OT_NXP_SPINEL_PROP_VENDOR_BLE_STATE SPINEL_PROP_VENDOR__BEGIN
+#endif /* CHIP_DEVICE_CONFIG_CHIPOBLE_DISABLE_ADVERTISING_WHEN_PROVISIONED */
+#endif
+
+#if !CHIP_DEVICE_CONFIG_ENABLE_THREAD && !CHIP_DEVICE_CONFIG_ENABLE_WPA
+
+#include "board.h"
+#include "clock_config.h"
+#include "fsl_phy.h"
+#include "fsl_silicon_id.h"
+#include "pin_mux.h"
+
+#include "fsl_enet_mdio.h"
+#include "fsl_phyksz8081.h"
+
+#include "enet_ethernetif.h"
+#include "fsl_debug_console.h"
+#include "lwip/netif.h"
+#include "lwip/netifapi.h"
+#include "lwip/opt.h"
+#include "lwip/tcpip.h"
+#include "netif/ethernet.h"
+
+//----LWIP defines----//
+
+/* Address of PHY interface. */
+#define EXAMPLE_PHY_ADDRESS BOARD_ENET0_PHY_ADDRESS
+
+/* MDIO operations. */
+#define EXAMPLE_MDIO_OPS enet_ops
+
+/* PHY operations. */
+#define EXAMPLE_PHY_OPS phyksz8081_ops
+
+/* ENET clock frequency. */
+#define EXAMPLE_CLOCK_FREQ CLOCK_GetFreq(kCLOCK_IpgClk)
+
+#ifndef EXAMPLE_NETIF_INIT_FN
+/*! @brief Network interface initialization function. */
+#define EXAMPLE_NETIF_INIT_FN ethernetif0_init
+#endif /* EXAMPLE_NETIF_INIT_FN */
+
+/*! @brief Stack size of the temporary lwIP initialization thread. */
+#define INIT_THREAD_STACKSIZE 1024
+
+/*! @brief Priority of the temporary lwIP initialization thread. */
+#define INIT_THREAD_PRIO DEFAULT_THREAD_PRIO
+
+static mdio_handle_t mdioHandle = { .ops = &EXAMPLE_MDIO_OPS };
+static phy_handle_t phyHandle = { .phyAddr = EXAMPLE_PHY_ADDRESS, .mdioHandle = &mdioHandle, .ops = &EXAMPLE_PHY_OPS };
+
+#endif
+
+extern "C" void BOARD_InitHardware(void);
+extern "C" void otPlatSetResetFunction(void (*fp)(void));
+extern "C" void initiateResetInIdle(void);
+
+#if CHIP_DEVICE_CONFIG_ENABLE_WPA
+
+/*
+Currently only IW612 and K32W0 support controller initialization in the connectivity framework
+* Include should be removed otherwise it will introduce double firmware definition
+*/
+#ifndef WIFI_IW612_BOARD_MURATA_2EL_M2
+#include "wlan_bt_fw.h"
+#endif
+
+extern "C" {
+#include "wlan.h"
+#include "wm_net.h"
+}
+
+#endif /* CHIP_DEVICE_CONFIG_ENABLE_WPA */
+
+extern "C" void vApplicationMallocFailedHook(void)
+{
+ ChipLogError(DeviceLayer, "Malloc Failure");
+}
+
+#if WIFI_PTA_ENABLED && (CHIP_DEVICE_CONFIG_ENABLE_WPA && CHIP_ENABLE_OPENTHREAD)
+#ifdef SD8801
+#define HOSTCMD_RESP_BUFF_SIZE 1024
+/* 8801 command buffer to enable External Coexistence.
+ * Source: SDK 2.11.1, wifi_cli demo, wlan_tests.c file. */
+const uint8_t ext_coex_8801_cmd_buf[] = { 0xe0, 0, 0x1d, 0, 0x17, 0, 0, 0, 0x01, 0, 0, 0, 0x2f, 0x02, 0x0d,
+ 0x00, 0x01, 0, 0, 0x03, 0x01, 0x02, 0x01, 0x01, 0x00, 0x28, 0x00, 0x3c, 0x00 };
+#endif
+
+static CHIP_ERROR EnableWiFiCoexistence(void)
+{
+ CHIP_ERROR ret = CHIP_NO_ERROR;
+
+#ifdef SD8801
+ int status = WM_FAIL;
+ uint8_t * rspBuff = NULL;
+ uint32_t reqd_len = 0;
+
+ rspBuff = (uint8_t *) pvPortMalloc(HOSTCMD_RESP_BUFF_SIZE);
+ if (rspBuff != NULL)
+ {
+ status = wlan_send_hostcmd((void *) ext_coex_8801_cmd_buf, sizeof(ext_coex_8801_cmd_buf) / sizeof(u8_t), rspBuff,
+ HOSTCMD_RESP_BUFF_SIZE, &reqd_len);
+
+ if (status == WM_SUCCESS)
+ {
+ ChipLogProgress(DeviceLayer, "8801 Coexistence enabled");
+ }
+ else
+ {
+ ChipLogError(DeviceLayer, "8801 Coexistence enabling failed = %d", status);
+ ret = CHIP_ERROR_INTERNAL;
+ }
+
+ vPortFree(rspBuff);
+ }
+ else
+ {
+ ChipLogError(DeviceLayer, "Failed to allocate memory for Wi-Fi coexistence response buffer");
+ }
+#else
+ ChipLogError(DeviceLayer, "This chip does not support Wi-Fi and OpenThread coexistence");
+ ret = CHIP_ERROR_INTERNAL;
+#endif
+
+ return ret;
+}
+#endif
+
+#if !CHIP_DEVICE_CONFIG_ENABLE_WPA
+extern "C" void vApplicationIdleHook(void)
+{
+ chip::DeviceLayer::PlatformManagerImpl::IdleHook();
+}
+#endif
+
+extern "C" void __wrap_exit(int __status)
+{
+ ChipLogError(DeviceLayer, "======> error exit function !!!");
+ assert(0);
+}
+
+namespace chip {
+namespace DeviceLayer {
+
+PlatformManagerImpl PlatformManagerImpl::sInstance;
+
+void PlatformManagerImpl::HardwareInit(void)
+{
+ BOARD_InitHardware();
+ SysTick_Config(SystemCoreClock / configTICK_RATE_HZ);
+}
+
+CHIP_ERROR PlatformManagerImpl::ServiceInit(void)
+{
+ status_t status;
+ CHIP_ERROR chipRes = CHIP_NO_ERROR;
+
+ status = CRYPTO_InitHardware();
+
+ if (status != 0)
+ {
+ chipRes = CHIP_ERROR_INTERNAL;
+ ChipLogError(DeviceLayer, "Crypto hardware init error");
+ }
+
+ return chipRes;
+}
+
+/* For IW612 transceiver firmware initialization is done by PLATFORM_InitControllers */
+#ifndef WIFI_IW612_BOARD_MURATA_2EL_M2
+#if CHIP_DEVICE_CONFIG_ENABLE_WPA
+CHIP_ERROR PlatformManagerImpl::WiFiInterfaceInit(void)
+{
+ CHIP_ERROR result = CHIP_NO_ERROR;
+ int wifi_status = WM_SUCCESS;
+
+ ChipLogProgress(DeviceLayer, "Initialize WLAN");
+
+#if defined(SD8801) && CHIP_ENABLE_OPENTHREAD
+ /*
+ * The 88W8801 is quirky with the REQ & PRIO lines
+ * at boot: they need to be held HIGH while booting.
+ * So disable the coexistence mechanism on the RCP,
+ * since internally this puts the lines HIGH.
+ */
+ otPlatRadioSetCoexEnabled(NULL, false);
+#endif
+
+ wifi_status = wlan_init(wlan_fw_bin, wlan_fw_bin_len);
+ if (wifi_status != WM_SUCCESS)
+ {
+ ChipLogError(DeviceLayer, "WLAN initialization failed");
+ result = CHIP_ERROR_INTERNAL;
+ }
+ else
+ {
+ ChipLogProgress(DeviceLayer, "WLAN initialized");
+ }
+
+#if WIFI_PTA_ENABLED && (CHIP_ENABLE_OPENTHREAD)
+ if (result == CHIP_NO_ERROR)
+ {
+ /* In case we have both Wi-Fi and OpenThread active, enable coexistence on Wi-Fi side */
+ if (EnableWiFiCoexistence() != CHIP_NO_ERROR)
+ {
+ ChipLogError(DeviceLayer, "Failed to initialize Wi-Fi and OpenThread coexistence");
+ }
+ }
+#endif
+#if defined(SD8801) && CHIP_ENABLE_OPENTHREAD
+ /*
+ * Re-enabling the coexistence is done here because enabling it too fast
+ * can lead to unexpected hangs of the coexistence mechanism. Up to this point,
+ * all the 15.4 requests will be 'pass-through' i.e. will always be granted
+ * access.
+ */
+ otPlatRadioSetCoexEnabled(NULL, true);
+#endif
+
+ return result;
+}
+#endif
+#endif
+
+#if !CHIP_DEVICE_CONFIG_ENABLE_THREAD && !CHIP_DEVICE_CONFIG_ENABLE_WPA
+CHIP_ERROR PlatformManagerImpl::EthernetInterfaceInit()
+{
+
+ static struct netif netif;
+ ethernetif_config_t enet_config = {
+ .phyHandle = &phyHandle,
+#ifdef configMAC_ADDR
+ .macAddress = configMAC_ADDR,
+#endif
+ };
+
+ mdioHandle.resource.csrClock_Hz = EXAMPLE_CLOCK_FREQ;
+
+#ifndef configMAC_ADDR
+ /* Set special address for each chip. */
+ (void) SILICONID_ConvertToMacAddr(&enet_config.macAddress);
+#endif
+
+ netifapi_netif_add(&netif, &enet_config, EXAMPLE_NETIF_INIT_FN, tcpip_input);
+
+ netifapi_netif_set_default(&netif);
+ netifapi_netif_set_up(netif_default);
+ LOCK_TCPIP_CORE();
+ netif_create_ip6_linklocal_address(netif_default, 1);
+ UNLOCK_TCPIP_CORE();
+
+ vTaskDelay(pdMS_TO_TICKS(1500));
+
+ for (uint8_t i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++)
+ {
+ const char * str_ip = "-";
+ if (ip6_addr_isvalid(netif_ip6_addr_state(netif_default, i)))
+ {
+ str_ip = ip6addr_ntoa(netif_ip6_addr(netif_default, i));
+ }
+ PRINTF(" IPv6 Address%d : %s\r\n", i, str_ip);
+ }
+ PRINTF("************************************************\r\n");
+
+ if (netif_is_up(&netif))
+ {
+ return CHIP_NO_ERROR;
+ }
+
+ return CHIP_ERROR_NOT_CONNECTED;
+}
+#endif
+
+CHIP_ERROR PlatformManagerImpl::_InitChipStack(void)
+{
+ CHIP_ERROR err = CHIP_ERROR_INTERNAL;
+ int osError;
+
+ /* Initialize platform services */
+ err = ServiceInit();
+ SuccessOrExit(err);
+
+ // Initialize the configuration system.
+ err = Internal::NXPConfig::Init();
+ SuccessOrExit(err);
+
+ SetConfigurationMgr(&ConfigurationManagerImpl::GetDefaultInstance());
+ SetDiagnosticDataProvider(&DiagnosticDataProviderImpl::GetDefaultInstance());
+
+#if CHIP_DEVICE_CONFIG_ENABLE_WPA
+ /* Initialize LwIP via Wi-Fi layer. */
+ net_ipv4stack_init();
+#else
+ /* Initialize LwIP directly. */
+ tcpip_init(NULL, NULL);
+#endif
+
+/* Currently only IW612 and K32W0 support controller initialization in the connectivity framework */
+#ifdef WIFI_IW612_BOARD_MURATA_2EL_M2
+ /* Init the controller by giving as an arg the connectivity supported */
+ PLATFORM_InitControllers(connBle_c
+#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
+ | conn802_15_4_c
+#endif
+#if CHIP_DEVICE_CONFIG_ENABLE_WPA
+ | connWlan_c
+#endif
+ );
+#endif
+
+#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
+ PLATFORM_InitOt();
+ /*
+ * Initialize the RCP here: the WiFi initialization requires to enable/disable
+ * coexistence through the Spinel interface; as such, the otPlatRadioInit() call
+ * will fail if done afterwards
+ */
+ otPlatLogInit();
+ otPlatRadioInit();
+ otPlatSetResetFunction(initiateResetInIdle);
+ otPlatRandomInit();
+#endif
+
+#if CHIP_DEVICE_CONFIG_ENABLE_WPA
+ osError = OSA_SetupIdleFunction(chip::DeviceLayer::PlatformManagerImpl::IdleHook);
+ if (osError != WM_SUCCESS)
+ {
+ ChipLogError(DeviceLayer, "Failed to setup idle function");
+ err = CHIP_ERROR_NO_MEMORY;
+ goto exit;
+ }
+
+/* For IW612 transceiver firmware initialization is done by PLATFORM_InitControllers */
+#ifndef WIFI_IW612_BOARD_MURATA_2EL_M2
+ err = WiFiInterfaceInit();
+#endif
+
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogProgress(DeviceLayer,
+ "Wi-Fi module initialization failed. Make sure the Wi-Fi/BLE module is properly configured and connected "
+ "with the board and start again!");
+ chipDie();
+ }
+ ChipLogProgress(DeviceLayer, "Wi-Fi module initialization done.");
+#elif !CHIP_DEVICE_CONFIG_ENABLE_THREAD
+ err = EthernetInterfaceInit();
+
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogProgress(DeviceLayer,
+ "LWIP interface initialization failed. Make sure there is internet conectivity on the board and reset!");
+ chipDie();
+ }
+ ChipLogProgress(DeviceLayer, "LWIP interface initialization done");
+#endif
+
+ // Call _InitChipStack() on the generic implementation base class
+ // to finish the initialization process.
+ err = Internal::GenericPlatformManagerImpl_FreeRTOS<PlatformManagerImpl>::_InitChipStack();
+ SuccessOrExit(err);
+
+ err = System::Clock::InitClock_RealTime();
+ SuccessOrExit(err);
+
+ mStartTime = System::SystemClock().GetMonotonicTimestamp();
+
+exit:
+ return err;
+}
+
+void PlatformManagerImpl::SaveSettings(void)
+{
+#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
+ otPlatSaveSettingsIdle();
+#endif
+}
+
+void PlatformManagerImpl::IdleHook(void)
+{
+
+#ifdef WATCHDOG_ALLOWED
+ WDOG_Refresh(WDOG1);
+#endif
+
+ bool isResetScheduled = PlatformMgrImpl().GetResetInIdleValue();
+ if (isResetScheduled)
+ {
+ /*
+ * In case a reset in IDLE has been scheduled
+ * Disable IRQs so that the idle task won't be preempted until the reset
+ */
+ OSA_InterruptDisable();
+ }
+
+ chip::DeviceLayer::Internal::NXPConfig::RunSystemIdleTask();
+
+#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
+ SaveSettings();
+#endif
+
+#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR
+ /* Resume OTA Transactions in Idle task */
+ OTA_TransactionResume();
+#endif
+
+ /*
+ * In case a reset in idle operation has been posted,
+ * reset the device after having run the idle function
+ */
+ if (isResetScheduled)
+ {
+ PlatformMgrImpl().Reset();
+ }
+}
+
+void PlatformManagerImpl::Reset(void)
+{
+ ChipLogProgress(DeviceLayer, "System restarting");
+ // Restart the system.
+ NVIC_SystemReset();
+ while (1)
+ {
+ }
+}
+
+void PlatformManagerImpl::ScheduleResetInIdle(void)
+{
+ resetInIdle = true;
+}
+
+bool PlatformManagerImpl::GetResetInIdleValue(void)
+{
+ return resetInIdle;
+}
+
+extern "C" void initiateResetInIdle(void)
+{
+ PlatformMgr().Shutdown();
+ PlatformMgrImpl().ScheduleResetInIdle();
+}
+
+extern "C" void scheduleResetInIdle(void)
+{
+ PlatformMgrImpl().ScheduleResetInIdle();
+}
+
+extern "C" bool getResetInIdleValue(void)
+{
+ return PlatformMgrImpl().GetResetInIdleValue();
+}
+
+void PlatformManagerImpl::StopBLEConnectivity(void)
+{
+#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
+ otPlatRadioSendSetPropVendorUint8Cmd(OT_NXP_SPINEL_PROP_VENDOR_BLE_STATE, 0);
+#endif /* #if CHIP_DEVICE_CONFIG_ENABLE_THREAD */
+}
+
+void PlatformManagerImpl::_Shutdown()
+{
+ uint64_t upTime = 0;
+
+ if (GetDiagnosticDataProvider().GetUpTime(upTime) == CHIP_NO_ERROR)
+ {
+ uint32_t totalOperationalHours = 0;
+
+ if (ConfigurationMgr().GetTotalOperationalHours(totalOperationalHours) == CHIP_NO_ERROR)
+ {
+ ConfigurationMgr().StoreTotalOperationalHours(totalOperationalHours + static_cast<uint32_t>(upTime / 3600));
+ }
+ else
+ {
+ ChipLogError(DeviceLayer, "Failed to get total operational hours of the Node");
+ }
+ }
+ else
+ {
+ ChipLogError(DeviceLayer, "Failed to get current uptime since the Node’s last reboot");
+ }
+
+ /* Handle the server shutting down & emit the ShutDown event*/
+ PlatformMgr().HandleServerShuttingDown();
+ /* Shutdown all layers */
+ Internal::GenericPlatformManagerImpl_FreeRTOS<PlatformManagerImpl>::_Shutdown();
+}
+
+} // namespace DeviceLayer
+} // namespace chip
+
+extern "C" void mt_wipe(void)
+{
+ chip::DeviceLayer::Internal::NXPConfig::FactoryResetConfig();
+}
diff --git a/src/platform/nxp/rt/rt1060/SystemPlatformConfig.h b/src/platform/nxp/rt/rt1060/SystemPlatformConfig.h
new file mode 100644
index 0000000..17f3c18
--- /dev/null
+++ b/src/platform/nxp/rt/rt1060/SystemPlatformConfig.h
@@ -0,0 +1,40 @@
+/*
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Platform-specific configuration overrides for the CHIP System
+ * Layer on NXP RT1060 Platforms.
+ *
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+// ==================== Platform Adaptations ====================
+
+/* Default NXP Platform adaptations are used */
+
+// ========== Platform-specific Configuration Overrides =========
+
+/* Default NXP Platform configuration overrides are used */
+
+// Include default nxp platform configurations
+#include "platform/nxp/common/SystemNXPPlatformDefaultConfig.h"
diff --git a/src/platform/nxp/rt/rt1060/args.gni b/src/platform/nxp/rt/rt1060/args.gni
new file mode 100644
index 0000000..b5fe534
--- /dev/null
+++ b/src/platform/nxp/rt/rt1060/args.gni
@@ -0,0 +1,57 @@
+# Copyright (c) 2020-2023 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/chip.gni")
+import("//build_overrides/nxp_sdk.gni")
+
+rt_platform = "rt1060"
+nxp_platform = "rt/${rt_platform}"
+nxp_sdk_name = "rt_sdk"
+chip_device_platform = "nxp"
+lwip_platform = "nxp"
+
+# ARM architecture flags will be set based on NXP board.
+arm_platform_config = "${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_arm.gni"
+
+chip_device_project_config_include = "<CHIPProjectConfig.h>"
+chip_project_config_include = "<CHIPProjectConfig.h>"
+chip_inet_project_config_include = "<CHIPProjectConfig.h>"
+chip_system_project_config_include = "<CHIPProjectConfig.h>"
+chip_ble_project_config_include = "<CHIPProjectConfig.h>"
+
+chip_build_tests = false
+
+#This enables the EventList global attribute
+enable_eventlist_attribute = true
+
+# TODO : Enable the OTA Requestor by default.
+# This requires the mcuboot bootloader to be used, which reserves the first 256 kB of the flash.
+# If mcuboot is not used, "no_mcuboot" must be set to true in the gn gen build command
+# in order for the application to be linked at the base of the flash.
+#chip_enable_ota_requestor = true
+declare_args() {
+ # TODO : set no_mcuboot to false by default when enabling ota requestor by default
+ no_mcuboot = true
+
+ chip_enable_secondary_nwk_if = false
+}
+
+mbedtls_target = "${nxp_sdk_build_root}:nxp_mbedtls"
+
+openthread_external_mbedtls = mbedtls_target
+openthread_project_core_config_file = "OpenThreadConfig.h"
+openthread_core_config_deps = [ "${chip_root}/third_party/openthread/platforms/nxp/${nxp_platform}:openthread_core_config_rt1060" ]
+openthread_core_config_platform_check_file =
+ "openthread-core-rt1060-config-check.h"
+openthread_external_platform = "${chip_root}/third_party/openthread/platforms/nxp/${nxp_platform}:libopenthread-rt1060"
diff --git a/src/platform/nxp/rt/rt1170/BUILD.gn b/src/platform/nxp/rt/rt1170/BUILD.gn
new file mode 100644
index 0000000..4bfd103
--- /dev/null
+++ b/src/platform/nxp/rt/rt1170/BUILD.gn
@@ -0,0 +1,190 @@
+# Copyright (c) 2021 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+import("//build_overrides/nxp_sdk.gni")
+import("//build_overrides/openthread.gni")
+import("${chip_root}/src/platform/device.gni")
+
+# If external SDK is used, do not import ${nxp_sdk_name}.gni
+if (!nxp_external_sdk) {
+ import("${nxp_sdk_build_root}/${nxp_sdk_name}/${nxp_sdk_name}.gni")
+}
+
+import("${nxp_sdk_build_root}/nxp_sdk.gni")
+
+assert(chip_device_platform == "nxp")
+
+source_set("nxp_factory_data") {
+}
+source_set("nxp_ota") {
+}
+
+config("nxp_platform_config") {
+ defines = [ "EXTERNAL_BLEMANAGERIMPL_HEADER=\"platform/nxp/common/ble_zephyr/BLEManagerImpl.h\"" ]
+ include_dirs = [
+ ".",
+ "../../common",
+ ]
+ if (chip_with_factory_data == 1) {
+ include_dirs += [
+ ".",
+ "../../common/factory_data",
+ ]
+ defines += [
+ "CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA=1",
+ "CONFIG_CHIP_ENCRYPTED_FACTORY_DATA=1",
+ ]
+ defines += [ "EXTERNAL_FACTORY_DATA_PROVIDER_IMPL_HEADER=\"platform/nxp/common/factory_data/FactoryDataProviderFwkImpl.h\"" ]
+ }
+
+ # When OTBR is enabled Thread network commissioning cluster is enabled using chip_enable_secondary_nwk_if
+ if (chip_enable_wifi && chip_enable_openthread &&
+ !chip_enable_secondary_nwk_if) {
+ defines += [ "_NO_GENERIC_THREAD_NETWORK_COMMISSIONING_DRIVER_" ]
+ }
+}
+
+static_library("nxp_platform") {
+ output_name = "libCHIP_NXP_Port_RT1170"
+ cflags = [
+ "-Wno-conversion",
+ "-Wno-sign-compare",
+ ]
+ deps = []
+ defines = []
+ sources = [
+ "../../../FreeRTOS/SystemTimeSupport.cpp",
+ "../../../SingletonConfigurationManager.cpp",
+ "../../common/CHIPDevicePlatformEvent.h",
+ "../../common/ConfigurationManagerImpl.cpp",
+ "../../common/ConfigurationManagerImpl.h",
+ "../../common/ConnectivityManagerImpl.cpp",
+ "../../common/ConnectivityManagerImpl.h",
+ "../../common/DiagnosticDataProviderImpl.cpp",
+ "../../common/DiagnosticDataProviderImpl.h",
+ "../../common/KeyValueStoreManagerImpl.cpp",
+ "../../common/KeyValueStoreManagerImpl.h",
+ "../../common/Logging.cpp",
+ "../../common/NXPConfig.cpp",
+ "../../common/NXPConfig.h",
+ "../../common/NetworkProvisioningServerImpl.h",
+ "../../common/PlatformManagerImpl.h",
+ "../../common/SoftwareUpdateManagerImpl.h",
+ "../../common/ram_storage.c",
+ "../../common/ram_storage.h",
+ "CHIPDevicePlatformConfig.h",
+ "PlatformManagerImpl.cpp",
+ ]
+
+ if (chip_enable_ble) {
+ sources += [
+ # Adding random file which defines the function sys_csrand_get which is called by BLEManagerImpl from Zephyr
+ "${nxp_sdk_build_root}/rt_sdk/sdk_hook/zephyr/random/random.cpp",
+ "../../common/ble_zephyr/BLEAdvertisingArbiter.cpp",
+ "../../common/ble_zephyr/BLEManagerImpl.cpp",
+ "../../common/ble_zephyr/BLEManagerImpl.h",
+ ]
+ }
+
+ public_deps = [ "${chip_root}/src/platform:platform_base" ]
+
+ deps += [
+ "${chip_root}/src/lib/dnssd:constants",
+ "${chip_root}/src/platform/logging:headers",
+ ]
+
+ # define CHIP_PLAT_NVM_SUPPORT - See NXPConfig.cpp for definition
+ if (nxp_nvm_component == "nvm_fwk") {
+ defines += [ "CHIP_PLAT_NVM_SUPPORT=1" ]
+ } else if (nxp_nvm_component == "littlefs") {
+ defines += [ "CHIP_PLAT_NVM_SUPPORT=2" ]
+ }
+
+ if (chip_enable_wifi) {
+ sources += [
+ "../../common/NetworkCommissioningDriver.h",
+ "../../common/NetworkCommissioningWiFiDriver.cpp",
+ ]
+ }
+ if (chip_enable_ota_requestor) {
+ sources += [
+ "../../common/OTAImageProcessorImpl.cpp",
+ "../../common/OTAImageProcessorImpl.h",
+ ]
+ }
+
+ if (chip_enable_openthread) {
+ sources += [
+ # Temporary fix, to be revert once PR #34662 is merged, build issue when using GN check argument
+ "${chip_root}/src/app/clusters/thread-border-router-management-server/thread-br-delegate.h",
+ "../../../OpenThread/GenericThreadBorderRouterDelegate.cpp",
+ "../../../OpenThread/GenericThreadBorderRouterDelegate.h",
+ "../../../OpenThread/OpenThreadUtils.cpp",
+ "../../common/ThreadStackManagerImpl.cpp",
+ "../../common/ThreadStackManagerImpl.h",
+ ]
+
+ deps += [ "${chip_root}/src/app/common:ids" ]
+
+ if (!nxp_build_matter_standalone_lib) {
+ deps += [ "${chip_root}/third_party/openthread:openthread" ]
+ public_deps +=
+ [ "${chip_root}/third_party/openthread:openthread-platform" ]
+ }
+
+ # dep required to include 'lib/spinel/spinel.h' in PlatformManagerImpl.cpp
+ deps += [ "${openthread_root}:libopenthread-spinel-rcp" ]
+
+ if (chip_mdns == "platform") {
+ if (chip_enable_wifi) {
+ sources += [
+ "../../../OpenThread/OpenThreadDnssdImpl.cpp",
+ "../../../OpenThread/OpenThreadDnssdImpl.h",
+ "../../common/DnssdImpl.cpp",
+ "../../common/DnssdImplBr.cpp",
+ "../../common/DnssdImplBr.h",
+ ]
+ } else {
+ sources += [
+ "../../../OpenThread/DnssdImpl.cpp",
+ "../../../OpenThread/OpenThreadDnssdImpl.cpp",
+ "../../../OpenThread/OpenThreadDnssdImpl.h",
+ ]
+ }
+ deps += [ "${chip_root}/src/lib/dnssd:platform_header" ]
+ }
+ }
+
+ if (chip_with_factory_data == 1) {
+ sources += [
+ "../../common/factory_data/FactoryDataProvider.cpp",
+ "../../common/factory_data/FactoryDataProvider.h",
+ "../../common/factory_data/FactoryDataProviderFwkImpl.cpp",
+ "../../common/factory_data/FactoryDataProviderFwkImpl.h",
+ ]
+
+ deps += [ "${chip_root}/src/credentials:credentials_header" ]
+ }
+
+ deps += [ "${nxp_sdk_build_root}:nxp_sdk" ]
+
+ public_deps += [
+ "${chip_root}/examples/platform/nxp/common/app/support:freertos_memory_utils",
+ "${chip_root}/src/crypto",
+ "${chip_root}/src/platform:syscalls_stub",
+ ]
+ public_configs = [ ":nxp_platform_config" ]
+}
diff --git a/src/platform/nxp/rt/rt1170/BlePlatformConfig.h b/src/platform/nxp/rt/rt1170/BlePlatformConfig.h
new file mode 100644
index 0000000..bd4d803
--- /dev/null
+++ b/src/platform/nxp/rt/rt1170/BlePlatformConfig.h
@@ -0,0 +1,36 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Platform-specific configuration overrides for the CHIP BLE
+ * Layer on RT1170 platforms using the NXP SDK.
+ *
+ */
+
+#pragma once
+
+// ==================== Platform Adaptations ====================
+
+/* Default NXP Platform adaptations are used */
+
+// ========== Platform-specific Configuration Overrides =========
+
+/* Default NXP Platform configuration overrides are used */
+
+// Include default nxp platform configurations
+#include "platform/nxp/common/ble_zephyr/BleNXPPlatformDefaultConfig.h"
diff --git a/src/platform/nxp/rt/rt1170/CHIPDevicePlatformConfig.h b/src/platform/nxp/rt/rt1170/CHIPDevicePlatformConfig.h
new file mode 100644
index 0000000..cfb5892
--- /dev/null
+++ b/src/platform/nxp/rt/rt1170/CHIPDevicePlatformConfig.h
@@ -0,0 +1,42 @@
+/*
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Platform-specific configuration overrides for the chip Device Layer
+ * on RT1170 platforms using the NXP SDK.
+ */
+
+#pragma once
+
+// ==================== Platform Adaptations ====================
+
+/* Default NXP Platform adaptations are used */
+
+// ========== Platform-specific Configuration =========
+
+// These are configuration options that are unique to the NXP platform.
+// These can be overridden by the application as needed.
+
+// ========== Platform-specific Configuration Overrides =========
+
+/* Default NXP Platform configuration overrides are used */
+
+// Include default nxp platform configurations
+#include "platform/nxp/common/CHIPDeviceNXPPlatformDefaultConfig.h"
diff --git a/src/platform/nxp/rt/rt1170/CHIPPlatformConfig.h b/src/platform/nxp/rt/rt1170/CHIPPlatformConfig.h
new file mode 100644
index 0000000..6485bac
--- /dev/null
+++ b/src/platform/nxp/rt/rt1170/CHIPPlatformConfig.h
@@ -0,0 +1,54 @@
+/*
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Platform-specific configuration overrides for CHIP on
+ * NXP RT1060 platforms.
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+// ==================== General Platform Adaptations ====================
+
+/* Default NXP platform adaptations are used */
+
+// ==================== Security Adaptations ====================
+
+/* Default NXP Platform security adaptations are used */
+
+// ==================== General Configuration Overrides ====================
+
+/* Default NXP Platform general configuration overrides are used */
+
+/* For now on RT1170, due to the current file system implementation only 5 fabrics are supported */
+#define CHIP_CONFIG_MAX_FABRICS 5
+
+// ==================== Security Configuration Overrides ====================
+
+/* Default NXP Platform security configuration overrides are used */
+
+// ==================== WDM Configuration Overrides ====================
+
+/* Default NXP Platform WDM Configuration overrides are used */
+
+// Include default nxp platform configurations
+#include "platform/nxp/common/CHIPNXPPlatformDefaultConfig.h"
diff --git a/src/platform/nxp/rt/rt1170/InetPlatformConfig.h b/src/platform/nxp/rt/rt1170/InetPlatformConfig.h
new file mode 100644
index 0000000..dee850a
--- /dev/null
+++ b/src/platform/nxp/rt/rt1170/InetPlatformConfig.h
@@ -0,0 +1,40 @@
+/*
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Platform-specific configuration overrides for the CHIP Inet
+ * Layer on RT1170 platforms using the NXP SDK.
+ *
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+// ==================== Platform Adaptations ====================
+
+/* Default NXP Platform adaptations are used */
+
+// ========== Platform-specific Configuration Overrides =========
+
+/* Default NXP Platform configuration overrides are used */
+
+// Include default nxp platform configurations
+#include "platform/nxp/common/InetNXPPlatformDefaultConfig.h"
diff --git a/src/platform/nxp/rt/rt1170/PlatformManagerImpl.cpp b/src/platform/nxp/rt/rt1170/PlatformManagerImpl.cpp
new file mode 100644
index 0000000..24212ce
--- /dev/null
+++ b/src/platform/nxp/rt/rt1170/PlatformManagerImpl.cpp
@@ -0,0 +1,474 @@
+/*
+ *
+ * Copyright (c) 2020-2024 Project CHIP Authors
+ * Copyright (c) 2020 Nest Labs, Inc.
+ * Copyright 2023-2024 NXP
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Provides an implementation of the PlatformManager object
+ * for RT1170 platforms using the NXP RT1170 SDK.
+ */
+/* this file behaves like a config.h, comes first */
+#include <platform/internal/CHIPDeviceLayerInternal.h>
+
+#include "DiagnosticDataProviderImpl.h"
+#include "fsl_os_abstraction.h"
+#include "fwk_platform_coex.h"
+#include "ksdk_mbedtls.h"
+#include <crypto/CHIPCryptoPAL.h>
+#include <platform/FreeRTOS/SystemTimeSupport.h>
+#include <platform/PlatformManager.h>
+#include <platform/internal/GenericPlatformManagerImpl_FreeRTOS.ipp>
+#include <stdlib.h>
+
+#include <lwip/tcpip.h>
+
+#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR
+#include "OtaSupport.h"
+#endif
+
+#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
+#include "ot_platform_common.h"
+#include <openthread/platform/entropy.h>
+#if CHIP_DEVICE_CONFIG_CHIPOBLE_DISABLE_ADVERTISING_WHEN_PROVISIONED
+#include "lib/spinel/spinel.h"
+#define OT_NXP_SPINEL_PROP_VENDOR_BLE_STATE SPINEL_PROP_VENDOR__BEGIN
+#endif /* CHIP_DEVICE_CONFIG_CHIPOBLE_DISABLE_ADVERTISING_WHEN_PROVISIONED */
+#endif
+
+#if !CHIP_DEVICE_CONFIG_ENABLE_THREAD && !CHIP_DEVICE_CONFIG_ENABLE_WPA
+
+#include "board.h"
+#include "clock_config.h"
+#include "fsl_phy.h"
+#include "pin_mux.h"
+
+#include "fsl_enet_mdio.h"
+#include "fsl_phyksz8081.h"
+
+#include "enet_ethernetif.h"
+#include "fsl_debug_console.h"
+#include "lwip/netif.h"
+#include "lwip/netifapi.h"
+#include "lwip/opt.h"
+#include "lwip/tcpip.h"
+#include "netif/ethernet.h"
+
+//----LWIP defines----//
+/* MAC address configuration. */
+#define configMAC_ADDR \
+ { \
+ 0x02, 0x12, 0x13, 0x10, 0x15, 0x11 \
+ }
+
+/* Address of PHY interface. */
+#define EXAMPLE_PHY_ADDRESS BOARD_ENET0_PHY_ADDRESS
+
+/* MDIO operations. */
+#define EXAMPLE_MDIO_OPS enet_ops
+
+/* PHY operations. */
+#define EXAMPLE_PHY_OPS phyksz8081_ops
+
+/* ENET clock frequency. */
+#define EXAMPLE_CLOCK_FREQ CLOCK_GetFreq(kCLOCK_IpgClk)
+
+#ifndef EXAMPLE_NETIF_INIT_FN
+/*! @brief Network interface initialization function. */
+#define EXAMPLE_NETIF_INIT_FN ethernetif0_init
+#endif /* EXAMPLE_NETIF_INIT_FN */
+
+/*! @brief Stack size of the temporary lwIP initialization thread. */
+#define INIT_THREAD_STACKSIZE 1024
+
+/*! @brief Priority of the temporary lwIP initialization thread. */
+#define INIT_THREAD_PRIO DEFAULT_THREAD_PRIO
+
+static mdio_handle_t mdioHandle = { .ops = &EXAMPLE_MDIO_OPS };
+static phy_handle_t phyHandle = { .phyAddr = EXAMPLE_PHY_ADDRESS, .mdioHandle = &mdioHandle, .ops = &EXAMPLE_PHY_OPS };
+
+#endif
+
+extern "C" void BOARD_InitHardware(void);
+extern "C" void otPlatSetResetFunction(void (*fp)(void));
+extern "C" void initiateResetInIdle(void);
+
+#include "fwk_platform_ot.h"
+
+#if CHIP_DEVICE_CONFIG_ENABLE_WPA
+
+#include "fsl_adapter_gpio.h"
+#include "fsl_os_abstraction.h"
+
+extern "C" {
+#include "wlan.h"
+#include "wm_net.h"
+}
+
+#endif /* CHIP_DEVICE_CONFIG_ENABLE_WPA */
+
+extern "C" void vApplicationMallocFailedHook(void)
+{
+ ChipLogError(DeviceLayer, "Malloc Failure");
+}
+
+#if WIFI_PTA_ENABLED && (CHIP_DEVICE_CONFIG_ENABLE_WPA && CHIP_ENABLE_OPENTHREAD)
+#ifdef SD8801
+#define HOSTCMD_RESP_BUFF_SIZE 1024
+/* 8801 command buffer to enable External Coexistence.
+ * Source: SDK 2.11.1, wifi_cli demo, wlan_tests.c file. */
+const uint8_t ext_coex_8801_cmd_buf[] = { 0xe0, 0, 0x1d, 0, 0x17, 0, 0, 0, 0x01, 0, 0, 0, 0x2f, 0x02, 0x0d,
+ 0x00, 0x01, 0, 0, 0x03, 0x01, 0x02, 0x01, 0x01, 0x00, 0x28, 0x00, 0x3c, 0x00 };
+#endif
+
+static CHIP_ERROR EnableWiFiCoexistence(void)
+{
+ CHIP_ERROR ret = CHIP_NO_ERROR;
+
+#ifdef SD8801
+ int status = WM_FAIL;
+ uint8_t * rspBuff = NULL;
+ uint32_t reqd_len = 0;
+
+ rspBuff = (uint8_t *) pvPortMalloc(HOSTCMD_RESP_BUFF_SIZE);
+ if (rspBuff != NULL)
+ {
+ status = wlan_send_hostcmd((void *) ext_coex_8801_cmd_buf, sizeof(ext_coex_8801_cmd_buf) / sizeof(u8_t), rspBuff,
+ HOSTCMD_RESP_BUFF_SIZE, &reqd_len);
+
+ if (status == WM_SUCCESS)
+ {
+ ChipLogProgress(DeviceLayer, "8801 Coexistence enabled");
+ }
+ else
+ {
+ ChipLogError(DeviceLayer, "8801 Coexistence enabling failed = %d", status);
+ ret = CHIP_ERROR_INTERNAL;
+ }
+
+ vPortFree(rspBuff);
+ }
+ else
+ {
+ ChipLogError(DeviceLayer, "Failed to allocate memory for Wi-Fi coexistence response buffer");
+ }
+#else
+ ChipLogError(DeviceLayer, "This chip does not support Wi-Fi and OpenThread coexistence");
+ ret = CHIP_ERROR_INTERNAL;
+#endif
+
+ return ret;
+}
+#endif
+
+#if !CHIP_DEVICE_CONFIG_ENABLE_WPA
+extern "C" void vApplicationIdleHook(void)
+{
+ chip::DeviceLayer::PlatformManagerImpl::IdleHook();
+}
+#endif
+
+extern "C" void __wrap_exit(int __status)
+{
+ ChipLogError(DeviceLayer, "======> error exit function !!!");
+ assert(0);
+}
+
+namespace chip {
+namespace DeviceLayer {
+
+PlatformManagerImpl PlatformManagerImpl::sInstance;
+
+void PlatformManagerImpl::HardwareInit(void)
+{
+ BOARD_InitHardware();
+ SysTick_Config(SystemCoreClock / configTICK_RATE_HZ);
+}
+
+CHIP_ERROR PlatformManagerImpl::ServiceInit(void)
+{
+ status_t status;
+ CHIP_ERROR chipRes = CHIP_NO_ERROR;
+
+ status = CRYPTO_InitHardware();
+
+ if (status != 0)
+ {
+ chipRes = CHIP_ERROR_INTERNAL;
+ ChipLogError(DeviceLayer, "Crypto hardware init error");
+ }
+
+ return chipRes;
+}
+
+#if !CHIP_DEVICE_CONFIG_ENABLE_THREAD && !CHIP_DEVICE_CONFIG_ENABLE_WPA
+CHIP_ERROR PlatformManagerImpl::EthernetInterfaceInit()
+{
+
+ static struct netif netif;
+ ethernetif_config_t enet_config = {
+ .phyHandle = &phyHandle,
+ .macAddress = configMAC_ADDR,
+ };
+
+ mdioHandle.resource.csrClock_Hz = EXAMPLE_CLOCK_FREQ;
+
+ netifapi_netif_add(&netif, &enet_config, EXAMPLE_NETIF_INIT_FN, tcpip_input);
+
+ netifapi_netif_set_default(&netif);
+ netifapi_netif_set_up(netif_default);
+ LOCK_TCPIP_CORE();
+ netif_create_ip6_linklocal_address(netif_default, 1);
+ UNLOCK_TCPIP_CORE();
+
+ vTaskDelay(pdMS_TO_TICKS(1500));
+
+ for (uint8_t i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++)
+ {
+ const char * str_ip = "-";
+ if (ip6_addr_isvalid(netif_ip6_addr_state(netif_default, i)))
+ {
+ str_ip = ip6addr_ntoa(netif_ip6_addr(netif_default, i));
+ }
+ PRINTF(" IPv6 Address%d : %s\r\n", i, str_ip);
+ }
+ PRINTF("************************************************\r\n");
+
+ if (netif_is_up(&netif))
+ {
+ return CHIP_NO_ERROR;
+ }
+
+ return CHIP_ERROR_NOT_CONNECTED;
+}
+#endif
+
+CHIP_ERROR PlatformManagerImpl::_InitChipStack(void)
+{
+#if CHIP_DEVICE_CONFIG_ENABLE_WPA
+ hal_gpio_status_t status_gpio;
+ hal_gpio_pin_config_t resetPinConfig = {
+ .direction = kHAL_GpioDirectionOut,
+ .level = 0U,
+ .port = 3,
+ .pin = 9,
+ };
+
+ GPIO_HANDLE_DEFINE(otGpioResetHandle);
+
+#endif /* CHIP_DEVICE_CONFIG_ENABLE_WPA */
+
+ CHIP_ERROR err = CHIP_ERROR_INTERNAL;
+ int osError;
+
+ /* Initialize platform services */
+ err = ServiceInit();
+ SuccessOrExit(err);
+
+ // Initialize the configuration system.
+ err = Internal::NXPConfig::Init();
+ SuccessOrExit(err);
+
+ SetConfigurationMgr(&ConfigurationManagerImpl::GetDefaultInstance());
+ SetDiagnosticDataProvider(&DiagnosticDataProviderImpl::GetDefaultInstance());
+
+#if CHIP_DEVICE_CONFIG_ENABLE_WPA
+ /* Initialize LwIP via Wi-Fi layer. */
+ net_ipv4stack_init();
+#else
+ /* Initialize LwIP directly. */
+ tcpip_init(NULL, NULL);
+#endif
+
+ /* Init the controller by giving as an arg the connectivity supported */
+ PLATFORM_InitControllers(connBle_c
+#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
+ | conn802_15_4_c
+#endif
+#if CHIP_DEVICE_CONFIG_ENABLE_WPA
+ | connWlan_c
+#endif
+ );
+#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
+ PLATFORM_InitOt();
+ /*
+ * Initialize the RCP here: the WiFi initialization requires to enable/disable
+ * coexistence through the Spinel interface; as such, the otPlatRadioInit() call
+ * will fail if done afterwards
+ */
+ otPlatLogInit();
+ otPlatRadioInit();
+ otPlatSetResetFunction(initiateResetInIdle);
+ otPlatRandomInit();
+#endif
+
+#if CHIP_DEVICE_CONFIG_ENABLE_WPA
+
+ osError = OSA_SetupIdleFunction(chip::DeviceLayer::PlatformManagerImpl::IdleHook);
+ if (osError != WM_SUCCESS)
+ {
+ ChipLogError(DeviceLayer, "Failed to setup idle function");
+ err = CHIP_ERROR_NO_MEMORY;
+ goto exit;
+ }
+
+ ChipLogProgress(DeviceLayer, "Wi-Fi module initialization done.");
+#elif !CHIP_DEVICE_CONFIG_ENABLE_THREAD
+ err = EthernetInterfaceInit();
+
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogProgress(DeviceLayer,
+ "LWIP interface initialization failed. Make sure there is internet conectivity on the board and reset!");
+ chipDie();
+ }
+ ChipLogProgress(DeviceLayer, "LWIP interface initialization done");
+#endif
+
+ // Call _InitChipStack() on the generic implementation base class
+ // to finish the initialization process.
+ err = Internal::GenericPlatformManagerImpl_FreeRTOS<PlatformManagerImpl>::_InitChipStack();
+ SuccessOrExit(err);
+
+ err = System::Clock::InitClock_RealTime();
+ SuccessOrExit(err);
+
+ mStartTime = System::SystemClock().GetMonotonicTimestamp();
+
+exit:
+ return err;
+}
+
+void PlatformManagerImpl::SaveSettings(void)
+{
+#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
+ otPlatSaveSettingsIdle();
+#endif
+}
+
+void PlatformManagerImpl::IdleHook(void)
+{
+ bool isResetScheduled = PlatformMgrImpl().GetResetInIdleValue();
+ if (isResetScheduled)
+ {
+ /*
+ * In case a reset in IDLE has been scheduled
+ * Disable IRQs so that the idle task won't be preempted until the reset
+ */
+ OSA_InterruptDisable();
+ }
+
+ chip::DeviceLayer::Internal::NXPConfig::RunSystemIdleTask();
+
+#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
+ SaveSettings();
+#endif
+
+#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR
+ /* Resume OTA Transactions in Idle task */
+ OTA_TransactionResume();
+#endif
+
+ /*
+ * In case a reset in idle operation has been posted,
+ * reset the device after having run the idle function
+ */
+ if (isResetScheduled)
+ {
+ PlatformMgrImpl().Reset();
+ }
+}
+
+void PlatformManagerImpl::Reset(void)
+{
+ ChipLogProgress(DeviceLayer, "System restarting");
+ // Restart the system.
+ NVIC_SystemReset();
+ while (1)
+ {
+ }
+}
+
+void PlatformManagerImpl::ScheduleResetInIdle(void)
+{
+ resetInIdle = true;
+}
+
+bool PlatformManagerImpl::GetResetInIdleValue(void)
+{
+ return resetInIdle;
+}
+
+extern "C" void initiateResetInIdle(void)
+{
+ PlatformMgr().Shutdown();
+ PlatformMgrImpl().ScheduleResetInIdle();
+}
+
+extern "C" void scheduleResetInIdle(void)
+{
+ PlatformMgrImpl().ScheduleResetInIdle();
+}
+
+extern "C" bool getResetInIdleValue(void)
+{
+ return PlatformMgrImpl().GetResetInIdleValue();
+}
+
+void PlatformManagerImpl::StopBLEConnectivity(void)
+{
+#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
+ otPlatRadioSendSetPropVendorUint8Cmd(OT_NXP_SPINEL_PROP_VENDOR_BLE_STATE, 0);
+#endif /* CHIP_DEVICE_CONFIG_ENABLE_THREAD */
+}
+
+void PlatformManagerImpl::_Shutdown()
+{
+ uint64_t upTime = 0;
+
+ if (GetDiagnosticDataProvider().GetUpTime(upTime) == CHIP_NO_ERROR)
+ {
+ uint32_t totalOperationalHours = 0;
+
+ if (ConfigurationMgr().GetTotalOperationalHours(totalOperationalHours) == CHIP_NO_ERROR)
+ {
+ ConfigurationMgr().StoreTotalOperationalHours(totalOperationalHours + static_cast<uint32_t>(upTime / 3600));
+ }
+ else
+ {
+ ChipLogError(DeviceLayer, "Failed to get total operational hours of the Node");
+ }
+ }
+ else
+ {
+ ChipLogError(DeviceLayer, "Failed to get current uptime since the Node’s last reboot");
+ }
+
+ /* Handle the server shutting down & emit the ShutDown event*/
+ PlatformMgr().HandleServerShuttingDown();
+ /* Shutdown all layers */
+ Internal::GenericPlatformManagerImpl_FreeRTOS<PlatformManagerImpl>::_Shutdown();
+}
+
+} // namespace DeviceLayer
+} // namespace chip
+
+extern "C" void mt_wipe(void)
+{
+ chip::DeviceLayer::Internal::NXPConfig::FactoryResetConfig();
+}
diff --git a/src/platform/nxp/rt/rt1170/SystemPlatformConfig.h b/src/platform/nxp/rt/rt1170/SystemPlatformConfig.h
new file mode 100644
index 0000000..3838fc8
--- /dev/null
+++ b/src/platform/nxp/rt/rt1170/SystemPlatformConfig.h
@@ -0,0 +1,40 @@
+/*
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ * Copyright (c) 2020 Google LLC.
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * Platform-specific configuration overrides for the CHIP System
+ * Layer on NXP RT1170 Platforms.
+ *
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+// ==================== Platform Adaptations ====================
+
+/* Default NXP Platform adaptations are used */
+
+// ========== Platform-specific Configuration Overrides =========
+
+/* Default NXP Platform configuration overrides are used */
+
+// Include default nxp platform configurations
+#include "platform/nxp/common/SystemNXPPlatformDefaultConfig.h"
diff --git a/src/platform/nxp/rt/rt1170/args.gni b/src/platform/nxp/rt/rt1170/args.gni
new file mode 100644
index 0000000..aaadc30
--- /dev/null
+++ b/src/platform/nxp/rt/rt1170/args.gni
@@ -0,0 +1,62 @@
+# Copyright (c) 2020 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/chip.gni")
+import("//build_overrides/nxp_sdk.gni")
+
+rt_platform = "rt1170"
+nxp_platform = "rt/${rt_platform}"
+nxp_sdk_name = "rt_sdk"
+chip_device_platform = "nxp"
+lwip_platform = "nxp"
+
+# ARM architecture flags will be set based on NXP board.
+arm_platform_config = "${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_arm.gni"
+
+chip_device_project_config_include = "<CHIPProjectConfig.h>"
+chip_project_config_include = "<CHIPProjectConfig.h>"
+chip_inet_project_config_include = "<CHIPProjectConfig.h>"
+chip_system_project_config_include = "<CHIPProjectConfig.h>"
+chip_ble_project_config_include = "<CHIPProjectConfig.h>"
+
+chip_build_tests = false
+
+#This enables the EventList global attribute
+enable_eventlist_attribute = true
+
+# TODO : Enable the OTA Requestor by default.
+# This requires the mcuboot bootloader to be used, which reserves the first 256 kB of the flash.
+# If mcuboot is not used, "no_mcuboot" must be set to true in the gn gen build command
+# in order for the application to be linked at the base of the flash.
+#chip_enable_ota_requestor = true
+declare_args() {
+ # TODO : set no_mcuboot to false by default when enabling ota requestor by default
+ no_mcuboot = true
+
+ chip_enable_secondary_nwk_if = false
+}
+
+# As a temporary workaround, we are disabling the session resumption because currently
+# the mbedtls port does not support this.
+# If not disabled, reconnecting to the OTA Provider node will fail.
+chip_enable_session_resumption = false
+
+mbedtls_target = "${nxp_sdk_build_root}:nxp_mbedtls"
+
+openthread_external_mbedtls = mbedtls_target
+openthread_project_core_config_file = "OpenThreadConfig.h"
+openthread_core_config_deps = [ "${chip_root}/third_party/openthread/platforms/nxp/${nxp_platform}:openthread_core_config_rt1170" ]
+openthread_core_config_platform_check_file =
+ "openthread-core-rt1170-config-check.h"
+openthread_external_platform = "${chip_root}/third_party/openthread/platforms/nxp/${nxp_platform}:libopenthread-rt1170"
diff --git a/third_party/openthread/platforms/nxp/rt/rt1060/BUILD.gn b/third_party/openthread/platforms/nxp/rt/rt1060/BUILD.gn
new file mode 100644
index 0000000..ef44f90
--- /dev/null
+++ b/third_party/openthread/platforms/nxp/rt/rt1060/BUILD.gn
@@ -0,0 +1,150 @@
+# Copyright (c) 2020-2022 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/chip.gni")
+import("//build_overrides/mbedtls.gni")
+import("//build_overrides/nxp_sdk.gni")
+import("//build_overrides/openthread.gni")
+
+#allows to get common NXP SDK gn options
+import("${nxp_sdk_build_root}/nxp_sdk.gni")
+
+# Allows to get various RT gn options
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/${nxp_sdk_name}.gni")
+openthread_nxp_root = "${chip_root}/third_party/openthread/ot-nxp"
+
+config("openthread_rt1060_config") {
+ defines = []
+ include_dirs = [
+ "${openthread_nxp_root}/src/common",
+ "${openthread_nxp_root}/src/common/br",
+ "${openthread_nxp_root}/src/common/spinel",
+ "${openthread_nxp_root}/src/imx_rt/rt1060",
+ "${openthread_nxp_root}/third_party/mbedtls/configs",
+ "${openthread_root}/third_party/mbedtls",
+ "${openthread_root}/examples/platforms",
+ "${openthread_nxp_root}/examples/utils/cli_addons",
+ "${openthread_nxp_root}/examples/utils/cli_addons/ephemeral_key",
+ "${openthread_nxp_root}/examples/utils/cli_addons/lwip",
+ ]
+
+ if (chip_enable_wifi && chip_enable_openthread) {
+ defines += [
+ "OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE=1",
+ "OPENTHREAD_CONFIG_COMMISSIONER_ENABLE=1",
+ "OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE=1",
+ "OPENTHREAD_CONFIG_PLATFORM_UDP_ENABLE=1",
+ "OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE=1",
+ "OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS=3",
+ "OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE=1",
+ "OPENTHREAD_CONFIG_BORDER_AGENT_ID_ENABLE=1",
+ "OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE=1",
+ "OPENTHREAD_CONFIG_SRP_SERVER_ADVERTISING_PROXY_ENABLE=1",
+ "OPENTHREAD_CONFIG_DNSSD_DISCOVERY_PROXY_ENABLE=1",
+ "OPENTHREAD_CONFIG_MULTICAST_DNS_ENABLE=1",
+ "OPENTHREAD_CONFIG_MULTICAST_DNS_PUBLIC_API_ENABLE=1",
+ "OT_APP_BR_LWIP_HOOKS_EN=1",
+ ]
+
+ if (chip_enable_matter_cli) {
+ defines += [
+ "OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE=1",
+ "OT_APP_CLI_EPHEMERAL_KEY_ADDON=1",
+ "OT_APP_CLI_LWIP_ADDON=1",
+ ]
+ }
+ }
+
+ # ot cli configs
+ defines += [ "OPENTHREAD_CONFIG_PING_SENDER_ENABLE=1" ]
+}
+
+#Config used by the openthread stack to get the path to OpenthreadConfig.h
+source_set("openthread_core_config_rt1060") {
+ public_configs = [ ":openthread_rt1060_config" ]
+ public_deps = [ nxp_sdk_target ]
+}
+
+source_set("libopenthread-rt1060") {
+ deps = []
+ sources = [
+ "${openthread_nxp_root}/src/common/alarm_freertos.c",
+ "${openthread_nxp_root}/src/common/diag.c",
+ "${openthread_nxp_root}/src/common/entropy.c",
+ "${openthread_nxp_root}/src/common/logging.c",
+ "${openthread_nxp_root}/src/common/spinel/misc.c",
+ "${openthread_nxp_root}/src/common/spinel/radio.cpp",
+ "${openthread_nxp_root}/src/common/spinel/spinel_hdlc.cpp",
+ "${openthread_nxp_root}/src/common/spinel/system.c",
+ "${openthread_root}/src/lib/hdlc/hdlc.cpp",
+ "${openthread_root}/src/lib/url/url.cpp",
+ ]
+
+ if (chip_enable_wifi && chip_enable_openthread) {
+ sources += [
+ "${openthread_nxp_root}/src/common/br/border_agent.c",
+ "${openthread_nxp_root}/src/common/br/br_rtos_manager.c",
+ "${openthread_nxp_root}/src/common/br/infra_if.c",
+ "${openthread_nxp_root}/src/common/br/lwip_hooks.c",
+ "${openthread_nxp_root}/src/common/br/lwip_mcast.c",
+ "${openthread_nxp_root}/src/common/br/mdns_socket.c",
+ "${openthread_nxp_root}/src/common/br/udp_plat.c",
+ "${openthread_nxp_root}/src/common/br/utils.c",
+ ]
+
+ if (chip_enable_matter_cli) {
+ sources += [
+ "${openthread_nxp_root}/examples/utils/cli_addons/addons_cli.c",
+ "${openthread_nxp_root}/examples/utils/cli_addons/ephemeral_key/ephemeral_key_cli.c",
+ "${openthread_nxp_root}/examples/utils/cli_addons/lwip/lwip_cli.c",
+ ]
+ }
+
+ deps += [ "${nxp_sdk_build_root}:nxp_lwip" ]
+ }
+
+ if (nxp_nvm_component == "nvm_fwk") {
+ sources += [ "${openthread_nxp_root}/src/common/flash_nvm.c" ]
+ } else {
+ sources += [ "${openthread_nxp_root}/src/common/flash_littlefs.c" ]
+ }
+
+ defines = [ "OPENTHREAD_FTD" ]
+
+ if (hci_spinel_single_uart) {
+ defines += [ "OT_PLAT_SPINEL_HCI_OVER_HDLC" ]
+ sources +=
+ [ "${openthread_nxp_root}/src/common/spinel/spinel_hci_hdlc.cpp" ]
+ } else if (spinel_over_spi == true) {
+ defines += [
+ "OT_PLAT_SPINEL_OVER_SPI",
+ "OT_PLATFORM_CONFIG_SPI_INSTANCE=4",
+ "OT_PLATFORM_CONFIG_SPI_INT_PORT=2",
+ "OT_PLATFORM_CONFIG_SPI_INT_PIN=4",
+ "LPSPI_MASTER_CLK_FREQ=CLOCK_GetClockRootFreq(kCLOCK_LpspiClkRoot)",
+ ]
+ sources += [ "${openthread_nxp_root}/src/common/spinel/spi_interface.cpp" ]
+ } else {
+ defines += [ "OT_PLAT_SPINEL_OVER_HDLC" ]
+ }
+
+ public_configs = [ ":openthread_rt1060_config" ]
+
+ deps += [
+ "${nxp_sdk_build_root}:nxp_mbedtls",
+ "${openthread_root}:libopenthread-spinel-rcp",
+ "../../..:libopenthread-platform-utils",
+ nxp_sdk_target,
+ ]
+}
diff --git a/third_party/openthread/platforms/nxp/rt/rt1170/BUILD.gn b/third_party/openthread/platforms/nxp/rt/rt1170/BUILD.gn
new file mode 100644
index 0000000..039c911
--- /dev/null
+++ b/third_party/openthread/platforms/nxp/rt/rt1170/BUILD.gn
@@ -0,0 +1,142 @@
+# Copyright (c) 2020-2022 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/chip.gni")
+import("//build_overrides/mbedtls.gni")
+import("//build_overrides/nxp_sdk.gni")
+import("//build_overrides/openthread.gni")
+
+#allows to get common NXP SDK gn options
+import("${nxp_sdk_build_root}/nxp_sdk.gni")
+
+# Allows to get various RT gn options
+import("${nxp_sdk_build_root}/${nxp_sdk_name}/${nxp_sdk_name}.gni")
+openthread_nxp_root = "${chip_root}/third_party/openthread/ot-nxp"
+
+config("openthread_rt1170_config") {
+ include_dirs = [
+ "${openthread_nxp_root}/src/common",
+ "${openthread_nxp_root}/src/common/br",
+ "${openthread_nxp_root}/src/imx_rt/rt1170",
+ "${openthread_nxp_root}/third_party/mbedtls/configs",
+ "${openthread_root}/third_party/mbedtls",
+ "${openthread_root}/examples/platforms",
+ "${openthread_nxp_root}/examples/utils/cli_addons",
+ "${openthread_nxp_root}/examples/utils/cli_addons/ephemeral_key",
+ "${openthread_nxp_root}/examples/utils/cli_addons/lwip",
+ ]
+ defines = [ "OT_PLAT_SPINEL_OVER_SPI" ]
+
+ if (chip_enable_wifi && chip_enable_openthread) {
+ defines += [
+ "OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE=1",
+ "OPENTHREAD_CONFIG_COMMISSIONER_ENABLE=1",
+ "OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE=1",
+ "OPENTHREAD_CONFIG_PLATFORM_UDP_ENABLE=1",
+ "OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE=1",
+ "OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS=3",
+ "OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE=1",
+ "OPENTHREAD_CONFIG_BORDER_AGENT_ID_ENABLE=1",
+ "OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE=1",
+ "OPENTHREAD_CONFIG_SRP_SERVER_ADVERTISING_PROXY_ENABLE=1",
+ "OPENTHREAD_CONFIG_DNSSD_DISCOVERY_PROXY_ENABLE=1",
+ "OPENTHREAD_CONFIG_MULTICAST_DNS_ENABLE=1",
+ "OPENTHREAD_CONFIG_MULTICAST_DNS_PUBLIC_API_ENABLE=1",
+ "OT_APP_BR_LWIP_HOOKS_EN=1",
+ ]
+
+ if (chip_enable_matter_cli) {
+ defines += [
+ "OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE=1",
+ "OT_APP_CLI_EPHEMERAL_KEY_ADDON=1",
+ "OT_APP_CLI_LWIP_ADDON=1",
+ ]
+ }
+ }
+
+ # ot cli configs
+ defines += [ "OPENTHREAD_CONFIG_PING_SENDER_ENABLE=1" ]
+}
+
+#Config used by the openthread stack to get the path to OpenthreadConfig.h
+source_set("openthread_core_config_rt1170") {
+ public_configs = [ ":openthread_rt1170_config" ]
+ public_deps = [ nxp_sdk_target ]
+}
+
+source_set("libopenthread-rt1170") {
+ deps = []
+ sources = [
+ "${openthread_nxp_root}/src/common/alarm_freertos.c",
+ "${openthread_nxp_root}/src/common/diag.c",
+ "${openthread_nxp_root}/src/common/entropy.c",
+ "${openthread_nxp_root}/src/common/logging.c",
+ "${openthread_nxp_root}/src/common/spinel/misc.c",
+ "${openthread_nxp_root}/src/common/spinel/radio.cpp",
+ "${openthread_nxp_root}/src/common/spinel/system.c",
+ "${openthread_root}/src/lib/hdlc/hdlc.cpp",
+ "${openthread_root}/src/lib/url/url.cpp",
+ ]
+
+ if (chip_enable_wifi && chip_enable_openthread) {
+ sources += [
+ "${openthread_nxp_root}/src/common/br/border_agent.c",
+ "${openthread_nxp_root}/src/common/br/br_rtos_manager.c",
+ "${openthread_nxp_root}/src/common/br/infra_if.c",
+ "${openthread_nxp_root}/src/common/br/lwip_hooks.c",
+ "${openthread_nxp_root}/src/common/br/lwip_mcast.c",
+ "${openthread_nxp_root}/src/common/br/mdns_socket.c",
+ "${openthread_nxp_root}/src/common/br/udp_plat.c",
+ "${openthread_nxp_root}/src/common/br/utils.c",
+ ]
+
+ if (chip_enable_matter_cli) {
+ sources += [
+ "${openthread_nxp_root}/examples/utils/cli_addons/addons_cli.c",
+ "${openthread_nxp_root}/examples/utils/cli_addons/ephemeral_key/ephemeral_key_cli.c",
+ "${openthread_nxp_root}/examples/utils/cli_addons/lwip/lwip_cli.c",
+ ]
+ }
+
+ deps += [ "${nxp_sdk_build_root}:nxp_lwip" ]
+ }
+
+ if (nxp_nvm_component == "nvm_fwk") {
+ sources += [ "${openthread_nxp_root}/src/common/flash_nvm.c" ]
+ } else {
+ sources += [ "${openthread_nxp_root}/src/common/flash_littlefs.c" ]
+ }
+
+ defines = [ "OPENTHREAD_FTD" ]
+
+ if (hci_spinel_single_uart) {
+ defines += [ "OT_PLAT_SPINEL_HCI_OVER_HDLC" ]
+ sources += [
+ "${openthread_nxp_root}/src/common/spinel/spinel_hci_hdlc.cpp",
+ "${openthread_nxp_root}/src/common/spinel/spinel_hdlc.cpp",
+ ]
+ } else {
+ defines += [ "OT_PLAT_SPINEL_OVER_SPI" ]
+ sources += [ "${openthread_nxp_root}/src/common/spinel/spi_interface.cpp" ]
+ }
+
+ public_configs = [ ":openthread_rt1170_config" ]
+
+ deps += [
+ "${nxp_sdk_build_root}:nxp_mbedtls",
+ "${openthread_root}:libopenthread-spinel-rcp",
+ "../../..:libopenthread-platform-utils",
+ nxp_sdk_target,
+ ]
+}