This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi,
I have a pointer to an L3 memory location which is initialized in the dss subsystem. I wish to write to that memory directly from mss (without using mailbox or hsram), but all of my l3 heap is allocated by dss.
I see that there exists a function in C:/ti/mmwave_sdk_03_03_00_03/packages/ti/drivers/soc/docs/doxygen/html/group___s_o_c___d_r_i_v_e_r___e_x_t_e_r_n_a_l___f_u_n_c_t_i_o_n.html called SOC_translateAddress, which has as possible directions SOC_TranslateAddr_Dir_TO_OTHER_CPU and SOC_TranslateAddr_Dir_FROM_OTHER_CPU, but I am not sure how to use it. Can I call it from mss to get an address of a buffer in dss? And how would I do that, if the pointer to that buffer exists only in dss (the variable *buffPtr in dss for example can't be reached from mss) ? I also don't understand how this function even returns the translated address and where, so I would be grateful for an explanation.
My current idea, without using this function, is to send the offset of the buffer from the start of l3 heap in dss to mss using mailbox, and then add the offset to the start of l3 in mss (I know it's 0x51000000) and get the address I need. But this way seems too messy.
I would appreciate any useful advice, thanks.
Jovana
Hi Jovana,
The SOC_TranslateAddr_xxx function simply replaces the address prefix to remap the address from MSS to DSS or vice versa. It doesn't help if the other core doesn't know of the buffer in the first place.
One way to do what you want is to use the linker to place the buffer at a known address. Doing this, you don't have to worry about address translation because it would be already known.
In the linker command file, you would do this:
In the MEMORY section: