嵌入式网络协议栈
- 现在的智能设备,几乎都需要具备联网功能;这就需要网路协议栈,下面介绍几种常用的网络协议栈;
LWIP 协议栈
- 开源 TCP/IP 协议栈,专门为嵌入式系统设计,具有低内存占用和高效率的特点;
- lwIP 是 TCP/IP 协议的一个小型独立实现,重点是减少了 RAM 的使用,同时仍然具有全规模的 TCP;这使得 lwIP 适用于具有 数十KB 空闲 RAM 和 大约 40KB 代码 ROM 空间的嵌入式系统;
- 具有 TCP、UDP、IP、ICMP、ARP、DNS、SNMP、DHCP 等协议的支持,易于移植到各种操作系统和处理器体系结构上;应用比较广泛;
uIP 协议栈
- uIP 协议栈是专为 8/16 位的嵌入式微处理器设计的小型 TCP/IP 协议栈;
- 去掉了 TCP/IP 一些不常用的功能,采用 BSD 授权,遵循 RFC 标准,全由 C语言编写;
- 以库函数的形式提供给嵌入式 Internet 应用开发人员,并采用了一种基于事件驱动的程序模型(就是不断地去轮询),并且还不使用动态内存,都是共用同一个缓存区;
- 基本上不存在数据的 copy,从而大大减少了代码容量和 RAM 的占用量,在单片机中Flash 和 RAM都占用比较小;
- 在51单片机上运行也很丝滑;
FreeRTOS-Plus-TCP
- 适用于 FreeRTOS 的开源、可扩展和线程安全 TCP/IP 协议栈;
- 提供了一个熟悉的基于标准 Berkeley 套接字的接口,简单易用,便于快速学习;
- 功能和 RAM 占用空间完全可扩展,使 FreeRTOS-Plus-TCP 既适用于较小的低吞吐量微控制器,也适用于较大的高吞吐量微处理器;
- 具有的功能如下:
- Berkeley 套接字 API
- 支持 IPv4、IPv6、多个网络接口、多个网络端点;
- 可选支持 TCP 滑动窗口
- 完全可重入和线程安全 API
- 包括 ARP、DHCP、DNS、LLMNR、NBNS、RA、ND、ICMP、ICMPv6;
- 免费 ARP
- 静态、DHCP、DHCPv6、RA 和 自动 IP 地址分配;
- 也可用作 UDP 堆栈
- 可选回调接口
- 可选分段传出数据包
RL_TCP net
- RL-TCPnet 组件来自于 RL-ARM 库,而 RL-RAM 又是 Keil MDK 自来的实时运行库;
- 该堆栈旨在减少内存使用量和代码大小,这使得它适用于资源有限的嵌入式系统设备;
- RL-TCPnet 库是 ARM7、ARM9、Cortex-M3 等软件架构的底层实现软件;
- 用户应用程序使用标准 C 结构编写,并且使用 ARM 编译器编译,并且其中已经集成了web 服务器、SMTP 发客户端、SNMP Agent、DNS解析等高层应用;