我试图实现ARM/DSP共享内存通信。 ARM端在共享内存上放置一个数据块(let'sa将其命名为array []),并将该块的地址和大小发送到DSP端,然后再读取它们。 在DSP侧,C中的void指针传递结构
void * buf //address of block on shared memory
int length //size of block
但是当我尝试阅读我所得到的居然是:
buf[0] = length
buf[1] = array[1]
buf[2] = array[2]
buf[3] = array[3]
:
:
:
看起来好像长度可变overights数组的第一个单元格(这是有点奇怪),或者我错误地使用了void指针。 有什么建议吗?
可以显示PROC,您发送这些数据?你如何发送阵列单元的地址,长度和最大尺寸? – theWalker
由于它是一个使用内置API的整个DSP/BIOS LINK实现,因此很难描述该过程。 ARM端使用Pool_writeback()函数发送数据,并将地址从POOL_translAddr()从一个地址空间转换为另一个地址空间。发送给DSP的是块的起始地址,它的长度和它们分别存储到buf和长度。链接似乎工作正常(测试“int buf”)。这种使用虚空是否可以接受?如果buf [1]具有正确的值,并且buf [0]具有在buf后面直接分配的变量,那么可能是我的C代码中的错误? – user1410966
你的代码“buf [3] = array [0]”是错误的(buf [3] = array [2])还是不是? – theWalker