Part Number:TMS320F28377D
在技术手册里面,说明的双核通讯流程:
1.CPU1往IPCSENDCOM內部写下command,那这个command是用户自己定义的还是已经在软件内部定义好了,比如在技术手册中,说的0x1对应的命令是copy data from address,那如果由我们自己定义,该怎么去定义;
2.往IPCSENDADDR写下数据的起始地址,往IPCSENDDATA内写下数据长度;
3.CPU1置位标志位。在技术手册中,用的标志位是FLAG[3]和FLAG[16]。FLAG[3]是用于产生中断,那FLAG[16]是否可以更换,还是比如执行复制数据命令的话,只能用这个标志位?
4.CPU2接收到中断指令,检查IPCSTS,发现FLAG[16]置位再执行相关程序,那这个就是说FLAG[16]是不是只是一个相应的读取位置,就CPU1置位哪一个,CPU2读取哪一个就可以了,然后执行对应的功能?但是每一个FLAG对应的功能是什么?在技术手册中没找到;
5.CPU2从它的IPCRECVCOM读取CPU1发送的命令,从IPCRECVADDR读取首地址,从IPCRECVDATA读取数据长度,然后CPU2就复制这些数据到一块空白的共享区域,从0x210开始的地址。那0x210这个是不是可以更改的,还是说这个地址就是固定不动的?
6.CPU2在IPCLOCALREPLY中写下共享区域的地址0x210,然后清除标志位,表明工作已经完成;
7.CPU1查看到标志位3边置低,就读取IPCREMOTEREPLY中的信息,然后读取从0x210地址开始的数据。
麻烦帮我看一下我这样子的理解有没有误区;
在cpu01_to_cpu02_ipcdrivers_cpu01这个工程当中,我没有看到这些相应的寄存器的赋值,只是看到一些指针结构体的定义和使用,在IPC的中断中,我们需要执行哪些功能,是不是就是command命令的读取,还有数据首地址和数据长度的读取?然后在例程里面的IPCGET和IPCPUT函数,函数开头说明是用来将数据写入Putbuffer和将数据从Getbuffer取出,但是怎么使用,每一个函数都需要好几个参数,像IPCPut,虽然开头有说明,但是我还是没有搞明白,就是Putbuffer和Getbuffer都是用来做什么的,是相当于中间变量嘛,数据传输之间的中间变量?还是什么其他的意义
Green Deng:
你好,问题已经收到,不过鉴于问题的复杂性,需要一点时间才能回复你。
,
xu jian xu:
这样子的嘛,那还需要多久时间呀
,
Green Deng:
确实问题比较多啊。。。整理问题都有点花时间。
我对IPC了解的也不是很多,毕竟TI的双核芯片也就那么几款。方便拆分一下问题吗?一个帖子1~2个问题,这样我看起来也方便,跟其他工程师沟通也会方便一些。
,
xu jian xu:
好的,我后面重新整理一下