Data mover for scope#
Please refer first to the description of the RPU code.
graph LR
subgraph Transfer_ipc_Intr_Handler
E(IPI from R5)
E-->F(Flush Cache)
F-->G(Copy javascope_data)
end
subgraph Queue
G-->H
H(FIFO)
end
subgraph process_request_thread
H-.waits.->K(restructure data)-->L(ethernet frame)
L-->M(lwip_write)
end
Fig. 54 Signal flow of data mover#
Modification on A53#
in isr.c
#include "xil_cache.h"
#include "APU_RPU_shared.h"
// create pointer of type struct javascope_data_t named javascope_data located at MEM_SHARED_START
static struct javascope_data_t volatile * const javascope_data = (struct javascope_data_t*)MEM_SHARED_START;
void Transfer_ipc_Intr_Handler(void *data){
// flush data cache to make sure shared memory is updated
Xil_DCacheFlushRange(MEM_SHARED_START, JAVASCOPE_DATA_SIZE_2POW);
// copy JAVASCOPE_DATA into queue to ethernet thread
xQueueSendToBackFromISR(OsziData_queue, JAVASCOPE_DATA, &xHigherPriorityTaskWoken);
}