From b874b41562b8c096bfb2123252961a407a8ff639 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Mon, 15 Jan 2024 14:19:59 +0200 Subject: [PATCH 1/2] libraries/openamp_arduino: Optimize Open-AMP RPMSG buffer configuration. Reduce buffer size to 512 and increase available buffers to 64. The increased number of buffers minimizes the chances of blocking while waiting for a free buffer. Signed-off-by: iabdalkader --- libraries/openamp_arduino/src/openamp_conf.h | 2 +- variants/GENERIC_STM32H747_M4/conf/mbed_app.json | 2 +- variants/GENERIC_STM32H747_M4/defines.txt | 2 +- variants/GIGA/conf/mbed_app.json | 2 +- variants/GIGA/defines.txt | 2 +- variants/NICLA_VISION/conf/mbed_app.json | 2 +- variants/NICLA_VISION/defines.txt | 2 +- variants/OPTA/conf/mbed_app.json | 2 +- variants/OPTA/defines.txt | 2 +- variants/PORTENTA_H7_M7/conf/mbed_app.json | 2 +- variants/PORTENTA_H7_M7/defines.txt | 2 +- variants/PORTENTA_X8/conf/mbed_app.json | 2 +- variants/PORTENTA_X8/defines.txt | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/libraries/openamp_arduino/src/openamp_conf.h b/libraries/openamp_arduino/src/openamp_conf.h index c39a41fe2..922b45239 100644 --- a/libraries/openamp_arduino/src/openamp_conf.h +++ b/libraries/openamp_arduino/src/openamp_conf.h @@ -158,7 +158,7 @@ extern int __OPENAMP_region_end__[]; #define VRING_BUFF_ADDRESS (SHM_START_ADDRESS + 0x2000) #define VRING_BUFF_SIZE (SHM_SIZE - 0x2000) #define VRING_ALIGNMENT 32 -#define VRING_NUM_BUFFS 16 /* number of rpmsg buffers */ +#define VRING_NUM_BUFFS 64 /* number of rpmsg buffers */ /* Fixed parameter */ #define NUM_RESOURCE_ENTRIES 2 diff --git a/variants/GENERIC_STM32H747_M4/conf/mbed_app.json b/variants/GENERIC_STM32H747_M4/conf/mbed_app.json index 0f4e6b6a8..f93a5464a 100644 --- a/variants/GENERIC_STM32H747_M4/conf/mbed_app.json +++ b/variants/GENERIC_STM32H747_M4/conf/mbed_app.json @@ -22,7 +22,7 @@ "VIRTIO_DEVICE_ONLY", "NO_ATOMIC_64_SUPPORT", "METAL_MAX_DEVICE_REGIONS=2", - "RPMSG_BUFFER_SIZE=2048" + "RPMSG_BUFFER_SIZE=512" ] } } diff --git a/variants/GENERIC_STM32H747_M4/defines.txt b/variants/GENERIC_STM32H747_M4/defines.txt index 0b8e7d85a..f654c7e01 100644 --- a/variants/GENERIC_STM32H747_M4/defines.txt +++ b/variants/GENERIC_STM32H747_M4/defines.txt @@ -52,7 +52,7 @@ -DMETAL_MAX_DEVICE_REGIONS=2 -DNO_ATOMIC_64_SUPPORT -DNO_VTOR_RELOCATE --DRPMSG_BUFFER_SIZE=2048 +-DRPMSG_BUFFER_SIZE=512 -DSTM32H747xx -DTARGET_CORDIO -DTARGET_CORTEX diff --git a/variants/GIGA/conf/mbed_app.json b/variants/GIGA/conf/mbed_app.json index 18b610287..0fb7e9221 100644 --- a/variants/GIGA/conf/mbed_app.json +++ b/variants/GIGA/conf/mbed_app.json @@ -16,7 +16,7 @@ "VIRTIO_DRIVER_ONLY", "NO_ATOMIC_64_SUPPORT", "METAL_MAX_DEVICE_REGIONS=2", - "RPMSG_BUFFER_SIZE=2048" + "RPMSG_BUFFER_SIZE=512" ] } } diff --git a/variants/GIGA/defines.txt b/variants/GIGA/defines.txt index 1cb7a6441..cf66dca5c 100644 --- a/variants/GIGA/defines.txt +++ b/variants/GIGA/defines.txt @@ -53,7 +53,7 @@ -DMETAL_MAX_DEVICE_REGIONS=2 -DNO_ATOMIC_64_SUPPORT -DQSPI_NO_SAMPLE_SHIFT --DRPMSG_BUFFER_SIZE=2048 +-DRPMSG_BUFFER_SIZE=512 -DSTM32H747xx -DTARGET_CORDIO -DTARGET_CORTEX diff --git a/variants/NICLA_VISION/conf/mbed_app.json b/variants/NICLA_VISION/conf/mbed_app.json index 553ab954e..6d743d296 100644 --- a/variants/NICLA_VISION/conf/mbed_app.json +++ b/variants/NICLA_VISION/conf/mbed_app.json @@ -17,7 +17,7 @@ "VIRTIO_DRIVER_ONLY", "NO_ATOMIC_64_SUPPORT", "METAL_MAX_DEVICE_REGIONS=2", - "RPMSG_BUFFER_SIZE=100" + "RPMSG_BUFFER_SIZE=512" ] } } diff --git a/variants/NICLA_VISION/defines.txt b/variants/NICLA_VISION/defines.txt index eaea43f31..d09451cb5 100644 --- a/variants/NICLA_VISION/defines.txt +++ b/variants/NICLA_VISION/defines.txt @@ -54,7 +54,7 @@ -DMETAL_MAX_DEVICE_REGIONS=2 -DNO_ATOMIC_64_SUPPORT -DQSPI_NO_SAMPLE_SHIFT --DRPMSG_BUFFER_SIZE=2048 +-DRPMSG_BUFFER_SIZE=512 -DSTM32H747xx -DT1oI2C -DT1oI2C_UM11225 diff --git a/variants/OPTA/conf/mbed_app.json b/variants/OPTA/conf/mbed_app.json index 18b610287..0fb7e9221 100644 --- a/variants/OPTA/conf/mbed_app.json +++ b/variants/OPTA/conf/mbed_app.json @@ -16,7 +16,7 @@ "VIRTIO_DRIVER_ONLY", "NO_ATOMIC_64_SUPPORT", "METAL_MAX_DEVICE_REGIONS=2", - "RPMSG_BUFFER_SIZE=2048" + "RPMSG_BUFFER_SIZE=512" ] } } diff --git a/variants/OPTA/defines.txt b/variants/OPTA/defines.txt index fb131c3fe..55893ba4b 100644 --- a/variants/OPTA/defines.txt +++ b/variants/OPTA/defines.txt @@ -53,7 +53,7 @@ -DMETAL_MAX_DEVICE_REGIONS=2 -DNO_ATOMIC_64_SUPPORT -DQSPI_NO_SAMPLE_SHIFT --DRPMSG_BUFFER_SIZE=2048 +-DRPMSG_BUFFER_SIZE=512 -DSTM32H747xx -DTARGET_CORDIO -DTARGET_CORTEX diff --git a/variants/PORTENTA_H7_M7/conf/mbed_app.json b/variants/PORTENTA_H7_M7/conf/mbed_app.json index 4bae63635..2ab0fddc5 100644 --- a/variants/PORTENTA_H7_M7/conf/mbed_app.json +++ b/variants/PORTENTA_H7_M7/conf/mbed_app.json @@ -22,7 +22,7 @@ "VIRTIO_DRIVER_ONLY", "NO_ATOMIC_64_SUPPORT", "METAL_MAX_DEVICE_REGIONS=2", - "RPMSG_BUFFER_SIZE=2048", + "RPMSG_BUFFER_SIZE=512", "LSE_STARTUP_TIMEOUT=200" ] } diff --git a/variants/PORTENTA_H7_M7/defines.txt b/variants/PORTENTA_H7_M7/defines.txt index 2f2a91609..03c4a4bb6 100644 --- a/variants/PORTENTA_H7_M7/defines.txt +++ b/variants/PORTENTA_H7_M7/defines.txt @@ -55,7 +55,7 @@ -DMETAL_MAX_DEVICE_REGIONS=2 -DNO_ATOMIC_64_SUPPORT -DQSPI_NO_SAMPLE_SHIFT --DRPMSG_BUFFER_SIZE=2048 +-DRPMSG_BUFFER_SIZE=512 -DSTM32H747xx -DTARGET_CORDIO -DTARGET_CORTEX diff --git a/variants/PORTENTA_X8/conf/mbed_app.json b/variants/PORTENTA_X8/conf/mbed_app.json index cf1ab3cff..ca2ce1071 100644 --- a/variants/PORTENTA_X8/conf/mbed_app.json +++ b/variants/PORTENTA_X8/conf/mbed_app.json @@ -16,7 +16,7 @@ "VIRTIO_DEVICE_ONLY", "NO_ATOMIC_64_SUPPORT", "METAL_MAX_DEVICE_REGIONS=2", - "RPMSG_BUFFER_SIZE=2048" + "RPMSG_BUFFER_SIZE=512" ] } } diff --git a/variants/PORTENTA_X8/defines.txt b/variants/PORTENTA_X8/defines.txt index 049ba9c17..054194015 100644 --- a/variants/PORTENTA_X8/defines.txt +++ b/variants/PORTENTA_X8/defines.txt @@ -44,7 +44,7 @@ -DMETAL_MAX_DEVICE_REGIONS=2 -DNO_ATOMIC_64_SUPPORT -DNO_VTOR_RELOCATE --DRPMSG_BUFFER_SIZE=2048 +-DRPMSG_BUFFER_SIZE=512 -DSTM32H747xx -DTARGET_CORTEX -DTARGET_CORTEX_M From 7c1cb26ca6bbcc14bcf7c5318efa08107899a482 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Mon, 15 Jan 2024 15:05:12 +0200 Subject: [PATCH 2/2] libraries/RPC: Update examples. Signed-off-by: iabdalkader --- .../examples/Basic_AddSub/Basic_AddSub.ino | 30 +++++++++++++++++-- .../examples/MD5_Checksum/MD5_Checksum.ino | 4 ++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/libraries/RPC/examples/Basic_AddSub/Basic_AddSub.ino b/libraries/RPC/examples/Basic_AddSub/Basic_AddSub.ino index e2dc9d514..2df49f0c0 100644 --- a/libraries/RPC/examples/Basic_AddSub/Basic_AddSub.ino +++ b/libraries/RPC/examples/Basic_AddSub/Basic_AddSub.ino @@ -4,22 +4,46 @@ int add(int a, int b) { return a + b; } -void setup() { +int sub(int a, int b) { + return a - b; +} + +void setup() { + Serial.begin(115200); + while (!Serial) { + + } + RPC.begin(); RPC.bind("add", add); + RPC.bind("sub", sub); + if (HAL_GetCurrentCPUID() == CM7_CPUID) { + // Introduce a brief delay to allow the M4 sufficient time + // to bind remote functions before invoking them. + delay(100); + } pinMode(LEDG, OUTPUT); } void loop() { static size_t loop_count = 0; + // Blink every 512 iterations - if ((loop_count++ % 512) == 0) { + if (HAL_GetCurrentCPUID() == CM4_CPUID && (loop_count++ % 512) == 0) { digitalWrite(LEDG, LOW); delay(10); digitalWrite(LEDG, HIGH); delay(10); } + int res = RPC.call("add", 1, 2).as(); - RPC.call("sub", res, 1).as(); + if (HAL_GetCurrentCPUID() == CM7_CPUID) { + Serial.println("add(1, 2) = " + String(res)); + } + + res = RPC.call("sub", res, 1).as(); + if (HAL_GetCurrentCPUID() == CM7_CPUID) { + Serial.println("sub(3, 1) = " + String(res)); + } delay(250); } diff --git a/libraries/RPC/examples/MD5_Checksum/MD5_Checksum.ino b/libraries/RPC/examples/MD5_Checksum/MD5_Checksum.ino index 7784548e4..ea6ffc502 100644 --- a/libraries/RPC/examples/MD5_Checksum/MD5_Checksum.ino +++ b/libraries/RPC/examples/MD5_Checksum/MD5_Checksum.ino @@ -7,7 +7,7 @@ size_t hash_out_count = 0; #ifdef CORE_CM4 size_t data_buf_size = 0; #else -size_t data_buf_size = 512; +size_t data_buf_size = 256; #endif typedef std::vector vec_t; @@ -59,6 +59,8 @@ void setup() { #ifdef CORE_CM4 RPC.bind("set_buffer_size", set_buffer_size); #else + // Introduce a brief delay to allow the M4 sufficient time + // to bind remote functions before invoking them. delay(100); auto ret = RPC.call("set_buffer_size", data_buf_size).as(); #endif pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy