9892af1464
We have been encountering timeout issues when erasing large flash
sections (before receiving an image via mcuboot) from this semaphore
take:
5af0fbc2e3/drivers/flash/soc_flash_nrf_ticker.c (L225-L233)
I think this is because this constant is based on the time taken to erase
the chip but doesn't take account of the fact it is being done by a
ticker. If I understand correctly the ticker is a timeshare mechanism
so the actual max erase time is some factor based on how much time is
given to the task by the ticker.
This multiplies the max timeout by 1.5
Signed-off-by: Kyle Cooke <cookekyle97@gmail.com>
96 lines
3.2 KiB
Plaintext
96 lines
3.2 KiB
Plaintext
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
config FLASH_NRF_FORCE_ALT
|
|
bool
|
|
depends on SOC_COMPATIBLE_NRF
|
|
help
|
|
This option can be enabled to force an alternative implementation
|
|
of the flash driver.
|
|
|
|
menuconfig SOC_FLASH_NRF
|
|
bool "Nordic Semiconductor nRF flash driver"
|
|
default y
|
|
depends on DT_HAS_NORDIC_NRF51_FLASH_CONTROLLER_ENABLED || \
|
|
DT_HAS_NORDIC_NRF52_FLASH_CONTROLLER_ENABLED || \
|
|
DT_HAS_NORDIC_NRF53_FLASH_CONTROLLER_ENABLED || \
|
|
DT_HAS_NORDIC_NRF91_FLASH_CONTROLLER_ENABLED
|
|
depends on !FLASH_NRF_FORCE_ALT
|
|
select FLASH_HAS_PAGE_LAYOUT
|
|
select FLASH_HAS_DRIVER_ENABLED
|
|
select NRFX_NVMC
|
|
select MPU_ALLOW_FLASH_WRITE if ARM_MPU
|
|
help
|
|
Enables Nordic Semiconductor nRF flash driver.
|
|
|
|
if SOC_FLASH_NRF
|
|
|
|
choice SOC_FLASH_NRF_RADIO_SYNC_CHOICE
|
|
prompt "Nordic nRFx flash driver synchronization"
|
|
default SOC_FLASH_NRF_RADIO_SYNC_TICKER if BT_LL_SW_SPLIT
|
|
default SOC_FLASH_NRF_RADIO_SYNC_NONE
|
|
help
|
|
synchronization between flash memory driver and radio.
|
|
|
|
config SOC_FLASH_NRF_RADIO_SYNC_TICKER
|
|
bool "Nordic nRFx flash driver synchronized with radio"
|
|
depends on BT_LL_SW_SPLIT
|
|
help
|
|
Enable synchronization between flash memory driver and radio using
|
|
BLE LL controller ticker API.
|
|
|
|
config SOC_FLASH_NRF_RADIO_SYNC_NONE
|
|
bool "none"
|
|
help
|
|
disable synchronization between flash memory driver and radio.
|
|
endchoice
|
|
|
|
config SOC_FLASH_NRF_PARTIAL_ERASE
|
|
bool "Nordic nRFx flash driver partial erase"
|
|
depends on HAS_HW_NRF_NVMC_PE
|
|
help
|
|
Enable partial erase feature. Partial erase is performed in time
|
|
slices instead of blocking MCU, for the time it is needed to
|
|
complete operation over given area.
|
|
This allows interrupting flash erase between operations
|
|
to perform other task by MCU.
|
|
This feature may also be used for better syncing flash erase
|
|
operations, when compiled with SOC_FLASH_NRF_RADIO_SYNC_TICKER,
|
|
with Bluetooth.
|
|
|
|
config SOC_FLASH_NRF_PARTIAL_ERASE_MS
|
|
int "Partial erase timeout in MS"
|
|
depends on SOC_FLASH_NRF_PARTIAL_ERASE
|
|
default 3
|
|
help
|
|
This is maximum time, in ms, that NVMC will use to erase part
|
|
of Flash, before stopping to let CPU resume operation.
|
|
Minimal timeout is 2ms maximum should not exceed half of
|
|
FLASH_PAGE_ERASE_MAX_TIME_US im ms.
|
|
|
|
config SOC_FLASH_NRF_TIMEOUT_MULTIPLIER
|
|
int "Multiplier for flash operation timeouts [x0.1]"
|
|
depends on !SOC_FLASH_NRF_RADIO_SYNC_NONE
|
|
default 15 if SOC_FLASH_NRF_PARTIAL_ERASE && SOC_FLASH_NRF_RADIO_SYNC_TICKER
|
|
default 10
|
|
help
|
|
This is a multiplier that will be divided by 10 that is applied
|
|
to the flash erase and write operations timeout. The base for
|
|
the multiplication would allow erasing all nRF flash pages in
|
|
blocking mode.
|
|
|
|
config SOC_FLASH_NRF_UICR
|
|
bool "Access to UICR"
|
|
depends on !TRUSTED_EXECUTION_NONSECURE
|
|
help
|
|
Enable operations on UICR. Once enabled UICR are written or read as
|
|
ordinary flash memory. Erase is possible for whole UICR at once.
|
|
|
|
config SOC_FLASH_NRF_EMULATE_ONE_BYTE_WRITE_ACCESS
|
|
bool "8-bit write block size emulation"
|
|
help
|
|
When this option is enabled writing chunks less than minimal write
|
|
block size parameter (imposed by manufacturer) is possible but operation
|
|
is more complex and requires basic user knowledge about NVMC controller.
|
|
|
|
endif # SOC_FLASH_NRF
|