blob: 7ed9a7d9cc7b0b3b055d43047ba482e08c74d0c3 [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
Jamie McCrae215345f2023-08-16 07:37:18 +010016 depends on !BOOT_FIRMWARE_LOADER
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020017 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
Dominik Ermel1090d8f2021-09-22 08:37:28 +000032 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.
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020038
39config BOOT_SERIAL_CDC_ACM
40 bool "CDC ACM"
41 select USB_DEVICE_STACK
Dominik Ermel1090d8f2021-09-22 08:37:28 +000042 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.
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020047
48endchoice
49
50config MCUBOOT_SERIAL_DIRECT_IMAGE_UPLOAD
51 bool "Allow to select image number for DFU"
Jamie McCrae25d2f2c2023-07-17 14:17:53 +010052 depends on !SINGLE_APPLICATION_SLOT
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020053 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
Jamie McCrae9d3fd7f2022-11-30 15:44:44 +000066config BOOT_SERIAL_UNALIGNED_BUFFER_SIZE
67 int "Stack buffer for unaligned memory writes"
68 default 64
Jamie McCraeb56a65f2023-02-17 08:47:12 +000069 range 0 128
Jamie McCrae9d3fd7f2022-11-30 15:44:44 +000070 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
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020075config BOOT_MAX_LINE_INPUT_LEN
Jamie McCraead1fb3d2022-12-01 14:24:37 +000076 int "Maximum input line length"
Jamie McCraeaee388a2023-02-17 09:03:50 +000077 default 128
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020078 help
Jamie McCraeaee388a2023-02-17 09:03:50 +000079 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.
Jamie McCraead1fb3d2022-12-01 14:24:37 +000089
90config BOOT_SERIAL_MAX_RECEIVE_SIZE
91 int "Maximum command line length"
92 default 1024
93 help
Jamie McCraeaee388a2023-02-17 09:03:50 +000094 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).
Jamie McCraecde36392023-02-17 08:44:38 +000098
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020099config BOOT_ERASE_PROGRESSIVELY
100 bool "Erase flash progressively when receiving new firmware"
Jamie McCrae8b4c70a2024-03-07 07:51:55 +0000101 default y if SOC_FAMILY_NORDIC_NRF
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200102 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
Jamie McCraeb3e3ce32023-02-22 09:11:57 +0000123
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200124config 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
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200132endif # ENABLE_MGMT_PERUSER
133
Jamie McCraeb3e3ce32023-02-22 09:11:57 +0000134menu "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"
Piotr Dymacz4427e4c2022-09-14 16:44:22 +0200154 depends on BOOT_SERIAL_UART || BOOT_SERIAL_CDC_ACM
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200155 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
Jamie McCraeb3e3ce32023-02-22 09:11:57 +0000165 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
Jamie McCraefd79db32023-03-10 11:19:36 +0000175config 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
Jamie McCrae35941fe2023-03-28 10:04:18 +0100181config 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
Jamie McCraeb3e3ce32023-02-22 09:11:57 +0000188endmenu
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200189
Jamie McCrae827118f2023-03-10 13:24:57 +0000190config 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
Jamie McCraefac2cab2023-03-30 10:07:36 +0100197config 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
Jamie McCraee261b282024-07-26 11:48:19 +0100205config BOOT_SERIAL_IMG_GRP_SLOT_INFO
206 bool "Slot info"
207 default y if UPDATEABLE_IMAGE_NUMBER > 1
208 help
209 If y, will include the slot info command which lists what available
210 slots there are in the system.
211
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200212endif # MCUBOOT_SERIAL