Skip to content

Commit 15c1b4c

Browse files
[nrf fromlist][nrfconnect] Improved generation of the factory data
Allow to merge the factory data .hex file with the firmware's .hex file when partition manager is not available.
1 parent 73ce3ce commit 15c1b4c

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

config/nrfconnect/chip-module/generate_factory_data.cmake

+24-7
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,21 @@ set(factory_data_output_path ${output_path}/${factory_data_target})
129129
string(APPEND script_args "-o \"${factory_data_output_path}\"\n")
130130
string(APPEND script_args "-s \"${schema_path}\"\n")
131131

132-
# Add optional offset and size arguments to generate both .hex and .json files.
133-
string(APPEND script_args "--offset $<TARGET_PROPERTY:partition_manager,PM_FACTORY_DATA_ADDRESS>\n")
134-
string(APPEND script_args "--size $<TARGET_PROPERTY:partition_manager,PM_FACTORY_DATA_OFFSET>\n")
132+
# Add optional offset and size arguments to generate .hex file as well as .json.
133+
if(CONFIG_PARTITION_MANAGER_ENABLED)
134+
string(APPEND script_args "--offset $<TARGET_PROPERTY:partition_manager,PM_FACTORY_DATA_ADDRESS>\n")
135+
string(APPEND script_args "--size $<TARGET_PROPERTY:partition_manager,PM_FACTORY_DATA_OFFSET>\n")
136+
else()
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})
144+
string(APPEND script_args "--offset ${factory_data_addr}\n")
145+
string(APPEND script_args "--size ${factory_data_size}\n")
146+
endif()
135147

136148
# execute first script to create a JSON file
137149
separate_arguments(separated_script_args NATIVE_COMMAND ${script_args})
@@ -175,10 +187,15 @@ nrfconnect_create_factory_data(factory_data
175187
${FACTORY_DATA_SCHEMA_PATH}
176188
${OUTPUT_FILE_PATH})
177189

178-
if(CONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE)
179-
# set custom target for merging factory_data hex file
180-
set_property(GLOBAL PROPERTY factory_data_PM_HEX_FILE ${OUTPUT_FILE_PATH}/factory_data.hex)
181-
set_property(GLOBAL PROPERTY factory_data_PM_TARGET factory_data)
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()
182199
endif()
183200

184201

0 commit comments

Comments
 (0)