i am working on an arm cortex a9 dual core processor. on each core runs a FreeRTOS instance (they dont know anything about each other). The cores have on-chip-memory that they share. is it possible to place a mutex in this shared memory and let FreeRTOS on core 1 and FreeRTOS on core 2 access it to synchronize threads across cores?
The key difference between a StreamBuffer and a Queue/Semaphore/Mutex is that the StreamBuffer is only allowed to have a SINGLE write and a SINGLE reader (at a given time), so only one task can be blocked on it. This simplifies the logic such that it was possible to add a hook to allow cross-core/cross-kernel (AMP) notifications to StreamBuffers which would be very hard to add to Queues, since it would need to deal with having to figure out which kernel a give task on the waiting list belongs to.
Since there is no underlying OS/kernel as on Linux managing a globally shared mutex data structure (in fact it’s 1 kernel hosted sync object ) there is just no way to do so with 2 completely separated/independent FreeRTOS executables.
You’ve to use an interrupt based / message passing approach with this scenario.