完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,
我为ETHERNET设置了ML605_IwIP_AXI参考设计并成功连接到iperf服务器。 ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++ +++++ lwIP RAW模式+++++ Board IP:192.168.1.10Netmask:255.255.255.0Gateway:192.168.1.1auto-negotiated link speed:1000 Server Port Connect with ..-------- ------------ ------ -------------------- echo server 7 $ telnet 7 rxperf server 5001 $ iperf - c -i 5 -t 100 txperf客户端N / A $ iperf -s -i 5 -t 100(在IP 192.168.1.100的主机上)tftp服务器69 $ tftp -i 192.168.1.10 PUT http server 80将Web浏览器指向 http://192.168.1.10txperf:连接到iperf服务器 ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++ 现在我需要将数据从FPGA发送到PC。 1)我应该使用哪些API? 2)如何写数据发送缓冲区? 3)有没有样本代码可以做到这一点? 我需要使用RAW API。 谢谢。 以上来自于谷歌翻译 以下为原文 Hi, I setup ML605_IwIP_AXI reference design for ETHERNET and successfully connected to iperf server. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++ lwIP RAW Mode +++++ Board IP: 192.168.1.10 Netmask : 255.255.255.0 Gateway : 192.168.1.1 auto-negotiated link speed: 1000 Server Port Connect With.. -------------------- ------ -------------------- echo server 7 $ telnet rxperf server 5001 $ iperf -c txperf client N/A $ iperf -s -i 5 -t 100 (on host with IP 192.168.1.100) tftp server 69 $ tftp -i 192.168.1.10 PUT http server 80 Point your web browser to http://192.168.1.10 txperf: Connected to iperf server ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Now I need to send data from FPGA to PC. 1) What are the APIs I should use? 2) How to write data to send buffer? 3) Are there any sample codes to do this? I need to use RAW APIs. Thank you. |
|
相关推荐
3个回答
|
|
嗨,
好的......问题可以通过以下步骤解决, 链接:http://lwip.wikia.com/wiki/Raw/TCP 要在TCP连接上发送数据: 调用tcp_sent()以指定确认的回调函数。 调用tcp_sndbuf()以查找可以发送的最大数据量。 调用tcp_write()将数据排入队列。 调用tcp_output()强制发送数据。 u16_t tcp_sndbuf(struct tcp_pcb * pcb) 返回输出队列中可用空间的字节数。 err_t tcp_write(struct tcp_pcb * pcb,void * dataptr,u16_t len, u8_t apiflags) 将参数dataptr指向的数据排入队列。 数据的长度作为len参数传递。 apiflags参数可以具有以下任一位: TCP_WRITE_FLAG_COPY表示lwIP应分配新内存并将数据复制到其中。 如果未指定,则不应分配新内存,并且数据应仅由指针引用。 TCP_WRITE_FLAG_MORE表示不应在TCP段中设置推送标志。 如果数据长度超过当前发送缓冲区大小或者传出段的队列长度大于lwipopts.h(TCP_SND_QUEUELEN)中定义的上限,则tcp_write()函数将失败并返回ERR_MEM。 如果函数返回ERR_MEM,则应用程序应等待,直到其他主机成功接收到某些当前排队的数据,然后重试。 err_t tcp_output(struct tcp_pcb * pcb) 强制立即发送所有入队数据。 void tcp_sent(struct tcp_pcb * pcb, err_t(* sent)(void * arg,struct tcp_pcb * tpcb, u16_t len)) 指定在远程主机确认数据时应调用的回调函数。 传递给回调函数的len参数给出了上次确认确认的字节数。 在原帖中查看解决方案 以上来自于谷歌翻译 以下为原文 Hi, OK ... the problem can be solved by following the steps below, Link : http://lwip.wikia.com/wiki/Raw/TCP To send data on a TCP connection:
err_t tcp_write(struct tcp_pcb * pcb, void * dataptr, u16_t len, u8_t apiflags)Enqueues the data pointed to by the argument dataptr. The length of the data is passed as the len parameter. The apiflags argument can have either of the following bits:
err_t tcp_output(struct tcp_pcb * pcb)Forces all enqueued data to be sent now. void tcp_sent(struct tcp_pcb * pcb, err_t (* sent)(void * arg, struct tcp_pcb * tpcb, u16_t len))Specifies the callback function that should be called when data has been acknowledged by the remote host. The len argument passed to the callback function gives the number of bytes that were acknowledged by the last acknowledgment. View solution in original post |
|
|
|
嗨,
好的......问题可以通过以下步骤解决, 链接:http://lwip.wikia.com/wiki/Raw/TCP 要在TCP连接上发送数据: 调用tcp_sent()以指定确认的回调函数。 调用tcp_sndbuf()以查找可以发送的最大数据量。 调用tcp_write()将数据排入队列。 调用tcp_output()强制发送数据。 u16_t tcp_sndbuf(struct tcp_pcb * pcb) 返回输出队列中可用空间的字节数。 err_t tcp_write(struct tcp_pcb * pcb,void * dataptr,u16_t len, u8_t apiflags) 将参数dataptr指向的数据排入队列。 数据的长度作为len参数传递。 apiflags参数可以具有以下任一位: TCP_WRITE_FLAG_COPY表示lwIP应分配新内存并将数据复制到其中。 如果未指定,则不应分配新内存,并且数据应仅由指针引用。 TCP_WRITE_FLAG_MORE表示不应在TCP段中设置推送标志。 如果数据长度超过当前发送缓冲区大小或者传出段的队列长度大于lwipopts.h(TCP_SND_QUEUELEN)中定义的上限,则tcp_write()函数将失败并返回ERR_MEM。 如果函数返回ERR_MEM,则应用程序应等待,直到其他主机成功接收到某些当前排队的数据,然后重试。 err_t tcp_output(struct tcp_pcb * pcb) 强制立即发送所有入队数据。 void tcp_sent(struct tcp_pcb * pcb, err_t(* sent)(void * arg,struct tcp_pcb * tpcb, u16_t len)) 指定在远程主机确认数据时应调用的回调函数。 传递给回调函数的len参数给出了上次确认确认的字节数。 以上来自于谷歌翻译 以下为原文 Hi, OK ... the problem can be solved by following the steps below, Link : http://lwip.wikia.com/wiki/Raw/TCP To send data on a TCP connection:
err_t tcp_write(struct tcp_pcb * pcb, void * dataptr, u16_t len, u8_t apiflags)Enqueues the data pointed to by the argument dataptr. The length of the data is passed as the len parameter. The apiflags argument can have either of the following bits:
err_t tcp_output(struct tcp_pcb * pcb)Forces all enqueued data to be sent now. void tcp_sent(struct tcp_pcb * pcb, err_t (* sent)(void * arg, struct tcp_pcb * tpcb, u16_t len))Specifies the callback function that should be called when data has been acknowledged by the remote host. The len argument passed to the callback function gives the number of bytes that were acknowledged by the last acknowledgment. |
|
|
|
请访问WebPHY DATABUS www.webphyfpga.com。
不需要软件堆栈,CPU,PHY,DDR或闪存芯片,所有内容都包含在一个小型IP内核中,以允许从标准Web浏览器读取和写入FPGA。 以上来自于谷歌翻译 以下为原文 Take a look at WebPHY DATABUS www.webphyfpga.com. No software stack, CPU, PHY, DDR or Flash chips are required, everything is contained in one small IP core to allow data read and write to an FPGA from a standard web browser. |
|
|
|
只有小组成员才能发言,加入小组>>
2414 浏览 7 评论
2821 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2292 浏览 9 评论
3371 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2458 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1071浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
577浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
437浏览 1评论
1999浏览 0评论
722浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 20:46 , Processed in 1.387258 second(s), Total 86, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号