mcuboot/boot/zephyr/Kconfig.serial_recovery

206 lines
6.5 KiB
Plaintext

# Copyright (c) 2017-2020 Linaro Limited
# Copyright (c) 2020 Arm Limited
# Copyright (c) 2017-2023 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
menuconfig MCUBOOT_SERIAL
bool "MCUboot serial recovery"
default n
select REBOOT
select SERIAL
select UART_INTERRUPT_DRIVEN
select BASE64
select CRC
select ZCBOR
depends on !BOOT_FIRMWARE_LOADER
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
help
The serial device to use will be fist selected via chosen
node "zephyr,uart-mcumgr", when such node does not exist
the "zephyr,console" is used. In case when
the "zephyr,uart-mcumgr" points to the same device as
the "zephyr,console" compilation error will be triggered.
config BOOT_SERIAL_CDC_ACM
bool "CDC ACM"
select USB_DEVICE_STACK
help
This setting will choose CDC ACM for serial recovery unless chosen
"zephyr,uart-mcumgr" is present, in which case the chosen takes
precedence and redirects serial recovery to uart pointed by
the chosen, leaving console on CDC ACM.
endchoice
config MCUBOOT_SERIAL_DIRECT_IMAGE_UPLOAD
bool "Allow to select image number for DFU"
depends on !SINGLE_APPLICATION_SLOT
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_SERIAL_UNALIGNED_BUFFER_SIZE
int "Stack buffer for unaligned memory writes"
default 64
range 0 128
help
Specifies the stack usage for a buffer which is used for unaligned
memory access when data is written to a device with memory alignment
requirements. Set to 0 to disable.
config BOOT_MAX_LINE_INPUT_LEN
int "Maximum input line length"
default 128
help
Maximum length of input serial port buffer (SMP serial transport uses
fragments of 128-bytes, this should not need to be changed unless a
different value is used for the transport).
config BOOT_LINE_BUFS
int "Number of receive buffers"
range 2 128
default 8
help
Number of receive buffers for data received via the serial port.
config BOOT_SERIAL_MAX_RECEIVE_SIZE
int "Maximum command line length"
default 1024
help
Maximum length of received commands via the serial port (this should
be equal to the maximum line length, BOOT_MAX_LINE_INPUT_LEN times
by the number of receive buffers, BOOT_LINE_BUFS to allow for
optimal data transfer speeds).
config BOOT_ERASE_PROGRESSIVELY
bool "Erase flash progressively when receiving new firmware"
default y if SOC_FAMILY_NORDIC_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.
endif # ENABLE_MGMT_PERUSER
menu "Entrance methods"
menuconfig BOOT_SERIAL_ENTRANCE_GPIO
bool "GPIO"
default y
depends on GPIO
help
Use a GPIO to enter serial recovery mode.
config BOOT_SERIAL_DETECT_DELAY
int "Serial detect pin detection delay time [ms]"
default 0
depends on BOOT_SERIAL_ENTRANCE_GPIO
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.
menuconfig BOOT_SERIAL_WAIT_FOR_DFU
bool "Wait a prescribed duration to see if DFU is invoked by receiving a MCUmgr comand"
depends on BOOT_SERIAL_UART || BOOT_SERIAL_CDC_ACM
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.
config BOOT_SERIAL_BOOT_MODE
bool "Check boot mode via retention subsystem"
depends on RETENTION_BOOT_MODE
help
Allows for entering serial recovery mode by using Zephyr's boot mode
retention system (i.e. an application must set the boot mode to stay
in serial recovery mode and reboot the module).
config BOOT_SERIAL_NO_APPLICATION
bool "Stay in bootloader if no application"
help
Allows for entering serial recovery mode if there is no bootable
application that the bootloader can jump to.
config BOOT_SERIAL_PIN_RESET
bool "Check for device reset by pin"
select HWINFO
help
Checks if the module reset was caused by the reset pin and will
remain in bootloader serial recovery mode if it was.
endmenu
config BOOT_SERIAL_IMG_GRP_HASH
bool "Image list hash support"
default y
help
If y, image list responses will include the image hash (adds ~100
bytes of flash).
config BOOT_SERIAL_IMG_GRP_IMAGE_STATE
bool "Image state support"
depends on !SINGLE_APPLICATION_SLOT
select BOOT_SERIAL_IMG_GRP_HASH if UPDATEABLE_IMAGE_NUMBER > 1
help
If y, image states will be included with image lists and the set
state command can be used to mark an image as test/confirmed.
endif # MCUBOOT_SERIAL