w5500 webnet 问题总结

发布于 2020-06-08 23:34:42
看着rt-thread支持的越来越多,ide越来越强大,最近做个小玩意,想着rtt这么方便就搞一下,用stm32f+w5500硬件方案,webnet作为网页服务器进行配置设备,结果这个坑真的深,论坛里很多小伙问这个方案网页跑不起来,里面的回帖无非就是加大内存,按照官方例程等,毫无建设性回答,回答的人是不是维护者不清楚,如果是维护者,真应该反思反思,这种回答太不负责任。

这些坑如下:
1、w5500在rtt的驱动实现,没有实现write的poll的机制,导致web net里的实现,select无法得到网络可写的请求,因此网页根本无法打开,在w5500的中断简单打开send_ok整个都不正常了,看样子要想真正解决这个问题,得把w5500驱动给重写了,官方例子都没有给出这种应用,包括linux里的驱动也没有这么去实现,这个是最大的坑。好不容易跳出这个坑,还有更多坑
2、rtt在2.x版本的时候更新记录里说串口设备支持了posix接口,我就用了下这个,open没问题,要想设置串口波特率时,fcntl不可以,细看了下,rtt的fd里类型,默认都是文件,判断是文件夹的时候修改了类型,压根就没有设备类型的fd,但是好在有网络类型的,因此这个接口实现的不完善。
3、webserver的bug太多了,基本上也就是个摆设,用到cgi已经填坑无数了,比如,
webnet_request_get_query里判断strncmp(request->query_items[index].name, name, strlen(name),当变量a或者b只有一个字符,随便一个以a或者b开头的字符串就可以匹配到.
cgi在火狐打不开,ie可以打开,但是一直转圈圈,webnet_session_set_header长度设置-1,这个时候回复浏览器是没有Content-Length,所以js等返回的文本都正确也无法正常运行,仅限官方例子凑合着可以跑。
webnet_session_write webnet_session_printf 等发送调用send,w5500的send超过长度会反回的,这些都没有检查返回长度,导致部分内容发送不完整,在其他网络上应该也会存在类似问题吧

wbenet里很多需要考虑 的异常都没有做,突然拔了网线就是一场灾难。。。。。。。。
暂时能想到的就这些,应该还有很多小问题,我暂时忽略了,最近搞了一个周,头都大了,我觉得如果最后都搞不定,可能就得回到w5500官方裸奔的方案了,现在占据了超级多的资源,还bug太多,已经远超我当初的预计工作量了。
这些东西就是看上去很美,不能细品,细品就啥也不是,希望官方后续多投入点到精力到代码中来,啥ide不ide的,那都不是决定性的生产力,gcc+vim makefile等等它不香么,代码好用比ide好用更重要,最近开源了threadx了,要去尝试尝试它,不是因为微内核啥,就是想着基础的东西可以稳定点,少折腾,更多的精力放在怎么搞好应用。



查看更多

关注者
0
被浏览
719
4 个回答
Hu_XianShen
Hu_XianShen 2020-06-09
楼主总结的好,顶一下!当时我首选也是W5500,后来改方案了。
思钱想厚
思钱想厚 2020-06-14
Hu_XianShen 发表于 2020-6-9 09:05
楼主总结的好,顶一下!当时我首选也是W5500,后来改方案了。


后来改的啥方案呀,那你硬件做了吗w5500的,我也看到你在其他帖子里问这个的情况好像。
ljf_bxfc
ljf_bxfc 2021-03-04

threadx 是开源了,但他是收费的呀

一路寻梦
一路寻梦 2021-04-15

本人webnet也是用STM32L496+ENC28J60,之前看W5500是硬协议很好,结果....无语了

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览