历史上的今天
今天是:2025年04月22日(星期二)
2018年04月22日 | STM32F4 LAN8720以及LWIP的移植调试记录 (2)
2018-04-22 来源:eefocus
背景
在硬件工程师完成了PCB和原理图设计后,根据正点原子的教程对例程进行修改,验证了硬件的正确性。
STM32F407和LAN8720调试记录.
正点原子 网络通信实验
下一步的工作需要在产品的板子上实现功能。
原产品采用W5500的硬TCP/IP协议方案。
调试路线尝试先从UDP回环开始。
ICMP协议的介绍
可以看到协议里指出,错误类型属于端口无法到达。
拿其他程序测试了一下,果然当目标设备的IP正确,而目标设备上没有对应的端口时,确实会回复ICMP报文。
可见问题出在端口初始化上。3. 原厂例程测试
无奈之下只能和原子原本的例程对比。能够正常发送报文并接受消息。
在测试过程中无意中截到这样的报文:
可以观察到,只有当原地址和目标地址均为8089时,ICMP才没有回错误报文。
当两者中任意一者不是8089时均会报错。
回去仔细查看代码,确实有两个地方用到了UDP_DEMO_PORT。
分别是
err = udp_connect(udppcb, &rmtipaddr, UDP_DEMO_PORT);
和
err = udp_bind(udppcb, IP_ADDR_ANY, UDP_DEMO_PORT);
一个绑定了本地的端口和IP,另一个绑定了远程设备的IP和端口。
其中udp_connect这个函数是之前没有用过的。LWIP的手册对该函数作了描述:
LwIP Application Developers Manual
Connected pcbs only receive data from the connected remote address, while unconected pcbs receive datagrams from any remote address.
因此经过connect的UDP端口将只接收绑定过的源地址源端口的报文。
尝试把udp_connect这句函数注释掉,果然所有报文都能顺利接收。
上一篇:STM32网络丢包问题分析
下一篇:STM32移植lwip之硬件连接
史海拾趣
|
請問可以同時插兩只CSR的Bluetooth dongle么? 現正在學習BCHS Application Demo,通信時需要兩臺PC,各插一只dongle,很不方便。請問可以在同一臺PC上插兩只dongle么。理論上是完全可行的,而且從設備管理器中也可以找到兩個設備(dongle),但不知道如何與應用程序關聯起來,應用程序只能同時打 ...… 查看全部问答> |
|
各位朋友,本人有一些Windows平台的C++开发经验,现在想做嵌入式,自己也有一块ARM的板子,搞过linux的bootloader和内核移植,但是却没有项目可以去学习。本来想去参加培训,可是没有时间。不知哪位朋友现在是否在开发什么项目,能否带小弟一起学习 ...… 查看全部问答> |
|
公司最近有一个项目,用到EP3C55这个器件,希望能把FPGA配置文件SOF和NIOS的程序文件一并烧写的EPCS芯片上! 在SOPC中添加了EPCS CONTROLLER,并在NIOS的RESET ADDRESS设定为EPCS CONTROLLER的地址!现在有两上问题没有想清楚: ...… 查看全部问答> |
|
#define EALLOW asm(\\" EALLOW\\" #define EDIS asm(\\" EDIS\\" #define ESTOP0 asm(\\" ESTOP0\\" 在上面定义的 指令中,不知道三个汇编指令的含义,还请高手赐教,谢谢!! ...… 查看全部问答> |
|
刚刚下了个3.41a的4K限制版在用 发现了几个问题 我用的是MSP430F1121A 我创建了一个C的项目,他提供了一个一条#include "io430.h",如果我加上这句话#include <msp430x11x1.h> 就报错 说很多变量已经定义了 于是我把#include "io430.h ...… 查看全部问答> |




