共2条
1/1 1 跳转至页
ZLG,TCP,IP,Bug ZLG_TCP/IP Bug很多,哎,都进来看看!!!
问
我就是上次说做PhoenixOS操作系统的
前几天无聊买了2200的开发板,第一个看的程序就是ZLG_TCP/IP,然后将他移植到了PhoenixOS操作系统上了,所有任务在一个优先级上,按SCHED_RR调度,效率比uCOS是高的多,
后来我改了代码,初始化了外部中断2(高电平方式,不能采用上升沿),和8019的中断控制部分,(在第零页和第一页的相关寄存器上,)采用中断方式,效率提高到:PING命令的反应时间在1ms以内。在我的操作系统上使用OSKill(),和OSSignal()方式接收中断,(POSIX接口),效率至少比ZLG给的示范高出100倍,
再说说BUG,哎!无奈,遍地都是,大部分导致效率低下,举个例子:大家看看 ARP.C 中 Arp_Request()哎!简直是!这种错误也犯!类似的还有很多
hanhui03@163.com 可以联系到我 答 1: 难怪zlg的人说,开发板肯定不好用,难怪zlg的销售人说,开发板tcp肯定不好用,要商用的最好买他们的tcp、ip的商业模块那才行。 答 2: 其实我认为他们提供lwIP移植比他们提供zlg/ip好多了 答 3: 写一个tcp是很麻烦的最麻烦的就是tcp的流控制了,实现是很麻烦的,比如说接收到的一个tcp报的seq正好和上次接收到的一样,也许很多人就会丢弃这个包,但也有可能这个包是新旧数据的组合,应该判断是不是上次接收的一个副本,如果你丢弃这个包,之后发送ack就可能一直再请求这个包,这样就通信不了,因为你并不知道对方的tcp协议栈是怎么工作的,所以要考虑很多
一个优秀的tcp的编写是很麻烦的,难道绝对不亚于写一个os,楼主就不要奢求很多了,你想想你的2200板子才买了多少钱啊 答 4: 另外LPC的ARM7我感觉不大适合用中断实现tcp/IP因为中断电平也要时间的,你PING在1MS内,这并不说明什么,这个是第一个接收到报的反映时间,但不能反映处理时间,如果用中断,假如8019 100%运作,那么1s内就会发送1000个左右的 1K大小的包,相当于1MS发送或接收一个包,每个包都会产生中断电平,这个电平判断也要时间的, 答 5: 用uip ping的反应时间<0.4ms,linux下测试 答 6: 完全可以!!! 首先谢谢大家顶贴!!!!!
嗨 eleven11
如果原封不动ZLG/IP 上升沿根本不可能,可是如果你将 ZLG/IP 通过关中断来互斥8019的算法,改为用互斥信号量,就极大的缩短了关中断的时间,我的PhoenixOS本身用的就是新型三坐标调度算法,(关中断时间短)这样就保证了,如果缓冲区足够多,就可以实时地接收所有8019中断,和包数据,这个我是试过的,用我改进后的TCP/IP协议栈,大概每10ms左右向8019发一个包,可能是icmp udp 或是 tcp ,结果一切工作正常,(没有丢包现象,我把以太网接收,和IP_PROCESS())写成了两个线程,这样以太网数据报基本上是随到随收!!!
前几天无聊买了2200的开发板,第一个看的程序就是ZLG_TCP/IP,然后将他移植到了PhoenixOS操作系统上了,所有任务在一个优先级上,按SCHED_RR调度,效率比uCOS是高的多,
后来我改了代码,初始化了外部中断2(高电平方式,不能采用上升沿),和8019的中断控制部分,(在第零页和第一页的相关寄存器上,)采用中断方式,效率提高到:PING命令的反应时间在1ms以内。在我的操作系统上使用OSKill(),和OSSignal()方式接收中断,(POSIX接口),效率至少比ZLG给的示范高出100倍,
再说说BUG,哎!无奈,遍地都是,大部分导致效率低下,举个例子:大家看看 ARP.C 中 Arp_Request()哎!简直是!这种错误也犯!类似的还有很多
hanhui03@163.com 可以联系到我 答 1: 难怪zlg的人说,开发板肯定不好用,难怪zlg的销售人说,开发板tcp肯定不好用,要商用的最好买他们的tcp、ip的商业模块那才行。 答 2: 其实我认为他们提供lwIP移植比他们提供zlg/ip好多了 答 3: 写一个tcp是很麻烦的最麻烦的就是tcp的流控制了,实现是很麻烦的,比如说接收到的一个tcp报的seq正好和上次接收到的一样,也许很多人就会丢弃这个包,但也有可能这个包是新旧数据的组合,应该判断是不是上次接收的一个副本,如果你丢弃这个包,之后发送ack就可能一直再请求这个包,这样就通信不了,因为你并不知道对方的tcp协议栈是怎么工作的,所以要考虑很多
一个优秀的tcp的编写是很麻烦的,难道绝对不亚于写一个os,楼主就不要奢求很多了,你想想你的2200板子才买了多少钱啊 答 4: 另外LPC的ARM7我感觉不大适合用中断实现tcp/IP因为中断电平也要时间的,你PING在1MS内,这并不说明什么,这个是第一个接收到报的反映时间,但不能反映处理时间,如果用中断,假如8019 100%运作,那么1s内就会发送1000个左右的 1K大小的包,相当于1MS发送或接收一个包,每个包都会产生中断电平,这个电平判断也要时间的, 答 5: 用uip ping的反应时间<0.4ms,linux下测试 答 6: 完全可以!!! 首先谢谢大家顶贴!!!!!
嗨 eleven11
如果原封不动ZLG/IP 上升沿根本不可能,可是如果你将 ZLG/IP 通过关中断来互斥8019的算法,改为用互斥信号量,就极大的缩短了关中断的时间,我的PhoenixOS本身用的就是新型三坐标调度算法,(关中断时间短)这样就保证了,如果缓冲区足够多,就可以实时地接收所有8019中断,和包数据,这个我是试过的,用我改进后的TCP/IP协议栈,大概每10ms左右向8019发一个包,可能是icmp udp 或是 tcp ,结果一切工作正常,(没有丢包现象,我把以太网接收,和IP_PROCESS())写成了两个线程,这样以太网数据报基本上是随到随收!!!
共2条
1/1 1 跳转至页
回复
| 有奖活动 | |
|---|---|
| 这个春节你犒赏自己什么了?分享你的故事,有奖征集 | |
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
我要赚赏金打赏帖 |
|
|---|---|
| 【S32K3XX】SWT 模块使用被打赏¥22元 | |
| 【分享开发笔记,赚取280元手持便携数字示波器】32位linux内核内存映射896的理解被打赏¥14元 | |
| AG32VH407开发板例程体系的构成与使用方法被打赏¥20元 | |
| 【S32K3XX】SEMA42 模块使用被打赏¥26元 | |
| 【S32K3XX】XRDC 功能使用被打赏¥22元 | |
| 【分享开发笔记,赚取280元手持便携数字示波器】8051使用keil编译的程序移动心得被打赏¥21元 | |
| 【S32K3XX】HSE 密钥管理被打赏¥17元 | |
| 【S32K3XX】Standby RAM的初始化流程被打赏¥18元 | |
| Gravity:中英文语音合成模块V2.0及其串口控制被打赏¥24元 | |
| 全彩色度变化图的绘制被打赏¥27元 | |
我要赚赏金
