第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 Cyclone TCP網絡協定棧介紹
1.10 RL-TCPnet網絡協定棧介紹
1.11 ThreadX NetXDUO網絡協定棧介介紹
1.12 總結
1.1 目前主流的嵌入式網絡協定棧
目前主流的小型嵌入式網絡協定棧主要有:uIP,LwIP,embOS/IP,uC/TCP-IP,FreeRTOS-TCP,Cyclone TCP,RL-TCPnet和ThreadX NetXDUO。當然,還有其它的網絡協定棧,隻是不被我們所知,這裡把前面說到的其中幾款協定棧進行簡單的介紹。另外,物聯網系統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 。
LwIP教程:http://www.armbbs.cn/forum.php?mod=viewthread&tid=95874 。
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 Cyclone TCP網絡協定棧介紹
注:此貼進行了詳細介紹:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98896 。
Cyclone TCP是開源的,功能齊全,整體架構如下:
支援的安全連接配接方式:
各種加密應有盡有:
一般我們可以使用開源免費版的GPLv2授權方式:
1.10 RL-TCPnet網絡協定棧介紹
RL-TCPnet是KEIL釋出的,功能也比較全面,而且抗網絡攻擊通過 Achilles Level 1認證。詳細介紹可以看RL-TCPnet V7.X教程:http://www.armbbs.cn/forum.php?mod=viewthread&tid=95243 。
1.11 ThreadX NetXDUO網絡協定棧
ThreadX的網絡協定棧對其它網絡協定棧幾乎是碾壓性優勢。一張圖,幾乎涵蓋了我們日常項目大部分應用:
各個行業的安全認證:
物聯網協定方向安全認證:
加密庫也做了認證:
1.12 總結
本章主要為大家講解了幾款主流的嵌入式網絡協定棧,讓大家對目前的小型嵌入式網絡協定棧有一個整體的了解,關于這幾款嵌入式協定棧的更多知識可以上其官網進行了解和學習。