1.1 当前主流的嵌入式网络协议栈 当前主流的小型嵌入式网络协议栈主要有:uIP,LwIP,embOS/IP,uC/TCP-IP,FreeRTOS-TCP,Cyclone TCP,RL-TCPnet和ThreadX NetXDUO。当然,还有其它的网络协议栈,只是不被我们所知,这里把前面说到的其中几款协议栈进行简单的介绍。另外,物联网系统Contiki和Mbed OS也进行了介绍。 " G0 _( ?8 }% j/ I( K) {1 N2 K 1.2 uIP网络协议栈介绍 uIP主要用于8位和16位微控制器的小型嵌入式网络协议栈。最初,uIP 网络协议栈由瑞典计算机科学院的Adam Dunkels 开发,其源代码由C 语言编写,并完全开源。& _1 @4 [- Y! ~1 c% m$ F' g 6 E3 N- L- s- q. `7 D uIP协议栈最大的优势就是短小精悍,Flash和RAM需求小,去掉了完整的 TCP/IP 中不常用的功能,简化了通讯流程,但保留了网络通信必须使用的协议,重点放在了 IP/TCP/ICMP/UDP/ARP 这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。8 E. Z2 U9 Z. O 4 P* Q6 N8 o; g! Q " T9 X5 g2 b! O$ F7 D 1.3 LwIP网协议栈介绍 LwIP也是瑞典计算机科学院的Adam Dunkels 开发的开源TCP/IP协议栈。 * w6 q# S) n: p6 e# f LwIP属于小型嵌入式网络协议栈,有无操作系统的支持都可以运行。LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40KB左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。LwIP协议栈主要关注的是怎样减少内存的使用和代码的大小,这样就可以让LwIP适用于资源有限的小型平台。9 s1 T3 y A8 K- M& k2 t( Q7 K : L! h. N& e0 W6 g+ l+ ] LwIP的特点如下:* C4 Z5 c w4 Q2 a. t$ F7 d ! o: n V9 ?' X W K8 S 支持的协议 IP, ICMP, UDP, TCP, IGMP, ARP, PPPoS, PPPoE, DHCP client, DNS client, AutoIP/APIPA (Zeroconf), SNMP agent。 API接口函数 ' }' P6 `( o% R 提供专门的内部回调接口(Raw API),用于提高应用程序性能以及可选择的BSD Socket API (在多线程情况下使用) 。 1 U3 }; ~+ A" O3 D: I5 d* T 扩展功能4 q6 n; X, W, V& _2 O 通过多个网络接口进行IP转发,TCP拥塞控制,RTT估算和快速恢复/快速重传机制。 应用层的支持3 \( q$ A0 q) p8 E 6 ]; v' a, Y4 u HTTP server, SNTP client, SMTP client, ping, NetBIOS nameserver。 1.4 Contiki物联网系统介绍9 P+ U0 ]3 Y0 _3 ~4 K4 F$ |. { Contiki的内核以及大部分的核心功能也是由瑞典计算机科学院的Adam Dunkels开发。 y" H$ a1 S- B5 Z+ [& H& A $ b2 y5 U. J5 r2 y9 @4 N3 D Contiki是一个小型的,开源的,易移植的多任务系统。可用于内存受限的网络系统,支持在各种平台上运行。Contiki最强大的还是它的网络功能,提供了强大的低功耗互联网通信,Contiki支持完整标准的IPv6和IPv4以及近几年新出的低功耗无线标准:6lowpan,RPL,CoAP。 如果使用Contik 的ContikiMAC和可休眠的路由器功能,即使是无线路由器也可以使用电池供电。 $ K1 Y1 e+ ?, t. r* R 根据Contiki官方的说明,当前的定位就是:开源的物联网系统,将低成本、低功耗的设备连接到网络,通过强劲的网络功能来构建复杂的无线网络。' Q1 |$ \. S3 z6 t. Y; B5 l 7 L3 S* L5 K6 {2 B! a% F 作者Adam Dunkels! g+ h' M. Y% ]# g5 d 由前面的介绍,我们了解到uIP,LwIP和Contiki的作者都是他,所以我们有必要了解下。% H7 F" @8 r+ _* Y; y3 ^( H0 ? 1.5 embOS/IP网络协议栈介绍' |$ x: ^1 D; `6 Q. G8 k5 ~ embOS/IP是SEGGER出品的高性能小型网络协议栈,已经针对速度、功能和占用空间进行优化,纯C编写,几乎可以用于任何CPU上。它是作为embOS实时操作系统中间件存在的。 embOS/IP的功能特性如下:* W5 N! p P) I* ], B 含有类似ANSI C 中socket.h的头文件,如果一个应用程序是用标准C Socket编写的,那么使用embOS/IP将极其方便移植。 高性能。 代码容量小。 简单易用。- Q+ C/ D, ?/ [& g* p 无需配置。* X5 }- L6 D! D9 h2 Y9 i 用于多任务环境的话,可以跟任何RTOS一起使用。 支持超快性能的零数据复制。! t% A7 g d3 ?* r2 P& c$ ]& P. d( @ 标准的Socket接口。+ y- k$ q2 w( [6 G& q! a+ F 支持原始Socket。 所有函数都有非阻塞版本。 连接数量仅受内存容量限制。7 A; g$ f8 e' h8 P. u$ o" c 数据包重组。! N$ ~! |- ^7 `) r 驱动代码支持大部分常见的设备。 运行时可配置。3 G* D$ z9 ] D3 x% c- R 支持PPP/PPPOE。& m+ n0 I4 { @ 支持各种上层协议。 支持大部分常用MCU自带MAC和外置MAC。 具体支持协议和功能如下: ]' Z4 s- B# X n$ R" `% J0 _2 u9 z! i+ B! | 1.6 uC/TCP-IP网络协议栈介绍. Z% o" l" v8 f! H/ H7 f6 F uC/TCP-IP是Micrium发布的小型协议栈,这个协议栈不像uCOS那么多人去使用,因为源码是不开源的,所以相比uCOS来说,研究uC/TCP-IP的人非常少。 2 m( f4 O3 A2 g 不过从2017年开始,Micrium推出了傻瓜式图形开发平台Platform Builder,打算全面推广uCOS及其所有中间件,以后应该会有不少人去用。 uC/TCP-IP支持的功能如下:3 S9 E9 s# y0 L+ |8 d 更多uC/TCP-IP相关的知识可以上其官网。另外,uCTCP/TCP-IP也是收费的。7 s( L {; ^3 ?) S' y5 v" e* A 1.7 Mbed OS物联网系统介绍 Mbed OS是ARM官方这两年新推出的,发展迅猛,是一种专为物联网 (IoT) 中的设备而设计的开源嵌入式操作系统。该操作系统非常适合涉及智能城市、智能家庭和穿戴式设备等领域的应用程序。+ X* l# _% n+ O 5 v! P" e+ G. m( i# h+ b+ X Mbed操作系统在微控制器上属于Mbed IoT设备的客户端部分,专为Mbed设备连接器、Mbed设备服务器和 Mbed客户端配合使用而设计。总的来说,这一平台提供了全面的 IoT 解决方案,从驱动、开发环境、软件、开发工具到物联网云端的一条龙服务,以便能够大规模创建和部署IoT 设备。 Mbed支持以太网,WiFi,IPv6,6LoWPAN和Bluetooth Low Energy (BLE)。& I% J/ h! I, Z5 n/ E g " |* @- R3 k8 L3 z8 X7 Q 1.8 FreeRTOS-TCP网络协议栈介绍 FreeRTOS-TCP网络协议栈是FreeRTOS官方在2016年年初发布的,也是开源免费的,有兴趣可以研究下) B% O' t& Z9 U. q( I3 W+ | Z5 {0 @: l* t8 L1 ? 当前支持的功能如下: FreeRTOS-TCP的手册在网站的左侧列表上,比LwIP的文档好很多。 5 W2 ~. ^4 u+ f 1.9 Cyclone TCP网络协议栈介绍. i4 b; m' q4 h( @ U* K ! K6 L' C5 d" [3 x Cyclone TCP是开源的,功能齐全,整体框架如下:) o5 C) y @1 u$ l 3 K6 x5 }' U( w0 a- K3 @+ U& a 支持的安全连接方式:$ R$ H9 f; g7 |" U- \% x' y# z & q' s' `5 c- H; @ ' Q1 q: I. L# L$ J 各种加密应有尽有: t! Y% B. r5 Z) S 一般我们可以使用开源免费版的GPLv2授权方式:6 F9 C; w* J4 h- V4 U 6 G% H( m) n8 ^, s& U 1.10 RL-TCPnet网络协议栈介绍; t* V# W4 t. E RL-TCPnet是KEIL发布的,功能也比较全面,而且抗网络攻击通过 Achilles Level 1认证。 2 r8 L& f! B" O j! a 6 h2 R+ E G6 g6 t; ` 1.11 ThreadX NetXDUO网络协议栈 ThreadX的网络协议栈对其它网络协议栈几乎是碾压性优势。一张图,几乎涵盖了我们日常项目大部分应用: + ?. Z& @+ H. w' m' a 各个行业的安全认证: & w) E& B- _8 F U4 q / Z4 ?. _2 q7 x 物联网协议方向安全认证: $ ~6 z' U8 z( b. O. X5 U% Z 加密库也做了认证: ' g" o, d4 A- \" _% ? & `8 j _3 L) q 1.12 总结* F& D" f& y3 K 本章主要为大家讲解了几款主流的嵌入式网络协议栈,让大家对当前的小型嵌入式网络协议栈有一个整体的了解,关于这几款嵌入式协议栈的更多知识可以上其官网进行了解和学习。3 M' T7 Z. t) Z4 Z - [. @5 p+ b: E3 B) M |
【经验分享】STM32_H7_ADC
STM32H7R/S高性能MCU:安全性,大存储和优异图显赋能更多应用创新
Stm32H7XX GCC下分散加载实现
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
DIY-STM32H750核心板
[nucleo-H7A3ZI-Q]1-点亮一个皮皮灯
DIY-STM32H743核心板
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
1月10日有奖直播 | 基于STM32 的CODESYS智能自动化解决方案
STM32的CAN FD位定时设置注意事项