zephyr/Kconfig: own Kconfig file for serial recovery

Moved Serial recovery options to own Kconfig
file.

Signed-off-by: Andrzej Puzdrowski <andrzej.puzdrowski@nordicsemi.no>
This commit is contained in:
Andrzej Puzdrowski 2022-04-01 17:00:08 +02:00
parent 6c00b5e52e
commit 35f61d305d
2 changed files with 157 additions and 149 deletions

View File

@ -490,155 +490,7 @@ config MCUBOOT_INDICATION_LED
bootloader-led0 alias must be set in the device's .dts
definitions for this to work.
menuconfig MCUBOOT_SERIAL
bool "MCUboot serial recovery"
default n
select REBOOT
select GPIO
select SERIAL
select UART_INTERRUPT_DRIVEN
select BASE64
help
If y, enables a serial-port based update mode. This allows
MCUboot itself to load update images into flash over a UART.
If unsure, leave at the default value.
if MCUBOOT_SERIAL
choice BOOT_SERIAL_DEVICE
prompt "Serial device"
default BOOT_SERIAL_UART if !BOARD_NRF52840DONGLE_NRF52840
default BOOT_SERIAL_CDC_ACM if BOARD_NRF52840DONGLE_NRF52840
config BOOT_SERIAL_UART
bool "UART"
# SERIAL and UART_INTERRUPT_DRIVEN already selected
config BOOT_SERIAL_CDC_ACM
bool "CDC ACM"
select USB_DEVICE_STACK
endchoice
config MCUBOOT_SERIAL_DIRECT_IMAGE_UPLOAD
bool "Allow to select image number for DFU"
help
With the option enabled, the mcuboot serial recovery will
respect the "image" field in mcumgr image update frame
header.
The mapping of image number to partition is as follows:
0 -> default behaviour, same as 1;
1 -> image-0 (primary slot of the first image);
2 -> image-1 (secondary slot of the first image);
3 -> image-2;
4 -> image-3.
Note that 0 is default upload target when no explicit
selection is done.
config BOOT_MAX_LINE_INPUT_LEN
int "Maximum command line length"
default 512
help
Maximum length of commands transported over the serial port.
config BOOT_SERIAL_DETECT_PORT
string "GPIO device to trigger serial recovery mode"
default GPIO_0 if SOC_FAMILY_NRF
help
Zephyr GPIO device that contains the pin used to trigger
serial recovery mode.
config BOOT_SERIAL_DETECT_PIN
int "Pin to trigger serial recovery mode"
default 6 if BOARD_NRF9160DK_NRF9160
default 11 if BOARD_NRF52840DK_NRF52840
default 13 if BOARD_NRF52DK_NRF52832 || BOARD_NRF52833DK_NRF52833
default 23 if BOARD_NRF5340PDK_NRF5340_CPUAPP || BOARD_NRF5340PDK_NRF5340_CPUAPP_NS || \
BOARD_NRF5340DK_NRF5340_CPUAPP || BOARD_NRF5340DK_NRF5340_CPUAPP_NS
help
Pin on the serial detect port that triggers serial recovery mode.
config BOOT_SERIAL_DETECT_PIN_VAL
int "Serial detect pin trigger value"
default 0
range 0 1
help
Logic value of the detect pin that triggers serial recovery
mode.
config BOOT_SERIAL_DETECT_DELAY
int "Serial detect pin detection delay time [ms]"
default 0
help
Used to prevent the bootloader from loading on button press.
Useful for powering on when using the same button as
the one used to place the device in bootloader mode.
config BOOT_ERASE_PROGRESSIVELY
bool "Erase flash progressively when receiving new firmware"
default y if SOC_FAMILY_NRF
help
If enabled, flash is erased as necessary when receiving new firmware,
instead of erasing the whole image slot at once. This is necessary
on some hardware that has long erase times, to prevent long wait
times at the beginning of the DFU process.
config BOOT_MGMT_ECHO
bool "Enable echo command"
help
if enabled, support for the mcumgr echo command is being added.
menuconfig ENABLE_MGMT_PERUSER
bool "Enable system specific mcumgr commands"
help
The option enables processing of system specific mcumgr commands;
system specific commands are within group MGMT_GROUP_ID_PERUSER (64)
and above, as defined within mcumgr library.
These are system specific command and system specific implementation
function is required to process these commands.
if ENABLE_MGMT_PERUSER
config BOOT_MGMT_CUSTOM_STORAGE_ERASE
bool "Enable storage erase command"
help
The option enables mcumgr command that allows to erase storage
partition.
Note that the storage partition needs to be defined, in DTS, otherwise
enabling the option will cause a compilation to fail.
config BOOT_MGMT_CUSTOM_IMG_LIST
bool "Enable custom image list command"
help
The option enables command which returns versions and installation
statuses (custom property) for all images.
endif # ENABLE_MGMT_PERUSER
config BOOT_SERIAL_ENCRYPT_EC256
bool "Support for encrypted upgrade images using ECIES-P256 in serial recovery upload"
default n
help
If y, uploaded images via serial recovery can be decrypted
on the fly when upgrading to the primary slot. The
encryption mechanism used in this case is ECIES using primitives
described under "ECIES-P256 encryption" in docs/encrypted_images.md.
config BOOT_SERIAL_WAIT_FOR_DFU
bool "Wait for a prescribed duration to see if DFU is invoked by receiving a mcumgr comand"
depends on BOOT_SERIAL_UART
help
If y, MCUboot waits for a prescribed duration of time to allow
for DFU to be invoked. The serial recovery can be entered by receiving any
mcumgr command.
config BOOT_SERIAL_WAIT_FOR_DFU_TIMEOUT
int "Duration to wait for the serial DFU timeout in ms"
default 500
depends on BOOT_SERIAL_WAIT_FOR_DFU
help
timeout in ms for MCUboot to wait to allow for DFU to be invoked.
endif # MCUBOOT_SERIAL
rsource "Kconfig.serial_recovery"
config BOOT_INTR_VEC_RELOC
bool "Relocate the interrupt vector to the application"

