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


    最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=95243

    第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的特点如下:

    •   支持的协议

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

    •   API接口函数

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

    •   扩展功能

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

    •   应用层的支持

    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的功能特性如下:

    •   含有类似ANSI C 中socket.h的头文件,如果一个应用程序是用标准C Socket编写的,那么使用embOS/IP将极其方便移植。
    •   高性能。
    •   代码容量小。
    •   简单易用。
    •   无需配置。
    •   用于多任务环境的话,可以跟任何RTOS一起使用。
    •   支持超快性能的零数据复制。
    •   标准的Socket接口。
    •   支持原始Socket。
    •   所有函数都有非阻塞版本。
    •   连接数量仅受内存容量限制。
    •   数据包重组。
    •   驱动代码支持大部分常见的设备。
    •   运行时可配置。
    •   支持PPP/PPPOE。
    •   支持各种上层协议。
    •   支持大部分常用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 总结

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

    微信公众号:armfly_com 安富莱论坛:www.armbbs.cn 安富莱淘宝:https://armfly.taobao.com
  • 相关阅读:
    C# 图片与Base64的相互转化
    LeetCode 303. Range Sum Query – Immutable
    LeetCode 300. Longest Increasing Subsequence
    LeetCode 292. Nim Game
    LeetCode 283. Move Zeroes
    LeetCode 279. Perfect Squares
    LeetCode 268. Missing Number
    LeetCode 264. Ugly Number II
    LeetCode 258. Add Digits
    LeetCode 257. Binary Tree Paths
  • 原文地址:https://www.cnblogs.com/armfly/p/13534355.html
Copyright © 2020-2023  润新知