Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions extra/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@ else
args="$*"
fi

# Check for debug flag and append
if [ x$2 == x"--debug" ]; then
args="$args -- -DEXTRA_CONF_FILE=../extra/debug.conf"
fi

echo
echo "Build target: $target $args"

Expand Down
31 changes: 31 additions & 0 deletions extra/debug.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# SPDX-License-Identifier: Apache-2.0
# Debug configuration for Arduino Core Zephyr

# Enable debug mode
CONFIG_DEBUG=y

# Enable assertions
CONFIG_ASSERT=y
#CONFIG_ASSERT_VERBOSE=y

# Enable stack overflow detection
CONFIG_STACK_SENTINEL=y
CONFIG_STACK_CANARIES=y

# Enable thread monitoring and debugging
CONFIG_THREAD_MONITOR=y
CONFIG_THREAD_NAME=y
CONFIG_DEBUG_THREAD_INFO=y

# Disable compiler optimizations
#CONFIG_DEBUG_OPTIMIZATIONS=y

# Enable and configure the shell
CONFIG_SHELL=y
#CONFIG_NET_SHELL=y
#CONFIG_NET_L2_WIFI_SHELL=y
CONFIG_SHELL_STACK_SIZE=8192

# Enable runtime statistics
CONFIG_SYS_HEAP_RUNTIME_STATS=y
CONFIG_THREAD_RUNTIME_STATS=y
14 changes: 14 additions & 0 deletions loader/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,20 @@ project(app LANGUAGES C CXX)

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/blobs)

# Memory region relocation based on Kconfig
# Relocate LLEXT heap if region specified
if(NOT "${CONFIG_LLEXT_HEAP_REGION}" STREQUAL "")
zephyr_code_relocate(FILES ${ZEPHYR_BASE}/subsys/llext/llext_mem.c
LOCATION ${CONFIG_LLEXT_HEAP_REGION}_BSS_NOINIT)
endif()

# Relocate main stack if region specified
if(NOT "${CONFIG_MAIN_STACK_REGION}" STREQUAL "")
zephyr_code_relocate(FILES ${ZEPHYR_BASE}/kernel/init.c
LOCATION ${CONFIG_MAIN_STACK_REGION}_BSS_NOINIT)
endif()


