各位工程师专家您好,我正在调试C6678的网口部分,使用的历程是mcsdk_2_01_02_05的helloworld例子,可以正常run成功,ping通,单步调试,现在的问题是1、我现在想加入自己的socket请问在程序的哪里加,怎么加呢?2、和PC通信程序还需要改哪些地方?NDK user guide和NDK API还有以太网调试手册都有看过,有些了解;3、历程中udphello.c程序是怎么调用的啊,单步调试,走不到,在udphello中函数sendto()的s参数是socket,它的值怎么修改啊,好像是个地址啊,烦请大家帮忙,谢谢大家
Kevin Cai:
Hi, 您好
在下面的链接中,有我们开发的以太网例程, 其中包含与PC的通信,您可以参考:
http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx
设置下列变量后可与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 GE_PORT_CABLE_CONNECT //SGMII port 1};
GE_2DSP_Test()函数等效sendto()函数
如果要加上层功能(如TCP/UDP)可以在GE_2DSP_Test()之上添加功能
wang dahai:
回复 Kevin Cai:
Kevin Cai 您好,
真的是十分感谢您在百忙之中给我解答这个问题,这个问题困扰了我很久。等会我试试看,希望可以成功,我会再回来回复您,把我的结果告诉您。
再次感谢您的帮助,如果还有问题,还真心希望您能够继续帮忙指教。
zhijun Han:
回复 Kevin Cai:
您好!
我们最近使用NDK2.0实现DSP与PC机的通信,但是不知道该如何设置才能实现。同时我们也运行了NDK里的client,总是无法运行正确,会出现如下问题:
TCP/IP Stack Example Client Using MAC Address: f0-0f-f0-0f-f0-0f
EMAC should be up and running
EMAC has been started successfully
Registeration of the EMAC Successful
Service Status: DHCPC : Enabled : : 000
Service Status: Telnet : Enabled : : 000
Service Status: HTTP : Enabled : : 000
Service Status: DHCPC : Enabled : Running : 000
Link Status: 100Mb/s Full Duplex on PHY 0
Service Status: DHCPC : Enabled : Fault : 002
Service Status: DHCPC : Disabled : : 000
Service Status: DHCPC : Enabled : : 000
Service Status: DHCPC : Enabled : Running : 000
希望您在百忙之中能帮我们看一下,十分感谢您!
Kevin Cai:
回复 zhijun Han:
Hi, 您好!
想请问一下您们PC和DSP通信需要用TCP/IP吗? 如果不需要的话可以考虑我在1月9日回复的链接里的参考程序
这份参考程序包含MAC层功能,我们在6678上验证过PC与DSP间的通信
谢谢
zhijun Han:
回复 Kevin Cai:
Kevin Cai,
您好!
十分感谢您的回答。 因为我们需要PC机实时传送大约10kb左右的数据给DSP,因此我们考虑使用TCP/IP的,不知道您的参考程序里是否能实现相应的功能啊。另外,不知道您那里是否有TCP/IP相应的参考程序啊。谢谢您!
Kevin Cai:
回复 zhijun Han:
Hi, 您好!
在参考程序中, GE_2DSP_Test等效于 sendto()函数
您可以在GE_2DSP_Test中通过控制发包的大小和发包间隔来模拟10kb左右的数据
目前TCP/IP是在ndk里
谢谢!
zhijun Han:
回复 Kevin Cai:
Kevin Cai,
您好!
十分感谢您!我们的开发板是omapl137的,不知道能否使用您说的GE_2DSP_Test,如何配置。
谢谢!
Kevin Cai:
回复 zhijun Han:
Hi, 您好!
在GE_2DSP_Test()中,先把要发的数据准备好,放到TxDescriptorTempBuffer中
下面的代码是发送函数, KeyStone_queuePush等效于发送,每发送一包后有一些间隔TSC_delay_ms
你可以配置成,比如发包大小是125字节(1k bit), 发包间隔100ms
如果需要连续发包,请保证uiTotalNumPackets足够大, 即TxDescriptorTempBuffer里一直有要发送的数据 (这可以通过循环来实现)
for(i=0; i< uiTotalNumPackets; i++) { /*push the packet descriptor to Packet DMA TX queue*/ KeyStone_queuePush(GE_DIRECT_TX_QUEUE, TxDescriptorTempBuffer[i]|FETCH_SIZE_64);
//delay to avoid potentail overflow, for debug only TSC_delay_ms(DELAY_BETWEEN_PACKET_MS); }
yuxiang li:
回复 Kevin Cai:
kevin:
您好,我想看一下这可参考程序,但是在您的回复历史中没有找到1月9日的回复,麻烦您能帮我发个链接么?
多谢了!
Kevin Cai:
回复 yuxiang li:
Hi, 您好!
请参考下面链接:
http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx
谢谢