Skip to content

Commit e5ae15f

Browse files
committed
[nrf fromlist] modules: hal_nordic: Integrate nrf-regtool 7.0.0
Upstream PR: zephyrproject-rtos/zephyr#79925 This new version introduces a new sub-command `uicr-compile`, which will generate `uicr.hex` based on a new binary format required by an upcoming release of Secure Domain Firmware (SDFW) closer to production. Since this is a breaking change, and SDFW is not finalized yet, we need to support two nrf-regtool versions for a short time, and use different CLI invocations based on which version is installed. Hence, the minimum required version is still 6.0.0. Additionally, retire CONFIG_NRF_REGTOOL_EXTRA_GENERATE_ARGS. There will be no use for it moving forward. Signed-off-by: Grzegorz Swiderski <[email protected]> (cherry picked from commit d07d6784bb67f1105173ed5e4dd2f5997e2f87ec)
1 parent b0e55d7 commit e5ae15f

File tree

3 files changed

+34
-26
lines changed

3 files changed

+34
-26
lines changed

modules/hal_nordic/Kconfig.nrf_regtool

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,4 @@ config NRF_REGTOOL_VERBOSITY
2626
3. Print even more details, which are typically only useful for
2727
nrf-regtool developers.
2828

29-
config NRF_REGTOOL_EXTRA_GENERATE_ARGS
30-
string "Extra arguments to 'nrf-regtool generate'"
31-
help
32-
List of additional arguments to every nrf-regtool invocation used for
33-
generating hex files. Example value: "--fill all --fill-byte 0xff".
34-
Run "nrf-regtool generate -h" to see all of the available options.
35-
3629
endmenu

modules/hal_nordic/nrf-regtool/nrf-regtoolConfig.cmake

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,26 @@
11
# Copyright (c) 2024 Nordic Semiconductor ASA
22
# SPDX-License-Identifier: Apache-2.0
33

4-
function(nrf_regtool_generate_hex_from_dts peripheral)
5-
string(TOLOWER "${peripheral}.hex" generated_hex_name)
6-
string(TOLOWER "${peripheral}_merged.hex" merged_hex_name)
4+
function(nrf_regtool_generate_uicr generated_hex_file)
5+
string(REPEAT "-v;" ${CONFIG_NRF_REGTOOL_VERBOSITY} verbosity)
6+
execute_process(
7+
COMMAND
8+
${CMAKE_COMMAND} -E env PYTHONPATH=${ZEPHYR_BASE}/scripts/dts/python-devicetree/src
9+
${NRF_REGTOOL} ${verbosity} uicr-compile
10+
--edt-pickle-file ${EDT_PICKLE}
11+
--product-name ${CONFIG_SOC}
12+
--output-file ${generated_hex_file}
13+
WORKING_DIRECTORY ${APPLICATION_SOURCE_DIR}
14+
COMMAND_ERROR_IS_FATAL ANY
15+
)
16+
message(STATUS "Generated UICR hex file: ${generated_hex_file}")
17+
endfunction()
718

19+
function(nrf_regtool_generate_peripheral peripheral generated_hex_file)
820
# Prepare common argument sub-lists.
921
string(REPEAT "-v;" ${CONFIG_NRF_REGTOOL_VERBOSITY} verbosity)
1022
list(TRANSFORM CACHED_DTS_ROOT_BINDINGS PREPEND "--bindings-dir;" OUTPUT_VARIABLE bindings_dirs)
11-
separate_arguments(extra_args UNIX_COMMAND "${CONFIG_NRF_REGTOOL_EXTRA_GENERATE_ARGS}")
1223

13-
set(generated_hex_file ${PROJECT_BINARY_DIR}/${generated_hex_name})
1424
execute_process(
1525
COMMAND
1626
${CMAKE_COMMAND} -E env PYTHONPATH=${ZEPHYR_BASE}/scripts/dts/python-devicetree/src
@@ -25,25 +35,29 @@ function(nrf_regtool_generate_hex_from_dts peripheral)
2535
COMMAND_ERROR_IS_FATAL ANY
2636
)
2737
message(STATUS "Generated ${peripheral} hex file: ${generated_hex_file}")
28-
29-
set(merged_hex_file ${PROJECT_BINARY_DIR}/${merged_hex_name})
30-
set_property(GLOBAL APPEND PROPERTY extra_post_build_commands
31-
COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/scripts/build/mergehex.py
32-
-o ${merged_hex_file}
33-
${generated_hex_file}
34-
${PROJECT_BINARY_DIR}/${KERNEL_HEX_NAME}
35-
)
36-
set_property(TARGET runners_yaml_props_target PROPERTY hex_file ${merged_hex_file})
3738
endfunction()
3839

40+
get_property(version GLOBAL PROPERTY nrf_regtool_version)
3941

4042
foreach(component IN LISTS ${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS)
41-
string(REGEX MATCH "(^.*):(.*$)" match ${component})
42-
set(operation "${CMAKE_MATCH_1}")
43-
set(peripheral "${CMAKE_MATCH_2}")
43+
if(component STREQUAL "GENERATE:UICR")
44+
set(generated_hex_file ${PROJECT_BINARY_DIR}/uicr.hex)
45+
if(version VERSION_GREATER_EQUAL 7.0.0)
46+
nrf_regtool_generate_uicr(${generated_hex_file})
47+
else()
48+
nrf_regtool_generate_peripheral(UICR ${generated_hex_file})
49+
endif()
50+
51+
# UICR must be flashed together with the Zephyr binary.
52+
set(merged_hex_file ${PROJECT_BINARY_DIR}/uicr_merged.hex)
53+
set_property(GLOBAL APPEND PROPERTY extra_post_build_commands
54+
COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/scripts/build/mergehex.py
55+
-o ${merged_hex_file}
56+
${generated_hex_file}
57+
${PROJECT_BINARY_DIR}/${KERNEL_HEX_NAME}
58+
)
59+
set_property(TARGET runners_yaml_props_target PROPERTY hex_file ${merged_hex_file})
4460

45-
if(operation STREQUAL "GENERATE")
46-
nrf_regtool_generate_hex_from_dts(${peripheral})
4761
else()
4862
message(FATAL_ERROR "Unrecognized package component: \"${component}\"")
4963
endif()

modules/hal_nordic/nrf-regtool/nrf-regtoolConfigVersion.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ if(NRF_REGTOOL)
2222
"Found nrf-regtool (found suitable version \"${PACKAGE_VERSION}\", "
2323
"minimum required is \"${PACKAGE_FIND_VERSION}\")"
2424
)
25+
set_property(GLOBAL PROPERTY nrf_regtool_version ${PACKAGE_VERSION})
2526
return()
2627
endif()
2728
endif()

0 commit comments

Comments
 (0)