View File

@ -0,0 +1,156 @@
# Copyright (c) 2017-2020 Linaro Limited
# Copyright (c) 2020 Arm Limited
# Copyright (c) 2017-2022 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
menuconfig MCUBOOT_SERIAL
bool "MCUboot serial recovery"
default n
select REBOOT
select GPIO
select SERIAL
select UART_INTERRUPT_DRIVEN
select BASE64
help
If y, enables a serial-port based update mode. This allows
MCUboot itself to load update images into flash over a UART.
If unsure, leave at the default value.
if MCUBOOT_SERIAL
choice BOOT_SERIAL_DEVICE
prompt "Serial device"
default BOOT_SERIAL_UART if !BOARD_NRF52840DONGLE_NRF52840
default BOOT_SERIAL_CDC_ACM if BOARD_NRF52840DONGLE_NRF52840
config BOOT_SERIAL_UART
bool "UART"
# SERIAL and UART_INTERRUPT_DRIVEN already selected
config BOOT_SERIAL_CDC_ACM
bool "CDC ACM"
select USB_DEVICE_STACK
endchoice
config MCUBOOT_SERIAL_DIRECT_IMAGE_UPLOAD
bool "Allow to select image number for DFU"
help
With the option enabled, the mcuboot serial recovery will
respect the "image" field in mcumgr image update frame
header.
The mapping of image number to partition is as follows:
0 -> default behaviour, same as 1;
1 -> image-0 (primary slot of the first image);
2 -> image-1 (secondary slot of the first image);
3 -> image-2;
4 -> image-3.
Note that 0 is default upload target when no explicit
selection is done.
config BOOT_MAX_LINE_INPUT_LEN
int "Maximum command line length"
default 512
help
Maximum length of commands transported over the serial port.
config BOOT_SERIAL_DETECT_PORT
string "GPIO device to trigger serial recovery mode"
default GPIO_0 if SOC_FAMILY_NRF
help
Zephyr GPIO device that contains the pin used to trigger
serial recovery mode.
config BOOT_SERIAL_DETECT_PIN
int "Pin to trigger serial recovery mode"
default 6 if BOARD_NRF9160DK_NRF9160
default 11 if BOARD_NRF52840DK_NRF52840
default 13 if BOARD_NRF52DK_NRF52832 || BOARD_NRF52833DK_NRF52833
default 23 if BOARD_NRF5340PDK_NRF5340_CPUAPP || BOARD_NRF5340PDK_NRF5340_CPUAPP_NS || \
BOARD_NRF5340DK_NRF5340_CPUAPP || BOARD_NRF5340DK_NRF5340_CPUAPP_NS
help
Pin on the serial detect port that triggers serial recovery mode.
config BOOT_SERIAL_DETECT_PIN_VAL
int "Serial detect pin trigger value"
default 0
range 0 1
help
Logic value of the detect pin that triggers serial recovery
mode.
config BOOT_SERIAL_DETECT_DELAY
int "Serial detect pin detection delay time [ms]"
default 0
help
Used to prevent the bootloader from loading on button press.
Useful for powering on when using the same button as
the one used to place the device in bootloader mode.
config BOOT_ERASE_PROGRESSIVELY
bool "Erase flash progressively when receiving new firmware"
default y if SOC_FAMILY_NRF
help
If enabled, flash is erased as necessary when receiving new firmware,
instead of erasing the whole image slot at once. This is necessary
on some hardware that has long erase times, to prevent long wait
times at the beginning of the DFU process.
config BOOT_MGMT_ECHO
bool "Enable echo command"
help
if enabled, support for the mcumgr echo command is being added.
menuconfig ENABLE_MGMT_PERUSER
bool "Enable system specific mcumgr commands"
help
The option enables processing of system specific mcumgr commands;
system specific commands are within group MGMT_GROUP_ID_PERUSER (64)
and above, as defined within mcumgr library.
These are system specific command and system specific implementation
function is required to process these commands.
if ENABLE_MGMT_PERUSER
config BOOT_MGMT_CUSTOM_STORAGE_ERASE
bool "Enable storage erase command"
help
The option enables mcumgr command that allows to erase storage
partition.
Note that the storage partition needs to be defined, in DTS, otherwise
enabling the option will cause a compilation to fail.
config BOOT_MGMT_CUSTOM_IMG_LIST
bool "Enable custom image list command"
help
The option enables command which returns versions and installation
statuses (custom property) for all images.
endif # ENABLE_MGMT_PERUSER
config BOOT_SERIAL_ENCRYPT_EC256
bool "Support for encrypted upgrade images using ECIES-P256 in serial recovery upload"
default n
help
If y, uploaded images via serial recovery can be decrypted
on the fly when upgrading to the primary slot. The
encryption mechanism used in this case is ECIES using primitives
described under "ECIES-P256 encryption" in docs/encrypted_images.md.
config BOOT_SERIAL_WAIT_FOR_DFU
bool "Wait for a prescribed duration to see if DFU is invoked by receiving a mcumgr comand"
depends on BOOT_SERIAL_UART
help
If y, MCUboot waits for a prescribed duration of time to allow
for DFU to be invoked. The serial recovery can be entered by receiving any
mcumgr command.
config BOOT_SERIAL_WAIT_FOR_DFU_TIMEOUT
int "Duration to wait for the serial DFU timeout in ms"
default 500
depends on BOOT_SERIAL_WAIT_FOR_DFU
help
timeout in ms for MCUboot to wait to allow for DFU to be invoked.
endif # MCUBOOT_SERIAL