共2条
1/1 1 跳转至页
ZLG,TCP,IP 我们想用ZLG的TCP/IP模块,可不知稳定性如何?

问
不知内部的东东是自己写的,还是philips或其它公司的.
答 1:
很多东西要自己修改,看你产品的等级程序。我修改了一个多月才算好用一点
答 2:
是这样吗我也想用,还想靠它实现SNMP,就是不知从何下手,请各位指点!
答 3:
我诚心诚意的推荐zlip虽然流控制还是不完整,但整体结构和性能要好很多,而且移植比较简单,如果你不是很苛求性能的话
答 4:
我也改了好久...还是不好用...性能上始终不能满足要求
答 5:
很多是边边角角的问题,只有使用过程中才会慢慢发现。
答 6:
看来还是用linux ARM会更好有完整的tcp/ip协议,成本就得200-300,批量大还可以。
答 7:
有的协议栈还不错的占资源也小
答 8:
to eleven11zlip连udp都不支持,怎么用呀
答 9:
完全是我们自己写的,而且已经有几万个产品的实用案例! 当然,学习开发套件的版本是最初级的,如果有一定的基础是可以通过适当的修改使用的。如果需要稳定的商业化版本,我们不提供任何形式的代码,甚至包括OBJ文件,因为很少有人尊重厂商的知识产权,所以我们不对外销售源代码,但是可以购买我们公司的TC/IP转换器系列产品,或者购买我们即将推出的ARM嵌入式工控模块,一些模块是内嵌了TCP/IP软件代码的,虽然已经加密,但是完全供用户二次开发调用。
答 10: to yutu2UDP协议是很简单的,因为只是添加报头转到IP层发送出去,我这里有示范性的代码,你可以看看,协议栈一旦有了完整的网络协议会提供免费版本的
void UDPRecv(MEM_PCB XDATA *pMem, BYTE NetIfNo) REENTRANT
{
UDP_SOCKET XDATA *pUCB;
UDP_HEAD XDATA *pUdpHead = (UDP_HEAD XDATA *)(pIPHead + IPHeadLen);//计算UDP首地址
#ifdef Little_End
WORD UdpTotalLen = ntohs(pUdpHead->UDPTotalLen);//计算UDP总长度
#else
WORD UdpTotalLen = pUdpHead->UDPTotalLen;
#endif
#if UDP_CHECKSUM_EN == 1
if (TCP_UDPCheckSum(pIPHead, UdpTotalLen) != 0)//UDP效验
{
MemFree(pMem);
return;
}
#endif
if (pUCBList != NULL)//若UDPsocket链表不为0
{
pUCB = pUCBList;//搜索链表,找对应socket
do
{
if (pUCB->RemoteIP == pIPHead->SourIP)
if (pUCB->SinIP == pIPHead->DistIP)
if (pUCB->RemotePort == pUdpHead->SourPort)
if (pUCB->SinPort == pUdpHead->DistPort)
{
pUCBList = pUCB;
goto UDP_Process;
}
pUCB = pUCB->pNext;
}
while (pUCB != pUCBList);
}
ICMPUnarrival(pMem, ICMP_CODE_PORT_UNARRIVAL);//若未找到,返回icmp
MemFree(pMem);
return;
UDP_Process://UDP进程,根据端口号分支
switch (pUdpHead->SourPort)
{
case DHCP_CLIENT_PORT://DHCP
break;
case DHCP_SERVES_PORT://DHCP
break;
default:
pUCB->UDPDataRecv((BYTE XDATA *)pUdpHead + UDP_HEAD_LEN, UdpTotalLen - UDP_HEAD_LEN);//无特点含义端口的数据接收
break;
}
MemFree(pMem); //释放内存块
}
void UDPSend(MEM_PCB XDATA *pMem, UDP_SOCKET XDATA *pUCB) REENTRANT
{
UDP_HEAD XDATA *pUdpHead;
pMem->UsedSize += UDP_HEAD_LEN;//添加要发送的数据数目
//以下添加UDP报头
pUdpHead = (UDP_HEAD XDATA *)(POINT_IP(pMem->MemAddr) + IP_MIN_HEAD_LEN);
pUdpHead->CheckSum = 0;
#ifdef Little_End
pUdpHead->SourPort = ntohs(pUCB->SinPort);
pUdpHead->DistPort = ntohs(pUCB->RemotePort);
pUdpHead->UDPTotalLen = ntohs(pMem->UsedSize);
pUdpHead->CheckSum = ntohs(TCP_UDPCheckSum(pIPHead, pMem->UsedSize));
#else
pUdpHead->SourPort = pUCB->SinPort;
pUdpHead->DistPort = pUCB->RemotePort;
pUdpHead->UDPTotalLen = pMem->UsedSize;
pUdpHead->CheckSum = TCP_UDPCheckSum(pIPHead, pMem->UsedSize);
#endif
IPSend(pMem, pUCB->RemoteIP, IP_PCOL_UDP);//转到IP层发送
} 答 11: 谢谢eleven11你用过SNMP协议吗,能不能指导我一下,谢谢! 答 12: 我花了很大的时间完善zlip现在已经移植到ARM7上了,在修改原来的代码基础上加了udp嵌套口,加上了ping ,加上了基于udp的dgcp,telnet,加上了http服务器,以及cgi程序。还有smtp和pop3协议,完全可以收发电子邮件了。我看了周立功的以太网络产品,上面的功能我都分析了,可以实现了。
其实tcp/ip协议没有什么神秘的,有了很好的c语言基础,再分析一下网络协议,最好是查看对应的rfc文档,然后在下栽一个监视软件,花点时间就可以搞定。
提醒想要一直zlip的朋友:
1,注意ads中指针类型的指定。
2,注意前后台程序中后台程序的循环查询等待,要修改。
3,多处htons,htonl的错误,希望有耐心去调试。
4,不修改协议的时候,发送tcp包的时候要注意不要发送大于1460的包。8019吃不消化。
5,一定要修改内存分配部分,使4位对齐,否则必定死机。
6,在包结构中放弃4字节对齐。加上关键字__packed
7,可以缩短时间中断,以提高速度,但一定要修改对应的预定义,使等待充发等时间不变。
答 13: 这里也有朋友在做snmp呀能留个联系方式吗,最近一直在做snmp,苦于没人一起讨论,目前在ZLG的TCP/IP基础上已实现snmp的基本操作,但还在功能上继续完善,而且初步测试性能上也不行,主要原因应该在于TCP/IP协议栈
有过做snmp经验的或是将要做snmp的朋友可以加我MSN:yamoon@ciitz.net
答 10: to yutu2UDP协议是很简单的,因为只是添加报头转到IP层发送出去,我这里有示范性的代码,你可以看看,协议栈一旦有了完整的网络协议会提供免费版本的
void UDPRecv(MEM_PCB XDATA *pMem, BYTE NetIfNo) REENTRANT
{
UDP_SOCKET XDATA *pUCB;
UDP_HEAD XDATA *pUdpHead = (UDP_HEAD XDATA *)(pIPHead + IPHeadLen);//计算UDP首地址
#ifdef Little_End
WORD UdpTotalLen = ntohs(pUdpHead->UDPTotalLen);//计算UDP总长度
#else
WORD UdpTotalLen = pUdpHead->UDPTotalLen;
#endif
#if UDP_CHECKSUM_EN == 1
if (TCP_UDPCheckSum(pIPHead, UdpTotalLen) != 0)//UDP效验
{
MemFree(pMem);
return;
}
#endif
if (pUCBList != NULL)//若UDPsocket链表不为0
{
pUCB = pUCBList;//搜索链表,找对应socket
do
{
if (pUCB->RemoteIP == pIPHead->SourIP)
if (pUCB->SinIP == pIPHead->DistIP)
if (pUCB->RemotePort == pUdpHead->SourPort)
if (pUCB->SinPort == pUdpHead->DistPort)
{
pUCBList = pUCB;
goto UDP_Process;
}
pUCB = pUCB->pNext;
}
while (pUCB != pUCBList);
}
ICMPUnarrival(pMem, ICMP_CODE_PORT_UNARRIVAL);//若未找到,返回icmp
MemFree(pMem);
return;
UDP_Process://UDP进程,根据端口号分支
switch (pUdpHead->SourPort)
{
case DHCP_CLIENT_PORT://DHCP
break;
case DHCP_SERVES_PORT://DHCP
break;
default:
pUCB->UDPDataRecv((BYTE XDATA *)pUdpHead + UDP_HEAD_LEN, UdpTotalLen - UDP_HEAD_LEN);//无特点含义端口的数据接收
break;
}
MemFree(pMem); //释放内存块
}
void UDPSend(MEM_PCB XDATA *pMem, UDP_SOCKET XDATA *pUCB) REENTRANT
{
UDP_HEAD XDATA *pUdpHead;
pMem->UsedSize += UDP_HEAD_LEN;//添加要发送的数据数目
//以下添加UDP报头
pUdpHead = (UDP_HEAD XDATA *)(POINT_IP(pMem->MemAddr) + IP_MIN_HEAD_LEN);
pUdpHead->CheckSum = 0;
#ifdef Little_End
pUdpHead->SourPort = ntohs(pUCB->SinPort);
pUdpHead->DistPort = ntohs(pUCB->RemotePort);
pUdpHead->UDPTotalLen = ntohs(pMem->UsedSize);
pUdpHead->CheckSum = ntohs(TCP_UDPCheckSum(pIPHead, pMem->UsedSize));
#else
pUdpHead->SourPort = pUCB->SinPort;
pUdpHead->DistPort = pUCB->RemotePort;
pUdpHead->UDPTotalLen = pMem->UsedSize;
pUdpHead->CheckSum = TCP_UDPCheckSum(pIPHead, pMem->UsedSize);
#endif
IPSend(pMem, pUCB->RemoteIP, IP_PCOL_UDP);//转到IP层发送
} 答 11: 谢谢eleven11你用过SNMP协议吗,能不能指导我一下,谢谢! 答 12: 我花了很大的时间完善zlip现在已经移植到ARM7上了,在修改原来的代码基础上加了udp嵌套口,加上了ping ,加上了基于udp的dgcp,telnet,加上了http服务器,以及cgi程序。还有smtp和pop3协议,完全可以收发电子邮件了。我看了周立功的以太网络产品,上面的功能我都分析了,可以实现了。
其实tcp/ip协议没有什么神秘的,有了很好的c语言基础,再分析一下网络协议,最好是查看对应的rfc文档,然后在下栽一个监视软件,花点时间就可以搞定。
提醒想要一直zlip的朋友:
1,注意ads中指针类型的指定。
2,注意前后台程序中后台程序的循环查询等待,要修改。
3,多处htons,htonl的错误,希望有耐心去调试。
4,不修改协议的时候,发送tcp包的时候要注意不要发送大于1460的包。8019吃不消化。
5,一定要修改内存分配部分,使4位对齐,否则必定死机。
6,在包结构中放弃4字节对齐。加上关键字__packed
7,可以缩短时间中断,以提高速度,但一定要修改对应的预定义,使等待充发等时间不变。
答 13: 这里也有朋友在做snmp呀能留个联系方式吗,最近一直在做snmp,苦于没人一起讨论,目前在ZLG的TCP/IP基础上已实现snmp的基本操作,但还在功能上继续完善,而且初步测试性能上也不行,主要原因应该在于TCP/IP协议栈
有过做snmp经验的或是将要做snmp的朋友可以加我MSN:yamoon@ciitz.net
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 |