问题描述:
在EK-TM4C1294XL开发板上移植uCOS-II,并使用TI外设库lwip-1.4.1。使用 InitNic函数来初始化协议栈,使用 ntp_doinit创建了一个UDP连接.
#define My_Mac_ID {0x88,0xD8,0x02,0xB6,0x1A,0x00}
#define IP_MARK_ID {255,255,255,0} // 子网掩码
#define MY_IP_ID {192,168,6,220} // IP地址
#define MY_GATEWAY_ID {192,168,6,1} // 网关地址
unsigned char MACAddress[6] = My_Mac_ID; // MAC地址
unsigned char IPAdd[4] = MY_IP_ID; // IP地址
unsigned char NetMaskAddr[4] = IP_MARK_ID; //子网掩码
unsigned char GwWayAddr[4] = MY_GATEWAY_ID; //网关
void InitNic(void)
{
struct ip_addr tIpAddr, tNetMask, tGateway;
IP4_ADDR(&tIpAddr, IPAdd[3], IPAdd[2], IPAdd[1], IPAdd[0]);
IP4_ADDR(&tNetMask, NetMaskAddr[3], NetMaskAddr[2], NetMaskAddr[1], NetMaskAddr[0]);
IP4_ADDR(&tGateway, GwWayAddr[3], GwWayAddr[2], GwWayAddr[1], GwWayAddr[0]);
//初始化LWIP协议
lwIPInit(g_uiSysClock , MACAddress, tIpAddr.addr, tNetMask.addr, tGateway.addr, IPADDR_USE_STATIC);
}
/*
* 功能:创建一个udp连接
* */
void ntp_doinit(void)
{
struct ip_addr tIpAddr;
UINT8 err;
IP4_ADDR(&tIpAddr, IPAdd[0], IPAdd[1], IPAdd[2], IPAdd[3]);
UdpPcb = udp_new();
//udp_bind(UdpPcb, IP_ADDR_ANY,123); // 绑定本地IP地址,端口为:123
udp_bind(UdpPcb, &tIpAddr, 123); // 绑定本地IP地址,端口为:123
udp_recv(UdpPcb, UDP_Receive, NULL); // 设置数据接收时的回调函数
//而且延时要足够的,否则收不到
//一定要加延时,否则可能都没绑定就发数据了,就会收不到
OSSemPend(delayEvent, OS_TIME_SEC, &err);
}
现在的情况是:开发板连接通过网线连接交换机,设置IP:(C)192.168.6.10。同时另外有两台电脑通过网线连接交换机,分别设置IP: (A)192.168.6.13 , (B)192.168.6.14。 A单独去ping C能ping通,B单独去ping C也能ping通,但是A,B同时去ping C时,只能一个能ping通,一个不能ping通,感觉就是在同一时间只允许一台连接。是不是LWIP协议里面需要配置???怎么配置呢???
xyz549040622:
这个没有搞过,只能帮你顶顶了。