在MCSDK目录下关于NDK的例子helloworld和client之中都涉及到了对QMSS、CPPI和PA的初始化,我之前看过多核导航器、PA和NETCP的文档,对它们基本内容都有一定的了解。但对它们之间的关系还不是很清楚,请问:是否凡是通过网口通信的程序必须都要用到QMSS、CPPI和PA?另外,我写过一个工程,没有用到任何关于QMSS、CPPI和PA的代码,仅仅做了一些ndk最常用的配置,利用套接字就实现了EVM与PC机的双向通信,请问这种情况下是否默认使用了QMSS、CPPI和PA?
zhijun Han:
回复 Andy Yin1:
您好!
我现在使用的是OMAPL137的dsp,该dsp并非在TI公司买的,现在我想要实现NDK的功能,该如何写gel文件啊,谢谢!
Andy Yin1:
回复 zhijun Han:
关于OMAP的问题请发到OMAP子论坛,谢谢配合。
qian cui:
你好,我刚学这块,遇到一些问题。网口是同事在调试,我需要处理网口接收的数据。问题是网口接收的数据存储在那里?以及DSP核怎么知道有数据来了?接收数据前DSP核什么状态,是通过while循环检测是否有数据到来还是通过中断关联相应的处理函数?
还有这方面需要看哪些文档,希望解答,非常感谢
miker wang:
回复 qian cui:
你好,
1、网口接收的数据存储在哪里,取决于navigator中所使用的RX free descriptor所指向的buffer所处的位置,可以是SL2,LL2,DDR3。这需要进行设置,因为6678中的以太网数据包都是由navigator通过队列和描述符的方式进行管理和搬运。
2、navigator中的QMSS有accumulator channel可以产生中断通知CPU,它将所监控的队列中的描述符以ping-pong buffer的形式读出,buffer满即产生中断。这样可以告知CPU与accumulator channel相对应的队列中是否有数据进来。当然你也可以通过轮询的方式,通过读响应队列的寄存器来判断队列中描述符的数量。
3、不知道你所使用的网口通信是基于SYS/BIOS下的NDK,还是完全由底层驱动实现。如果是基于NDK,有很多API函数可以解决你的问题,如果完全是由底层驱动实现那必须要了解多核导航器(Multicore Navigator)和千兆以太网子系统(GbE Switch),甚至是包加速器(Packet Accelerator)。请到TI 6678主页下载这些文档。
qian cui:
回复 miker wang:
我现在调试网口使用的是mcsdk提供的hua/6678的例子,使用的应该是ndk,这方面需要看那些相关的文档?是否用ndk实现起来简单一些?使用ndk是否也要配置你在1中说的那些buffer和2中说的相关中断等?这几天看了用底层驱动写的网络的例子,需要自己配置各个队列及buffer以及中断出发的accumulation长度等。
不管那种方式,是否都需要配置dsp的ip和端口?我们是通过上位机连接dsp 的,上位机给dsp发送数据,通过socket,需要端口号和ip
谢谢
miker wang:
回复 qian cui:
你好,
NDK是一个网络协议栈,包含了丰富的网络通信协议,它与具体数据的发送与接收的过程没有直接关系。在你所说的例程里含有PDK中对CPPI,QMSS和PA的驱动函数,它们完成了网口通信所需要的以太网外设的初始化与控制,具体可以参考PDK中相应的库函数的原代码。是否需要端口号和IP取决于你采用的通信协议,如果你需要使用UDP或者TCP协议进行通信,那使用NDK配合CPPI,QMSS和PA的驱动函数将会很方便。如果只是为了点对点进行双向数据传输,可以不需要IP以及IP层以上的协议,直接进行以太网帧的收发就可以,这样的话就可以不依赖NDK直接用相关驱动控制以太网外设进行数据收发即可。个人建议你采用你现在的开发方式,有例程可以直接参考和修改。
qian cui:
回复 miker wang:
我们这边要使用socket通信,是否需要学习ndk?是的话需要看什么相关文档?
我用6678,初始化SRIO时候,初始化完成后,检测端口是否ok,遇到端口没有ok的情况,这种情况出现的概率大概10%左右,多数时候还是可以通过的。请问是什么原因,怎么定位解决,谢谢
miker wang:
回复 qian cui:
你好,
使用套接字的话,最好使用NDK。配合NDK,在CCS上的网络编程几乎与在微软Visual Studio平台上的方法完全一致。所以只需要参考windows下的利用套接字进行网络编程的代码即可。
你是使用SRIO与FPGA进行通信吗?这种情况多数可能是SRIO的物理连接存在问题,无法及时建立可靠的SRIO的物理连接。
qian cui:
回复 miker wang:
你好,如果要看ndk,需要看什么相关文档么?使用ndk,数据接收的时候是怎么触发DSP核处理的,以及数据放到哪里?
SRIO物理连接有问题,是寄存器配置不正确还是?需要关注哪方面?
谢谢