Skip to content

Commit 7b68ed5

Browse files
authored
Merge pull request #292 from pennam/disable-shell-v3
misc: extend flash and memory usage optimizations to other variants
2 parents 7b8b02f + c81f478 commit 7b68ed5

File tree

14 files changed

+111
-51
lines changed

14 files changed

+111
-51
lines changed

loader/main.c

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ LOG_MODULE_REGISTER(sketch);
1414
#include <zephyr/llext/buf_loader.h>
1515
#include <zephyr/shell/shell.h>
1616
#include <zephyr/shell/shell_uart.h>
17+
#include <zephyr/logging/log_ctrl.h>
1718

1819
#include <stdlib.h>
1920
#include <zephyr/drivers/gpio.h>
@@ -35,11 +36,11 @@ struct sketch_header_v1 {
3536
#define SKETCH_FLAG_LINKED 0x02
3637
#define SKETCH_FLAG_IMMEDIATE 0x04
3738

38-
#define TARGET_HAS_USB_CDC_SHELL \
39-
DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && CONFIG_SHELL && \
39+
#define TARGET_HAS_USB_CDC \
40+
DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && \
4041
(CONFIG_USB_DEVICE_STACK || CONFIG_USB_DEVICE_STACK_NEXT)
4142

42-
#if TARGET_HAS_USB_CDC_SHELL
43+
#if TARGET_HAS_USB_CDC
4344
const struct device *const usb_dev =
4445
DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), cdc_acm, 0));
4546

@@ -63,6 +64,7 @@ int usb_enable(usb_dc_status_callback status_cb) {
6364
}
6465
#endif
6566

