Skip to content

Commit

Permalink
Merge branch 'master' into fs-ci
Browse files Browse the repository at this point in the history
  • Loading branch information
arkq authored Sep 19, 2024
2 parents f8bda88 + 12f04dc commit 4248da7
Show file tree
Hide file tree
Showing 16 changed files with 513 additions and 135 deletions.
1 change: 1 addition & 0 deletions .github/workflows/examples-nxp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,7 @@ jobs:
--target nxp-rw61x-freertos-all-clusters-wifi \
--target nxp-rw61x-freertos-all-clusters-thread \
--target nxp-rw61x-freertos-all-clusters-thread-wifi \
--target nxp-rw61x-freertos-all-clusters-wifi-ota-cmake \
build \
--copy-artifacts-to out/artifacts \
"
Expand Down
77 changes: 67 additions & 10 deletions config/nxp/chip-cmake-freertos/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,24 @@ if(NOT CHIP_ROOT)
get_filename_component(CHIP_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../.. REALPATH)
endif()

get_filename_component(GN_ROOT_TARGET ${CHIP_ROOT}/config/nxp/chip-gn-freertos REALPATH)
if (NOT GN_ROOT_TARGET)
get_filename_component(GN_ROOT_TARGET ${CHIP_ROOT}/config/nxp/chip-gn-freertos REALPATH)
endif()

# Include common NXP helpers for build & pre/post-build process
include(${CHIP_ROOT}/third_party/nxp/nxp_matter_support/cmake/build_helpers.cmake)

include(${CHIP_ROOT}/config/nxp/cmake/common.cmake)
include(${CHIP_ROOT}/src/app/chip_data_model.cmake)

if(NOT CONFIG_CHIP_BUILD_APP_WITH_GN)
# Prepare compiler flags
matter_add_cflags(${CMAKE_C_FLAGS})
matter_add_cxxflags(${CMAKE_CXX_FLAGS})

matter_get_compiler_flags_from_targets("${CONFIG_CHIP_EXTERNAL_TARGETS}")
endif()


# ==============================================================================
# Generate configuration for CHIP GN build system
Expand All @@ -39,31 +47,80 @@ matter_add_gn_arg_string("nxp_platform" ${CONFIG_CHIP_NXP_PLATFORM})
matter_add_gn_arg("chip_with_factory_data" ${CONFIG_CHIP_FACTORY_DATA})
matter_add_gn_arg("chip_enable_secure_dac_private_key_storage" ${CONFIG_CHIP_SECURE_DAC_PRIVATE_KEY_STORAGE})
matter_add_gn_arg("chip_enable_secure_whole_factory_data" ${CONFIG_CHIP_ENABLE_SECURE_WHOLE_FACTORY_DATA})
matter_add_gn_arg_bool("chip_enable_matter_cli" CONFIG_CHIP_LIB_SHELL)
matter_add_gn_arg_bool("chip_enable_pairing_autostart" CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART)

if (CONFIG_USE_CHIP_DATA_MODEL_INTERFACE)
set(DATA_MODEL_INTERFACE "enabled")
else()
set(DATA_MODEL_INTERFACE "disabled")
endif()

matter_common_gn_args(
DEBUG CONFIG_DEBUG
LIB_SHELL CONFIG_CHIP_LIB_SHELL
LIB_TESTS CONFIG_CHIP_BUILD_TESTS
PROJECT_CONFIG ${CONFIG_CHIP_PROJECT_CONFIG}
PROJECT_CONFIG_INC_DIR ${CONFIG_CHIP_PROJECT_CONFIG_INCLUDE_DIRS}
DEVICE_INFO_EXAMPLE_PROVIDER CONFIG_CHIP_EXAMPLE_DEVICE_INFO_PROVIDER
DATA_MODEL_INTERFACE ${DATA_MODEL_INTERFACE}
)
if(CONFIG_BOOTLOADER_MCUBOOT)
matter_add_gn_arg_bool("no_mcuboot" false)
endif(CONFIG_BOOTLOADER_MCUBOOT)

