第1章   当前主流的小型嵌入式网络协议栈

这几年物联网发展迅猛,各种新产品、新技术也是层出不穷,本章节就为大家介绍当前主流的小型嵌入式网络协议栈。

1.1  当前主流的嵌入式网络协议栈

1.2  uIP网络协议栈介绍

1.3  LwIP网络协议栈介绍

1.4  Contiki物联网系统介绍

1.5  embOS/IP网络协议栈介绍

1.6  uC/TCP-IP网络协议栈介绍

1.7  Mbed OS物联网系统介绍

1.8  FreeRTOS-TCP网络协议栈介绍

1.9  RL-TCPnet网络协议栈介介绍

1.10  总结

1.1  当前主流的嵌入式网络协议栈

当前主流的小型嵌入式网络协议栈主要有:uIP,LwIP,embOS/IP,uC/TCP-IP,FreeRTOS-TCP和RL-TCPnet。当然,还有其它的网络协议栈,只是不被我们所知,这里把前面说到的其中几款协议栈进行简单的介绍。另外,物联网系统Contiki和Mbed OS也进行了介绍。

1.2  uIP网络协议栈介绍

uIP主要用于8位和16位微控制器的小型嵌入式网络协议栈。最初,uIP 网络协议栈由瑞典计算机科学院的Adam Dunkels 开发,其源代码由C 语言编写,并完全开源。

uIP协议栈最大的优势就是短小精悍,Flash和RAM需求小,去掉了完整的 TCP/IP 中不常用的功能,简化了通讯流程,但保留了网络通信必须使用的协议,重点放在了 IP/TCP/ICMP/UDP/ARP 这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。

当前最新版本是uIP1.0,已经好多年没有再更新,后期更新已经全部整合到Contiki里面了。GitHub下载地址:https://github.com/adamdunkels/uip。

1.3  LwIP网协议栈介绍

LwIP也是瑞典计算机科学院的Adam Dunkels 开发的开源TCP/IP协议栈。

LwIP属于小型嵌入式网络协议栈,有无操作系统的支持都可以运行。LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40KB左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。LwIP协议栈主要关注的是怎样减少内存的使用和代码的大小,这样就可以让LwIP适用于资源有限的小型平台。

LwIP的特点如下:

1、支持的协议

IP, ICMP, UDP, TCP, IGMP, ARP, PPPoS, PPPoE, DHCP client, DNS client, AutoIP/APIPA (Zeroconf), SNMP agent。

2、API接口函数

提供专门的内部回调接口(Raw API),用于提高应用程序性能以及可选择的BSD Socket API (在多线程情况下使用) 。

3、扩展功能

通过多个网络接口进行IP转发,TCP拥塞控制,RTT估算和快速恢复/快速重传机制。

4、应用层的支持

HTTP server, SNTP client, SMTP client, ping, NetBIOS nameserver。

LwIP在开源的小型网络协议中做的比较成功,应用案例也非常多,下面是官网和相关的介绍文档。

LwIP的官网:http://savannah.nongnu.org/projects/lwip/ 。

LwIP的文档:http://lwip.nongnu.org/2_0_x/index.html 。

1.4  Contiki物联网系统介绍

Contiki的内核以及大部分的核心功能也是由瑞典计算机科学院的Adam Dunkels开发。

Contiki是一个小型的,开源的,易移植的多任务系统。可用于内存受限的网络系统,支持在各种平台上运行。Contiki最强大的还是它的网络功能,提供了强大的低功耗互联网通信,Contiki支持完整标准的IPv6和IPv4以及近几年新出的低功耗无线标准:6lowpan,RPL,CoAP。 如果使用Contik 的ContikiMAC和可休眠的路由器功能,即使是无线路由器也可以使用电池供电。

根据Contiki官方的说明,当前的定位就是:开源的物联网系统,将低成本、低功耗的设备连接到网络,通过强劲的网络功能来构建复杂的无线网络。

更多Contiki相关的知识可以上其官网:http://www.contiki-os.org/ 进行了解。

作者Adam Dunkels

由前面的介绍,我们了解到uIP,LwIP和Contiki的作者都是他,所以我们有必要了解下。作者的相关信息在wiki百科上面有一些介绍:https://en.wikipedia.org/wiki/Adam_Dunkels 。

1.5  embOS/IP网络协议栈介绍

embOS/IP是SEGGER出品的高性能小型网络协议栈,已经针对速度、功能和占用空间进行优化,纯C编写,几乎可以用于任何CPU上。它是作为embOS实时操作系统中间件存在的。

