be8b2663c6
nrf-regtool is a Python utility from Nordic Semiconductor, which is used for generating binary files with register values for given peripherals. It sources the descriptions of peripheral registers from CMSIS-SVD files (typically ones bundled with nRF MDK). For some peripherals, such as UICR, nrf-regtool supports parsing values from devicetree as well, based on the bindings already found in Zephyr. Currently, this tool is not submitted as a script to Zephyr, but it can be installed from PyPI. Having nrf-regtool installed is recommended when working with nRF54H20. Booting the Application or Radiocore CPU requires flashing not only its firmware, but also its respective UICR instance. On this SoC, the UICR is used to assign ownership of global hardware resources, including memory and peripherals, to individual cores. The Zephyr build system can call nrf-regtool to generate the UICR based on devicetree, to reflect the boot-time hardware configuration required for a given application. The generated `uicr.hex` is then merged with `zephyr.hex`, so that they can be flashed together using west. The build system integration takes the form of a CMake package, which includes a version check and reusable components; over time, some of these components can be reused by sysbuild. This package is located in the `hal_nordic` module, because it depends on the `SOC_SVD_FILE` CMake variable, which is defined there as well. Signed-off-by: Grzegorz Swiderski <grzegorz.swiderski@nordicsemi.no>
240 lines
7.5 KiB
Plaintext
240 lines
7.5 KiB
Plaintext
# Copyright (c) 2016-2021 Nordic Semiconductor ASA
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
config ZEPHYR_HAL_NORDIC_MODULE
|
|
bool
|
|
|
|
config HAS_NORDIC_DRIVERS
|
|
bool
|
|
|
|
menu "Nordic drivers"
|
|
depends on HAS_NORDIC_DRIVERS
|
|
|
|
choice NRF_802154_SOURCE
|
|
prompt "Source of the IEEE 802.15.4 radio driver"
|
|
|
|
config NRF_802154_SOURCE_HAL_NORDIC
|
|
bool "Open source"
|
|
|
|
endchoice
|
|
|
|
menuconfig NRF_802154_RADIO_DRIVER
|
|
bool "NRF IEEE 802.15.4 radio driver"
|
|
depends on HAS_HW_NRF_RADIO_IEEE802154
|
|
select DYNAMIC_INTERRUPTS
|
|
select ENTROPY_GENERATOR
|
|
depends on !$(dt_nodelabel_enabled,timer1)
|
|
help
|
|
This option enables nRF IEEE 802.15.4 radio driver in Zephyr. Note,
|
|
that beside the radio peripheral itself, this drivers occupies several
|
|
other peripherals. A complete list can be found in the hal_nordic
|
|
repository, within drivers/nrf_radio_802154/nrf_802154_peripherals.h
|
|
file. As the nRF IEEE 802.15.4 radio driver defines IRQ configuration
|
|
abstraction layer API and its Zephyr-specific implementation uses dynamic
|
|
interrupts, the DYNAMIC_INTERRUPTS switch is selected unconditionally.
|
|
|
|
if NRF_802154_RADIO_DRIVER
|
|
|
|
config NRF_802154_MULTIPROTOCOL_SUPPORT
|
|
bool
|
|
help
|
|
In dynamic multiprotocol applications, access to the radio peripheral
|
|
must be distributed by an arbiter. To support this arbitration
|
|
in the driver, this option must be enabled. Otherwise, the driver
|
|
assumes that access to the radio peripheral is granted indefinitely.
|
|
|
|
choice NRF_802154_SL_TYPE
|
|
prompt "nRF IEEE 802.15.4 Service Layer Type"
|
|
|
|
config NRF_802154_SL_OPENSOURCE
|
|
bool "Open source"
|
|
select SENSOR if NRF_802154_TEMPERATURE_UPDATE
|
|
select TEMP_NRF5 if NRF_802154_TEMPERATURE_UPDATE
|
|
|
|
endchoice
|
|
|
|
config NRF_802154_TEMPERATURE_UPDATE
|
|
bool "nRF 802.15.4 temperature update"
|
|
default y
|
|
help
|
|
Enable temperature update for nRF 802.15.4 driver
|
|
|
|
config NRF_802154_TEMPERATURE_UPDATE_INIT_PRIO
|
|
int "nRF52 IEEE 802.15.4 temperature update initialization priority"
|
|
depends on NRF_802154_TEMPERATURE_UPDATE
|
|
default 91
|
|
help
|
|
Set the initialization priority of a temperature update for nRF 802.15.4 driver.
|
|
|
|
config NRF_802154_TEMPERATURE_UPDATE_PERIOD
|
|
int "nRF 802.15.4 temperature update period in milliseconds"
|
|
depends on NRF_802154_TEMPERATURE_UPDATE
|
|
default 60000
|
|
help
|
|
Period of a temperature update for nRF 802.15.4 driver in milliseconds
|
|
|
|
endif # NRF_802154_RADIO_DRIVER
|
|
|
|
config NRF_802154_SERIALIZATION
|
|
bool
|
|
select IPC_SERVICE
|
|
select MBOX
|
|
help
|
|
This helper symbol indicates that the nRF 802.15.4 serialization is available.
|
|
|
|
config NRF_802154_SER_HOST
|
|
bool "nRF IEEE 802.15.4 Driver serialization host"
|
|
depends on !NRF_802154_RADIO_DRIVER
|
|
depends on !HAS_HW_NRF_RADIO_IEEE802154
|
|
select IEEE802154_NRF5_EXT_IRQ_MGMT if IEEE802154_NRF5
|
|
select NRF_802154_SERIALIZATION
|
|
help
|
|
Enable serialization of nRF IEEE 802.15.4 Driver. This option is to be
|
|
used if radio is not available in the core, but radio services are
|
|
provided by a serialization backend.
|
|
|
|
menuconfig NRF_802154_SER_RADIO
|
|
bool "nRF IEEE 802.15.4 Driver serialization radio"
|
|
depends on HAS_HW_NRF_RADIO_IEEE802154
|
|
depends on !IEEE802154_NRF5
|
|
select NRF_802154_RADIO_DRIVER
|
|
select NRF_802154_SERIALIZATION
|
|
help
|
|
Enable serialization of nRF IEEE 802.15.4 Driver. This option is to be
|
|
used if radio is available in the core to provide radio services over
|
|
a serialization backend.
|
|
|
|
if NRF_802154_SER_RADIO
|
|
|
|
config NRF_802154_SER_RADIO_INIT_PRIO
|
|
int "nRF52 IEEE 802.15.4 serialization initialization priority"
|
|
default 51
|
|
help
|
|
Set the initialization priority number. Do not mess with it unless
|
|
you know what you are doing.
|
|
|
|
endif
|
|
|
|
menu "nRF 802.15.4 serialization"
|
|
depends on NRF_802154_SER_HOST || NRF_802154_SER_RADIO
|
|
|
|
config NRF_802154_SER_LOG
|
|
bool "802.15.4 serialization logs"
|
|
default n
|
|
help
|
|
This option enable debug logs of 802.15.4 serialization module.
|
|
|
|
config NRF_802154_SER_DEFAULT_RESPONSE_TIMEOUT
|
|
int "Default Spinel serialization response timeout in milliseconds"
|
|
default 500
|
|
help
|
|
This option specifies default timeout of spinel status response
|
|
in milliseconds.
|
|
|
|
endmenu # NRF_802154_SER_HOST || NRF_802154_SER_RADIO
|
|
|
|
if NRF_802154_RADIO_DRIVER || NRF_802154_SERIALIZATION
|
|
|
|
choice NRF_802154_CCA_MODE
|
|
prompt "nRF IEEE 802.15.4 CCA mode"
|
|
default NRF_802154_CCA_MODE_ED
|
|
help
|
|
CCA mode
|
|
|
|
config NRF_802154_CCA_MODE_ED
|
|
bool "Energy Above Threshold"
|
|
|
|
config NRF_802154_CCA_MODE_CARRIER
|
|
bool "Carrier Seen"
|
|
|
|
config NRF_802154_CCA_MODE_CARRIER_AND_ED
|
|
bool "Energy Above Threshold AND Carrier Seen"
|
|
|
|
config NRF_802154_CCA_MODE_CARRIER_OR_ED
|
|
bool "Energy Above Threshold OR Carrier Seen"
|
|
|
|
endchoice
|
|
|
|
config NRF_802154_CCA_ED_THRESHOLD
|
|
int "nRF IEEE 802.15.4 CCA Energy Detection threshold"
|
|
default 45
|
|
help
|
|
If energy detected in a given channel is above the value then the
|
|
channel is deemed busy. The unit is defined as per 802.15.4-2006 spec.
|
|
|
|
config NRF_802154_CCA_CORR_THRESHOLD
|
|
int "nRF IEEE 802.15.4 CCA Correlator threshold"
|
|
default 45
|
|
|
|
config NRF_802154_CCA_CORR_LIMIT
|
|
int "nRF IEEE 802.15.4 CCA Correlator limit"
|
|
default 2
|
|
help
|
|
Limit for occurrences above correlator threshold. When not equal to
|
|
zero the correlator based signal detect is enabled.
|
|
|
|
config NRF_802154_RX_BUFFERS
|
|
int "nRF 802.15.4 receive buffers"
|
|
default 16
|
|
help
|
|
Number of buffers in nRF 802.15.4 driver serialization host's receive queue.
|
|
If this value is modified, its remote counterpart must be set to the exact same value.
|
|
|
|
config NRF_802154_PENDING_SHORT_ADDRESSES
|
|
int "nRF 802.15.4 pending short addresses"
|
|
default 16
|
|
help
|
|
Number of slots containing short addresses of nodes for which pending data is stored
|
|
|
|
config NRF_802154_PENDING_EXTENDED_ADDRESSES
|
|
int "nRF 802.15.4 pending extended addresses"
|
|
default 16
|
|
help
|
|
Number of slots containing extended addresses of nodes for which pending data is stored
|
|
|
|
config NRF_802154_ENCRYPTION
|
|
bool "nRF 802.15.4 AES-CCM* authentication & encryption"
|
|
depends on !CRYPTO_NRF_ECB
|
|
|
|
config NRF_802154_SECURITY_KEY_STORAGE_SIZE
|
|
int "nRF 802.15.4 security key storage size"
|
|
default 3
|
|
help
|
|
Number of encryption keys that the nRF 802.15.4 Radio Driver can store simultaneously.
|
|
|
|
config NRF_802154_CARRIER_FUNCTIONS
|
|
bool "nRF 802.15.4 carrier functions"
|
|
help
|
|
This option enables functions such as modulated carrier and continuous carrier.
|
|
If this option is modified on a multicore SoC, its remote counterpart must be set to the exact same value.
|
|
|
|
choice NRF_802154_ASSERT_CHOICE
|
|
prompt "nRF 802.15.4 assert implementation"
|
|
default NRF_802154_ASSERT_ZEPHYR_MINIMAL
|
|
|
|
config NRF_802154_ASSERT_ZEPHYR_MINIMAL
|
|
bool "nRF 802.15.4 minimal assertions"
|
|
help
|
|
This option provides minimal run-time checking of the nRF 802.15.4 Radio Driver's operation,
|
|
even if kernel-wide CONFIG_ASSERT is disabled. In case of an abnormal condition the function
|
|
`nrf_802154_assert_handler()` is called. File and line debug information are not provided
|
|
to save memory of the image file. Default implementation of the `nrf_802154_assert_handler`
|
|
involves a call to `k_panic`/`k_oops` and allows further tweaking of the behavior.
|
|
You can also provide your own implementation of `nrf_802154_assert_handler`.
|
|
|
|
config NRF_802154_ASSERT_ZEPHYR
|
|
bool "nRF 802.15.4 Radio Driver assertions as Zephyr's standard __ASERT_NO_MSG"
|
|
help
|
|
The run-time checking of the nRF 802.15.4 Radio Driver depends fully on the configuration
|
|
of the `__ASSERT_NO_MSG` macro, including the ability to completely turn off the run-time
|
|
checking.
|
|
|
|
endchoice # NRF_802154_ASSERT_CHOICE
|
|
|
|
endif # NRF_802154_RADIO_DRIVER || NRF_802154_SERIALIZATION
|
|
|
|
endmenu # HAS_NORDIC_DRIVERS
|
|
|
|
rsource "nrfx/Kconfig"
|
|
rsource "Kconfig.nrf_regtool"
|