blob: 0a41abffa0bc4c026d6a0c546df38ec47933c562 [file] [log] [blame]
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +02001# Copyright (c) 2017-2020 Linaro Limited
2# Copyright (c) 2020 Arm Limited
3# Copyright (c) 2017-2022 Nordic Semiconductor ASA
4#
5# SPDX-License-Identifier: Apache-2.0
6
7
8menuconfig MCUBOOT_SERIAL
9 bool "MCUboot serial recovery"
10 default n
11 select REBOOT
12 select GPIO
13 select SERIAL
14 select UART_INTERRUPT_DRIVEN
15 select BASE64
Dominik Ermele009e192022-11-21 13:01:29 +000016 select CRC
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
32
33config BOOT_SERIAL_CDC_ACM
34 bool "CDC ACM"
35 select USB_DEVICE_STACK
36
37endchoice
38
39config MCUBOOT_SERIAL_DIRECT_IMAGE_UPLOAD
40 bool "Allow to select image number for DFU"
41 help
42 With the option enabled, the mcuboot serial recovery will
43 respect the "image" field in mcumgr image update frame
44 header.
45 The mapping of image number to partition is as follows:
46 0 -> default behaviour, same as 1;
47 1 -> image-0 (primary slot of the first image);
48 2 -> image-1 (secondary slot of the first image);
49 3 -> image-2;
50 4 -> image-3.
51 Note that 0 is default upload target when no explicit
52 selection is done.
53
Jamie McCrae9d3fd7f2022-11-30 15:44:44 +000054config BOOT_SERIAL_UNALIGNED_BUFFER_SIZE
55 int "Stack buffer for unaligned memory writes"
56 default 64
57 help
58 Specifies the stack usage for a buffer which is used for unaligned
59 memory access when data is written to a device with memory alignment
60 requirements. Set to 0 to disable.
61
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020062config BOOT_MAX_LINE_INPUT_LEN
Jamie McCraead1fb3d2022-12-01 14:24:37 +000063 int "Maximum input line length"
Jamie McCraeaee388a2023-02-17 09:03:50 +000064 default 128
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020065 help
Jamie McCraeaee388a2023-02-17 09:03:50 +000066 Maximum length of input serial port buffer (SMP serial transport uses
67 fragments of 128-bytes, this should not need to be changed unless a
68 different value is used for the transport).
69
70config BOOT_LINE_BUFS
71 int "Number of receive buffers"
72 range 2 128
73 default 8
74 help
75 Number of receive buffers for data received via the serial port.
Jamie McCraead1fb3d2022-12-01 14:24:37 +000076
77config BOOT_SERIAL_MAX_RECEIVE_SIZE
78 int "Maximum command line length"
79 default 1024
80 help
Jamie McCraeaee388a2023-02-17 09:03:50 +000081 Maximum length of received commands via the serial port (this should
82 be equal to the maximum line length, BOOT_MAX_LINE_INPUT_LEN times
83 by the number of receive buffers, BOOT_LINE_BUFS to allow for
84 optimal data transfer speeds).
Jamie McCraecde36392023-02-17 08:44:38 +000085
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020086config BOOT_SERIAL_DETECT_PORT
Andrzej Puzdrowskic5faf432022-04-09 13:34:23 +020087 string "GPIO device to trigger serial recovery mode (DEPRECATED)"
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020088 default GPIO_0 if SOC_FAMILY_NRF
89 help
90 Zephyr GPIO device that contains the pin used to trigger
91 serial recovery mode.
92
93config BOOT_SERIAL_DETECT_PIN
Andrzej Puzdrowskic5faf432022-04-09 13:34:23 +020094 int "Pin to trigger serial recovery mode (DEPRECATED)"
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020095 default 6 if BOARD_NRF9160DK_NRF9160
96 default 11 if BOARD_NRF52840DK_NRF52840
97 default 13 if BOARD_NRF52DK_NRF52832 || BOARD_NRF52833DK_NRF52833
98 default 23 if BOARD_NRF5340PDK_NRF5340_CPUAPP || BOARD_NRF5340PDK_NRF5340_CPUAPP_NS || \
99 BOARD_NRF5340DK_NRF5340_CPUAPP || BOARD_NRF5340DK_NRF5340_CPUAPP_NS
Marek Pieta2fa11902022-09-13 11:31:30 +0200100 default -1
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200101 help
102 Pin on the serial detect port that triggers serial recovery mode.
103
104config BOOT_SERIAL_DETECT_PIN_VAL
Andrzej Puzdrowskic5faf432022-04-09 13:34:23 +0200105 int "Serial detect pin trigger value (DEPRECATED)"
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200106 default 0
107 range 0 1
108 help
109 Logic value of the detect pin that triggers serial recovery
110 mode.
111
112config BOOT_SERIAL_DETECT_DELAY
113 int "Serial detect pin detection delay time [ms]"
114 default 0
115 help
116 Used to prevent the bootloader from loading on button press.
117 Useful for powering on when using the same button as
118 the one used to place the device in bootloader mode.
119
120config BOOT_ERASE_PROGRESSIVELY
121 bool "Erase flash progressively when receiving new firmware"
122 default y if SOC_FAMILY_NRF
123 help
124 If enabled, flash is erased as necessary when receiving new firmware,
125 instead of erasing the whole image slot at once. This is necessary
126 on some hardware that has long erase times, to prevent long wait
127 times at the beginning of the DFU process.
128
129config BOOT_MGMT_ECHO
130 bool "Enable echo command"
131 help
132 if enabled, support for the mcumgr echo command is being added.
133
134menuconfig ENABLE_MGMT_PERUSER
135 bool "Enable system specific mcumgr commands"
136 help
137 The option enables processing of system specific mcumgr commands;
138 system specific commands are within group MGMT_GROUP_ID_PERUSER (64)
139 and above, as defined within mcumgr library.
140 These are system specific command and system specific implementation
141 function is required to process these commands.
142
143if ENABLE_MGMT_PERUSER
144config BOOT_MGMT_CUSTOM_STORAGE_ERASE
145 bool "Enable storage erase command"
146 help
147 The option enables mcumgr command that allows to erase storage
148 partition.
149 Note that the storage partition needs to be defined, in DTS, otherwise
150 enabling the option will cause a compilation to fail.
151
152config BOOT_MGMT_CUSTOM_IMG_LIST
153 bool "Enable custom image list command"
154 help
155 The option enables command which returns versions and installation
156 statuses (custom property) for all images.
157
158endif # ENABLE_MGMT_PERUSER
159
160config BOOT_SERIAL_ENCRYPT_EC256
161 bool "Support for encrypted upgrade images using ECIES-P256 in serial recovery upload"
162 default n
163 help
164 If y, uploaded images via serial recovery can be decrypted
165 on the fly when upgrading to the primary slot. The
166 encryption mechanism used in this case is ECIES using primitives
167 described under "ECIES-P256 encryption" in docs/encrypted_images.md.
168
169config BOOT_SERIAL_WAIT_FOR_DFU
170 bool "Wait for a prescribed duration to see if DFU is invoked by receiving a mcumgr comand"
Piotr Dymacz4427e4c2022-09-14 16:44:22 +0200171 depends on BOOT_SERIAL_UART || BOOT_SERIAL_CDC_ACM
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200172 help
173 If y, MCUboot waits for a prescribed duration of time to allow
174 for DFU to be invoked. The serial recovery can be entered by receiving any
175 mcumgr command.
176
177config BOOT_SERIAL_WAIT_FOR_DFU_TIMEOUT
178 int "Duration to wait for the serial DFU timeout in ms"
179 default 500
180 depends on BOOT_SERIAL_WAIT_FOR_DFU
181 help
182 timeout in ms for MCUboot to wait to allow for DFU to be invoked.
183
184endif # MCUBOOT_SERIAL