1# Copyright (c) 2017-2020 Linaro Limited 2# Copyright (c) 2020 Arm Limited 3# Copyright (c) 2017-2023 Nordic Semiconductor ASA 4# 5# SPDX-License-Identifier: Apache-2.0 6 7menuconfig MCUBOOT_SERIAL 8 bool "MCUboot serial recovery" 9 default n 10 select REBOOT 11 select SERIAL 12 select UART_INTERRUPT_DRIVEN 13 select BASE64 14 select CRC 15 select ZCBOR 16 depends on !BOOT_FIRMWARE_LOADER 17 help 18 If y, enables a serial-port based update mode. This allows 19 MCUboot itself to load update images into flash over a UART. 20 If unsure, leave at the default value. 21 22if MCUBOOT_SERIAL 23 24choice BOOT_SERIAL_DEVICE 25 prompt "Serial device" 26 default BOOT_SERIAL_UART if !BOARD_NRF52840DONGLE_NRF52840 27 default BOOT_SERIAL_CDC_ACM if BOARD_NRF52840DONGLE_NRF52840 28 29config BOOT_SERIAL_UART 30 bool "UART" 31 # SERIAL and UART_INTERRUPT_DRIVEN already selected 32 help 33 The serial device to use will be fist selected via chosen 34 node "zephyr,uart-mcumgr", when such node does not exist 35 the "zephyr,console" is used. In case when 36 the "zephyr,uart-mcumgr" points to the same device as 37 the "zephyr,console" compilation error will be triggered. 38 39config BOOT_SERIAL_CDC_ACM 40 bool "CDC ACM" 41 select USB_DEVICE_STACK 42 help 43 This setting will choose CDC ACM for serial recovery unless chosen 44 "zephyr,uart-mcumgr" is present, in which case the chosen takes 45 precedence and redirects serial recovery to uart pointed by 46 the chosen, leaving console on CDC ACM. 47 48endchoice 49 50config MCUBOOT_SERIAL_DIRECT_IMAGE_UPLOAD 51 bool "Allow to select image number for DFU" 52 depends on !SINGLE_APPLICATION_SLOT 53 help 54 With the option enabled, the mcuboot serial recovery will 55 respect the "image" field in mcumgr image update frame 56 header. 57 The mapping of image number to partition is as follows: 58 0 -> default behaviour, same as 1; 59 1 -> image-0 (primary slot of the first image); 60 2 -> image-1 (secondary slot of the first image); 61 3 -> image-2; 62 4 -> image-3. 63 Note that 0 is default upload target when no explicit 64 selection is done. 65 66config BOOT_SERIAL_UNALIGNED_BUFFER_SIZE 67 int "Stack buffer for unaligned memory writes" 68 default 64 69 range 0 128 70 help 71 Specifies the stack usage for a buffer which is used for unaligned 72 memory access when data is written to a device with memory alignment 73 requirements. Set to 0 to disable. 74 75config BOOT_MAX_LINE_INPUT_LEN 76 int "Maximum input line length" 77 default 128 78 help 79 Maximum length of input serial port buffer (SMP serial transport uses 80 fragments of 128-bytes, this should not need to be changed unless a 81 different value is used for the transport). 82 83config BOOT_LINE_BUFS 84 int "Number of receive buffers" 85 range 2 128 86 default 8 87 help 88 Number of receive buffers for data received via the serial port. 89 90config BOOT_SERIAL_MAX_RECEIVE_SIZE 91 int "Maximum command line length" 92 default 1024 93 help 94 Maximum length of received commands via the serial port (this should 95 be equal to the maximum line length, BOOT_MAX_LINE_INPUT_LEN times 96 by the number of receive buffers, BOOT_LINE_BUFS to allow for 97 optimal data transfer speeds). 98 99config BOOT_ERASE_PROGRESSIVELY 100 bool "Erase flash progressively when receiving new firmware" 101 default y if SOC_FAMILY_NRF 102 help 103 If enabled, flash is erased as necessary when receiving new firmware, 104 instead of erasing the whole image slot at once. This is necessary 105 on some hardware that has long erase times, to prevent long wait 106 times at the beginning of the DFU process. 107 108config BOOT_MGMT_ECHO 109 bool "Enable echo command" 110 help 111 if enabled, support for the mcumgr echo command is being added. 112 113menuconfig ENABLE_MGMT_PERUSER 114 bool "Enable system specific mcumgr commands" 115 help 116 The option enables processing of system specific mcumgr commands; 117 system specific commands are within group MGMT_GROUP_ID_PERUSER (64) 118 and above, as defined within mcumgr library. 119 These are system specific command and system specific implementation 120 function is required to process these commands. 121 122if ENABLE_MGMT_PERUSER 123 124config BOOT_MGMT_CUSTOM_STORAGE_ERASE 125 bool "Enable storage erase command" 126 help 127 The option enables mcumgr command that allows to erase storage 128 partition. 129 Note that the storage partition needs to be defined, in DTS, otherwise 130 enabling the option will cause a compilation to fail. 131 132endif # ENABLE_MGMT_PERUSER 133 134menu "Entrance methods" 135 136menuconfig BOOT_SERIAL_ENTRANCE_GPIO 137 bool "GPIO" 138 default y 139 depends on GPIO 140 help 141 Use a GPIO to enter serial recovery mode. 142 143config BOOT_SERIAL_DETECT_DELAY 144 int "Serial detect pin detection delay time [ms]" 145 default 0 146 depends on BOOT_SERIAL_ENTRANCE_GPIO 147 help 148 Used to prevent the bootloader from loading on button press. 149 Useful for powering on when using the same button as 150 the one used to place the device in bootloader mode. 151 152menuconfig BOOT_SERIAL_WAIT_FOR_DFU 153 bool "Wait a prescribed duration to see if DFU is invoked by receiving a MCUmgr comand" 154 depends on BOOT_SERIAL_UART || BOOT_SERIAL_CDC_ACM 155 help 156 If y, MCUboot waits for a prescribed duration of time to allow 157 for DFU to be invoked. The serial recovery can be entered by receiving any 158 mcumgr command. 159 160config BOOT_SERIAL_WAIT_FOR_DFU_TIMEOUT 161 int "Duration to wait for the serial DFU timeout in ms" 162 default 500 163 depends on BOOT_SERIAL_WAIT_FOR_DFU 164 help 165 Timeout in ms for MCUboot to wait to allow for DFU to be invoked. 166 167config BOOT_SERIAL_BOOT_MODE 168 bool "Check boot mode via retention subsystem" 169 depends on RETENTION_BOOT_MODE 170 help 171 Allows for entering serial recovery mode by using Zephyr's boot mode 172 retention system (i.e. an application must set the boot mode to stay 173 in serial recovery mode and reboot the module). 174 175config BOOT_SERIAL_NO_APPLICATION 176 bool "Stay in bootloader if no application" 177 help 178 Allows for entering serial recovery mode if there is no bootable 179 application that the bootloader can jump to. 180 181config BOOT_SERIAL_PIN_RESET 182 bool "Check for device reset by pin" 183 select HWINFO 184 help 185 Checks if the module reset was caused by the reset pin and will 186 remain in bootloader serial recovery mode if it was. 187 188endmenu 189 190config BOOT_SERIAL_IMG_GRP_HASH 191 bool "Image list hash support" 192 default y 193 help 194 If y, image list responses will include the image hash (adds ~100 195 bytes of flash). 196 197config BOOT_SERIAL_IMG_GRP_IMAGE_STATE 198 bool "Image state support" 199 depends on !SINGLE_APPLICATION_SLOT 200 select BOOT_SERIAL_IMG_GRP_HASH if UPDATEABLE_IMAGE_NUMBER > 1 201 help 202 If y, image states will be included with image lists and the set 203 state command can be used to mark an image as test/confirmed. 204 205endif # MCUBOOT_SERIAL 206