TMS320C6657如何通过以太网口与PC通信?(详细过程)

TMS320C6657如何通过以太网口与PC通信?(详细过程)

此问题已被解答
All Replies
  • 秀才103分

    1)目标板上带有EMAC,将目标板和PC之间用网线相连,希望通过以太网进行通信及数据间的交换。网上有资料说是在DSP/BIOS操作系统下使用NDK进行开发,但是在创建新的BIOS CONFIGURATION时没有找到相应的66X.tci,可是已经下载了最新的版本了。2)另外,求教一个详细的进行通信的过程,包括BIOS的创建设置以及NDK怎么使用?3)能否给个简单的实现通信的工程进行学习参考?谢谢。4)TI提供了一个GE工程和以太网使用手册,但是具体的函数涉及太多硬件层面的东西看不太懂,MAIN函数是测试过程不能够顺利跑起来,所以也不知道怎么去利用GE这个工程,如何在此基础上进行开发?谢谢谢谢!

  • 秀才103分
    我的目标板和PC用了网线相连,但是怎么样才能够实现之间的通信呢?我开始想做一个简单的测试工程,也就是PC给DSP发送1到10这几个数字,DSP收到数据后会响应,给PC机对应地回复A到J这10个字母。但是,当我开始动手操作的时候,发现不知从何下手,像PC跟PC之间的话,直接是用WINDOWS SOCKET API可以实现简单的通信功能,用的也是VS2012. 但是DSP应该怎么编程呢?所以我把问题分成以下几个小类,烦请替我答疑:
    1)PC与DSP之间的通信是通过TCP连接么?如果是的话,PC端同样可以在VS2012下用WINDOWS SOCKET API编程像PC与PC那样进行数据收发?
    2)您之前提供的GE工程应该怎么使用,尽管我看了使用手册,也研究了工程文件,但是仍然不知道怎么为我所用;直接装载到DSP上的话只能用抓包工具抓取数据,是不是说明这个工程还不是网络层?需要继续编程?如果不是的话,对应的PC端应该如何编程实现与DSP的通信……其实就是不知道怎么学习这个GE并使用,求指导。
    3)基于DSP/BIOS的NDK开发是怎么一回事,我在CCS5.4创建新的BIOS CONFIGURATION时没有找到与6657匹配的.tci,是不是6657没有支持的BIOS?NDK是个开发套件,但怎么使用我觉得很疑惑,文档只是说由什么组成,有什么用,功能怎么强大,可是我不知道怎么使用上。
    4)能否提供简单的实现实信的PC和DSP的工程文件供学习呢?
  • 举人2170分

    Hi,  您好!

    1. 可以用TCP连接, 可以用SOCKET API

    2. GE工程提供物理层, 您需要继续编程

        2.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[4]=
    {
     GE_PORT_CABLE_CONNECT, //SGMII port 0

     GE_PORT_CABLE_CONNECT//SGMII port 1
    };

    2.2  修改GE_2DSP_Test.c 

           修改void GE_2DSP_Test()函数,加入TCP/IP层功能

    2.3 修改GE_Interrupts.c

           修改void parserRxPacket(HostPacketDescriptor * hostDescriptor)函数, 加入TCP/IP层功能

    3.  6657是有BIOS 的,您装了MCSDK之后会找到, NDK提供了TCP/IP层协议栈

    4.  NKD中提供了Hello world的例程,您可以参考

    谢谢!

     

  • 秀才103分

    谢谢您的解答;不过对于

    2)GE工程里面原来并没有GE_2DSP_Test.c文件,请问是否更新了,如若是,是否能发给我呢?

    3)我已经安装了MCSDK了,是不是6657不支持DSP/BIOS而要用SYSBIOS?然后是添加一个RTSC configuration file么?

    4)我添加了Hello World例程,但是出现如下的情况,请问这是什么原因呢?

    再次感谢您的解答~

  • 举人2170分

    Hi, 您好!

    2. 您可以从下面的链接中下载:

        http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx?pi2132219853=2

    3. 是的, SYSBIOS. 是的,用的 RTSC

    4.  您安装的是6657的SDK, Hello world 用的是其他型号芯片的SDK, 两者版本不一致

    谢谢!

  • 秀才103分

    Kevin你好,版本不一致是什么意思呢?因为Hello World这个例程就是在EVM6657L这个文件里面找到的,对应的版本不是6657那是什么?如果不是应该怎么更改?跑不起来很难理解程序。

    还有,我新建一个工程,然后就往工程添加一个RTSC,发现只有一步确定工程里就多了一个TFG文件,可是打开全是空的,我主要用RTSC来实现TCP通信,还要怎么配置RTSC呢?

    问题很多,不好意思~

  • 举人2170分
    导入CCS工程.docx

    Hi, 您好!

    Hello World是现有的工程, CCS支持导入现有工程的功能,您不需要重新建一个工程. 导入工程的步骤参见附件<<导入CCS工程>>

    您安装MCSDK的时候, 里面有不同的组件, 每个组件都有版本号, 见附件<<创建RTSC工程>>图2

     Hello World这个现有工程在创建的时候, 也带有组件的信息. 两个版本号需要一致

    您尝试导入工程,看一下是否可以用

    谢谢!

     

     

  • 举人2170分
    创建RTSC工程.docx

    Hi,您好!

    附件

    谢谢!

     

  • 秀才551分
    src.rar

    您好!

            我现在使用您编写的6657的GE例程进行EVM与PC的通信,如果程序不改动能板子正常工作。现在我想实现板子与PC之间进行图片传输,板子先等待PC发送图片数据包,然后 再向PC发送数据包,然后这个过程循环交替。  但是我改过程序之后,调试时发现只能成功实现一次交替(即只能进行一次PC到DSP和DSP到PC的通信,第二次会卡在接收部分,能收到部分包,就再也收不到包了,使用中断方式)。后来改成查询的方式,就算没有包发送,EMAC_Recv也能收到包,新手有点不知所措。还有一个问题,就是板子上的RJ45接口的指示灯是两个一直亮吗,在6678EVM上,两个指示灯,其中一个一直亮表示连接,另一个只有在有包发送或者到来时才会亮。我觉得这是为什么使用查询方式时就算没包也会执行成功的原因。望您能够指点一下!

  • 举人2170分

    Hi, 您好!

    6657的指示灯和6678是一样的, GE_Message_ISR 函数您可以用原来的代码,不需要修改

    谢谢 !

     

  • 秀才551分

    您好!

             非常感谢您的回复,但是我还是不是很了解,中断函数我只是注释了parsePacket函数和加了一句计数的语句counter++,主函数进行流程控制,其他都未改动。不知道我的程序在您那是否可以正常运行。还有一个现象是,如果我把接收和发送单独进行(接收时注释发送代码,发送时注释接收)工作是正常的,此外我的6657EVM板子没有风扇,加电十几二十分钟后板子就会很烫,不知道这种情况是否正常。再次感谢您的回复!

  • 举人2170分

    Hi, 您好!

    原代码中下面的代码是注释掉的

    #if 0
     /* check for new packet */
     if(emac_mcb.lastrxhdp == (Uint32)EMAC_REGS->RX0HDP)
      //return 0;
         return;
    #endif

    您在PC的发送端每发一次包, 加入一些时间间隔, 如1ms,看是否正常

    谢谢! 

     

  • 秀才551分

    您好!发送和接收的问题解决了,我是修改了EMAC_send函数中将 if (TX_DESC_COUNT >= txTracker) 语句中“>=” 改成 “>”。因为如果是等于号的话,则发送descriptor 可能在某次接收和发送操作完成后,存在接收和发送指向相同的描饰符可能性。不知道我的理解是否正确。  简单点说就是发送descriptor 越界到了接收descriptor 



    此外,我还有一个问题不是很清楚,我的6657的EVM板子,在上电运行(或不运行)十几二十分钟后会很烫,不知道这是不是正常情况呢?我看板子上芯片附近有好多安装孔,是不是用来安装小风扇的呢?因为我看6678EVM上是安装了风扇。希望您能说明一下。



    最后一个问题是,因为我的板子最终是要跟外部一个fpga板子上的网口相连,跟电脑网口相连的配置有没有区别呢,因为我们发现外部的fpga板子无法正常接收(接收的过程正常,但是切换到发送过程时通过观察TXGOODFRAME,发现为0,说明未能正常发包。如果把接收过程注释掉其他未修改,直接发送是可以正常发包的。比较困惑,这两种情况下网口的配置不一样吗?),但是我们使用6678EVM板子跟fpga板子通信是正常的。谢谢!

  • 举人733分
    TMS320C6657_TMS320C6655开发板规格书.pdf

    广州创龙出了TMS320C6657TMS320C6655开发板,应该是国内第一家做TMS320C665x的开发板厂商了,值得关注一下,可以和他们索取下资料。TMS320C6678TMS320C6657 学习群:79635273,共同学习TI的TMS320C66x平台。

  • 秀才161分

    怎么在GE程序里面加入TCP\IP协议层的东西啊?求指教