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
26 changes: 22 additions & 4 deletions loader/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ LOG_MODULE_REGISTER(sketch);
#include <zephyr/llext/buf_loader.h>
#include <zephyr/shell/shell.h>
#include <zephyr/shell/shell_uart.h>
#include <zephyr/logging/log_ctrl.h>

#include <stdlib.h>
#include <zephyr/drivers/gpio.h>
Expand All @@ -35,11 +36,11 @@ struct sketch_header_v1 {
#define SKETCH_FLAG_LINKED 0x02
#define SKETCH_FLAG_IMMEDIATE 0x04

#define TARGET_HAS_USB_CDC_SHELL \
DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && CONFIG_SHELL && \
#define TARGET_HAS_USB_CDC \
DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && \
(CONFIG_USB_DEVICE_STACK || CONFIG_USB_DEVICE_STACK_NEXT)

#if TARGET_HAS_USB_CDC_SHELL
#if TARGET_HAS_USB_CDC
const struct device *const usb_dev =
DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), cdc_acm, 0));

Expand All @@ -63,6 +64,7 @@ int usb_enable(usb_dc_status_callback status_cb) {
}
#endif

#if CONFIG_SHELL
static int enable_shell_usb(void) {
bool log_backend = CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL > 0;
uint32_t level = (CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL > LOG_LEVEL_DBG) ?
Expand All @@ -75,6 +77,7 @@ static int enable_shell_usb(void) {
return 0;
}
#endif
#endif

#ifdef CONFIG_USERSPACE
K_THREAD_STACK_DEFINE(llext_stack, CONFIG_MAIN_STACK_SIZE);
Expand Down Expand Up @@ -198,8 +201,9 @@ static int loader(const struct shell *sh) {

size_t sketch_buf_len = sketch_hdr->len;

#if TARGET_HAS_USB_CDC_SHELL
#if TARGET_HAS_USB_CDC
int debug = (!sketch_valid) || (sketch_hdr->flags & SKETCH_FLAG_DEBUG);
#if CONFIG_SHELL
if (debug && strcmp(k_thread_name_get(k_current_get()), "main") == 0) {
// disables default shell on UART
shell_uninit(shell_backend_uart_get_ptr(), NULL);
Expand All @@ -214,6 +218,20 @@ static int loader(const struct shell *sh) {
enable_shell_usb();
return 0;
}
#elif CONFIG_LOG
#if !CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT && !CONFIG_USB_DEVICE_STACK_NEXT
usb_enable(NULL);
#endif
for (int i = 0; i < log_backend_count_get(); i++) {
const struct log_backend *backend;
backend = log_backend_get(i);
log_backend_init(backend);
log_backend_enable(backend, backend->cb->ctx, CONFIG_LOG_DEFAULT_LEVEL);
if (!debug) {
break;
}
}
#endif
#endif

if (sketch_hdr->flags & SKETCH_FLAG_LINKED) {
Expand Down
12 changes: 3 additions & 9 deletions loader/prj.conf
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,9 @@ CONFIG_MAIN_STACK_SIZE=32768

CONFIG_ARDUINO_API=y

CONFIG_SHELL=y
CONFIG_SHELL_STACK_SIZE=2048
CONFIG_SHELL_CMD_BUFF_SIZE=2048
CONFIG_SHELL_LOG_LEVEL_DBG=n

CONFIG_LLEXT=y
CONFIG_LLEXT_LOG_LEVEL_ERR=y
CONFIG_LLEXT_HEAP_SIZE=32
CONFIG_LLEXT_SHELL=y
CONFIG_LLEXT_STORAGE_WRITABLE=y
CONFIG_LLEXT_EXPORT_DEVICES=y

Expand All @@ -41,9 +35,6 @@ CONFIG_UART_CONSOLE=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y

CONFIG_CPP=y
CONFIG_STD_CPP17=y
CONFIG_GLIBCXX_LIBCPP=y
CONFIG_REQUIRES_FULL_LIBC=y
CONFIG_CBPRINTF_FP_SUPPORT=y

Expand All @@ -52,3 +43,6 @@ CONFIG_INPUT_THREAD_PRIORITY_OVERRIDE=y
CONFIG_INPUT_THREAD_PRIORITY=0

CONFIG_EVENTS=y
CONFIG_THREAD_STACK_INFO=y
CONFIG_DYNAMIC_THREAD=y
CONFIG_DYNAMIC_THREAD_ALLOC=y
Comment on lines +46 to +48

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need this?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

they were y selected by SHELL, and are needed to make k_thread_stack_alloc and friends to work.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They're not selected by the shell, and if you build main those options were Not set for Portenta H7, Giga etc..

Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,27 @@ CONFIG_USB_DEVICE_PRODUCT="Arduino GIGA R1"
CONFIG_USB_DEVICE_MANUFACTURER="Arduino"
CONFIG_USB_DEVICE_VID=0x2341
CONFIG_USB_DEVICE_PID=0x0066
CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n

CONFIG_USB_CDC_ACM=y
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=512
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=1024
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=24576
CONFIG_SHELL_STACK_SIZE=32768
CONFIG_HEAP_MEM_POOL_SIZE=32768
CONFIG_MAIN_STACK_SIZE=32768
CONFIG_LLEXT_HEAP_SIZE=128
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=-1

CONFIG_CPP=n
CONFIG_SHELL=n
CONFIG_CODE_DATA_RELOCATION=y
CONFIG_MAIN_STACK_REGION="DTCM"
CONFIG_LLEXT_HEAP_REGION="SRAM2"

CONFIG_LOG_BACKEND_UART=y
CONFIG_LOG_BACKEND_UART_AUTOSTART=n
CONFIG_LOG_DEFAULT_LEVEL=2

CONFIG_FPU=y
CONFIG_ADC=y
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,9 +320,15 @@
/{
chosen {
zephyr,camera = &dcmi;
zephyr,log-uart = &log_uarts;
/* zephyr,console = &board_cdc_acm_uart; */
};

log_uarts: log_uarts {
compatible = "zephyr,log-uart";
uarts = <&usart1 &board_cdc_acm_uart>;
};

/* used to overcome problems with _C analog pins */
gpioz: gpio@deadbeef {
compatible = "vnd,gpio";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,22 @@ CONFIG_USB_DEVICE_VID=0x2341
CONFIG_USB_DEVICE_PID=0x035A

CONFIG_USB_CDC_ACM=y
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=512
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=1024
CONFIG_UART_LINE_CTRL=y
CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT=y

CONFIG_LOG_BACKEND_UART=y
CONFIG_LOG_BACKEND_UART_AUTOSTART=n
CONFIG_LOG_DEFAULT_LEVEL=2

CONFIG_ADC=y
CONFIG_PWM=y

CONFIG_LLEXT_STORAGE_WRITABLE=n
CONFIG_SHELL_STACK_SIZE=2048
CONFIG_HEAP_MEM_POOL_SIZE=16384
CONFIG_LLEXT_HEAP_SIZE=128
CONFIG_MAIN_STACK_SIZE=16384
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=-1

CONFIG_FPU=y

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,17 @@
};
};

/{
chosen {
zephyr,log-uart = &log_uarts;
};

log_uarts: log_uarts {
compatible = "zephyr,log-uart";
uarts = <&uart0 &board_cdc_acm_uart>;
};
};


/ {
zephyr,user {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ CONFIG_STACK_SENTINEL=n
CONFIG_INIT_STACKS=n
CONFIG_THREAD_NAME=n
CONFIG_THREAD_STACK_INFO=n
CONFIG_DYNAMIC_THREAD=n
CONFIG_DYNAMIC_THREAD_ALLOC=n
CONFIG_STACK_CANARIES=n
CONFIG_THREAD_ANALYZER=n
CONFIG_SYS_HEAP_RUNTIME_STATS=n
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,20 @@ CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255
CONFIG_BT_MAX_CONN=4
CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_CTLR_ADV_PERIODIC=y

CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=512
CONFIG_BT_RX_STACK_SIZE=1024
CONFIG_BT_HCI_TX_STACK_SIZE=1024

# Workaround: Unable to allocate command buffer when using K_NO_WAIT since
# Host number of completed commands does not follow normal flow control.
CONFIG_BT_BUF_CMD_TX_COUNT=10

CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=512

CONFIG_ADC=y
#CONFIG_PWM=y

CONFIG_LLEXT_STORAGE_WRITABLE=n
CONFIG_SHELL_STACK_SIZE=1024
CONFIG_HEAP_MEM_POOL_SIZE=1024
CONFIG_HEAP_MEM_POOL_SIZE=8192
CONFIG_LLEXT_HEAP_SIZE=15
CONFIG_MAIN_STACK_SIZE=2048

CONFIG_BT_RX_STACK_SIZE=1024
CONFIG_BT_HCI_TX_STACK_SIZE=1024
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=-1
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,26 @@ CONFIG_USB_DEVICE_VID=0x2341
CONFIG_USB_DEVICE_PID=0x0064

CONFIG_USB_CDC_ACM=y
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=512
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=1024
CONFIG_UART_LINE_CTRL=y
CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT=y

CONFIG_LLEXT_STORAGE_WRITABLE=n

CONFIG_HEAP_MEM_POOL_SIZE=24576
CONFIG_SHELL_STACK_SIZE=32768
CONFIG_HEAP_MEM_POOL_SIZE=32768
CONFIG_MAIN_STACK_SIZE=32768
CONFIG_LLEXT_HEAP_SIZE=128
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=-1

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

CONFIG_LOG_BACKEND_UART=y
CONFIG_LOG_BACKEND_UART_AUTOSTART=n
CONFIG_LOG_DEFAULT_LEVEL=2

CONFIG_FPU=y
CONFIG_ADC=y
CONFIG_DAC=n
CONFIG_PWM=n
Expand Down Expand Up @@ -45,13 +52,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 Down Expand Up @@ -87,7 +91,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 Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,12 @@
zephyr,console = &usart6;
zephyr,shell-uart = &usart6;
zephyr,uart-mcumgr = &usart6;
zephyr,log-uart = &log_uarts;
};

log_uarts: log_uarts {
compatible = "zephyr,log-uart";
uarts = <&usart6 &board_cdc_acm_uart>;
};

/* used to overcome problems with _C analog pins */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n
CONFIG_SERIAL=y
CONFIG_UART_LINE_CTRL=y
CONFIG_USBD_CDC_ACM_CLASS=y
CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT=y
CONFIG_USBD_CDC_ACM_LOG_LEVEL_ERR=y
CONFIG_UDC_DRIVER_LOG_LEVEL_ERR=y
CONFIG_USBD_LOG_LEVEL_ERR=y
Expand All @@ -21,15 +20,14 @@ CONFIG_FPU=y
CONFIG_USERSPACE=n
CONFIG_ARM_MPU=n

CONFIG_CPP=n
CONFIG_SHELL=n
CONFIG_LOG_BACKEND_UART=y
CONFIG_LOG_BACKEND_UART_AUTOSTART=n
CONFIG_LOG_DEFAULT_LEVEL=2

CONFIG_MAIN_STACK_SIZE=32768
CONFIG_LLEXT_HEAP_SIZE=128
CONFIG_HEAP_MEM_POOL_SIZE=32768
CONFIG_ISR_STACK_SIZE=8192
CONFIG_LOG_PROCESS_THREAD_STACK_SIZE=8192
CONFIG_IDLE_STACK_SIZE=8192
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=8192

CONFIG_ADC=y
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,17 @@
};
};

/{
chosen {
zephyr,log-uart = &log_uarts;
};

log_uarts: log_uarts {
compatible = "zephyr,log-uart";
uarts = <&uart9 &board_cdc_acm_uart>;
};
};

&flash0 {
partitions {
mcuboot: partition@0 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ CONFIG_USB_DEVICE_PRODUCT="Arduino Portenta H7"
CONFIG_USB_DEVICE_MANUFACTURER="Arduino"
CONFIG_USB_DEVICE_VID=0x2341
CONFIG_USB_DEVICE_PID=0x005b
CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n

CONFIG_USB_CDC_ACM=y
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=512
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=1024
CONFIG_UART_LINE_CTRL=y
CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT=y

Expand All @@ -14,8 +15,9 @@ CONFIG_SHARED_MULTI_HEAP=y
CONFIG_HEAP_MEM_POOL_SIZE=32768
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=-1

CONFIG_CPP=n
CONFIG_SHELL=n
CONFIG_LOG_BACKEND_UART=y
CONFIG_LOG_BACKEND_UART_AUTOSTART=n
CONFIG_LOG_DEFAULT_LEVEL=2

CONFIG_FPU=y
CONFIG_ICACHE=y
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,12 @@
zephyr,console = &usart6;
zephyr,shell-uart = &usart6;
zephyr,cdc-acm-uart0 = &usart6;
zephyr,log-uart = &log_uarts;
};

log_uarts: log_uarts {
compatible = "zephyr,log-uart";
uarts = <&usart6 &board_cdc_acm_uart>;
};

/* used to overcome problems with _C analog pins */
Expand Down
Loading