# Copyright (c) 2024 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 function(nrf_regtool_generate_uicr generated_hex_file) string(REPEAT "-v;" ${CONFIG_NRF_REGTOOL_VERBOSITY} verbosity) execute_process( COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${ZEPHYR_BASE}/scripts/dts/python-devicetree/src ${NRF_REGTOOL} ${verbosity} uicr-compile --edt-pickle-file ${EDT_PICKLE} --product-name ${CONFIG_SOC} --output-file ${generated_hex_file} WORKING_DIRECTORY ${APPLICATION_SOURCE_DIR} COMMAND_ERROR_IS_FATAL ANY ) message(STATUS "Generated UICR hex file: ${generated_hex_file}") endfunction() function(nrf_regtool_generate_peripheral peripheral generated_hex_file) # Prepare common argument sub-lists. string(REPEAT "-v;" ${CONFIG_NRF_REGTOOL_VERBOSITY} verbosity) list(TRANSFORM CACHED_DTS_ROOT_BINDINGS PREPEND "--bindings-dir;" OUTPUT_VARIABLE bindings_dirs) execute_process( COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${ZEPHYR_BASE}/scripts/dts/python-devicetree/src ${NRF_REGTOOL} ${verbosity} generate --peripheral ${peripheral} --svd-file ${SOC_SVD_FILE} --dts-file ${ZEPHYR_DTS} ${bindings_dirs} --output-file ${generated_hex_file} ${extra_args} WORKING_DIRECTORY ${APPLICATION_SOURCE_DIR} COMMAND_ERROR_IS_FATAL ANY ) message(STATUS "Generated ${peripheral} hex file: ${generated_hex_file}") endfunction() get_property(version GLOBAL PROPERTY nrf_regtool_version) foreach(component IN LISTS ${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS) if(component STREQUAL "GENERATE:UICR") set(generated_hex_file ${PROJECT_BINARY_DIR}/uicr.hex) if(version VERSION_GREATER_EQUAL 7.0.0) nrf_regtool_generate_uicr(${generated_hex_file}) else() nrf_regtool_generate_peripheral(UICR ${generated_hex_file}) endif() # UICR must be flashed together with the Zephyr binary. set(merged_hex_file ${PROJECT_BINARY_DIR}/uicr_merged.hex) set_property(GLOBAL APPEND PROPERTY extra_post_build_commands COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/scripts/build/mergehex.py -o ${merged_hex_file} ${generated_hex_file} ${PROJECT_BINARY_DIR}/${KERNEL_HEX_NAME} ) set_property(TARGET runners_yaml_props_target PROPERTY hex_file ${merged_hex_file}) else() message(FATAL_ERROR "Unrecognized package component: \"${component}\"") endif() endforeach()