我现在想用以太网口将内存里的数据用UDP协议传输到主机电脑,用抓包软件抓包。。。
我想问一下专家能不能给我一个思路,就究竟该怎么做?步骤应该怎么样?
谢谢
Zhan Xiang:
你可以使用TI提供的NDK,里面有UDP的例子,你可以参考。或者直接给予NDK的架构把你们自己的代码移植上去,就可以利用NDK提供的工具来进行UDP packet传输。
lester zhang:
回复 Zhan Xiang:
NDK的例子好像没有牵涉到底层是如何配置的,比如说如何将内存中某个地址的数传给主机。。
Zhan Xiang:
回复 lester zhang:
NDK提供了完整的TCP/IP协议栈,在例子中是有做硬件初始化和队列资源分配的,你可以参考client的例子。如果需要发送数据,可以open一个socket,然后将利用协议栈提供的函数将包组好,随后直接push到发送Queue中即可。
lester zhang:
回复 Zhan Xiang:
Zhang Xiang
你好,通过你的回复,我看了参考了client这个例子,其中有好几个问题想请您解答一下:
1。 例子的DATA BUFFER是一个什么概念,指针指向的是一段什么样的地址?比如说,我要发一串数据的话,指针是不是就指向我要发的那串数组?
2。 DaemonNew里的比如dtask_udp_echo这些函数的定义在哪里,SendRawEth和SendRawEth这两个函数在什么时候被处罚?
3“可以open一个socket,然后将利用协议栈提供的函数将包组好,随后直接push到发送Queue中即可”你所说的这些我有点不太明白。
不好意思,我是一个初学者。。多多指教。谢谢
lester zhang:
回复 lester zhang:
其实我最关键的问题是,不知道怎么样将BUFFER与我想要传输的数据关联起来,可能就是你所说的push。比如说我的数据放在L2中,或者是DDR中,我该怎么和BUFFER关联起来呢,直接用指针指么?
Zhan Xiang:
回复 lester zhang:
1.你需要看看 NDK的文档,里面有所用函数的介绍
2.在6678中,如果要通过网口发送数据,需要使用描述符,描述符中有待发送数据的地址,这里牵扯到很多外设,QMSS, PA, CPSW,其中CPSW用来控制PHY, PA对ethernet的包进行加速, QMSS是整个keystone外设的基础,将所有数据流变成包的形式来传输。
lester zhang:
回复 Zhan Xiang:
哦,那意思是如果要实现功能就要结合client和QMSS的例子一起学习咯?
光是client中的代码无法实现么?
还有就是,我重写client代码的时候在连接的时候报错了,我觉得是我的配置问题,
CSL_chipReadReg C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Cppi_channelClose C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Cppi_channelEnable C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Cppi_configureRxFlow C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Cppi_init C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Cppi_initDescriptor C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Cppi_open C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Cppi_rxChannelOpen C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Cppi_setCpdmaLoopback C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Cppi_txChannelOpen C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Pa_addMac C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Pa_create C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Pa_downloadImage C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Pa_forwardResult C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Pa_getBufferReq C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Pa_resetControl C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Qmss_ackInterrupt C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Qmss_disableAccumulator C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Qmss_getQueueNumber C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Qmss_init C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Qmss_insertMemoryRegion C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Qmss_programAccumulator C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Qmss_queueClose C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Qmss_queueOpen C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Qmss_setEoiVector C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
Qmss_start C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
platform_get_phy_addr C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
platform_write ./event.obj
qmssLObj C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\transport\ndk\nimu\lib\debug\ti.transport.ndk.nimu.ae66<nimu_eth.obj>
lester zhang:
回复 lester zhang:
undefined first referenced
symbol in file
lester zhang:
回复 lester zhang:
我在linker里设置了lib和路径以后,其他的错没了
就剩下两个没有详细提示的错误
error: errors encountered during linking; "UDP_send_test.out" not built
>> Compilation failure
gmake: *** [UDP_send_test.out] Error 1
gmake: Target `all' not remade because of errors.
除了这个其他什么也没有了
Andy Yin1:
回复 lester zhang:
您好,
由于编译错误导致link失败,所以还是有错误的,可以将完整的错误信息发上来,谢谢