# Enable map file generation by default
matter_add_gn_arg_bool("chip_generate_link_map_file" true)

if(CONFIG_CHIP_BUILD_APP_WITH_GN)
include(${CHIP_ROOT}/third_party/nxp/nxp_matter_support/cmake/nxp_sdk_gn_build.cmake)
else()
matter_common_gn_args(
DEBUG CONFIG_DEBUG
LIB_SHELL CONFIG_CHIP_LIB_SHELL
LIB_TESTS CONFIG_CHIP_BUILD_TESTS
PROJECT_CONFIG ${CONFIG_CHIP_PROJECT_CONFIG}
PROJECT_CONFIG_INC_DIR ${CONFIG_CHIP_PROJECT_CONFIG_INCLUDE_DIRS}
DEVICE_INFO_EXAMPLE_PROVIDER CONFIG_CHIP_EXAMPLE_DEVICE_INFO_PROVIDER
DATA_MODEL_INTERFACE ${DATA_MODEL_INTERFACE}
)
endif()

matter_generate_args_tmp_file()

# ==============================================================================
# Build chip library
# ==============================================================================
if(NOT CONFIG_CHIP_BUILD_APP_WITH_GN)
matter_build(chip
LIB_SHELL ${CONFIG_CHIP_LIB_SHELL}
LIB_TESTS ${CONFIG_CHIP_BUILD_TESTS}
DEVICE_INFO_EXAMPLE_PROVIDER ${CONFIG_CHIP_EXAMPLE_DEVICE_INFO_PROVIDER}
GN_DEPENDENCIES ${CONFIG_GN_DEPENDENCIES}
)
endif()


#**************************************************************************************
# Pre-build instructions
#**************************************************************************************
nxp_pre_build_process()

#**************************************************************************************
# Post-build instructions
#**************************************************************************************
if(CONFIG_CHIP_OTA_REQUESTOR)

if (CONFIG_BOOTLOADER_MCUBOOT)
# Build mcuboot application
nxp_generate_mcuboot()

# Sign application binaries with mcuboot imgtool
nxp_sign_app_imgtool("${CONFIG_REMOVE_SECTIONS_FROM_BIN}")

endif()

# Generate .ota file
nxp_generate_ota_file()

endif(CONFIG_CHIP_OTA_REQUESTOR)

if (CONFIG_CHIP_FACTORY_DATA_BUILD)

set(OUTPUT_FILE_PATH ${gn_build}/factory_data)

# Generate factory data binaries
nxp_generate_factory_data()

endif(CONFIG_CHIP_FACTORY_DATA_BUILD)
4 changes: 3 additions & 1 deletion config/nxp/chip-module/generate_factory_data.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,9 @@ function(nxp_generate_factory_data)
# Localize all scripts needed to generate factory data partition
set(GENERATE_CERTS_SCRIPT_PATH ${CHIP_ROOT}/scripts/tools/nxp/generate_certs.py)
set(GENERATE_FDATA_SCRIPT_PATH ${CHIP_ROOT}/scripts/tools/nxp/factory_data_generator/generate.py)
set(OUTPUT_FILE_PATH ${APPLICATION_BINARY_DIR}/zephyr)
if (NOT OUTPUT_FILE_PATH)
set(OUTPUT_FILE_PATH ${APPLICATION_BINARY_DIR}/zephyr)
endif()

if(CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_GENERATED)
# Generate certificates
Expand Down
38 changes: 38 additions & 0 deletions examples/all-clusters-app/nxp/rt/rw61x/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#
# Copyright (c) 2024 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.
#

cmake_minimum_required(VERSION 3.13.1)

project(chip-rw61x-all-cluster-example)

if (NOT CHIP_ROOT)
get_filename_component(CHIP_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../../.. REALPATH)
endif()

# Define the GN root target for the application
get_filename_component(GN_ROOT_TARGET ${CMAKE_CURRENT_LIST_DIR} REALPATH)

# Include platform specific configs / variables
include(${CHIP_ROOT}/examples/platform/nxp/rt/rw61x/platform_config.cmake)

