290 lines
11 KiB
Plaintext
290 lines
11 KiB
Plaintext
|
|
#
|
||
|
|
# Copyright 2024-2025 NXP
|
||
|
|
#
|
||
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
||
|
|
#
|
||
|
|
|
||
|
|
menuconfig MCUX_COMPONENT_middleware.multicore.erpc
|
||
|
|
bool "embedded Remote Procedure Call (eRPC)"
|
||
|
|
default n
|
||
|
|
help
|
||
|
|
This option will enable embedded Remote Procedure Call Middleware Component
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.client
|
||
|
|
bool "Client"
|
||
|
|
default n
|
||
|
|
depends on MCUX_COMPONENT_middleware.multicore.erpc
|
||
|
|
help
|
||
|
|
This option enables eRPC Client implementation.
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.server
|
||
|
|
bool "Server"
|
||
|
|
default n
|
||
|
|
depends on MCUX_COMPONENT_middleware.multicore.erpc
|
||
|
|
help
|
||
|
|
This option enables eRPC Server implementation.
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.arbitrator
|
||
|
|
bool "Arbitrator"
|
||
|
|
default n
|
||
|
|
depends on MCUX_COMPONENT_middleware.multicore.erpc
|
||
|
|
help
|
||
|
|
This option enables eRPC Arbitrator implementation.
|
||
|
|
|
||
|
|
if MCUX_COMPONENT_middleware.multicore.erpc
|
||
|
|
choice MCUX_COMPONENT_middleware.multicore.erpc.port
|
||
|
|
prompt "Select eRPC memory allocation porting layer"
|
||
|
|
depends on MCUX_COMPONENT_middleware.multicore.erpc
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.port_stdlib
|
||
|
|
tristate "stdlib memory allocation"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.port_freertos
|
||
|
|
tristate "FreeRTOS memory allocation"
|
||
|
|
endchoice
|
||
|
|
|
||
|
|
choice MCUX_COMPONENT_middleware.multicore.erpc.transport
|
||
|
|
prompt "Select eRPC transport layer"
|
||
|
|
depends on MCUX_COMPONENT_middleware.multicore.erpc.port_stdlib || MCUX_COMPONENT_middleware.multicore.erpc.port_freertos
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_mu_transport
|
||
|
|
tristate "MU"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_rpmsg_lite_transport_master
|
||
|
|
tristate "RPMsg-Lite master"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_rpmsg_lite_transport_remote
|
||
|
|
tristate "RPMsg-Lite remote"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_rpmsg_lite_rtos_transport_master
|
||
|
|
tristate "RPMsg-Lite RTOS master"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_rpmsg_lite_rtos_transport_remote
|
||
|
|
tristate "RPMsg-Lite RTOS remote"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_rpmsg_tty_rtos_transport
|
||
|
|
tristate "RPMsg-Lite TTY RTOS"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_uart_cmsis_transport
|
||
|
|
tristate "UART CMSIS"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_dspi_master_transport
|
||
|
|
tristate "DSPI master"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_dspi_slave_transport
|
||
|
|
tristate "DSPI slave"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_spi_master_transport
|
||
|
|
tristate "SPI master"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_spi_slave_transport
|
||
|
|
tristate "SPI slave"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_lpspi_slave_transport
|
||
|
|
tristate "LPSPI slave"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_i2c_slave_transport
|
||
|
|
tristate "I2C slave"
|
||
|
|
|
||
|
|
config MCUX_COMPONENT_middleware.multicore.erpc.eRPC_lpi2c_slave_transport
|
||
|
|
tristate "LPI2C slave"
|
||
|
|
endchoice
|
||
|
|
|
||
|
|
config MCUX_PRJSEG_middleware.multicore.erpc.generated_config
|
||
|
|
bool "Generate eRPC configuration header"
|
||
|
|
depends on MCUX_COMPONENT_middleware.multicore.erpc
|
||
|
|
default y
|
||
|
|
help
|
||
|
|
Generate the erpc_config_gen.h, otherwise users need to provide their
|
||
|
|
own erpc_config.h.
|
||
|
|
|
||
|
|
if MCUX_PRJSEG_middleware.multicore.erpc.generated_config
|
||
|
|
menu "eRPC Configuration(erpc_config_gen.h)"
|
||
|
|
choice ERPC_ALLOCATION_POLICY_CONFIG
|
||
|
|
prompt "Choice ERPC_ALLOCATION_POLICY_STATIC"
|
||
|
|
help
|
||
|
|
Choose which allocation policy should be used.
|
||
|
|
Set ERPC_ALLOCATION_POLICY_DYNAMIC if dynamic allocations should be used.
|
||
|
|
Set ERPC_ALLOCATION_POLICY_STATIC if static allocations should be used.
|
||
|
|
config ERPC_ALLOCATION_POLICY_DYNAMIC
|
||
|
|
bool "ERPC_ALLOCATION_POLICY_DYNAMIC"
|
||
|
|
help
|
||
|
|
type unsigned
|
||
|
|
config ERPC_ALLOCATION_POLICY_STATIC
|
||
|
|
bool "ERPC_ALLOCATION_POLICY_STATIC"
|
||
|
|
help
|
||
|
|
type unsigned
|
||
|
|
endchoice
|
||
|
|
|
||
|
|
config ERPC_ALLOCATION_POLICY
|
||
|
|
string
|
||
|
|
default "(ERPC_ALLOCATION_POLICY_DYNAMIC)" if ERPC_ALLOCATION_POLICY_DYNAMIC
|
||
|
|
default "(ERPC_ALLOCATION_POLICY_STATIC)" if ERPC_ALLOCATION_POLICY_STATIC
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
|
||
|
|
config ERPC_CODEC_COUNT
|
||
|
|
int "ERPC_CODEC_COUNT"
|
||
|
|
default 2
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
Set amount of codecs objects used simultaneously in case of ERPC_ALLOCATION_POLICY is set to
|
||
|
|
ERPC_ALLOCATION_POLICY_STATIC. For example if client or server is used in one thread then 1. If both are used in one
|
||
|
|
thread per each then 2, ... Default value 2
|
||
|
|
type unsigned
|
||
|
|
|
||
|
|
config ERPC_MESSAGE_LOGGERS_COUNT
|
||
|
|
int "ERPC_MESSAGE_LOGGERS_COUNT"
|
||
|
|
default 0
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
Set amount of message loggers objects used simultaneously in case of ERPC_ALLOCATION_POLICY is set to ERPC_ALLOCATION_POLICY_STATIC.
|
||
|
|
For example if client or server is used in one thread then 1. If both are used in one thread per each then 2, ... For arbitrated client 1 is enough.
|
||
|
|
type unsigned
|
||
|
|
|
||
|
|
config ERPC_CLIENTS_THREADS_AMOUNT
|
||
|
|
int "ERPC_CLIENTS_THREADS_AMOUNT"
|
||
|
|
default 1
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
Set amount of client threads objects used in case of ERPC_ALLOCATION_POLICY is set to ERPC_ALLOCATION_POLICY_STATIC
|
||
|
|
type unsigned
|
||
|
|
|
||
|
|
choice ERPC_THREADS_CONFIG
|
||
|
|
prompt "Choice ERPC_THREADS"
|
||
|
|
help
|
||
|
|
Select threading model
|
||
|
|
config ERPC_THREADS_NONE
|
||
|
|
bool "ERPC_THREADS_NONE"
|
||
|
|
help
|
||
|
|
type unsigned
|
||
|
|
config ERPC_THREADS_PTHREADS
|
||
|
|
bool "ERPC_THREADS_PTHREADS"
|
||
|
|
help
|
||
|
|
type unsigned
|
||
|
|
config ERPC_THREADS_FREERTOS
|
||
|
|
bool "ERPC_THREADS_FREERTOS"
|
||
|
|
help
|
||
|
|
type unsigned
|
||
|
|
config ERPC_THREADS_ZEPHYR
|
||
|
|
bool "ERPC_THREADS_ZEPHYR"
|
||
|
|
help
|
||
|
|
type unsigned
|
||
|
|
config ERPC_THREADS_MBED
|
||
|
|
bool "ERPC_THREADS_MBED"
|
||
|
|
help
|
||
|
|
type unsigned
|
||
|
|
config ERPC_THREADS_WIN32
|
||
|
|
bool "ERPC_THREADS_WIN32"
|
||
|
|
help
|
||
|
|
type unsigned
|
||
|
|
config ERPC_THREADS_THREADX
|
||
|
|
bool "ERPC_THREADS_THREADX"
|
||
|
|
help
|
||
|
|
type unsigned
|
||
|
|
endchoice
|
||
|
|
|
||
|
|
config ERPC_THREADS
|
||
|
|
string
|
||
|
|
default "(ERPC_THREADS_NONE)" if ERPC_THREADS_NONE
|
||
|
|
default "(ERPC_THREADS_PTHREADS)" if ERPC_THREADS_PTHREADS
|
||
|
|
default "(ERPC_THREADS_FREERTOS)" if ERPC_THREADS_FREERTOS
|
||
|
|
default "(ERPC_THREADS_ZEPHYR)" if ERPC_THREADS_ZEPHYR
|
||
|
|
default "(ERPC_THREADS_MBED)" if ERPC_THREADS_MBED
|
||
|
|
default "(ERPC_THREADS_WIN32)" if ERPC_THREADS_WIN32
|
||
|
|
default "(ERPC_THREADS_THREADX)" if ERPC_THREADS_THREADX
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
|
||
|
|
config ERPC_DEFAULT_BUFFER_SIZE
|
||
|
|
int "ERPC_DEFAULT_BUFFER_SIZE"
|
||
|
|
default 256
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
Set the size of buffers allocated by one of MessageBufferFactory.
|
||
|
|
For RPMsg transport layer, ERPC_DEFAULT_BUFFER_SIZE must be 2^n - 16.
|
||
|
|
type unsigned
|
||
|
|
|
||
|
|
config ERPC_DEFAULT_BUFFERS_COUNT
|
||
|
|
int "ERPC_DEFAULT_BUFFERS_COUNT"
|
||
|
|
default 2
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
Set the count of buffers allocated by one of statically allocated messages
|
||
|
|
type unsigned
|
||
|
|
|
||
|
|
config ERPC_NOEXCEPT
|
||
|
|
bool "ERPC_NOEXCEPT"
|
||
|
|
default n
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
Disable/enable noexcept support
|
||
|
|
type unsigned
|
||
|
|
|
||
|
|
config ERPC_NESTED_CALLS
|
||
|
|
bool "ERPC_NESTED_CALLS"
|
||
|
|
default n
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
Disable/enable nested calls. Enable this option when callbacks or other eRPC functions are called
|
||
|
|
from server implementation of another eRPC call. Nested functions need to be marked as @nested in IDL.
|
||
|
|
type unsigned
|
||
|
|
|
||
|
|
config ERPC_NESTED_CALLS_DETECTION
|
||
|
|
bool "ERPC_NESTED_CALLS_DETECTION"
|
||
|
|
default n
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
This serve for locating nested calls in code. Nested calls are calls where inside eRPC function
|
||
|
|
on server side is called another eRPC function (like callbacks). Code need be a bit changed
|
||
|
|
to support nested calls. See ERPC_NESTED_CALLS macro.
|
||
|
|
type unsigned
|
||
|
|
|
||
|
|
config ERPC_MESSAGE_LOGGING
|
||
|
|
bool "ERPC_MESSAGE_LOGGING"
|
||
|
|
default n
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
Enable eRPC message logging code through the eRPC. Take look into "erpc_message_loggers.h". Can be used for base
|
||
|
|
printing messages, or sending data to another system for data analysis.
|
||
|
|
type unsigned
|
||
|
|
|
||
|
|
config ERPC_TRANSPORT_MU_USE_MCMGR
|
||
|
|
bool "ERPC_TRANSPORT_MU_USE_MCMGR"
|
||
|
|
default n
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
MU transport layer configuration. MU transport layer could leverage the Multicore Manager (MCMGR) component for Inter-Core
|
||
|
|
interrupts / MU interrupts management or the Inter-Core interrupts can be managed by itself (MUX_IRQHandler
|
||
|
|
overloading). By default, ERPC_TRANSPORT_MU_USE_MCMGR is set to ERPC_TRANSPORT_MU_USE_MCMGR_ENABLED when mcmgr.h
|
||
|
|
is part of the project, otherwise the ERPC_TRANSPORT_MU_USE_MCMGR_DISABLED option is used. Do not forget
|
||
|
|
to add the MCMGR library into your project when ERPC_TRANSPORT_MU_USE_MCMGR_ENABLED option is used! See the
|
||
|
|
erpc_mu_transport.h for additional MU settings.
|
||
|
|
type unsigned
|
||
|
|
|
||
|
|
config ERPC_PRE_POST_ACTION
|
||
|
|
bool "ERPC_PRE_POST_ACTION"
|
||
|
|
default n
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
Enable eRPC pre and post callback functions shim code. Take look into "erpc_pre_post_action.h". Can be used for
|
||
|
|
detection of eRPC call freeze, ...
|
||
|
|
type unsigned
|
||
|
|
|
||
|
|
config ERPC_PRE_POST_ACTION_DEFAULT
|
||
|
|
bool "ERPC_PRE_POST_ACTION_DEFAULT"
|
||
|
|
default n
|
||
|
|
help
|
||
|
|
No prefix in generated macro
|
||
|
|
Enable eRPC pre and post default callback functions. Take look into "erpc_setup_extensions.h". Can be used for
|
||
|
|
detection of eRPC call freeze, ...
|
||
|
|
type unsigned
|
||
|
|
|
||
|
|
endmenu
|
||
|
|
endif
|
||
|
|
|
||
|
|
menu "eRPC examples sources"
|
||
|
|
rsource "../examples/MCUXPRESSO_SDK/Kconfig"
|
||
|
|
endmenu
|
||
|
|
endif
|