2023-06-02 01:24 PM
I am looking to transfer large amount of data from the linux userspace to the MCU shared memory (MCU SRAM3) using the indirect transfer method:
https://wiki.st.com/stm32mpu/wiki/Exchanging_buffers_with_the_coprocessor
I would like to use the MCU SRAM (as opposed to DDR) because there are tight timing requirements, so I would like to keep everything in the MCU tightly coupled memory.
Are there any tutorials, explainers, or example code that shows how to do this? I found this, but it is targeted to using DDR instead of MCU SRAM:
https://wiki.st.com/stm32mpu/wiki/How_to_exchange_data_buffers_with_the_coprocessor#rpmsg_sdb_driver
As far as I understand, it's not possible to write data directly to a specific physical memory address from a linux userspace application. So is it possible for my linux application to create a buffer in SRAM3, then pass the physical address pointer the M4 program using rpmsg/openamp?
Also, does there need to be some sort of spinlock on SRAM3 to prevent either core from reading/writing to it at the same time, or are both cores allowed to read/write to SRAM3 simulatneously?
Thank you,
Owen