现在的位置: 首页 > 综合 > 正文

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

2017年01月22日 ⁄ 综合 ⁄ 共 2170字 ⁄ 字号 评论关闭
        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/资料我会经常完善的。欢迎爱好者一起交流。

      RAM占用也不是一味的节省,一个是方便想研究源码的童鞋了解每个模块,还一个是现在单片机STC随便都可以达到1K RAM 毫无压力。以太网控制器ENC28J60 SPI接口,大家可用别的网卡模块,只要函数接入写好就可以很简单的移植了。

 

v1.2 占用416 Byte左右(其中包括接收缓存150) ROM不到8K  如果大家要节省,可以省去主动ping tcp  udp arp 看你们的需要,不过也没啥,不需要研究就不用管,其实裁剪之后一般的STC89C52都可以正常运行。

关于下载可以到我的CSDN中或者论坛里面,里面会上传视频教程,第一次录,也不知道大家听得懂么,哈哈,因为很多字发音都紧张导致拼音错误O(∩_∩)O~,我会努力的。下版本准备加入http部分协议,用于网页控制,其实手机客户端更方便,移动设备替代电脑的应用越来越多,以后PC就是开发工具而已了吧,啊哦。多交流啊。我的QQ:442853373

 
 
-------------------------------------------------------------广告线,敢不敢不割-----------------------------------------------------------------------------------
 
键人是从51学习过来的,充分考虑了8位 16位 32位单片机平台特性,采用最易移植写法,因此特别适合任何有单片机基础的网友轻松控制家用电器等,其他扩展fuhome.net 平台会逐步完善。



V1.2版本支持与特性:
1,支持ARP请求、应答(获取目的IPMAC
2,支持ICMP_Ping请求,应答(ping命令)
3,支持TCP主动连接,断开,被动连接,断开,数据发送
4,支持UDP发送,接收数据


IP采用固定IP
本机IP192.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[150](键人默认长度150,可改,接收TCP>=54,UDP>=42


PS:现在的人不叫笔者,因为都不用笔了。O(_)O

抱歉!评论已关闭.