add_subdirectory(${CHIP_ROOT}/config/nxp/chip-cmake-freertos ./chip)

#**************************************************************************************
# Build example application
#**************************************************************************************
if(CONFIG_CHIP_BUILD_APP_WITH_GN)
nxp_build_app_with_gn()
endif()
110 changes: 110 additions & 0 deletions examples/platform/nxp/rt/rw61x/platform_config.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@

#
# Copyright (c) 2024 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
# CMake file that defines cmake variables specific to this platform
#

# Board configs
set(CONFIG_CORE_FOLDER "")

if (CONFIG_BOARD_VARIANT STREQUAL "frdm")
set(CONFIG_BOARD_NAME "frdmrw612")
else()
set(CONFIG_BOARD_NAME "rdrw612bga")
endif()

# MCUBoot OTA configs
set(CONFIG_MCUBOOT_BUILD_TYPE "flash_release")
set(CONFIG_CHIP_MCUBOOT_SLOT_SIZE 0x440000)
set(CONFIG_CHIP_MCUBOOT_MAX_SECTORS 1088)
set(CONFIG_CHIP_MCUBOOT_HEADER_SIZE 0x1000)

# CHIP configs
set(CONFIG_CHIP_DEVICE_VENDOR_ID 4151)
set(CONFIG_CHIP_DEVICE_PRODUCT_ID 41510)

set(CONFIG_CHIP_DEVICE_VENDOR_NAME "NXP Semiconductors")
if (NOT CONFIG_CHIP_DEVICE_PRODUCT_NAME)
set(CONFIG_CHIP_DEVICE_PRODUCT_NAME "Thermostat")
endif()
if (NOT CONFIG_CHIP_DEVICE_TYPE)
set(CONFIG_CHIP_DEVICE_TYPE 769)
endif()
set(CONFIG_CHIP_DEVICE_SPAKE2_IT 10000)
set(CONFIG_CHIP_DEVICE_SPAKE2_SALT "UXKLzwHdN3DZZLBaL2iVGhQi/OoQwIwJRQV4rpEalbA=")
if (NOT CONFIG_CHIP_DEVICE_DISCRIMINATOR)
set(CONFIG_CHIP_DEVICE_DISCRIMINATOR 2560)
endif()
if (NOT CONFIG_CHIP_DEVICE_SPAKE2_PASSCODE)
set(CONFIG_CHIP_DEVICE_SPAKE2_PASSCODE 14014)
endif()
set(CONFIG_CHIP_DEVICE_HARDWARE_VERSION 1)
set(CONFIG_CHIP_DEVICE_HARDWARE_VERSION_STRING "1.0")
set(CONFIG_CHIP_DEVICE_SERIAL_NUMBER "12345678")
set(CONFIG_CHIP_DEVICE_MANUFACTURING_DATE "2024-01-01")
set(CONFIG_CHIP_DEVICE_ROTATING_DEVICE_UID "00112233445566778899aabbccddeeff")
set(CONFIG_CHIP_DEVICE_PRODUCT_FINISH "Matte")
set(CONFIG_CHIP_DEVICE_PRODUCT_COLOR "Green")
set(CONFIG_CHIP_DEVICE_PRODUCT_URL "https://www.nxp.com/products/wireless/wi-fi-plus-bluetooth-plus-802-15-4/wireless-mcu-with-integrated-tri-radiobr1x1-wi-fi-6-plus-bluetooth-low-energy-5-3-802-15-4:RW612")
set(CONFIG_CHIP_DEVICE_PRODUCT_LABEL "RW612")
set(CONFIG_CHIP_DEVICE_PART_NUMBER "RW612")
set(CONFIG_CHIP_ENCRYPTED_FACTORY_DATA_AES128_KEY "2B7E151628AED2A6ABF7158809CF4F3C")
set(CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_GENERATED true)
set(CONFIG_CHIP_FACTORY_DATA_GENERATE_SPAKE2_VERIFIER true)
set(CONFIG_CHIP_ENCRYPTED_FACTORY_DATA true)

