|
本帖最后由 qllaoda1 于 2013-4-12 09:00 编辑
最近移植了一套Microchip的协议栈到STM32+ENC28J60的系统上。
Microchip为自己的PIC系列单片机和ENC28J60等几款以太网芯片做了一个协议栈。这个协议栈跟uip,lwip之类的协议栈比起来,有几个优势:
1,特别省内存。协议栈充分利用了Microchip以太网芯片片内的RAM来存储各类数据,所以对CPU RAM消耗极小。ENC28J60可以提供4K RAM,而ENC624J600可以提供16K RAM。一套带Web server和两三个 Socket的程序,协议栈消耗的CPU RAM不到500字节,而且并不是以减小MSS为代价,也不像uip那样没有socket缓冲。
2,应用层协议丰富。HTTP,FTP,TFTP,TELNET,SNMP,DDNS,SNTP,SMTP等各类应用层协议都直接在协议栈内支持。其中HTTP还可支持SSL,SNMP可以支持V3,这在裸奔的系统里几乎是没有别的协议栈可以支持的。
3,配置灵活,可以根据需要灵活配置所需功能,简单修改一个config文件即可,而且提供图形化配置工具
4,协议栈不使用动态内存分配,不用担心内存碎片问题。
5,HTTP Server支持类似ASP的方式处理网页中的动态变量,也提供类似CGI的方式。完全支持GET.POST等各种文件操作,支持文件上传,支持web认证,支持SSL。而且支持多种文件方式提供网页文件,可以保存在CPU 代码空间,可以外挂在SPI Flash/EEPROM,也可以使用SD,U盘之类的通用文件系统。使用CPU 代码空间或EEPROM的时候,厂家提供了工具转换网页为C语言代码或EEPROM的镜像文件。工具支持网页源代码压缩,html文件的压缩率可以达到60-70%,可大大节省空间。转换的同时会自动将网页里的动态变量转换成函数框架,用户只需要在这些函数框架内添加处理代码即可。
当然,这个协议栈也有缺点,就是性能较差。这和第一个优点有关:因为很多变量都存在以太网芯片RAM里,而以太网芯片与CPU的接口是SPI,这就大大降低了性能。实测STM32F103+ENC28J60的TCP传输速度,大约每秒100K字节/秒左右,只有lwip的1/3左右,不过这个速度对于大部分网络应用来说基本还是足够了。
部分应用层协议尚未完全移植完成,但是所需的文件都已经在工程里,有兴趣的可以自己尝试。
附上几张网页效果图
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|