FuIP协议栈,用于单片机接入互联网的TCP/IP协议,第一版开发过程,一路走来的确不容易

博主介绍了在 lwIP 和 uC/IP 不适合8位单片机系统的情况下,决定开发自己的FuIP协议栈,该协议栈适用于TCP/IP通信简单的设备,注重易用性和注释,以帮助单片机爱好者理解。首个版本v1.2已发布,占用资源较小,可兼容ENC28J60以太网控制器。博主提供了详细的学习资源和交流平台,计划在后续版本中加入HTTP协议支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        2013年6月毕业以来,都快一年了,真的好快,在怀旧中度过了这么长却短暂的时间。我想有过类似经历的不在少数。去年的时候特别想回到学校的感觉,于是元旦的时候趁着小学同学林同学结婚,然后就杀回了大武汉。还有几个童鞋在读研,以及几个熟知的学弟们组建的力创实验室。很好,他们都进行的很到位,我也跟老丁聊了好一会,说了感觉释然了许多。
       到十月份的时候,想开始进入状态做点事情,在校期间作了许多单片机的东西,涉及51 AVR STM32其实就发现了一切都是相同的,01的组合,只是说不通的指令集,架构哈佛,冯诺依·曼,不过对于我们一般不了解也不会影响使用,编译器都帮你解决好了。
      写程序多了,写博客老是按 “Tab”,晕。现在触及过VB /C/C++/LAVVIEW/PHP/ASP/html/ 昨天的时候接触Android ,准备做手机客户端用来匹配使用。大致看了下,都还好,有之前的程序基础,其实语言大多是语法有点区别,思想都是一样的。上手应该会比较快。
 
      好了,不废话了。由于以上经历,所以特别想做远程控制。通过手机电脑控制设备多好玩啊。后来买了最广泛使用的ENC28J60模块,其实资料不一定多,都是官方的一个例子。不过简单的调整就能使用。那关于TCP/IP协议栈这一块,网上目前较为著名的免费协议栈有:

lwIP(Light weight TCP/IP Stack)——支持的协议比较完整,一般需要多任务环境支持,代码占用ROM>40KB,不适合8位机系统,没有完整的应用文档;uC/IP(TCP/IP stack for uC/OS)—基于uC/OS的任务管理,接口较复杂,没有说明文档。所以使用最广泛的就是UIP协议栈了,我也接触过,但是资料大多数是英文的,也有翻译比较生硬,同时对于不了解TCP/IP通信的童鞋来说一头雾水,我看了半天没看明白。用于大家一般用于控制设备,通信单一,数据量不大,uip源码太庞大,脉络也不一定清晰,至少对于不了解通信机制的人来说。

       所以我决定自己写一个专门用于单片机爱好者使用的协议栈,着手两个月研究《TCP/IP详解》,全部手绘了一下ARP IP UDP TCP ICMP常用模块,仔细理解了这些东西,第一个公开版本v1.2.但不完善,也会有bug。但做到了最初的想法,只需要你会51单片机,基本所有的地方都有注释,方便大家了解相关代码,你就会使用电脑,手机控制单片机了。真的只有这么简单。详见www.fuhome.net/bbs/资料我会经常完善的。欢迎爱好者一起交流。

     