# for USB device stack NEXT
target_sources_ifdef(CONFIG_USB_DEVICE_STACK_NEXT app PRIVATE
${CMAKE_CURRENT_LIST_DIR}/../cores/arduino/usb_device_descriptor.c
Expand Down
19 changes: 19 additions & 0 deletions loader/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#
# Copyright (c) 2025 Arduino
#
# SPDX-License-Identifier: Apache-2.0
#

source "Kconfig.zephyr"

config LLEXT_HEAP_REGION
string "LLEXT heap memory region"
depends on CODE_DATA_RELOCATION
help
Specify the memory region for LLEXT heap.

config MAIN_STACK_REGION
string "Main stack memory region"
depends on CODE_DATA_RELOCATION
help
Specify the memory region for main stack.
7 changes: 7 additions & 0 deletions loader/fixups.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
#include <cmsis_core.h>
#include <zephyr/init.h>

#ifndef CONFIG_CPP
void __cxa_pure_virtual() {
while (1)
;
}
#endif

int disable_mpu_rasr_xn(void) {
uint32_t index;
/* Kept the max index as 8(irrespective of soc) because the sram
Expand Down
5 changes: 5 additions & 0 deletions loader/llext_exports.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,14 @@ EXPORT_SYMBOL(usb_enable);
EXPORT_SYMBOL(usb_disable);
#endif

#if CONFIG_LOG
EXPORT_SYMBOL(z_log_msg_runtime_vcreate);
FORCE_EXPORT_SYM(log_const_sketch)
#endif

#if defined(CONFIG_LOG_RUNTIME_FILTERING)
FORCE_EXPORT_SYM(log_dynamic_sketch)
#endif

#if defined(CONFIG_NETWORKING)
FORCE_EXPORT_SYM(net_if_foreach);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ CONFIG_SHELL_STACK_SIZE=32768
CONFIG_MAIN_STACK_SIZE=32768
CONFIG_LLEXT_HEAP_SIZE=128

CONFIG_FPU=y
CONFIG_CPP=n
CONFIG_SHELL=n

CONFIG_FPU=y
CONFIG_ADC=y
CONFIG_DAC=y
CONFIG_PWM=y
Expand All @@ -39,13 +41,12 @@ CONFIG_MBEDTLS=y
CONFIG_MBEDTLS_BUILTIN=y
CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT=y
CONFIG_MBEDTLS_ENABLE_HEAP=y
CONFIG_MBEDTLS_HEAP_SIZE=60000
CONFIG_MBEDTLS_HEAP_SIZE=80000
CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=7168
CONFIG_MBEDTLS_HASH_ALL_ENABLED=y
CONFIG_MBEDTLS_CMAC=y

CONFIG_VIDEO=y
CONFIG_VIDEO_LOG_LEVEL_DBG=y
CONFIG_VIDEO_STM32_DCMI=y
CONFIG_VIDEO_BUFFER_POOL_NUM_MAX=3
CONFIG_VIDEO_BUFFER_POOL_SZ_MAX=614400
Expand Down Expand Up @@ -134,7 +135,4 @@ CONFIG_DNS_SERVER1="8.8.8.8"
CONFIG_NET_CONFIG_AUTO_INIT=n
CONFIG_NET_CONNECTION_MANAGER=y
#CONFIG_WIFI_NM_MAX_MANAGED_INTERFACES=2

CONFIG_NET_SHELL=y
CONFIG_NET_L2_ETHERNET_MGMT=y
CONFIG_NET_L2_WIFI_SHELL=y
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,12 @@ CONFIG_USBD_LOG_LEVEL_ERR=y
CONFIG_LLEXT_STORAGE_WRITABLE=n

CONFIG_FPU=y

CONFIG_USERSPACE=n
CONFIG_ARM_MPU=n

CONFIG_SHELL_STACK_SIZE=8192
CONFIG_CPP=n
CONFIG_SHELL=n

CONFIG_MAIN_STACK_SIZE=32768
CONFIG_LLEXT_HEAP_SIZE=128
CONFIG_HEAP_MEM_POOL_SIZE=32768
Expand All @@ -34,8 +35,6 @@ CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=8192
CONFIG_ADC=y
CONFIG_PWM=y

CONFIG_NET_CORE_LOG_LEVEL_DBG=y

CONFIG_NETWORKING=y
CONFIG_NET_IPV6=n
CONFIG_NET_IPV4=y
Expand Down Expand Up @@ -74,7 +73,7 @@ CONFIG_MBEDTLS=y
CONFIG_MBEDTLS_BUILTIN=y
CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT=y
CONFIG_MBEDTLS_ENABLE_HEAP=y
CONFIG_MBEDTLS_HEAP_SIZE=60000
CONFIG_MBEDTLS_HEAP_SIZE=80000
CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=7168
CONFIG_MBEDTLS_HASH_ALL_ENABLED=y
CONFIG_MBEDTLS_CMAC=y
Expand All @@ -85,7 +84,6 @@ CONFIG_NANOPB=y
CONFIG_NET_CONFIG_AUTO_INIT=n
CONFIG_NET_CONNECTION_MANAGER=y
CONFIG_WIFI_NM_MAX_MANAGED_INTERFACES=2
CONFIG_NET_L2_WIFI_SHELL=y
CONFIG_NET_MGMT_EVENT_QUEUE_SIZE=32

CONFIG_NET_IF_MAX_IPV4_COUNT=3
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@ CONFIG_UART_LINE_CTRL=y
CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT=y

CONFIG_LLEXT_STORAGE_WRITABLE=n

CONFIG_SHARED_MULTI_HEAP=y
CONFIG_HEAP_MEM_POOL_SIZE=65536
CONFIG_HEAP_MEM_POOL_SIZE=32768
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=-1

CONFIG_CPP=n
CONFIG_SHELL=n

CONFIG_FPU=y
CONFIG_ICACHE=y
Expand All @@ -23,10 +26,13 @@ CONFIG_USERSPACE=n
CONFIG_ARM_MPU=y
CONFIG_MAX_THREAD_BYTES=4

CONFIG_SHELL_STACK_SIZE=32768
CONFIG_MAIN_STACK_SIZE=32768
CONFIG_LLEXT_HEAP_SIZE=128

CONFIG_CODE_DATA_RELOCATION=y
CONFIG_MAIN_STACK_REGION="DTCM"
CONFIG_LLEXT_HEAP_REGION="SRAM2"

CONFIG_ADC=y
CONFIG_PWM=y
CONFIG_DMA=y
Expand All @@ -40,13 +46,10 @@ CONFIG_SDHC_INIT_PRIORITY=75
CONFIG_SDIO_STACK=y
CONFIG_CYW4343W=y
CONFIG_WIFI=y
CONFIG_NET_L2_WIFI_SHELL=y

CONFIG_AIROC_WIFI_CUSTOM=y
CONFIG_STM32_MEMMAP=y

CONFIG_NET_CORE_LOG_LEVEL_DBG=y

CONFIG_NETWORKING=y
CONFIG_NET_IPV6=n
CONFIG_NET_IPV4=y
Expand All @@ -58,8 +61,6 @@ CONFIG_DNS_RESOLVER=y
CONFIG_DNS_SERVER_IP_ADDRESSES=y
CONFIG_DNS_SERVER1="8.8.8.8"

CONFIG_INIT_STACKS=y

CONFIG_NET_SOCKETS=y
CONFIG_NET_SOCKETS_NET_MGMT=y
CONFIG_NET_SOCKETS_SOCKOPT_TLS=y
Expand All @@ -82,13 +83,12 @@ CONFIG_MBEDTLS=y
CONFIG_MBEDTLS_BUILTIN=y
CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT=y
CONFIG_MBEDTLS_ENABLE_HEAP=y
CONFIG_MBEDTLS_HEAP_SIZE=60000
CONFIG_MBEDTLS_HEAP_SIZE=80000
CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=7168
CONFIG_MBEDTLS_HASH_ALL_ENABLED=y
CONFIG_MBEDTLS_CMAC=y

CONFIG_VIDEO=y
CONFIG_VIDEO_LOG_LEVEL_DBG=y
CONFIG_VIDEO_STM32_DCMI=y
CONFIG_VIDEO_BUFFER_POOL_NUM_MAX=3
CONFIG_VIDEO_BUFFER_POOL_SZ_MAX=614400
Expand Down