blob: 63306acc87d2ae1b98df40b99458038153789372 [file] [log] [blame]
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +02001# Copyright (c) 2017-2020 Linaro Limited
2# Copyright (c) 2020 Arm Limited
Jamie McCraeb3e3ce32023-02-22 09:11:57 +00003# Copyright (c) 2017-2023 Nordic Semiconductor ASA
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +02004#
5# SPDX-License-Identifier: Apache-2.0
6
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +02007menuconfig MCUBOOT_SERIAL
8 bool "MCUboot serial recovery"
9 default n
10 select REBOOT
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020011 select SERIAL
12 select UART_INTERRUPT_DRIVEN
13 select BASE64
Dominik Ermele009e192022-11-21 13:01:29 +000014 select CRC
Jamie McCraedc8ef872023-03-10 11:45:32 +000015 select ZCBOR
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020016 help
17 If y, enables a serial-port based update mode. This allows
18 MCUboot itself to load update images into flash over a UART.
19 If unsure, leave at the default value.
20
21if MCUBOOT_SERIAL
22
23choice BOOT_SERIAL_DEVICE
24 prompt "Serial device"
25 default BOOT_SERIAL_UART if !BOARD_NRF52840DONGLE_NRF52840
26 default BOOT_SERIAL_CDC_ACM if BOARD_NRF52840DONGLE_NRF52840
27
28config BOOT_SERIAL_UART
29 bool "UART"
30 # SERIAL and UART_INTERRUPT_DRIVEN already selected
Dominik Ermel1090d8f2021-09-22 08:37:28 +000031 help
32 The serial device to use will be fist selected via chosen
33 node "zephyr,uart-mcumgr", when such node does not exist
34 the "zephyr,console" is used. In case when
35 the "zephyr,uart-mcumgr" points to the same device as
36 the "zephyr,console" compilation error will be triggered.
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020037
38config BOOT_SERIAL_CDC_ACM
39 bool "CDC ACM"
40 select USB_DEVICE_STACK
Dominik Ermel1090d8f2021-09-22 08:37:28 +000041 help
42 This setting will choose CDC ACM for serial recovery unless chosen
43 "zephyr,uart-mcumgr" is present, in which case the chosen takes
44 precedence and redirects serial recovery to uart pointed by
45 the chosen, leaving console on CDC ACM.
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020046
47endchoice
48
49config MCUBOOT_SERIAL_DIRECT_IMAGE_UPLOAD
50 bool "Allow to select image number for DFU"
Jamie McCrae25d2f2c2023-07-17 14:17:53 +010051 depends on !SINGLE_APPLICATION_SLOT
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020052 help
53 With the option enabled, the mcuboot serial recovery will
54 respect the "image" field in mcumgr image update frame
55 header.
56 The mapping of image number to partition is as follows:
57 0 -> default behaviour, same as 1;
58 1 -> image-0 (primary slot of the first image);
59 2 -> image-1 (secondary slot of the first image);
60 3 -> image-2;
61 4 -> image-3.
62 Note that 0 is default upload target when no explicit
63 selection is done.
64
Jamie McCrae9d3fd7f2022-11-30 15:44:44 +000065config BOOT_SERIAL_UNALIGNED_BUFFER_SIZE
66 int "Stack buffer for unaligned memory writes"
67 default 64
Jamie McCraeb56a65f2023-02-17 08:47:12 +000068 range 0 128
Jamie McCrae9d3fd7f2022-11-30 15:44:44 +000069 help
70 Specifies the stack usage for a buffer which is used for unaligned
71 memory access when data is written to a device with memory alignment
72 requirements. Set to 0 to disable.
73
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020074config BOOT_MAX_LINE_INPUT_LEN
Jamie McCraead1fb3d2022-12-01 14:24:37 +000075 int "Maximum input line length"
Jamie McCraeaee388a2023-02-17 09:03:50 +000076 default 128
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020077 help
Jamie McCraeaee388a2023-02-17 09:03:50 +000078 Maximum length of input serial port buffer (SMP serial transport uses
79 fragments of 128-bytes, this should not need to be changed unless a
80 different value is used for the transport).
81
82config BOOT_LINE_BUFS
83 int "Number of receive buffers"
84 range 2 128
85 default 8
86 help
87 Number of receive buffers for data received via the serial port.
Jamie McCraead1fb3d2022-12-01 14:24:37 +000088
89config BOOT_SERIAL_MAX_RECEIVE_SIZE
90 int "Maximum command line length"
91 default 1024
92 help
Jamie McCraeaee388a2023-02-17 09:03:50 +000093 Maximum length of received commands via the serial port (this should
94 be equal to the maximum line length, BOOT_MAX_LINE_INPUT_LEN times
95 by the number of receive buffers, BOOT_LINE_BUFS to allow for
96 optimal data transfer speeds).
Jamie McCraecde36392023-02-17 08:44:38 +000097
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020098config BOOT_ERASE_PROGRESSIVELY
99 bool "Erase flash progressively when receiving new firmware"
100 default y if SOC_FAMILY_NRF
101 help
102 If enabled, flash is erased as necessary when receiving new firmware,
103 instead of erasing the whole image slot at once. This is necessary
104 on some hardware that has long erase times, to prevent long wait
105 times at the beginning of the DFU process.
106
107config BOOT_MGMT_ECHO
108 bool "Enable echo command"
109 help
110 if enabled, support for the mcumgr echo command is being added.
111
112menuconfig ENABLE_MGMT_PERUSER
113 bool "Enable system specific mcumgr commands"
114 help
115 The option enables processing of system specific mcumgr commands;
116 system specific commands are within group MGMT_GROUP_ID_PERUSER (64)
117 and above, as defined within mcumgr library.
118 These are system specific command and system specific implementation
119 function is required to process these commands.
120
121if ENABLE_MGMT_PERUSER
Jamie McCraeb3e3ce32023-02-22 09:11:57 +0000122
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200123config BOOT_MGMT_CUSTOM_STORAGE_ERASE
124 bool "Enable storage erase command"
125 help
126 The option enables mcumgr command that allows to erase storage
127 partition.
128 Note that the storage partition needs to be defined, in DTS, otherwise
129 enabling the option will cause a compilation to fail.
130
131config BOOT_MGMT_CUSTOM_IMG_LIST
132 bool "Enable custom image list command"
133 help
134 The option enables command which returns versions and installation
135 statuses (custom property) for all images.
136
137endif # ENABLE_MGMT_PERUSER
138
139config BOOT_SERIAL_ENCRYPT_EC256
140 bool "Support for encrypted upgrade images using ECIES-P256 in serial recovery upload"
141 default n
142 help
143 If y, uploaded images via serial recovery can be decrypted
144 on the fly when upgrading to the primary slot. The
145 encryption mechanism used in this case is ECIES using primitives
146 described under "ECIES-P256 encryption" in docs/encrypted_images.md.
147
Jamie McCraeb3e3ce32023-02-22 09:11:57 +0000148menu "Entrance methods"
149
150menuconfig BOOT_SERIAL_ENTRANCE_GPIO
151 bool "GPIO"
152 default y
153 depends on GPIO
154 help
155 Use a GPIO to enter serial recovery mode.
156
157config BOOT_SERIAL_DETECT_DELAY
158 int "Serial detect pin detection delay time [ms]"
159 default 0
160 depends on BOOT_SERIAL_ENTRANCE_GPIO
161 help
162 Used to prevent the bootloader from loading on button press.
163 Useful for powering on when using the same button as
164 the one used to place the device in bootloader mode.
165
166menuconfig BOOT_SERIAL_WAIT_FOR_DFU
167 bool "Wait a prescribed duration to see if DFU is invoked by receiving a MCUmgr comand"
Piotr Dymacz4427e4c2022-09-14 16:44:22 +0200168 depends on BOOT_SERIAL_UART || BOOT_SERIAL_CDC_ACM
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200169 help
170 If y, MCUboot waits for a prescribed duration of time to allow
171 for DFU to be invoked. The serial recovery can be entered by receiving any
172 mcumgr command.
173
174config BOOT_SERIAL_WAIT_FOR_DFU_TIMEOUT
175 int "Duration to wait for the serial DFU timeout in ms"
176 default 500
177 depends on BOOT_SERIAL_WAIT_FOR_DFU
178 help
Jamie McCraeb3e3ce32023-02-22 09:11:57 +0000179 Timeout in ms for MCUboot to wait to allow for DFU to be invoked.
180
181config BOOT_SERIAL_BOOT_MODE
182 bool "Check boot mode via retention subsystem"
183 depends on RETENTION_BOOT_MODE
184 help
185 Allows for entering serial recovery mode by using Zephyr's boot mode
186 retention system (i.e. an application must set the boot mode to stay
187 in serial recovery mode and reboot the module).
188
Jamie McCraefd79db32023-03-10 11:19:36 +0000189config BOOT_SERIAL_NO_APPLICATION
190 bool "Stay in bootloader if no application"
191 help
192 Allows for entering serial recovery mode if there is no bootable
193 application that the bootloader can jump to.
194
Jamie McCrae35941fe2023-03-28 10:04:18 +0100195config BOOT_SERIAL_PIN_RESET
196 bool "Check for device reset by pin"
197 select HWINFO
198 help
199 Checks if the module reset was caused by the reset pin and will
200 remain in bootloader serial recovery mode if it was.
201
Jamie McCraeb3e3ce32023-02-22 09:11:57 +0000202endmenu
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200203
Jamie McCrae827118f2023-03-10 13:24:57 +0000204config BOOT_SERIAL_IMG_GRP_HASH
205 bool "Image list hash support"
206 default y
207 help
208 If y, image list responses will include the image hash (adds ~100
209 bytes of flash).
210
Jamie McCraefac2cab2023-03-30 10:07:36 +0100211config BOOT_SERIAL_IMG_GRP_IMAGE_STATE
212 bool "Image state support"
213 depends on !SINGLE_APPLICATION_SLOT
214 select BOOT_SERIAL_IMG_GRP_HASH if UPDATEABLE_IMAGE_NUMBER > 1
215 help
216 If y, image states will be included with image lists and the set
217 state command can be used to mark an image as test/confirmed.
218
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200219endif # MCUBOOT_SERIAL