/********************************************************************/ 本程序仅供学习参考,未经作者允许,用于任何商业用途 FuIP专为单片机而定制的TCP/IP协议栈,适用于任何8,16,32位单片机 技术论坛:www.fuhome.net/bbs/ FuIP用于,客户端,服务端,亦可接入fuhome.net 平台进行远程控制 版本:v2.1 2014年10月15日 龙剑奋斗 定期更新,敬请关注——开放,交流,深入,进步 Copyright fuhome.net 未来之家 实验室,让科技融入生活 /********************************************************************/ 键人是从51学习过来的,充分考虑了8位 16位 32位单片机平台特性,采用最易移植写法,因此特别适合任何有单片机基础的网友轻松控制家用电器等,其他扩展fuhome.net 平台会逐步完善。 V1.2版本支持与特性: 1,支持ARP请求、应答(获取目的IP的MAC) 2,支持ICMP_Ping请求,应答(ping命令) 3,支持TCP主动连接,断开,被动连接,断开,数据发送 4,支持UDP发送,接收数据 V1.3 改写了命令识别写法,使用更加简单,效率提高了。(网友yht7891984提出 ) v2.0 更新提示 1、由于单片机RAM完全够用,为了用来方便接入互联网,接收缓冲再与发送缓冲公用 2、修复TCP连接过程的一些问题,更加兼容同主机的数据格式。 3、增加了访问外网主机的功能,完善了TCP连接协议,这一点是重大改变。 4、命令识别,发送采用特殊函数,提升了执行效率。 (本demo直接下载到单片机,默认访问百度首页,可以从串口看到数据。 v2.1 更新日志 1、修复了ARP回应bug(网友林海雪原提出) 2、对于TCP/UDP数据再限制于偶数长度了,奇数偶数均可。 PS.利用fuhome.net网站平台,互联网(电脑,手机)控制单片机,详情fuhome.net/bbs/演示视频教程) 灰常简单,目前实现了远程控制(手机APP和web网页控制,并且带返回信息),传感器数据上传显示,众多爱好者一起在努力开发更多好玩的有趣的扩展 IP采用固定IP, 本机IP:192.168.1.150 默认网关是家庭常用的:192.168.1.1 如果家里的路由器网关是其他如:192.168.0.1,请自行修改网关IP、本机IP 内存分配机制: 以太网首部: EN_Head[14] IP首部: IP_Head[20] UDP伪首部: UDP_False[12] UDP首部: UDP_Head[8] TCP伪首部: TCP_False[12] TCP首部: TCP_Head[20] ARP数据: ARP_Data[28] ICMP数据: ICMP[40] 发送数据缓冲,DATA数据: DATA[200](键人默认长度200,可改) 接收包缓冲(包含ETHERNET头,IP头,TCP/UDP首部) Re_DATA[200](默认长度200,可改,但是为了接收,长度至少TCP>=54,UDP>=42) (本demo占用RAM大约570Byte如果RAM有限可以合并一个使用,减少到360Byte左右,还是要看缓冲你的设定值 因为收发同时发生)
/********************************************************************/ 本程序仅供学习参考,未经作者允许,用于任何商业用途 FuIP专为单片机而定制的TCP/IP协议栈,适用于任何8,16,32位单片机 技术论坛:www.fuhome.net/bbs/ FuIP用于,客户端,服务端,亦可接入fuhome.net 平台进行远程控制 版本:v2.0 2014年6月29日 龙剑奋斗 定期更新,敬请关注——开放,交流,深入,进步 Copyright fuhome.net 未来之家 实验室,让科技融入生活 /********************************************************************/ 键人是从51学习过来的,充分考虑了8位 16位 32位单片机平台特性,采用最易移植写法,因此特别适合任何有单片机基础的网友轻松控制家用电器等,其他扩展fuhome.net 平台会逐步完善。 V1.2版本支持与特性: 1,支持ARP请求、应答(获取目的IP的MAC) 2,支持ICMP_Ping请求,应答(ping命令) 3,支持TCP主动连接,断开,被动连接,断开,数据发送 4,支持UDP发送,接收数据 V1.3 改写了命令识别写法,使用更加简单,效率提高了。 v2.0 更新提示 1、由于单片机RAM完全够用,为了用来方便接入互联网,接收缓冲再与发送缓冲公用 2、修复TCP连接过程的一些问题,更加兼容同主机的数据格式。 3、增加了访问外网主机的功能,完善了TCP连接协议,这一点是重大改变。 4、命令识别,发送采用特殊函数,提升了执行效率。 (本demo直接下载到单片机,默认访问百度首页,可以从串口看到数据。 PS:已经花了三天时间,实现了利用fuhome网站平台,互联网(电脑,手机)控制单片机,详情发布演示视频) IP采用固定IP, 本机IP:192.168.1.150 子网掩码:255.255.255.0 默认网关是家庭常用的:192.168.1.1 如果家里的路由器网关是其他如:192.168.0.1,请自行修改网关IP、本机IP,子网掩码一般改。 内存分配机制: 以太网首部: EN_Head[14] IP首部: IP_Head[20] UDP伪首部: UDP_False[12] UDP首部: UDP_Head[8] TCP伪首部: TCP_False[12] TCP首部: TCP_Head[20] ARP数据: ARP_Data[28] ICMP数据: ICMP[40] 发送数据缓冲,DATA数据: DATA[200](键人默认长度200,可改)注:长度为偶数 接收包缓冲(包含ETHERNET头,IP头,TCP/UDP首部) Re_DATA数据: Re_DATA[200](键人默认长度200,可改,接收TCP>=54,UDP>=42)注:长度为偶数
/********************************************************************/ 本程序仅供学习参考,未经作者允许,用于任何商业用途 FuIP专为单片机而定制的TCP/IP协议栈,适用于任何8,16,32位单片机 技术论坛:www.fuhome.net/bbs/ FuIP用于,客户端,服务端,亦可接入fuhome.net 平台进行远程控制 版本:v2.2 2014年12月5日 龙剑奋斗 定期更新,敬请关注——开放,交流,深入,进步 Copyright fuhome.net 未来之家 实验室,让科技融入生活 /********************************************************************/ 键人是从51学习过来的,充分考虑了8位 16位 32位单片机平台特性,采用最易移植写法,因此特别适合任何有单片机基础的网友轻松控制家用电器等,其他扩展fuhome.net 平台会逐步完善。 V1.2版本支持与特性: 1,支持ARP请求、应答(获取目的IP的MAC) 2,支持ICMP_Ping请求,应答(ping命令) 3,支持TCP主动连接,断开,被动连接,断开,数据发送 4,支持UDP发送,接收数据 V1.3 改写了命令识别写法,使用更加简单,效率提高了。(网友yht7891984提出 ) v2.0 更新提示 1、由于单片机RAM完全够用,为了用来方便接入互联网,接收缓冲再与发送缓冲公用 2、修复TCP连接过程的一些问题,更加兼容同主机的数据格式。 3、增加了访问外网主机的功能,完善了TCP连接协议,这一点是重大改变。 4、命令识别,发送采用特殊函数,提升了执行效率。 (本demo直接下载到单片机,默认访问百度首页,可以从串口看到数据。 v2.1 更新日志 1、修复了ARP回应bug(网友林海雪原提出) 2、对于TCP/UDP数据再限制于偶数长度了,奇数偶数均可。 v2.2 更新日志 1、修复了TCP发送检验bug,数据传输bug 2、结合实用,及网友建议,特此做了调整。TCP仅支持被动连接,若需要单片机主动连接(见2.1版本可以访问百度网页) 3、增加了web服务功能,可以实现用网页发送消息给单片机 4、UDP仍然支持主动,被动模式。 5、合并发送接收缓冲区,统一DATA[ ]数组。默认长度为255字节。 PS.利用fuhome.net网站平台,互联网(电脑,手机)控制单片机,详情fuhome.net/bbs/演示视频教程) 灰常简单,目前实现了远程控制(手机APP和web网页控制,并且带返回信息),传感器数据上传显示,众多爱好者一起在努力开发更多好玩的有趣的扩展
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值