
1.1 当前主流的嵌入式网络协议栈 当前主流的小型嵌入式网络协议栈主要有:uIP,LwIP,embOS/IP,uC/TCP-IP,FreeRTOS-TCP,Cyclone TCP,RL-TCPnet和ThreadX NetXDUO。当然,还有其它的网络协议栈,只是不被我们所知,这里把前面说到的其中几款协议栈进行简单的介绍。另外,物联网系统Contiki和Mbed OS也进行了介绍。% ^4 b7 C$ i/ v% ~# R 6 |& d8 r1 o2 t# z# O 1.2 uIP网络协议栈介绍 uIP主要用于8位和16位微控制器的小型嵌入式网络协议栈。最初,uIP 网络协议栈由瑞典计算机科学院的Adam Dunkels 开发,其源代码由C 语言编写,并完全开源。% N8 q# G& f+ L G0 S % v0 w+ \8 _6 o0 g uIP协议栈最大的优势就是短小精悍,Flash和RAM需求小,去掉了完整的 TCP/IP 中不常用的功能,简化了通讯流程,但保留了网络通信必须使用的协议,重点放在了 IP/TCP/ICMP/UDP/ARP 这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。9 R- l' A, ^% W) J8 k# n $ G6 a: q( T u* K: @ 1.3 LwIP网协议栈介绍 LwIP也是瑞典计算机科学院的Adam Dunkels 开发的开源TCP/IP协议栈。* z/ W& K* v+ f! J, n LwIP属于小型嵌入式网络协议栈,有无操作系统的支持都可以运行。LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40KB左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。LwIP协议栈主要关注的是怎样减少内存的使用和代码的大小,这样就可以让LwIP适用于资源有限的小型平台。9 L) L( j8 I" J' w; ^/ E* J ! Y" H8 s* `7 J6 a" r LwIP的特点如下:) }0 j. {$ e! \& i) d 支持的协议 IP, ICMP, UDP, TCP, IGMP, ARP, PPPoS, PPPoE, DHCP client, DNS client, AutoIP/APIPA (Zeroconf), SNMP agent。4 ~0 X4 Y- V# K% X . W' u0 l- O# L1 J- R7 R m API接口函数 ; Q4 v b2 a# k" Z, @# V) s 提供专门的内部回调接口(Raw API),用于提高应用程序性能以及可选择的BSD Socket API (在多线程情况下使用) 。) ^6 P% N: N U1 t; M4 Z 扩展功能 通过多个网络接口进行IP转发,TCP拥塞控制,RTT估算和快速恢复/快速重传机制。2 m8 D4 F/ V5 G; b7 B4 P+ ] : K$ W L) c( t( A8 i8 f( [! D6 c 应用层的支持) u( e1 p. G S4 r" K3 h: U4 o" S HTTP server, SNTP client, SMTP client, ping, NetBIOS nameserver。 1.4 Contiki物联网系统介绍" [! x) }& h# a: } Contiki的内核以及大部分的核心功能也是由瑞典计算机科学院的Adam Dunkels开发。9 a, N$ s& r* X0 {0 X" _" \) M 5 X" d( H9 Z1 r0 W/ Q; w Contiki是一个小型的,开源的,易移植的多任务系统。可用于内存受限的网络系统,支持在各种平台上运行。Contiki最强大的还是它的网络功能,提供了强大的低功耗互联网通信,Contiki支持完整标准的IPv6和IPv4以及近几年新出的低功耗无线标准:6lowpan,RPL,CoAP。 如果使用Contik 的ContikiMAC和可休眠的路由器功能,即使是无线路由器也可以使用电池供电。( p# E f+ f8 b, V& f/ L* m, D 根据Contiki官方的说明,当前的定位就是:开源的物联网系统,将低成本、低功耗的设备连接到网络,通过强劲的网络功能来构建复杂的无线网络。# @4 Z! I/ }1 C2 G 作者Adam Dunkels" f+ Z' _! d+ R @6 Q6 \ 由前面的介绍,我们了解到uIP,LwIP和Contiki的作者都是他,所以我们有必要了解下。$ W- R8 S$ G# B) q. O3 m1 E $ c* ~% S/ ?# `/ I 1.5 embOS/IP网络协议栈介绍 embOS/IP是SEGGER出品的高性能小型网络协议栈,已经针对速度、功能和占用空间进行优化,纯C编写,几乎可以用于任何CPU上。它是作为embOS实时操作系统中间件存在的。 embOS/IP的功能特性如下:4 {- J& Y1 H6 q& b, \4 K9 w 1 ]4 }& ^4 S, L$ h 含有类似ANSI C 中socket.h的头文件,如果一个应用程序是用标准C Socket编写的,那么使用embOS/IP将极其方便移植。 高性能。 代码容量小。* G9 w( v! F L/ S6 o7 Q% @8 M 简单易用。: o& @+ M6 r; T: k 无需配置。 用于多任务环境的话,可以跟任何RTOS一起使用。 支持超快性能的零数据复制。 标准的Socket接口。 支持原始Socket。 所有函数都有非阻塞版本。 连接数量仅受内存容量限制。 数据包重组。 驱动代码支持大部分常见的设备。1 m( }6 W* ^9 R/ p$ ^ 运行时可配置。4 i$ k# ]2 E+ Y1 x) R 支持PPP/PPPOE。" c- {9 e- `6 ~4 U* r2 }! q$ e 支持各种上层协议。 支持大部分常用MCU自带MAC和外置MAC。. a/ o8 q. p8 ^ 2 x1 D5 O9 W8 Z/ e: a' V. l% n& q ( ?! H$ B" W2 Y 具体支持协议和功能如下:- ]3 [ r9 ~$ d% C. d( E$ h ![]() 5 A/ m6 g, g/ |: F 1.6 uC/TCP-IP网络协议栈介绍5 u+ T0 V) z$ u* e1 R uC/TCP-IP是Micrium发布的小型协议栈,这个协议栈不像uCOS那么多人去使用,因为源码是不开源的,所以相比uCOS来说,研究uC/TCP-IP的人非常少。 l7 S, E. V- t/ q- y3 c5 R8 s' c 不过从2017年开始,Micrium推出了傻瓜式图形开发平台Platform Builder,打算全面推广uCOS及其所有中间件,以后应该会有不少人去用。5 L3 J, Y0 O2 q* R! d9 y: b uC/TCP-IP支持的功能如下:6 K g1 F4 M' D( p. j % V z$ ~+ v: H, N ![]() 更多uC/TCP-IP相关的知识可以上其官网。另外,uCTCP/TCP-IP也是收费的。' K& I* f$ i) \2 | 1.7 Mbed OS物联网系统介绍1 J/ m0 J- O& { Mbed OS是ARM官方这两年新推出的,发展迅猛,是一种专为物联网 (IoT) 中的设备而设计的开源嵌入式操作系统。该操作系统非常适合涉及智能城市、智能家庭和穿戴式设备等领域的应用程序。 3 t2 C9 V# ^. A- v& {9 o Mbed操作系统在微控制器上属于Mbed IoT设备的客户端部分,专为Mbed设备连接器、Mbed设备服务器和 Mbed客户端配合使用而设计。总的来说,这一平台提供了全面的 IoT 解决方案,从驱动、开发环境、软件、开发工具到物联网云端的一条龙服务,以便能够大规模创建和部署IoT 设备。3 B3 i# E9 T d$ o O * Y6 r' M6 Y+ F5 u) X4 B) ~ Mbed支持以太网,WiFi,IPv6,6LoWPAN和Bluetooth Low Energy (BLE)。6 s8 N5 _- W$ {1 m9 `5 B; |2 o 1.8 FreeRTOS-TCP网络协议栈介绍/ ]3 n- [, @$ Q+ u7 } ~ FreeRTOS-TCP网络协议栈是FreeRTOS官方在2016年年初发布的,也是开源免费的,有兴趣可以研究下 当前支持的功能如下:1 F# l% E9 ~$ f+ L0 d7 n; o. H ![]() FreeRTOS-TCP的手册在网站的左侧列表上,比LwIP的文档好很多。 ! r1 }0 g% M7 e$ `7 N, F) ` ![]() ! k, k6 ]/ R1 c5 F 1.9 Cyclone TCP网络协议栈介绍) D/ V- B. a+ `) t4 S% e3 \ Cyclone TCP是开源的,功能齐全,整体框架如下: ( Q6 X' h) D2 X; B9 W ![]() 支持的安全连接方式:! @5 b4 y2 ?3 m6 h' m ![]() 各种加密应有尽有: ![]() 一般我们可以使用开源免费版的GPLv2授权方式:. A3 v. N4 L0 h* u; ]- X ) O* J0 A) g f D( l' ?( v ![]() ! c% p! y) U4 g 1.10 RL-TCPnet网络协议栈介绍 RL-TCPnet是KEIL发布的,功能也比较全面,而且抗网络攻击通过 Achilles Level 1认证。 ![]() 1.11 ThreadX NetXDUO网络协议栈+ z6 [/ W- [/ @" m ThreadX的网络协议栈对其它网络协议栈几乎是碾压性优势。一张图,几乎涵盖了我们日常项目大部分应用:, d# _$ C( }4 j* [ V; e2 Q; o ![]() 各个行业的安全认证:# r+ Z+ |% J$ D* {, n ![]() % o5 q6 f/ y7 p+ S1 s4 e" m 物联网协议方向安全认证: m: c. [5 E( J ( C% ?9 u1 k1 n Z5 Z, r. k ![]() 加密库也做了认证:& E7 k2 H1 c; x5 t ![]() % }8 j* _; o2 o% { 1.12 总结 本章主要为大家讲解了几款主流的嵌入式网络协议栈,让大家对当前的小型嵌入式网络协议栈有一个整体的了解,关于这几款嵌入式协议栈的更多知识可以上其官网进行了解和学习。2 z' {# W% h/ b& X / z; V0 J) m6 P |
【2025·STM32峰会】GUI解决方案实训分享4-使用MVP架构从硬件外设读取数据并显示到图形界面、从图形界面发送指令控制硬件外设
【2025·STM32峰会】GUI解决方案实训分享3-搭建空白TouchGFX例程并实现简单的功能(含硬件部分的串口打印)
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
【2025·STM32峰会】+TouchGFX实现动态进度显示以及界面切换
【2025·STM32峰会】+使用TouchGFX快速创建GUI
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
实战经验 | 关于STM32H7使用LL库生成ADC代码工作异常问题说明
实战经验 | 关于STM32H745的MC SDK电机控制工程问题的解决办法
【H745I GUI】1.GreenHouse 灯光控制
【Wio Lite AI视觉开发套件】+移植TensorFlow Lite