67+
#if CONFIG_SHELL
6668
static int enable_shell_usb(void) {
6769
bool log_backend = CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL > 0;
6870
uint32_t level = (CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL > LOG_LEVEL_DBG) ?
@@ -75,6 +77,7 @@ static int enable_shell_usb(void) {
7577
return 0;
7678
}
7779
#endif
80+
#endif
7881

7982
#ifdef CONFIG_USERSPACE
8083
K_THREAD_STACK_DEFINE(llext_stack, CONFIG_MAIN_STACK_SIZE);
@@ -162,7 +165,7 @@ static int loader(const struct shell *sh) {
162165
uint8_t *ram_firmware = NULL;
163166
uint32_t *ram_start = (uint32_t *)0x20000000;
164167
if (!sketch_valid) {
165-
ram_firmware = (uint8_t *)k_malloc(64 * 1024);
168+
ram_firmware = (uint8_t *)malloc(64 * 1024);
166169
if (!ram_firmware) {
167170
printk("Failed to allocate RAM for firmware\n");
168171
return -ENOMEM;
@@ -198,8 +201,9 @@ static int loader(const struct shell *sh) {
198201

199202
size_t sketch_buf_len = sketch_hdr->len;
200203

201-
#if TARGET_HAS_USB_CDC_SHELL
204+
#if TARGET_HAS_USB_CDC
202205
int debug = (!sketch_valid) || (sketch_hdr->flags & SKETCH_FLAG_DEBUG);
206+
#if CONFIG_SHELL
203207
if (debug && strcmp(k_thread_name_get(k_current_get()), "main") == 0) {
204208
// disables default shell on UART
205209
shell_uninit(shell_backend_uart_get_ptr(), NULL);
@@ -214,6 +218,22 @@ static int loader(const struct shell *sh) {
214218
enable_shell_usb();
215219
return 0;
216220
}
221+
#elif CONFIG_LOG
222+
#if !CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT
223+
if (debug) {
224+
usb_enable(NULL);
225+
}
226+
#endif
227+
for (int i = 0; i < log_backend_count_get(); i++) {
228+
const struct log_backend *backend;
229+
backend = log_backend_get(i);
230+
log_backend_init(backend);
231+
log_backend_enable(backend, backend->cb->ctx, CONFIG_LOG_DEFAULT_LEVEL);
232+
if (!debug) {
233+
break;
234+
}
235+
}
236+
#endif
217237
#endif
218238

219239
if (sketch_hdr->flags & SKETCH_FLAG_LINKED) {

loader/prj.conf

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,9 @@ CONFIG_MAIN_STACK_SIZE=32768
1313

1414
CONFIG_ARDUINO_API=y
1515

16-
CONFIG_SHELL=y
17-
CONFIG_SHELL_STACK_SIZE=2048
18-
CONFIG_SHELL_CMD_BUFF_SIZE=2048
19-
CONFIG_SHELL_LOG_LEVEL_DBG=n
20-
2116
CONFIG_LLEXT=y
2217
CONFIG_LLEXT_LOG_LEVEL_ERR=y
2318
CONFIG_LLEXT_HEAP_SIZE=32
24-
CONFIG_LLEXT_SHELL=y
2519
CONFIG_LLEXT_STORAGE_WRITABLE=y
2620
CONFIG_LLEXT_EXPORT_DEVICES=y
2721

@@ -41,9 +35,6 @@ CONFIG_UART_CONSOLE=y
4135
CONFIG_FLASH=y
4236
CONFIG_FLASH_MAP=y
4337

44-
CONFIG_CPP=y
45-
CONFIG_STD_CPP17=y
46-
CONFIG_GLIBCXX_LIBCPP=y
4738
CONFIG_REQUIRES_FULL_LIBC=y
4839
CONFIG_CBPRINTF_FP_SUPPORT=y
4940

variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,27 @@ CONFIG_USB_DEVICE_PRODUCT="Arduino GIGA R1"
33
CONFIG_USB_DEVICE_MANUFACTURER="Arduino"
44
CONFIG_USB_DEVICE_VID=0x2341
55
CONFIG_USB_DEVICE_PID=0x0066
6+
CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n
67

78
CONFIG_USB_CDC_ACM=y
8-
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=512
9+
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=1024
910
CONFIG_UART_LINE_CTRL=y
1011
CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT=y
1112

1213
CONFIG_LLEXT_STORAGE_WRITABLE=n
1314
CONFIG_SHARED_MULTI_HEAP=y
14-
CONFIG_HEAP_MEM_POOL_SIZE=24576
15-
CONFIG_SHELL_STACK_SIZE=32768
15+
CONFIG_HEAP_MEM_POOL_SIZE=32768
1616
CONFIG_MAIN_STACK_SIZE=32768
1717
CONFIG_LLEXT_HEAP_SIZE=128
18+
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=-1
1819

19-
CONFIG_CPP=n
20-
CONFIG_SHELL=n
20+
CONFIG_CODE_DATA_RELOCATION=y
21+
CONFIG_MAIN_STACK_REGION="DTCM"
22+
CONFIG_LLEXT_HEAP_REGION="SRAM2"
23+
24+
CONFIG_LOG_BACKEND_UART=y
25+
CONFIG_LOG_BACKEND_UART_AUTOSTART=n
26+
CONFIG_LOG_DEFAULT_LEVEL=2
2127

2228
CONFIG_FPU=y
2329
CONFIG_ADC=y

variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.overlay

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,9 +320,15 @@
320320
/{
321321
chosen {
322322
zephyr,camera = &dcmi;
323+
zephyr,log-uart = &log_uarts;
323324
/* zephyr,console = &board_cdc_acm_uart; */
324325
};
325326

327+
log_uarts: log_uarts {
328+
compatible = "zephyr,log-uart";
329+
uarts = <&usart1 &board_cdc_acm_uart>;
330+
};
331+
326332
/* used to overcome problems with _C analog pins */
327333
gpioz: gpio@deadbeef {
328334
compatible = "vnd,gpio";

variants/arduino_nano_33_ble_nrf52840_sense/arduino_nano_33_ble_nrf52840_sense.conf

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,22 @@ CONFIG_USB_DEVICE_VID=0x2341
1919
CONFIG_USB_DEVICE_PID=0x035A
2020

2121
CONFIG_USB_CDC_ACM=y
22-
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=512
22+
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=1024
2323
CONFIG_UART_LINE_CTRL=y
2424
CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT=y
2525

26+
CONFIG_LOG_BACKEND_UART=y
27+
CONFIG_LOG_BACKEND_UART_AUTOSTART=n
28+
CONFIG_LOG_DEFAULT_LEVEL=2
29+
2630
CONFIG_ADC=y
2731
CONFIG_PWM=y
2832

2933
CONFIG_LLEXT_STORAGE_WRITABLE=n
30-
CONFIG_SHELL_STACK_SIZE=2048
3134
CONFIG_HEAP_MEM_POOL_SIZE=16384
3235
CONFIG_LLEXT_HEAP_SIZE=128
3336
CONFIG_MAIN_STACK_SIZE=16384
37+
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=-1
3438

3539
CONFIG_FPU=y
3640

variants/arduino_nano_33_ble_nrf52840_sense/arduino_nano_33_ble_nrf52840_sense.overlay

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,17 @@
4242
};
4343
};
4444

45+
/{
46+
chosen {
47+
zephyr,log-uart = &log_uarts;
48+
};
49+
50+
log_uarts: log_uarts {
51+
compatible = "zephyr,log-uart";
52+
uarts = <&uart0 &board_cdc_acm_uart>;
53+
};
54+
};
55+
4556

4657
/ {
4758
zephyr,user {

variants/arduino_nicla_sense_me_nrf52832/arduino_nicla_sense_me_nrf52832.conf

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,20 @@ CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255
99
CONFIG_BT_MAX_CONN=4
1010
CONFIG_BT_CTLR_ADV_EXT=y
1111
CONFIG_BT_CTLR_ADV_PERIODIC=y
12-
13-
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=512
12+
CONFIG_BT_RX_STACK_SIZE=1024
13+
CONFIG_BT_HCI_TX_STACK_SIZE=1024
1414

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

19+
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=512
20+
1921
CONFIG_ADC=y
2022
#CONFIG_PWM=y
2123

2224
CONFIG_LLEXT_STORAGE_WRITABLE=n
23-
CONFIG_SHELL_STACK_SIZE=1024
24-
CONFIG_HEAP_MEM_POOL_SIZE=1024
25+
CONFIG_HEAP_MEM_POOL_SIZE=8192
2526
CONFIG_LLEXT_HEAP_SIZE=15
2627
CONFIG_MAIN_STACK_SIZE=2048
27-
28-
CONFIG_BT_RX_STACK_SIZE=1024
29-
CONFIG_BT_HCI_TX_STACK_SIZE=1024
28+
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=-1

variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,26 @@ CONFIG_USB_DEVICE_VID=0x2341
55
CONFIG_USB_DEVICE_PID=0x0064
66

77
CONFIG_USB_CDC_ACM=y
8-
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=512
8+
CONFIG_USB_CDC_ACM_RINGBUF_SIZE=1024
99
CONFIG_UART_LINE_CTRL=y
1010
CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT=y
1111

1212
CONFIG_LLEXT_STORAGE_WRITABLE=n
1313

14-
CONFIG_HEAP_MEM_POOL_SIZE=24576
15-
CONFIG_SHELL_STACK_SIZE=32768
14+
CONFIG_HEAP_MEM_POOL_SIZE=32768
1615
CONFIG_MAIN_STACK_SIZE=32768
1716
CONFIG_LLEXT_HEAP_SIZE=128
17+
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=-1
1818

19-
CONFIG_FPU=y
19+
CONFIG_CODE_DATA_RELOCATION=y
20+
CONFIG_MAIN_STACK_REGION="DTCM"
21+
CONFIG_LLEXT_HEAP_REGION="SRAM2"
22+
23+
CONFIG_LOG_BACKEND_UART=y
24+
CONFIG_LOG_BACKEND_UART_AUTOSTART=n
25+
CONFIG_LOG_DEFAULT_LEVEL=2
2026

27+
CONFIG_FPU=y
2128
CONFIG_ADC=y
2229
CONFIG_DAC=n
2330
CONFIG_PWM=n
@@ -45,13 +52,10 @@ CONFIG_SDHC_INIT_PRIORITY=75
4552
CONFIG_SDIO_STACK=y
4653
CONFIG_CYW4343W=y
4754
CONFIG_WIFI=y
48-
CONFIG_NET_L2_WIFI_SHELL=y
4955

5056
CONFIG_AIROC_WIFI_CUSTOM=y
5157
CONFIG_STM32_MEMMAP=y
5258

53-
CONFIG_NET_CORE_LOG_LEVEL_DBG=y
54-
5559
CONFIG_NETWORKING=y
5660
CONFIG_NET_IPV6=n
5761
CONFIG_NET_IPV4=y
@@ -87,7 +91,7 @@ CONFIG_MBEDTLS=y
8791
CONFIG_MBEDTLS_BUILTIN=y
8892
CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT=y
8993
CONFIG_MBEDTLS_ENABLE_HEAP=y
90-
CONFIG_MBEDTLS_HEAP_SIZE=60000
94+
CONFIG_MBEDTLS_HEAP_SIZE=80000
9195
CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=7168
9296
CONFIG_MBEDTLS_HASH_ALL_ENABLED=y
9397
CONFIG_MBEDTLS_CMAC=y

variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.overlay

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@
4040
zephyr,console = &usart6;
4141
zephyr,shell-uart = &usart6;
4242
zephyr,uart-mcumgr = &usart6;
43+
zephyr,log-uart = &log_uarts;
44+
};
45+
46+
log_uarts: log_uarts {
47+
compatible = "zephyr,log-uart";
48+
uarts = <&usart6 &board_cdc_acm_uart>;
4349
};
4450

4551
/* used to overcome problems with _C analog pins */

variants/arduino_portenta_c33_r7fa6m5bh3cfc/arduino_portenta_c33_r7fa6m5bh3cfc.conf

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n
1010
CONFIG_SERIAL=y
1111
CONFIG_UART_LINE_CTRL=y
1212
CONFIG_USBD_CDC_ACM_CLASS=y
13-
CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT=y
1413
CONFIG_USBD_CDC_ACM_LOG_LEVEL_ERR=y
1514
CONFIG_UDC_DRIVER_LOG_LEVEL_ERR=y
1615
CONFIG_USBD_LOG_LEVEL_ERR=y
@@ -21,15 +20,14 @@ CONFIG_FPU=y
2120
CONFIG_USERSPACE=n
2221
CONFIG_ARM_MPU=n
2322

24-
CONFIG_CPP=n
25-
CONFIG_SHELL=n
23+
CONFIG_LOG_BACKEND_UART=y
24+
CONFIG_LOG_BACKEND_UART_AUTOSTART=n
25+
CONFIG_LOG_DEFAULT_LEVEL=2
2626

2727
CONFIG_MAIN_STACK_SIZE=32768
2828
CONFIG_LLEXT_HEAP_SIZE=128
2929
CONFIG_HEAP_MEM_POOL_SIZE=32768
3030
CONFIG_ISR_STACK_SIZE=8192
31-
CONFIG_LOG_PROCESS_THREAD_STACK_SIZE=8192
32-
CONFIG_IDLE_STACK_SIZE=8192
3331
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=8192
3432

3533
CONFIG_ADC=y

0 commit comments

Comments
 (0)