3636# script_path - a path to script that makes a JSON factory data file from given arguments.
3737# schema_path - a path to JSON schema file which can be used to verify generated factory data JSON file.
3838# This argument is optional, if you don't want to verify the JSON file put it empty "".
39+
3940# output_path - a path to output directory, where created hex and JSON files will be stored.
4041function (nrfconnect_create_factory_data factory_data_target script_path schema_path output_path )
4142
43+ # Transforming kConfigs to sysbuild format
44+ if (SB_CONFIG_PARTITION_MANAGER)
45+ sysbuild_get (CONFIG_CHIP_DEVICE_SERIAL_NUMBER IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_SERIAL_NUMBER KCONFIG )
46+ sysbuild_get (CONFIG_CHIP_DEVICE_MANUFACTURING_DATE IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_MANUFACTURING_DATE KCONFIG )
47+ sysbuild_get (CONFIG_CHIP_DEVICE_VENDOR_ID IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_VENDOR_ID KCONFIG )
48+ sysbuild_get (CONFIG_CHIP_DEVICE_PRODUCT_ID IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_PRODUCT_ID KCONFIG )
49+ sysbuild_get (CONFIG_CHIP_DEVICE_VENDOR_NAME IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_VENDOR_NAME KCONFIG )
50+ sysbuild_get (CONFIG_CHIP_DEVICE_PRODUCT_NAME IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_PRODUCT_NAME KCONFIG )
51+ sysbuild_get (CONFIG_CHIP_DEVICE_HARDWARE_VERSION IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_HARDWARE_VERSION KCONFIG )
52+ sysbuild_get (CONFIG_CHIP_DEVICE_HARDWARE_VERSION_STRING IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_HARDWARE_VERSION_STRING KCONFIG )
53+ sysbuild_get (CONFIG_CHIP_ROTATING_DEVICE_ID IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_ROTATING_DEVICE_ID KCONFIG )
54+ sysbuild_get (CONFIG_CHIP_DEVICE_GENERATE_ROTATING_DEVICE_UID IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_GENERATE_ROTATING_DEVICE_UID KCONFIG )
55+ sysbuild_get (CONFIG_CHIP_DEVICE_ROTATING_DEVICE_UID IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_ROTATING_DEVICE_UID KCONFIG )
56+ sysbuild_get (CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_GENERATED IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_GENERATED KCONFIG )
57+ sysbuild_get (CONFIG_CHIP_FACTORY_DATA_GENERATE_CD IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_FACTORY_DATA_GENERATE_CD KCONFIG )
58+ sysbuild_get (CONFIG_CHIP_FACTORY_DATA_USE_DEFAULT_CERTS IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_FACTORY_DATA_USE_DEFAULT_CERTS KCONFIG )
59+ sysbuild_get (CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_USER IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_USER KCONFIG )
60+ sysbuild_get (CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_CERT IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_CERT KCONFIG )
61+ sysbuild_get (CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_KEY IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_KEY KCONFIG )
62+ sysbuild_get (CONFIG_CHIP_FACTORY_DATA_USER_CERTS_PAI_CERT IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_FACTORY_DATA_USER_CERTS_PAI_CERT KCONFIG )
63+ sysbuild_get (CONFIG_CHIP_DEVICE_SPAKE2_IT IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_SPAKE2_IT KCONFIG )
64+ sysbuild_get (CONFIG_CHIP_DEVICE_SPAKE2_SALT IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_SPAKE2_SALT KCONFIG )
65+ sysbuild_get (CONFIG_CHIP_DEVICE_DISCRIMINATOR IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_DISCRIMINATOR KCONFIG )
66+ sysbuild_get (CONFIG_CHIP_DEVICE_SPAKE2_PASSCODE IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_SPAKE2_PASSCODE KCONFIG )
67+ sysbuild_get (CONFIG_CHIP_DEVICE_SPAKE2_TEST_VERIFIER IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_SPAKE2_TEST_VERIFIER KCONFIG )
68+ sysbuild_get (CONFIG_CHIP_FACTORY_DATA_GENERATE_SPAKE2_VERIFIER IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_FACTORY_DATA_GENERATE_SPAKE2_VERIFIER KCONFIG )
69+ sysbuild_get (CONFIG_CHIP_DEVICE_PRODUCT_FINISH IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_PRODUCT_FINISH KCONFIG )
70+ sysbuild_get (CONFIG_CHIP_DEVICE_PRODUCT_COLOR IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_PRODUCT_COLOR KCONFIG )
71+ sysbuild_get (CONFIG_CHIP_FACTORY_DATA_GENERATE_ONBOARDING_CODES IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_FACTORY_DATA_GENERATE_ONBOARDING_CODES KCONFIG )
72+ sysbuild_get (CONFIG_CHIP_DEVICE_ENABLE_KEY IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_ENABLE_KEY KCONFIG )
73+ endif ()
74+
4275# set script args for future purpose
4376set (script_args)
4477## generate all script arguments
@@ -89,9 +122,15 @@ if(CONFIG_CHIP_FACTORY_DATA_USE_DEFAULT_CERTS)
89122 string (APPEND script_args "--dac_key \" ${CHIP_ROOT} /credentials/development/attestation/Matter-Development-DAC-${raw_vid_upper} -${raw_pid_upper} -Key.der\"\n " )
90123 string (APPEND script_args "--pai_cert \" ${CHIP_ROOT} /credentials/development/attestation/Matter-Development-PAI-${raw_vid_upper} -noPID-Cert.der\"\n " )
91124elseif (CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_USER)
92- string (APPEND script_args "--dac_cert \" ${CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_CERT} \"\n " )
93- string (APPEND script_args "--dac_key \" ${CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_KEY} \"\n " )
94- string (APPEND script_args "--pai_cert \" ${CONFIG_CHIP_FACTORY_DATA_USER_CERTS_PAI_CERT} \"\n " )
125+ set (dac_cert "${CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_CERT} " )
126+ set (dac_key "${CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_KEY} " )
127+ set (pai_cert "${CONFIG_CHIP_FACTORY_DATA_USER_CERTS_PAI_CERT} " )
128+ string (CONFIGURE "${dac_cert} " dac_cert)
129+ string (CONFIGURE "${dac_key} " dac_key)
130+ string (CONFIGURE "${pai_cert} " pai_cert)
131+ string (APPEND script_args "--dac_cert \" ${dac_cert} \"\n " )
132+ string (APPEND script_args "--dac_key \" ${dac_key} \"\n " )
133+ string (APPEND script_args "--pai_cert \" ${pai_cert} \"\n " )
95134elseif (CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_GENERATED)
96135 string (APPEND script_args "--gen_certs\n " )
97136endif ()
@@ -130,19 +169,15 @@ string(APPEND script_args "-o \"${factory_data_output_path}\"\n")
130169string (APPEND script_args "-s \" ${schema_path} \"\n " )
131170
132171# Add optional offset and size arguments to generate .hex file as well as .json.
133- if (CONFIG_PARTITION_MANAGER_ENABLED)
172+ if (SB_CONFIG_PARTITION_MANAGER OR CONFIG_PARTITION_MANAGER_ENABLED)
134173 string (APPEND script_args "--offset $<TARGET_PROPERTY :partition_manager ,PM_FACTORY_DATA_ADDRESS >\n " )
135174 string (APPEND script_args "--size $<TARGET_PROPERTY :partition_manager ,PM_FACTORY_DATA_OFFSET >\n " )
136175else ()
137- dt_alias (factory_data_alias PROPERTY "factory-data" )
138- dt_node_exists (factory_data_exists PATH "${factory_data_alias} " )
139- if (NOT ${factory_data_exists} )
140- message (FATAL_ERROR "factory-data alias does not exist in DTS" )
141- endif ()
142- dt_reg_addr (factory_data_addr PATH ${factory_data_alias} )
143- dt_reg_size (factory_data_size PATH ${factory_data_alias} )
176+ dt_nodelabel (factory_data_partition_path TARGET ${DEFAULT_IMAGE} NODELABEL "factory_data_partition" REQUIRED )
177+ dt_reg_addr (factory_data_addr TARGET ${DEFAULT_IMAGE} PATH ${factory_data_partition_path} )
178+ dt_reg_size (factory_data_size TARGET ${DEFAULT_IMAGE} PATH ${factory_data_partition_path} )
144179 string (APPEND script_args "--offset ${factory_data_addr} \n " )
145- string (APPEND script_args "--size ${factory_data_size} \n " )
180+ string (APPEND script_args "--size ${factory_data_size} \n " )
146181endif ()
147182
148183# execute first script to create a JSON file
@@ -171,6 +206,10 @@ function(nrfconnect_generate_factory_data)
171206find_package (Python3 REQUIRED )
172207
173208# CHIP_ROOT must be provided as a reference set all localization of scripts
209+ if (NOT CHIP_ROOT AND ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR)
210+ set (CHIP_ROOT ${ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR} )
211+ endif ()
212+
174213if (NOT CHIP_ROOT)
175214message (FATAL_ERROR "CHIP_ROOT variable is not set, please add it to CMakeLists.txt file" )
176215endif ()
@@ -179,23 +218,25 @@ endif()
179218set (FACTORY_DATA_SCRIPT_PATH ${CHIP_ROOT} /scripts/tools/nrfconnect/generate_nrfconnect_chip_factory_data.py)
180219set (GENERATE_CBOR_SCRIPT_PATH ${CHIP_ROOT} /scripts/tools/nrfconnect/nrfconnect_generate_partition.py)
181220set (FACTORY_DATA_SCHEMA_PATH ${CHIP_ROOT} /scripts/tools/nrfconnect/nrfconnect_factory_data.schema)
182- set (OUTPUT_FILE_PATH ${APPLICATION_BINARY_DIR} /zephyr)
221+
222+ if (SB_CONFIG_PARTITION_MANAGER OR CONFIG_PARTITION_MANAGER_ENABLED)
223+ set (OUTPUT_FILE_PATH ${APPLICATION_BINARY_DIR} /zephyr)
224+ else ()
225+ set (OUTPUT_FILE_PATH ${APPLICATION_BINARY_DIR} )
226+
227+ import_kconfig ("CONFIG" ${CMAKE_BINARY_DIR} /${DEFAULT_IMAGE}/zephyr/.config )
228+ endif ()
183229
184230# create a .hex file with factory data in CBOR format based on the JSON file created previously
185231nrfconnect_create_factory_data (factory_data
186- ${FACTORY_DATA_SCRIPT_PATH}
187- ${FACTORY_DATA_SCHEMA_PATH}
232+ ${FACTORY_DATA_SCRIPT_PATH}
233+ ${FACTORY_DATA_SCHEMA_PATH}
188234 ${OUTPUT_FILE_PATH} )
189235
190- if (CONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE)
191- if (CONFIG_PARTITION_MANAGER_ENABLED)
192- # set custom target for merging factory_data hex file
193- set_property (GLOBAL PROPERTY factory_data_PM_HEX_FILE ${OUTPUT_FILE_PATH} /factory_data.hex )
194- set_property (GLOBAL PROPERTY factory_data_PM_TARGET factory_data )
195- else ()
196- set_property (GLOBAL APPEND PROPERTY HEX_FILES_TO_MERGE ${OUTPUT_FILE_PATH} /factory_data.hex ${OUTPUT_FILE_PATH} /zephyr.hex )
197- set_property (TARGET runners_yaml_props_target PROPERTY hex_file ${OUTPUT_FILE_PATH} /merged.hex )
198- endif ()
236+ if (SB_CONFIG_PARTITION_MANAGER OR CONFIG_PARTITION_MANAGER_ENABLED AND CONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE)
237+ # set custom target for merging factory_data hex file
238+ set_property (GLOBAL PROPERTY factory_data_PM_HEX_FILE ${OUTPUT_FILE_PATH} /factory_data.hex )
239+ set_property (GLOBAL PROPERTY factory_data_PM_TARGET factory_data )
199240endif ()
200241
201242
0 commit comments