單片機的種類繁多,從低端到高端,有以51單片機為代表的8位單片機和以ARM為代表的32位單片機,不同檔次的單片機實現網絡接口的方法不同。對於像ARM等高端處理器一般都可以運行嵌入式操作系統,例如嵌入式Linux。對於無操作系統要求的單片機如何實現網絡接入,我下面將這些方案按TCP/IP協議棧的不同歸結為兩大類:第一類是傳統的軟件TCP/IP協議棧方案;第二類是最新的硬件TCP/IP協議棧方案。下面我就這兩類方案的實現方式進行分析。

1. MAC+PHY方案

所謂的 TCP/IP 協議棧是一系列網絡協議的統稱,不僅包括我們熟知的 TCP 協議和IP協議,還有網絡層的 ICMP(Internet控制報文)協議、IGMP(Internet 組管理)協議、ARP(地址解析)協議,傳輸層的UDP(用戶數據包)協議,應用層的HTTP(超文本傳輸)協議、DNS(域名解析)協議、FTP(文件傳送)協議、SMTP(簡單郵件管理)協議等等。

傳統的以太網接入方案如下圖,由MCU+MAC+PHY再加入網絡接口實現以太網的物理連接,通過在主控芯片中植入TCP/IP協議代碼實現通信及上層應用。

image

應用這種軟件TCP/IP協議棧方式實現的比較成熟方案有ENC28J60, CS8900A,DM9000,當然也有像 STM32F107 這類(內部自帶MAC)+PHY等方案。

由於軟件協議棧操作需要主控 MCU 不斷地響應中斷,這在很大程度上占用了 MCU的運算/時鐘資源。經過測試發現,單線程操作的情況下,MCU 的運行速度和數據的處理速度僅能滿足需要,但隨著線程增多,MCU 的工作效率直線下降,會嚴重影響通信質量。

代碼量方面,即便是采用輕量級的 TCP/IP 協議棧 LWIP 協議,也會為主控芯片帶來超過40KB的代碼量,這對於本身內存資源匱乏的單片機來說負荷過重。

再從安全性的角度,設備並入互聯網之後必須考慮網絡安全問題,這種軟件協議棧的方式系統一旦受到復雜的惡意攻擊,單片機很有可能癱瘓掉,這對系統就是致命性打擊,雖然目前網絡技術不斷發展,各類新的加密技術試圖讓通信變得更加安全,但是還會出現各種各樣的漏洞。

2. 硬件協議棧芯片方案

硬件協議棧芯片方案如下圖所示。由 MCU+硬件協議棧芯片(內含MAC和PHY)直接加網絡接口,便可方便的實現單片機聯網,所有的處理 TCP/IP 協議的工作都是通過這位MCU的“小秘書”——硬件協議棧芯片來完成。

image

                                           圖3-2-1 硬件協議棧芯片方案

這套方案是由 WIZnet 首次提出,並成功推出以太網系列芯片:W5100W5200W5300W5500。 

所謂硬件協議棧是指通過將傳統的軟件TCP/IP協議棧用硬件化的邏輯門電路來實現,如下圖所示。

 

image

圖3-2-2 TCP/IP 硬件協議棧內核原理簡圖

以太網芯片的內核由傳輸層的 TCP、UDP、ICMP、IGMP等協議、網絡層的IP、ARP、PPPoE 等協議以及鏈路層的 MAC 構成,再加上物理層的 PHY 和外圍的寄存器、內存、SPI 接口組成了這一整套硬件化的以太網解決方案。

這套硬件 TCP/IP 協議棧代替了以往的 MCU 來處理這些中斷請求,即 MCU 只需要處理面向用戶的應用層數據即可,傳輸層、網絡層、鏈路層及物理層全部由外圍WIZnet的芯片完成。這套方案從硬件開銷和軟件開發兩個方面來簡化前面所述的五層網絡模型,簡化產品開發方案。這樣一來,工程師們就不必再面對繁瑣的通信協議代碼,只需要了解簡單的寄存器功能以及Socket編程便能完成產品開發工作的的網絡功能開發部分。

由於硬件協議棧的加入協助單片機處理了幾乎所有的 TCP/IP 協議工作,不僅極大地減少了單片機的中斷次數,讓單片機騰出更多資源去完成其他工作,而且硬件化的電路處理協議會更加快速、穩定。經試驗測試,單線程下,該方案的通信速度是軟件協議方案的 10 倍左右;隨著線程的增加,因為硬件協議棧是通過獨立的 Socket 進行通信,因而通信速度實現累加,而且單片機工作效率仍然會維持在高位。

代碼量方面,因為這套方案主要是完成對 Socket 的編程以及寄存器的調用,因此僅有 10K 左右的代碼量,遠小於軟件協議方案,對 51 以及 STM32 等內存很有限的單片機來說非常適用。

從成本角度來講,硬件協議棧芯片的價格跟用 MAC+PHY 比起來基本差不多。而前者簡單易用,用很短時間便能完成產品的開發過程。另外,官方例程庫及上位機程序豐富,也縮短了測試過程,後期基本免於維護。

 最後安全性方面,硬件化的邏輯門電路來處理 TCP/IP 協議是不可攻擊的,也就是說網絡攻擊和病毒對它無效,這也充分彌補了網絡協議安全性不足的短板。也正是因為這一優勢,硬件協議棧技術在未來物聯網以及智能家居領域有著廣泛的發展前景,讓人們盡情享受現代科技帶來的樂趣的同時,免受安全問題的困擾。

當然,不可避免的硬件化的協議棧相對來說失去了軟件協議棧那樣的靈活性。目前只支持 4 個 / 8 個Socket,不能隨時開啟更多 Socket 。但是,在嵌入式應用中8個Socket已經足夠應對超過大部分的應用。