embOS/IP的功能特性如下:

(1)含有类似ANSI C 中socket.h的头文件,如果一个应用程序是用标准C Socket编写的,那么使用embOS/IP将极其方便移植。

(2)高性能。

(3)代码容量小。

(4)简单易用。

(5)无需配置。

(6)用于多任务环境的话,可以跟任何RTOS一起使用。

(7)支持超快性能的零数据复制。

(8)标准的Socket接口。

(9)支持原始Socket。

(10)所有函数都有非阻塞版本。

(11)连接数量仅受内存容量限制。

(12)数据包重组。

(13)驱动代码支持大部分常见的设备。

(14)运行时可配置。

(15)支持PPP/PPPOE。

(16)支持各种上层协议。

(17)支持大部分常用MCU自带MAC和外置MAC。

具体支持协议和功能如下:

更多embOS/IP相关的知识可以上其官网:https://www.segger.com/embos-ip.html 进行了解。另外embOS/IP是收费的,收费标准看这里:https://www.segger.com/pricelist-embos-ip.html 。

1.6  uC/TCP-IP网络协议栈介绍

uC/TCP-IP是Micrium发布的小型协议栈,这个协议栈不像uCOS那么多人去搞使用,因为源码是不开源的,所以相比uCOS来说,研究uC/TCP-IP的人非常少。

不过从2017年开始,Micrium推出了傻瓜式图形开发平台Platform Builder,打算全面推广uCOS及其所有中间件,以后应该会有不少人去用。

uC/TCP-IP支持的功能如下:

更多uC/TCP-IP相关的知识可以上其官网:https://doc.micrium.com/display/TCPIPDOC34 进行了解。另外,uCTCP/TCP-IP也是收费的。

1.7  Mbed OS物联网系统介绍

Mbed OS是ARM官方这两年新推出的,发展迅猛,是一种专为物联网 (IoT) 中的设备而设计的开源嵌入式操作系统。该操作系统非常适合涉及智能城市、智能家庭和穿戴式设备等领域的应用程序。

Mbed操作系统在微控制器上属于Mbed IoT设备的客户端部分,专为Mbed设备连接器、Mbed设备服务器和 Mbed客户端配合使用而设计。总的来说,这一平台提供了全面的 IoT 解决方案,从驱动、开发环境、软件、开发工具到物联网云端的一条龙服务,以便能够大规模创建和部署IoT 设备。

Mbed支持以太网,WiFi,IPv6,6LoWPAN和Bluetooth Low Energy (BLE)。更多Mbed相关的知识可以上其官网:https://www.mbed.com/en/ 进行了解。

1.8  FreeRTOS-TCP网络协议栈介绍

FreeRTOS-TCP网络协议栈是FreeRTOS官方在2016年年初发布的,也是开源免费的,有兴趣可以研究下,官方地址:http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/index.html

当前支持的功能如下:

FreeRTOS-TCP的手册在网站的左侧列表上,比LwIP的文档好很多。

1.9  RL-TCPnet网络协议栈介绍

RL-TCPnet是KEIL发布的,功能也比较全面。由于RL-TCPnet是本教程要讲解的,专门在第4章进行了介绍,这就不再展开讲述了。

1.10 总结

本章主要为大家讲解了几款主流的嵌入式网络协议栈,让大家对当前的小型嵌入式网络协议栈有一个整体的了解,关于这几款嵌入式协议栈的更多知识可以上其官网进行了解和学习。

