随着物联网的发展,越来越多的设备需要加入联网的功能,Uip是专为嵌入式设计的轻型开源TCP/IP协议栈,很小的代码尺寸,因为嵌入式控制器资源的限制,所以不是全功能的TCP/IP协议栈,在移植的时候需要注意一些问题。(里面有很多的全局变量需要注意)
1 首先要搞清楚uIP的源码目录结构,分析源码的结构,风格。
2 例程的分析和学习,Uip的源码包里含有很多的例程,像webserver,telnet,等功能如上图所示,注意源码里面很多的宏定义,像定义UIP_APPCALL,自己的应用函数要按照这个规定来定义。
3,doc文件夹里面的参考文档是最重要的参考资料,是最权威的。应多读几遍,至少三遍以上,有一个清晰的理论和脉络,对学习和移植都有很大的帮助。像webserver例程,可以参考移植到自己的工程,做出很漂亮的嵌入式上的webserver。小猿已经在K64上移植成功。是很好的学习参考。移植过程中有问题就去文档中寻找答案。如有跟多的网络方面的问题还要参考RFCxxx文档。
4,移植到裸机和带操作系统的设备上要注意有一些区别。像在Uip上移植modbusTCP/IP到裸机和带freeRTOS的系统上就有区别,需要注意修改代码。
5,举一反三,在研究明白源码,并能简单移植BSP后,可以加入更多的功能,移植更多的源码,例如可以移植freeModbus,使基于Uip的 Modbus TCP/IP跑起来
6,之后还可以研究下其他的开源协议栈,像LwIp,比uip复杂一些,功能多一些。
最后我们要感谢这些设计出开源协议栈可以供我们学习和使用的前辈们。