uIP开源项目介绍 uIP是专为8位和16位的嵌入式微控制器设计的微型TCP/IP协议栈, 它采用BSD授权(这里可以获得完整的BSD许可证), 具有良好的互操作性, 并遵循RFC标准.
uIP提供了网络通信所必须的协议, 本身代码和占用的内存数都非常少 - uIP的源代码只有几KB, RAM占用仅几百字节. uIP是一个完全由C语言编写的开源软件, 它的文档和源代码可用于商业和非商业用途, 它已经移植到了大部分的8位微控制器, 而且已在很多的嵌入式产品和项目中使用. (比如卫星, Cisco路由器. 查阅Links页面的几个例子) uIP具有如下功能: uIP由瑞典计算机科学学院(网络嵌入式系统小组)的Adam Dunkels开发. uIP的代码大小和RAM占用 下面表格显示了uIP的代码大小和RAM占用. 代码使用gcc 3.3在8位的Atmel AVR架构上编译并使用代码大小优化(-Os). uIP在Atmel AVR平台上的代码大小和RAM占用, 单位字节 总的内存占用将依赖: 分配了多少个TCP链接数, 分配了多少个ARP表项, 分配了多大的包缓冲. 这些在编译时候可以设置. 每一个正在监听的TCP端口增加额外的2个字节内存. 下面是uIP的一个配置实例: 一个正在监听的TCP端口, 10个TCP连接数, 10个ARP表项, 一个400字节大小的包缓冲和一个简单的HTTP服务器. 配置实例 对上图做一点补充, 注意uIP的设计使用了非常少的堆栈内存. uIP的调用视图非常窄, main函数和应用函数之间只有单个函数调用. 大多应用程序使用uIP函数作为C Macro, 因此不需要使用调用栈. uIP文档 uIP文档1.0提供两种格式下载: HTML和PDF(uip-1.0-refman.pdf, 1.4MB, 261页) 发表论文: 1. Adam Dunkels, “Full TCP/IP for 8-Bit Architectures“. In Proceedings of the first international conference on mobile applications, systems and services (MOBISYS 2003), San Francisco, May 2003. 2. Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali. Protothreads: Simplifying Event-Driven Programming of Memory-Constrained Embedded Systems.In Proceedings of the Fourth ACM Conference on Embedded Networked Sensor Systems (SenSys 2006), Boulder, Colorado, USA, November 2006. 3. Adam Dunkels, Juan Alonso, and Thiemo Voigt, “Making TCP/IP Viable for Wireless Sensor Networks“, the First European Workshop on Wireless Sensor Networks (EWSN 2004), work-in-progress session. 平台移植: 快速向导: 移植uIP到其它的平台 实际的TCP/IP代码无需任何修改, 但是目标网络设备的驱动程序(以太网控制器/串口/其它)和实际的系统集成部分(比如, 主控制循环, 当数据到达或定期时钟超时需调用uIP函数)需要重写. 移植步骤: 1. 阅读上面提供的文档. uIP程序下载 相关网站 参考 备注 |