【RL-TCPnet网络教程】第1章 当前主流的小型嵌入式网络协议栈的更多相关文章

  1. 第一章: 当前主流的小型嵌入式 GUI

    以下内容转载自安富莱电子论坛:http://forum.armfly.com/forum.php?mod=viewthread&tid=24507&highlight=%B5%B1%C ...

  2. 【RL-TCPnet网络教程】第6章 RL-TCPnet底层驱动说明

    第6章        RL-TCPnet底层驱动说明 本章节为大家讲解RL-TCPnet的底层驱动,主要是STM32自带MAC的驱动实现和PHY的驱动实现. 6.1  初学者重要提示 6.2  KEI ...

  3. 【RL-TCPnet网络教程】第32章 RL-TCPnet之Telnet服务器

    第32章      RL-TCPnet之Telnet服务器 本章节为大家讲解RL-TCPnet的Telnet应用,学习本章节前,务必要优先学习第31章的Telnet基础知识.有了这些基础知识之后,再搞 ...

  4. 【RL-TCPnet网络教程】第30章 RL-TCPnet之SNTP网络时间获取

    第30章      RL-TCPnet之SNTP网络时间获取 本章节为大家讲解RL-TCPnet的SNTP应用,学习本章节前,务必要优先学习第29章的NTP基础知识.有了这些基础知识之后,再搞本章节会 ...

  5. 【RL-TCPnet网络教程】第28章 RL-TCPnet之DNS应用

    第28章      RL-TCPnet之DNS应用 本章节为大家讲解RL-TCPnet的DNS应用,学习本章节前,务必要优先学习第27章的DNS基础知识.有了这些基础知识之后,再搞本章节会有事半功倍的 ...

  6. 【RL-TCPnet网络教程】第20章 RL-TCPnet之BSD Socket客户端

    第20章      RL-TCPnet之BSD Socket客户端 本章节为大家讲解RL-TCPnet的BSD Socket,学习本章节前,务必要优先学习第18章的Socket基础知识.有了这些基础知 ...

  7. 【RL-TCPnet网络教程】第19章 RL-TCPnet之BSD Socket服务器

    第19章      RL-TCPnet之BSD Socket服务器 本章节为大家讲解RL-TCPnet的BSD Socket,学习本章节前,务必要优先学习第18章的Socket基础知识.有了这些基础知 ...

  8. 【RL-TCPnet网络教程】第17章 RL-TCPnet之UDP通信

    第17章      RL-TCPnet之UDP通信 本章节为大家讲解RL-TCPnet的UDP通信实现,学习本章节前,务必要优先学习第16章UDP用户数据报协议基础知识.有了这些基础知识之后,再搞本章 ...

  9. 【RL-TCPnet网络教程】第14章 RL-TCPnet之TCP客户端

    第14章      RL-TCPnet之TCP客户端 本章节为大家讲解RL-TCPnet的TCP客户端实现,学习本章节前,务必要优先学习第12章TCP传输控制协议基础知识.有了这些基础知识之后,再搞本 ...

随机推荐

  1. Unity的UI究竟为什么可以合批

    1.UI/Default代码研究首先,我想到的是,既然是对图集纹理进行采样,而且又不能统一更改材质的纹理UV值,我们通常写的shader都是直接根据模型UV值对主纹理进行采样,那会不会是shader中 ...

  2. asp.net core 系列之中间件基础篇(middleware)

    中间件是一种插入到管道上进行处理请求和响应的软件:每个中间件组件具有下面的功能: 选择是否把请求传递到管道上的下一个组件 可以在下一个组件的之前和之后做处理工作 请求委托(request delega ...

  3. 人生苦短,我用 Python

    从2015开始国内就开始慢慢接触Python了,从16年开始Python就已经在国内的热度更高了,目前也可以算的上"全民Python"了.众所周知小学生的教材里面已经有Python ...

  4. 把时间留给重要的事——Markdown 模板功能上线

    你是否遇到过因为同事在任务中过于放飞自我而感到头疼?或者经历过因为内容描写的不系统而导致关键信息被忽视? 现在,CODING Markdown 模板功能将帮助你解决这些困扰. 功能介绍 CODING ...

  5. Android resource compilation failed

    报错:Android resource compilation failed D:\android\EasySports\app\build\intermediates\incremental\mer ...

  6. 在Hyper-V上安装RemixOS 的Android模拟器

    不想用实体机,想不想弄个快速的Android虚拟环境,今天我们就来说说把Android模拟器(RemixOS)安到Hyper-v上的办法. 1. 下载RemixOs  或者直接去 论坛获得下载地址 2 ...

  7. 从零开始学习PYTHON3讲义(九)字典类型和插入排序

    <从零开始PYTHON3>第九讲 第六讲.上一讲我们都介绍了列表类型.列表类型是编程中最常用的一种类型,但也有挺明显的缺陷,比如: data = [5,22,34,12,87,67,3,4 ...

  8. Pycharm2018永久破解的办法

    Pycharm2018永久破解的具体步骤: 一.下载pycharm2018专业版 JetBrains官网:https://www.jetbrains.com/pycharm/download/#sec ...

  9. C# DataTable下载

    从服务器下载datatable到本地,有多种处理方式,下面介绍三种. 方式一,将datatable转为txt下载. 步骤: 1.将datatable内容下载到服务器txt中 2.将服务器的txt下载到 ...

  10. Python编程从入门到实践笔记——用户输入和while循环

    Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...