Good afternoon,
I am using dsplink_1_61_03 with its default configuration. I am sending a data buffer from DSP to ARM.
On the DSP, I call POOL_alloc() then I send its address to the ARM in a message.
Quoting the Programmer's Guide, "If the buffer is allocated on DSP-side, the DSP address received on the GPP can be translated using
POOL_translateAddr".
I therefore make this call to POOL_translateAddr():
POOL_translateAddr(MYAPP_POOL_ID, addyToUseInMyGppApp, AddrType_Usr, dspAddyFromMsg, AddrType_Dsp);
The Programmer's Guide says that the DSP can use direct memory reads and writes for the buffer from the pool. I am doing this in my DSP application.
Now here are my questions:
(1) Can my GPP application access the shared buffer directly using the translated address I got from POOL_translateAddr()? This is working for me, but I need confirmation that this is safe and portable. I like this method since I am trying to minimize copy operations in my GPP application.
(2) Or am I supposed to use the PROC_read/PROC_write API to access the buffer from the POOL? The Programmer's Guide is not specific on whether I am allowed to access the memory directly with a pointer in my userspace app or if PROC_read()/PROC_write is a requirement.
Please let me know if direct access is safe from the GPP side or if I need to use PROC_read/PROC_write to access the pool.
Thanks!