blob: 61058bebb3bc78bb1ef5914af9d16242534fe080 [file] [log] [blame]
# Copyright Runtime.io 2018. All rights reserved.
# Copyright Nordic Semiconductor ASA 2020. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
menuconfig MCUMGR
bool "mcumgr Support"
select NET_BUF
select TINYCBOR
help
This option enables the mcumgr management library.
if MCUMGR
module = MCUMGR
module-str = mcumgr
source "subsys/logging/Kconfig.template.log_config"
config APP_LINK_WITH_MCUMGR
bool "Link 'app' with MCUMGR"
default y
help
Add MCUMGR header files to the 'app' include path. It may be
disabled if the include paths for MCUMGR are causing aliasing
issues for 'app'.
config MGMT_CBORATTR_MAX_SIZE
int "The maximum size of a CBOR attribute during decoding"
default 512
help
The maximum size of a CBOR attribute during decoding
menu "Command Handlers"
menuconfig MCUMGR_CMD_FS_MGMT
bool "Enable mcumgr handlers for file management (insecure)"
depends on FILE_SYSTEM
help
Enables mcumgr handlers for file management
This option allows mcumgr clients to access anything in the
file system, including application-stored secrets like
private keys. Use of this feature in production is strongly
discouraged.
if MCUMGR_CMD_FS_MGMT
choice FS_MGMT_MAX_FILE_SIZE
prompt "Maximum file size that could be uploaded/downloaded"
default FS_MGMT_MAX_FILE_SIZE_64KB
help
Maximum file size that will be allowed to be downloaded from
device.
This option decides on number of bytes that are reserved in
CBOR frame for storage of offset/size of file downloaded.
config FS_MGMT_MAX_FILE_SIZE_64KB
bool "<= 64KB"
help
Files that have size up to 64KB require 1 to 3 bytes to encode
size/offset within CBOR frame with file chunk.
config FS_MGMT_MAX_FILE_SIZE_4GB
bool "<= 4GB"
help
Files that have size up to 4GB require 1 to 5 bytes to encode
size/offset within CBOR frame with file chunk.
endchoice
config FS_MGMT_MAX_OFFSET_LEN
int
default 3 if FS_MGMT_MAX_FILE_SIZE_64KB
default 5 if FS_MGMT_MAX_FILE_SIZE_4GB
help
Maximal byte length of encoded offset/size, within transferred
CBOR frame containing chunk of downloaded file.
This value affects how much of data will fit into download buffer,
as it selects sizes of fields within headers.
NOTE: This option is hidden intentionally as it is intended
to be assigned from limited set of allowed values, depending on
the selection made in FS_MGMT_MAX_FILE_SIZE menu.
config FS_MGMT_UL_CHUNK_SIZE
int "Maximum chunk size for file uploads"
default 512
help
Limits the maximum chunk size for file uploads, in bytes. A buffer of
this size gets allocated on the stack during handling of a file upload command.
config FS_MGMT_DL_CHUNK_SIZE_LIMIT
bool "Enable setting custom size of download file chunk"
help
By default file chunk, that will be read off storage and fit into
mcumgr frame, is automatically calculated to fit into buffer
of size MCUGMR_BUF_SIZE with all headers.
Enabling this option allows to set MAXIMUM value that will be
allowed for such chunk.
Look inside fs_mgmt_config.h for details.
if FS_MGMT_DL_CHUNK_SIZE_LIMIT
config FS_MGMT_DL_CHUNK_SIZE
int "Maximum chunk size for file downloads"
range 65 MCUMGR_BUF_SIZE
default MCUMGR_BUF_SIZE
help
Sets the MAXIMUM size of chunk which will be rounded down to
number of bytes that, with all the required headers, will fit
into MCUMGR_BUF_SIZE. This means that actual value might be lower
then selected, in which case compiler warning will be issued.
Look inside fs_mgmt_config.h for details.
Note that header sizes are affected by FS_MGMT_MAX_OFFSET_LEN.
endif
config FS_MGMT_PATH_SIZE
int "Maximum file path length"
default 64
help
Limits the maximum path length for file operations, in bytes. A buffer
of this size gets allocated on the stack during handling of file upload
and download commands.
endif
config MCUMGR_CMD_SHELL_MGMT
bool "Enable mcumgr handlers for shell management"
depends on SHELL
select SHELL_BACKEND_DUMMY
help
Enables mcumgr handlers for shell management. The handler will utilize
the dummy backend to execute shell commands and capture the output to
an internal memory buffer. This way, there is no interaction with
physical interfaces outside of the scope of the user.
It is possible to use additional shell backends in coordination
with this handler and they will not interfere.
The SHELL_BACKEND_DUMMY_BUF_SIZE will affect how many characters
will be returned from command output, if your output gets cut, then
increase the value. Remember to set MCUMGR_BUF_SIZE accordingly.
menuconfig MCUMGR_CMD_IMG_MGMT
bool "Enable mcumgr handlers for image management"
select FLASH
select MPU_ALLOW_FLASH_WRITE if ARM_MPU
select IMG_MANAGER
help
Enables mcumgr handlers for image management
if MCUMGR_CMD_IMG_MGMT
config IMG_MGMT_UL_CHUNK_SIZE
int "Maximum chunk size for image uploads"
default 512
depends on MCUMGR_CMD_IMG_MGMT
help
Limits the maximum chunk size for image uploads, in bytes. A buffer of
this size gets allocated on the stack during handling of a image upload
command.
config IMG_MGMT_VERBOSE_ERR
bool "Verbose logging when uploading a new image"
help
Enable verbose logging during a firmware upgrade.
config IMG_MGMT_DUMMY_HDR
bool "Return dummy image header data for imgr functions"
help
Returns dummy image header data for imgr functions,
useful when there are no images present, Eg: unit tests.
config IMG_MGMT_REJECT_DIRECT_XIP_MISMATCHED_SLOT
bool "Reject Direct-XIP applications with mismatched address"
help
When enabled, the mcumgr will compare base address of application,
encoded into .bin file header with use of imgtool, on upload and will
reject binaries that would not be able to start from available
Direct-XIP address.
The base address can be set, to an image binary header, with imgtool,
using the --rom-fixed command line option.
endif
menuconfig MCUMGR_CMD_OS_MGMT
bool "Enable mcumgr handlers for OS management"
select REBOOT
help
Enables mcumgr handlers for OS management
if MCUMGR_CMD_OS_MGMT
config OS_MGMT_RESET_MS
int "Delay before executing reset command (ms)"
default 250
help
When a reset command is received, the system waits this many milliseconds
before performing the reset. This delay allows time for the mcumgr
response to be delivered.
config OS_MGMT_TASKSTAT
bool "Support for taskstat command"
default y
config OS_MGMT_ECHO
bool "Support for echo command"
default y
endif
menuconfig MCUMGR_CMD_STAT_MGMT
bool "Enable mcumgr handlers for statistics management"
depends on STATS
help
Enables mcumgr handlers for statistics management.
config STAT_MGMT_MAX_NAME_LEN
int "Maximum stat group name length"
default 32
depends on MCUMGR_CMD_STAT_MGMT
help
Limits the maximum stat group name length in mcumgr requests, in bytes.
A buffer of this size gets allocated on the stack during handling of all
stat read commands. If a stat group's name exceeds this limit, it will
be impossible to retrieve its values with a stat show command.
menuconfig MCUMGR_GRP_ZEPHYR_BASIC
bool "Enable Zephyr specific basic group of commands"
help
Enables mcumgr to processing of Zephyr specific groups.
if MCUMGR_GRP_ZEPHYR_BASIC
config MCUMGR_GRP_BASIC_CMD_STORAGE_ERASE
bool "Enables storage erase command"
help
Enables command that allows to erase storage partition.
module=MGMT_SETTINGS
module-dep=LOG
module-str=SETTINGS
source "${ZEPHYR_BASE}/subsys/logging/Kconfig.template.log_config"
endif
endmenu
config MCUMGR_SMP_BT
bool "Bluetooth mcumgr SMP transport"
select BT
select BT_PERIPHERAL
select BT_GATT_DYNAMIC_DB
help
Enables handling of SMP commands received over Bluetooth.
config MCUMGR_SMP_BT_AUTHEN
bool "Authenticated requirement for Bluetooth mcumgr SMP transport"
depends on MCUMGR_SMP_BT
select BT_SMP
default y
help
Enables encrypted and authenticated connection requirement to
Bluetooth SMP transport.
config MCUMGR_SMP_SHELL
bool "Shell mcumgr SMP transport"
select SHELL
select SHELL_BACKEND_SERIAL
select BASE64
help
Enables handling of SMP commands received over shell. This allows
the shell to be use for both mcumgr commands and shell commands.
if MCUMGR_SMP_SHELL
config MCUMGR_SMP_SHELL_MTU
int "Shell SMP MTU"
default 256
help
Maximum size of SMP frames sent and received over shell. This value
must satisfy the following relation:
MCUMGR_SMP_SHELL_MTU <= MCUMGR_BUF_SIZE + 2
config MCUMGR_SMP_SHELL_RX_BUF_COUNT
int "Shell SMP RX buffer count"
default 2
help
Number of buffers used for receiving SMP fragments over shell.
endif # MCUMGR_SMP_SHELL
config MCUMGR_SMP_UART
bool "UART mcumgr SMP transport"
select UART_MCUMGR
select BASE64
help
Enables handling of SMP commands received over UART. This is a
lightweight alternative to MCUMGR_SMP_SHELL. It allows mcumgr
commands to be received over UART without requiring an additional
thread.
config MCUMGR_SMP_UART_MTU
int "UART SMP MTU"
default 256
depends on MCUMGR_SMP_UART
help
Maximum size of SMP frames sent and received over UART, in bytes.
This value must satisfy the following relation:
MCUMGR_SMP_UART_MTU <= MCUMGR_BUF_SIZE + 2
config MCUMGR_SMP_UDP
bool "UDP mcumgr SMP transport"
select NETWORKING
select NET_UDP
select NET_SOCKETS
select NET_SOCKETS_POSIX_NAMES
help
Enables handling of SMP commands received over UDP.
Will start a thread for listening on the configured UDP port.
if MCUMGR_SMP_UDP
config MCUMGR_SMP_UDP_IPV4
bool "UDP SMP using IPv4"
depends on NET_IPV4
default y
help
Enable SMP UDP using IPv4 addressing.
Can be enabled alongside IPv6 addressing.
config MCUMGR_SMP_UDP_IPV6
bool "UDP SMP using IPv6"
depends on NET_IPV6
help
Enable SMP UDP using IPv6 addressing.
Can be enabled alongside IPv4 addressing.
config MCUMGR_SMP_UDP_PORT
int "UDP SMP port"
default 1337
help
UDP port that SMP server will listen for SMP commands on.
config MCUMGR_SMP_UDP_STACK_SIZE
int "UDP SMP stack size"
default 512
help
Stack size of the SMP UDP listening thread
config MCUMGR_SMP_UDP_THREAD_PRIO
int "UDP SMP thread priority"
default 0
help
Scheduling priority of the SMP UDP listening thread.
config MCUMGR_SMP_UDP_MTU
int "UDP SMP MTU"
default 1500
help
Maximum size of SMP frames sent and received over UDP, in bytes.
This value must satisfy the following relation:
MCUMGR_SMP_UDP_MTU <= MCUMGR_BUF_SIZE + SMP msg overhead - address size
where address size is determined by IPv4/IPv6 selection.
endif # MCUMGR_SMP_UDP
config MCUMGR_BUF_COUNT
int "Number of mcumgr buffers"
default 2 if MCUMGR_SMP_UDP
default 4
help
The number of net_bufs to allocate for mcumgr. These buffers are
used for both requests and responses.
config MCUMGR_BUF_SIZE
int "Size of each mcumgr buffer"
default 2048 if MCUMGR_SMP_UDP
default 384
help
The size, in bytes, of each mcumgr buffer. This value must satisfy
the following relation:
MCUMGR_BUF_SIZE >= transport-specific-MTU + transport-overhead
In case when MCUMGR_SMP_SHELL is enabled this value should be set to
at least SHELL_BACKEND_DUMMY_BUF_SIZE + 32.
config MCUMGR_BUF_USER_DATA_SIZE
int "Size of mcumgr buffer user data"
default 24 if MCUMGR_SMP_UDP && MCUMGR_SMP_UDP_IPV6
default 8 if MCUMGR_SMP_UDP && MCUMGR_SMP_UDP_IPV4
default 4
help
The size, in bytes, of user data to allocate for each mcumgr buffer.
Different mcumgr transports impose different requirements for this
setting. A value of 4 is sufficient for UART, shell, and bluetooth.
For UDP, the userdata must be large enough to hold a IPv4/IPv6 address.
Note that CONFIG_NET_BUF_USER_DATA_SIZE must be at least as big as
MCUMGR_BUF_USER_DATA_SIZE.
endif # MCUMGR