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.

C6678,千兆以太网实现dsp向PC传输数据,比较着急用,麻烦您解释 thank you

TI员工,您好,我需要尽快的实现dsp向PC传输,有以下问题,请帮忙解答

(1)我采用了TI官方提供的GE ,想从DSP向 PC发射数据,请问详细的步骤是怎样的?按照之前的修改的我也做了 但是无法ping 成功? 有说静态IP,请问这是怎么设置的?DSP IP 地址是?

(2)如果在GE中想要实现TCP/UDP传输应该怎么设置?

  • TI员工,您好,我需要尽快的实现dsp向PC传输,有以下问题,请帮忙解答

    (1)我采用了TI官方提供的GE ,想从DSP向 PC发射数据,请问详细的步骤是怎样的?修改的我也做了 但是无法ping 成功? 有说静态IP,请问这是怎么设置的?DSP IP 地址是?

    (2)我跑了mcdsk 中的helloworld ,收发为4,但是现实无法访问主机地址,这是增么回事?

  • Hi, 您好!

    1. 您需要修改GE_Test.c:

        > GE_Test_Data_Path test_data_path= GE_TEST_DSP0_TO_DSP1;

        > Ethernet_Mode ethernet_mode = ETHERNET_AUTO_NEGOTIAT_SLAVE;

        > GE_Port_Connection port_connect[2]=
        {
              GE_PORT_CABLE_CONNECT, //SGMII port 0   假设您的板子用的是以太网端口0

              GE_PORT_NO_CONNECT //SGMII port 1
        };

       重新编译后在DSP核0上运行

      GE工程包含物理层,MAC曾, 没有TCP/IP及上层协议,所以ping不能用

     

      DSP IP您可以自己在软件中设定:

      即当DSP对外发送数据包时(详见GE_2DSP_Test.c 中的 GE_2DSP_Test()函数), 您只要按协议格式在填MAC头之前填好IP头即可

     

    2. 您可以在 GE_2DSP_Test()函数的基础之上添加TCP/IP发送端代码

                    在GE_Interrupts.c 文件的parserRxPacket函数中添加TCP/IP接收端代码

        上诉这种方式要添加的代码较多, 您也可以使用NDK, NDK包含了TCP/IP层, 安装MCSDK后可以在安装目录下找到NDK

    谢谢! 

  • 谢谢您的回答

    您好 NDK中包含有基于UDP传输的例程吗?假如从DSP传输到PC,采用哪个例程改比较容易上手?改写的具体步骤是什么?问题有点多 谢谢

  • Hi, 您好!

    您从下面的目录中可以找到UDP的例子, 供参考:

    mcsdk_*_**_**_**\examples\ndk\helloWorld

    另外您在NDK的安装目录下也可以找到例子,比如:

    ndk_*_**_**_**\packages\ti\ndk\tools\console\Conecho.c

     

    谢谢!

  • 谢谢您

    我看到网上说helloworld需要建立一个UDP socket 来触发传输,请问有具体的例子吗?实现从DSP传输数据到PC。

  • 您好,我下载了一个STK_C6657_EMAC的工程文件中没有找到GE_2DSP_Test.c这个文件,请问您这个demo最新版本从哪里可以下载到?急用,多谢!

  • Hi, 您好!

    这个工程使用的是GE_Test.c文件来完成2个DSP之间或 DSP与PC的通信功能。

    在GE_Test.c文件中, 您设置如下变量即可:

    GE_Test_Data_Path test_data_path= GE_TEST_DSP0_TO_DSP1

    如果需要用中断方式收包,设置:

    Bool emac_interrupt = 1;

     

  • 您好!

            之前请教过您关于Notify_sendEvent的问题,我新开一个问题,希望您能帮忙看一下。http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/75121.aspx

    zjd

    谢谢!

  • Hi Kevin Cai:

       我们之前网络通信这块是基于NDK,官方提供的helloworld那个例程进行修改的,但是那个和pc-Ubuntu系统间tcp通信速率上不去,只有5M/s。和arm间通信速率则更低,仅有2M/s。所以我们现在考虑使用裸跑的这种方案测试一下速率,看会不会有大的提升。但是根据您所讲的这些修改方法,我感觉摸不着头脑啊,还请再指教:

        1.按协议格式在填MAC头之前填好IP头即可,这个如何添加IP头,有相关文档可以查阅吗?协议格式在哪里可以看?

        2. 您可以在 GE_2DSP_Test()函数的基础之上添加TCP/IP发送端代码

                    在GE_Interrupts.c 文件的parserRxPacket函数中添加TCP/IP接收端代码

       这个要自己对tcp/ip协议进行封装吗?有修改好的demo可供参考吗?

  • Hi, 您好!

    1. 格式是按TCP/IP协议填的,附件是格式的简要说明

    2. 是的,要自己封装,您可以参考NDK;   TCP/IP是公开的协议,您也可以寻找开源代码

    谢谢 

    TCP-IP.docx
  • 你好,我要做fft以太网传输,现在fft程序有了,请问以太网怎么编程呢,能把你的程序发我借鉴一下吗

  • 你好,

    我们是TI的白金合作伙伴,针对C6678有全套的商用平台软件提供,包括在C6678上成熟的TCP/IP (使用通用Socket接口)以及网络、PA机速器等全套BSP。

    可直接调用Socket接口进行,网络通信,支持TCP/UDP,VLAN,Telnet等等。

    而且每个核都有一个Ip地址,可以任意一个核同时和外部设备通信。

    Best Regards

    William

    William.dong@enea.com

  • Hi,您好!

    我目前正在使用GE的例程做DSP与PC的通信,目前碰到的问题如下:

     (1) PC向DSP发送数据时,可以触发DSP的网口中断程序,但是在解析数据时发现每次都到的数据都是同一个数据包;

     (2) DSP有时候不能触发接受网络的中断程序。

    谢谢

  • 你好, kevin。 我用的6678的开发板运行你的GE程序,想测试6678和PC之间的连接,按照你的说明修改程序:

     > GE_Test_Data_Path test_data_path= GE_TEST_DSP0_TO_DSP1;

        > Ethernet_Mode ethernet_mode = ETHERNET_AUTO_NEGOTIAT_SLAVE;

        > GE_Port_Connection port_connect[2]=
        {
              GE_PORT_CABLE_CONNECT, //SGMII port 0   假设您的板子用的是以太网端口0

              GE_PORT_NO_CONNECT //SGMII port 1
        };

    但是现在程序停在了wait for link up那个循环了,请问这是什么原因?程序的其他地方我都没有做过改动,我把开发板和EVM6678直连的。

    谢谢!

  • 您好!

     我们之前网络通信这块是基于NDK,官方提供的helloworld那个例程进行修改的

    我目前也想做基于NDK的UDP通信,与PC机通信。

    请问方便分享您的代码吗?

    谢谢!

    我的邮箱stevechaw@126.com

  • 你好,

     我也是使用GE的例程进行测试,板卡是通过SGMII port0实现两个DSP之间的连接。然后现在两个DSP之间数据通信可以实现,但在进行速率测试的时候,理论上来说千兆以太网的话应该可以达到125MB/s,但实际测出来的结果却是61MB/s,与理论值差别有些大,这个请问各位大神是什么原因。传输的数据中没有使用协议,MAC层的数据传输,除了传输的测试数据9200byte以外,再就是14byte的MAC地址以及包类型定义。

    多谢!

  •  

    您好!我也在调EVMC6678 网络和PC间的通信,看了您2L说的步骤,也按您说的配了,加载到core0,发现如下一直处于等待中。

    [C66xx_0] JTAG ID= 0x0009e02f. This is C6678/TCI6608 device, version variant = 0.
    DEVSTAT= 0x00000001. little endian, No boot or EMIF16(NOR FLASH) or UART boot, PLL configuration implies the input clock for core is 50MHz.
    SmartReflex VID= 38, required core voltage= 0.943V.
    Die ID= 0x0100d010, 0x0401011c, 0x00000000, 0x17fe0020
    Device speed grade = 1000MHz.
    Enable Exception handling...
    Initialize DSP main clock = 100.00MHz/1x10 = 1000MHz
    Initialize PASS PLL clock = 100.00MHz/2x21 = 1050.000MHz
    Initialize DDR speed = 66.67MHzx/1x20 = 1333.333MTS
    GE auto negotiation (slave) two DSPs test (DSP0 -> DSP1)...

    这是怎么回事啊!我是直接用网线把PC和dsp相连,按您上面配置的,其他地方没有改

    看了下您和楼下的帖子,有几个问题不解

    1.您说,DSP IP您可以自己在软件中设定,要按协议格式在填MAC头之前填好IP头即可,那么这步是必须要做的吗,否则,仅上面的几步无法和PC通信;如果必须的,那具体的步骤如何写代码,我第一次调试网络,好多地方都不懂。您能指导下吗?谢谢!!!

  • 您好!不知您问题是否已经解决,能指导下我吗,我刚接触网口部分。您后来是怎么改的,能分享下吗,我的邮箱:yangfenzhia@163.com ,qq:2195636160

  • 红色显示部分是正常的啊,因为PC相当于文字中说的DSP1了!应该是这样的!

  • baozeng zhao

    您好,最近也在调试板子上的以太网接口,想测试一下接口的传输速度,方便将您的测试代码共享一下吗,

    谢谢

  • fendou yang你好,请问你这个问题后来怎么搞定的

  • 你好,我想问一下,当数据从电脑发送到DSP时,在触发终端前,这些数据在哪存放?

  • 你是怎么从电脑发的?你确定DSP收到了数据?