Tool/software:
I have an application with two tasks that I would like scheduled by a RTOS, ideally dynamically leveraging all four cores on the LP-AM243x. This thread is two years old and I was wondering if anything had changed regarding support for SMP?
For background one task is responsible for gathering data from the dev board pins and buffering it in a FIFO queue and the second task is responsible for pulling data from the FIFO queue, processing it, and either: 1) sending it out over ethernet, or 2) buffering it to be sent by a separate task (COA still TBD).
If there still isn't support for SMP on the LP-AM243x via FreeRTOS, what is the best way to have two tasks running on separate cores with a shared FIFO queue?
Any examples to support the response are appreciated.
Thanks in advance,
Brian
Hello Brian,
I am looking at your queries and you may expect reply in one or two days .
Regards,
Anil.
Hello Brain,
Sorry for the delayed replies as I was in other highest priority issues fixing .
You may get a reply by tomorrow.
Regards,
Anil.
Hello Brain,
We don't have any plans to support SMP on the R5F cores.
Currently in the MCU+SDK we do support IPC communication to communicate data between two cores.
I am not sure here how much is the data size and how much latency are allowing to your requirements.
Please look at the IPC latency numbers and example below.
Other than this method, we can't find any other methods to communicate data in between two cores.
C:\ti\mcu_plus_sdk_am243x_10_01_00_32\examples\drivers\ipc\ipc_rpmsg_echo
Regards,
Anil.
Thanks for the response and copy on SMP.
I will be "messaging" a 25K between processors so I'm thinking the best way is by passing a pointer to shared memory vis IPC. Thoughts? Also, do you have any examples on the best way to do this?
I've been on the struggle-bus trying to get an IPC example to compile. I looked at the example you referenced and am getting the error below. Not sure what's up. Any ideas?
UPDATE: I have continued trying to get one of the IPC examples working. To that end I was able to get the IPC_rpmsg_echo_am243x-lp_system_freertos_nortos example to compile following these instructions. Unfortunately, I am not getting any output (I'm expecting the sample output below).
Debugging the code it looks to be getting stuck at:
IpcNotify_syncAll(SystemP_WAIT_FOREVER);
Looking at this thread it seems like the order the cores are initiated matter, but I'm not sure the method for setting the order of initiating the cores.
To summarize my issue/question... what steps do I need to take to get an IPC example running on my AM243x LP?
Hello Brain,
To build the IPC example you need to build the system project. Otherwise, you may get compilation errors.
And, based on the above your requirements, you need to do IPC for two cores and not for all the all cores.
So, I assume that when you run two IPC examples definitely you may get the issue hanging in the IpcNotify_syncAll API.
In this case, you need to update IPC sys project as per the FAQ below for the two cores .
Regards,
Anil.