Hi TI,
I am trying to establish an IPC communication from MCU2_0 -> MPU1_0 using shared memory due to the limitation of 512 Byte for IPC messages. Therefore, I am sending a dummy struct containing data larger than 512 Byte. To do so, I am allocating memory using the following functions on MCU2_0:
#define APP_MEM_HEAP_DDR (0u) void *ptr; uint32_t size = 1024*1024; // size in bytes uint64_t phys_ptr; ptr = appMemAlloc(APP_MEM_HEAP_DDR, size, 1); phys_ptr = appMemGetVirt2PhyBufPtr((uint64_t)(uintptr_t)ptr, APP_MEM_HEAP_DDR); value = (uint32_t)phys_ptr; *(volatile dataObj*)ptr = data; appMemCacheInv((void*)ptr, size*8); *(volatile dataObj*)ptr = data; appMemCacheWbInv((void*)ptr, size*8);
This allocates memory at physical address 0xE1000100, which corresponds to DDR_MCU2_0_LOCAL_HEAP_ADDR from app_mem.h in vision_apps.
Looking up this address using Memory Browser, I could verify, that the previous mentioned dummy struct is actually there.
My question refers now to Linux. In Linux I was not able to read from this address (neither using memory browser, nor devmem2 nor in the linux user space application itself). The device tree overlay, which is used in Linux is the default device tree k3-j721e-vision-apps.dts, which includes k3-j721e-rtos-memory-map.dtsi. Here no memory region for 0xE1000100 is mentioned. So is this maybe the reason why I can not read from this address?
Which steps do I have to add in Linux to read from this address?
Thanks for your help and best regards,
Felix