1.1 当前主流的嵌入式网络协议栈 当前主流的小型嵌入式网络协议栈主要有:uIP,LwIP,embOS/IP,uC/TCP-IP,FreeRTOS-TCP,Cyclone TCP,RL-TCPnet和ThreadX NetXDUO。当然,还有其它的网络协议栈,只是不被我们所知,这里把前面说到的其中几款协议栈进行简单的介绍。另外,物联网系统Contiki和Mbed OS也进行了介绍。 7 m$ V5 \5 o6 [1 b' o H4 ?* S. O 1.2 uIP网络协议栈介绍* O" J6 D0 }/ e5 k uIP主要用于8位和16位微控制器的小型嵌入式网络协议栈。最初,uIP 网络协议栈由瑞典计算机科学院的Adam Dunkels 开发,其源代码由C 语言编写,并完全开源。 " `" {/ a7 C+ `% R1 i# E" A( ^ uIP协议栈最大的优势就是短小精悍,Flash和RAM需求小,去掉了完整的 TCP/IP 中不常用的功能,简化了通讯流程,但保留了网络通信必须使用的协议,重点放在了 IP/TCP/ICMP/UDP/ARP 这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。 1.3 LwIP网协议栈介绍/ y3 k6 F; C0 H% E7 @9 @0 K6 ` LwIP也是瑞典计算机科学院的Adam Dunkels 开发的开源TCP/IP协议栈。 . w/ t. a# q* _0 H9 `6 z4 l# f( r7 f LwIP属于小型嵌入式网络协议栈,有无操作系统的支持都可以运行。LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40KB左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。LwIP协议栈主要关注的是怎样减少内存的使用和代码的大小,这样就可以让LwIP适用于资源有限的小型平台。/ p3 S4 H, b/ a " \8 Q- _) o. ]7 l) K4 g LwIP的特点如下: 支持的协议, j* ]( w) q+ X) J w# t IP, ICMP, UDP, TCP, IGMP, ARP, PPPoS, PPPoE, DHCP client, DNS client, AutoIP/APIPA (Zeroconf), SNMP agent。 $ x: Z* d/ O1 m3 C! x API接口函数 , l* L2 S2 {2 u4 U( k/ [ 提供专门的内部回调接口(Raw API),用于提高应用程序性能以及可选择的BSD Socket API (在多线程情况下使用) 。 7 s5 w" N8 S) k" o6 S) {! [ 扩展功能' [1 ^4 [9 }( Z / U; _/ h3 x9 u( t- J3 t9 r* J2 i 通过多个网络接口进行IP转发,TCP拥塞控制,RTT估算和快速恢复/快速重传机制。4 E1 A0 ~8 q- j h. Q ) d y2 ]9 q# b' C$ r 应用层的支持 ( X# a) R* E# Z) W* c& w6 I/ v HTTP server, SNTP client, SMTP client, ping, NetBIOS nameserver。 1.4 Contiki物联网系统介绍' T" u8 p" y0 j. t Contiki的内核以及大部分的核心功能也是由瑞典计算机科学院的Adam Dunkels开发。 Contiki是一个小型的,开源的,易移植的多任务系统。可用于内存受限的网络系统,支持在各种平台上运行。Contiki最强大的还是它的网络功能,提供了强大的低功耗互联网通信,Contiki支持完整标准的IPv6和IPv4以及近几年新出的低功耗无线标准:6lowpan,RPL,CoAP。 如果使用Contik 的ContikiMAC和可休眠的路由器功能,即使是无线路由器也可以使用电池供电。. T5 E& C _ U9 q , k) f, R! D3 J$ g 根据Contiki官方的说明,当前的定位就是:开源的物联网系统,将低成本、低功耗的设备连接到网络,通过强劲的网络功能来构建复杂的无线网络。 % e" |; Q- L9 u" q- U& N& Y& G 作者Adam Dunkels/ L( @* V5 a- l4 d3 U; P* v/ ? 由前面的介绍,我们了解到uIP,LwIP和Contiki的作者都是他,所以我们有必要了解下。 1.5 embOS/IP网络协议栈介绍, O! F0 f4 }1 O, y" V5 R' t embOS/IP是SEGGER出品的高性能小型网络协议栈,已经针对速度、功能和占用空间进行优化,纯C编写,几乎可以用于任何CPU上。它是作为embOS实时操作系统中间件存在的。* s% R! z" i9 n- ^( i 3 `, S! ?# I, S% K embOS/IP的功能特性如下:" B/ a L- A2 n9 Y & }' {- k* N' G: z H 含有类似ANSI C 中socket.h的头文件,如果一个应用程序是用标准C Socket编写的,那么使用embOS/IP将极其方便移植。 高性能。! I$ R: ~/ b& V j' }: ]2 B 代码容量小。7 x7 e5 F5 h$ B* s3 {4 Y' [1 w 简单易用。 无需配置。 用于多任务环境的话,可以跟任何RTOS一起使用。 支持超快性能的零数据复制。6 W5 U7 I* [, i; k2 Y 标准的Socket接口。7 l' H0 \( s# l3 v( s W 支持原始Socket。0 S& u4 W$ B3 Z 所有函数都有非阻塞版本。2 l _# N0 a" F 连接数量仅受内存容量限制。" c) j+ _) P. P I+ v% L2 c 数据包重组。6 B% D& p6 T O" t1 q8 }5 y: o8 Q 驱动代码支持大部分常见的设备。* g4 L1 E) F. _( x2 n- K+ Z 运行时可配置。; ~" [, f3 n3 B) T. r 支持PPP/PPPOE。 支持各种上层协议。# B7 f7 r1 W v, H 支持大部分常用MCU自带MAC和外置MAC。 # U: I, w0 ]% q' Y! z3 ~5 Z3 u 2 N7 b2 W ]" y1 r+ P 具体支持协议和功能如下:' k3 n" q3 o" D) O" s- d- T 4 g5 ~2 E8 U* X5 d/ C3 U 2 c5 o- u0 R; K+ f 1.6 uC/TCP-IP网络协议栈介绍1 E. M* I& J7 c! K& y) l0 c uC/TCP-IP是Micrium发布的小型协议栈,这个协议栈不像uCOS那么多人去使用,因为源码是不开源的,所以相比uCOS来说,研究uC/TCP-IP的人非常少。% d$ N: R% e q 8 K' W( p* m& @' I* [% { 不过从2017年开始,Micrium推出了傻瓜式图形开发平台Platform Builder,打算全面推广uCOS及其所有中间件,以后应该会有不少人去用。 uC/TCP-IP支持的功能如下:" L; C- E! H F. G6 M 更多uC/TCP-IP相关的知识可以上其官网。另外,uCTCP/TCP-IP也是收费的。- H L' j3 l' u0 } + O% O8 F# q& w1 M 1.7 Mbed OS物联网系统介绍 Mbed OS是ARM官方这两年新推出的,发展迅猛,是一种专为物联网 (IoT) 中的设备而设计的开源嵌入式操作系统。该操作系统非常适合涉及智能城市、智能家庭和穿戴式设备等领域的应用程序。% U! O" @- A3 I $ v2 R. w. t( l2 M8 i% D4 O Mbed操作系统在微控制器上属于Mbed IoT设备的客户端部分,专为Mbed设备连接器、Mbed设备服务器和 Mbed客户端配合使用而设计。总的来说,这一平台提供了全面的 IoT 解决方案,从驱动、开发环境、软件、开发工具到物联网云端的一条龙服务,以便能够大规模创建和部署IoT 设备。 Mbed支持以太网,WiFi,IPv6,6LoWPAN和Bluetooth Low Energy (BLE)。$ r- l! W5 D! j+ l3 h$ d 1.8 FreeRTOS-TCP网络协议栈介绍 FreeRTOS-TCP网络协议栈是FreeRTOS官方在2016年年初发布的,也是开源免费的,有兴趣可以研究下, @: z9 O, g, M( l+ {3 ` # J' f. e# D6 H0 w$ m5 y9 v 当前支持的功能如下: r; r; c0 i% |4 d k! y1 Y' v FreeRTOS-TCP的手册在网站的左侧列表上,比LwIP的文档好很多。 1.9 Cyclone TCP网络协议栈介绍$ \7 Z ?' l0 _4 S 9 U3 H: d. U- f4 I2 V6 J& D Cyclone TCP是开源的,功能齐全,整体框架如下:. t( x# F% y6 M' J& y 支持的安全连接方式: / C& H1 Y+ |6 j2 h 各种加密应有尽有:* l2 j2 C( g7 m: V# w* ^0 l / Q( z4 k$ E5 P _ 一般我们可以使用开源免费版的GPLv2授权方式:- n, L' d5 @) j* j0 M- L * D+ f* {! D& y+ W* V$ m6 B1 [ 1.10 RL-TCPnet网络协议栈介绍( S2 n( j& D, r- `2 i RL-TCPnet是KEIL发布的,功能也比较全面,而且抗网络攻击通过 Achilles Level 1认证。. l5 [+ B0 S. T* w1 G/ C. W2 p % p. {" s# x% ^4 h c+ W 1.11 ThreadX NetXDUO网络协议栈 ThreadX的网络协议栈对其它网络协议栈几乎是碾压性优势。一张图,几乎涵盖了我们日常项目大部分应用:/ V' {5 b3 Q" p5 U( o/ C4 F4 L, w , S# N0 O4 b- w0 q6 W3 C/ E 各个行业的安全认证:0 C# k. s R- _* {2 v/ V 3 W4 C e; Q+ V: e- B: N) P 物联网协议方向安全认证:* F! l7 @: W3 `4 N5 {' z6 B. H ! @* C5 z( @* }" ~( P 加密库也做了认证:6 G3 r% C! U8 K 5 k2 f0 T6 N+ h: G: ~. I _ R9 ]3 l 1.12 总结 本章主要为大家讲解了几款主流的嵌入式网络协议栈,让大家对当前的小型嵌入式网络协议栈有一个整体的了解,关于这几款嵌入式协议栈的更多知识可以上其官网进行了解和学习。 H; _+ `2 Z+ ?# d: A ) T; s" a9 u( O# t4 s! G! Z |
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
【Wio Lite AI视觉开发套件】+cube.ai与食物识别
【STM32H7S78-DK】汽车仪表系统
【STM32H7S78-DK】基于 rtthread 适配 lcd 驱动移植 lvgl
【STM32H7S78-DK评测】TouchGFX (QR Code)二维码生成器
【STM32H7S78-DK】rtthread 增加 psram 内存管理
【STM32H7S78-DK】开箱与rtthread工程初体验
【STM32H7S78-DK评测】-5 LVGL&DMA2D DEMO测试
【STM32H7S78-DK评测】-4 LTDC&DMA2D 基本测试
【STM32H7S78-DK评测】CoreMark移植和优化--兼记printf重定向实现方法及常见问题