blob: b48ee9b5ef1ec4ef3ccb3853fc0f93ee3d013d9a [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
Jamie McCraedc8ef872023-03-10 11:45:32 +000017 select ZCBOR
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020018 help
19 If y, enables a serial-port based update mode. This allows
20 MCUboot itself to load update images into flash over a UART.
21 If unsure, leave at the default value.
22
23if MCUBOOT_SERIAL
24
25choice BOOT_SERIAL_DEVICE
26 prompt "Serial device"
27 default BOOT_SERIAL_UART if !BOARD_NRF52840DONGLE_NRF52840
28 default BOOT_SERIAL_CDC_ACM if BOARD_NRF52840DONGLE_NRF52840
29
30config BOOT_SERIAL_UART
31 bool "UART"
32 # SERIAL and UART_INTERRUPT_DRIVEN already selected
33
34config BOOT_SERIAL_CDC_ACM
35 bool "CDC ACM"
36 select USB_DEVICE_STACK
37
38endchoice
39
40config MCUBOOT_SERIAL_DIRECT_IMAGE_UPLOAD
41 bool "Allow to select image number for DFU"
42 help
43 With the option enabled, the mcuboot serial recovery will
44 respect the "image" field in mcumgr image update frame
45 header.
46 The mapping of image number to partition is as follows:
47 0 -> default behaviour, same as 1;
48 1 -> image-0 (primary slot of the first image);
49 2 -> image-1 (secondary slot of the first image);
50 3 -> image-2;
51 4 -> image-3.
52 Note that 0 is default upload target when no explicit
53 selection is done.
54
Jamie McCrae9d3fd7f2022-11-30 15:44:44 +000055config BOOT_SERIAL_UNALIGNED_BUFFER_SIZE
56 int "Stack buffer for unaligned memory writes"
57 default 64
Jamie McCraeb56a65f2023-02-17 08:47:12 +000058 range 0 128
Jamie McCrae9d3fd7f2022-11-30 15:44:44 +000059 help
60 Specifies the stack usage for a buffer which is used for unaligned
61 memory access when data is written to a device with memory alignment
62 requirements. Set to 0 to disable.
63
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020064config BOOT_MAX_LINE_INPUT_LEN
Jamie McCraead1fb3d2022-12-01 14:24:37 +000065 int "Maximum input line length"
Jamie McCraeaee388a2023-02-17 09:03:50 +000066 default 128
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020067 help
Jamie McCraeaee388a2023-02-17 09:03:50 +000068 Maximum length of input serial port buffer (SMP serial transport uses
69 fragments of 128-bytes, this should not need to be changed unless a
70 different value is used for the transport).
71
72config BOOT_LINE_BUFS
73 int "Number of receive buffers"
74 range 2 128
75 default 8
76 help
77 Number of receive buffers for data received via the serial port.
Jamie McCraead1fb3d2022-12-01 14:24:37 +000078
79config BOOT_SERIAL_MAX_RECEIVE_SIZE
80 int "Maximum command line length"
81 default 1024
82 help
Jamie McCraeaee388a2023-02-17 09:03:50 +000083 Maximum length of received commands via the serial port (this should
84 be equal to the maximum line length, BOOT_MAX_LINE_INPUT_LEN times
85 by the number of receive buffers, BOOT_LINE_BUFS to allow for
86 optimal data transfer speeds).
Jamie McCraecde36392023-02-17 08:44:38 +000087
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +020088config BOOT_SERIAL_DETECT_DELAY
89 int "Serial detect pin detection delay time [ms]"
90 default 0
91 help
92 Used to prevent the bootloader from loading on button press.
93 Useful for powering on when using the same button as
94 the one used to place the device in bootloader mode.
95
96config BOOT_ERASE_PROGRESSIVELY
97 bool "Erase flash progressively when receiving new firmware"
98 default y if SOC_FAMILY_NRF
99 help
100 If enabled, flash is erased as necessary when receiving new firmware,
101 instead of erasing the whole image slot at once. This is necessary
102 on some hardware that has long erase times, to prevent long wait
103 times at the beginning of the DFU process.
104
105config BOOT_MGMT_ECHO
106 bool "Enable echo command"
107 help
108 if enabled, support for the mcumgr echo command is being added.
109
110menuconfig ENABLE_MGMT_PERUSER
111 bool "Enable system specific mcumgr commands"
112 help
113 The option enables processing of system specific mcumgr commands;
114 system specific commands are within group MGMT_GROUP_ID_PERUSER (64)
115 and above, as defined within mcumgr library.
116 These are system specific command and system specific implementation
117 function is required to process these commands.
118
119if ENABLE_MGMT_PERUSER
120config BOOT_MGMT_CUSTOM_STORAGE_ERASE
121 bool "Enable storage erase command"
122 help
123 The option enables mcumgr command that allows to erase storage
124 partition.
125 Note that the storage partition needs to be defined, in DTS, otherwise
126 enabling the option will cause a compilation to fail.
127
128config BOOT_MGMT_CUSTOM_IMG_LIST
129 bool "Enable custom image list command"
130 help
131 The option enables command which returns versions and installation
132 statuses (custom property) for all images.
133
134endif # ENABLE_MGMT_PERUSER
135
136config BOOT_SERIAL_ENCRYPT_EC256
137 bool "Support for encrypted upgrade images using ECIES-P256 in serial recovery upload"
138 default n
139 help
140 If y, uploaded images via serial recovery can be decrypted
141 on the fly when upgrading to the primary slot. The
142 encryption mechanism used in this case is ECIES using primitives
143 described under "ECIES-P256 encryption" in docs/encrypted_images.md.
144
145config BOOT_SERIAL_WAIT_FOR_DFU
146 bool "Wait for a prescribed duration to see if DFU is invoked by receiving a mcumgr comand"
Piotr Dymacz4427e4c2022-09-14 16:44:22 +0200147 depends on BOOT_SERIAL_UART || BOOT_SERIAL_CDC_ACM
Andrzej Puzdrowski35f61d32022-04-01 17:00:08 +0200148 help
149 If y, MCUboot waits for a prescribed duration of time to allow
150 for DFU to be invoked. The serial recovery can be entered by receiving any
151 mcumgr command.
152
153config BOOT_SERIAL_WAIT_FOR_DFU_TIMEOUT
154 int "Duration to wait for the serial DFU timeout in ms"
155 default 500
156 depends on BOOT_SERIAL_WAIT_FOR_DFU
157 help
158 timeout in ms for MCUboot to wait to allow for DFU to be invoked.
159
160endif # MCUBOOT_SERIAL