# build configs
set(CONFIG_CHIP_NVM_COMPONENT "nvs")
set(CONFIG_CHIP_RT_PLATFORM "rw61x")
set(CONFIG_CHIP_NXP_PLATFORM "rt/${CONFIG_CHIP_RT_PLATFORM}")
set(CONFIG_CHIP_FACTORY_DATA 1)
set(CONFIG_CHIP_SECURE_DAC_PRIVATE_KEY_STORAGE false)
set(CONFIG_CHIP_ENABLE_SECURE_WHOLE_FACTORY_DATA false)
set(CONFIG_CHIP_BUILD_APP_WITH_GN true)
set(CONFIG_LOG true)
set(CONFIG_MATTER_LOG_LEVEL 4) # detail logs

# BLE is enabled by default
if (NOT DEFINED CONFIG_BT)
set(CONFIG_BT true)
endif()

if (NOT DEFINED CONFIG_CHIP_IPV4)
set(CONFIG_CHIP_IPV4 true)
endif()

if (NOT DEFINED CONFIG_CHIP_DEVICE_SOFTWARE_VERSION)
set(CONFIG_CHIP_DEVICE_SOFTWARE_VERSION 1)
endif()

if (NOT DEFINED CONFIG_CHIP_DEVICE_SOFTWARE_VERSION_STRING)
set(CONFIG_CHIP_DEVICE_SOFTWARE_VERSION_STRING "1.0")
endif()

if(NOT DEFINED CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART)
set(CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART true)
endif()


# define sections to remove from the binary when converting the elf to bin with objcopy
if (CONFIG_CHIP_OTA_REQUESTOR)
set(CONFIG_REMOVE_SECTIONS_FROM_BIN -R .flash_config -R .NVM)
else()
set(CONFIG_REMOVE_SECTIONS_FROM_BIN -R .NVM)
endif()
38 changes: 38 additions & 0 deletions examples/thermostat/nxp/rt/rw61x/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#
# Copyright (c) 2024 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.
#

cmake_minimum_required(VERSION 3.13.1)

project(chip-rw61x-thermostat-example)

if (NOT CHIP_ROOT)
get_filename_component(CHIP_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../../.. REALPATH)
endif()

# Define the GN root target for the application
get_filename_component(GN_ROOT_TARGET ${CMAKE_CURRENT_LIST_DIR} REALPATH)

# Include platform specific configs / variables
include(${CHIP_ROOT}/examples/platform/nxp/rt/rw61x/platform_config.cmake)

add_subdirectory(${CHIP_ROOT}/config/nxp/chip-cmake-freertos ./chip)

#**************************************************************************************
# Build example application
#**************************************************************************************
if(CONFIG_CHIP_BUILD_APP_WITH_GN)
nxp_build_app_with_gn()
endif()
5 changes: 4 additions & 1 deletion scripts/build/build/targets.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
from builders.mw320 import MW320App, MW320Builder
from builders.nrf import NrfApp, NrfBoard, NrfConnectBuilder
from builders.nuttx import NuttXApp, NuttXBoard, NuttXBuilder
from builders.nxp import NxpApp, NxpBoard, NxpBuilder, NxpOsUsed
from builders.nxp import NxpApp, NxpBoard, NxpBoardVariant, NxpBuilder, NxpBuildSystem, NxpOsUsed
from builders.openiotsdk import OpenIotSdkApp, OpenIotSdkBuilder, OpenIotSdkCryptoBackend
from builders.qpg import QpgApp, QpgBoard, QpgBuilder
from builders.stm32 import stm32App, stm32Board, stm32Builder
Expand Down Expand Up @@ -550,6 +550,9 @@ def BuildNxpTarget():
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="frdm", board_variant=NxpBoardVariant.FRDM).OnlyIfRe('rw61x')
target.AppendModifier(name="cmake", build_system=NxpBuildSystem.CMAKE).OnlyIfRe('rw61x')

return target

Expand Down
Loading

0 comments on commit 4248da7

Please sign in to comment.