張芳良
(江蘇沁恒股份有限公司,南京210012)
隨著以太網(wǎng)協(xié)議棧芯片的出現(xiàn),普通單片機加以太網(wǎng)協(xié)議棧芯片也能實現(xiàn)與PC或者其他網(wǎng)絡(luò)設(shè)備進行以太網(wǎng)數(shù)據(jù)傳輸。嵌入式TCP/IP協(xié)議棧的系統(tǒng)板有以太網(wǎng)媒介的高速數(shù)據(jù)傳輸接口,可用于多個節(jié)點之間的數(shù)據(jù)交互,同時具備體積小、成本低、傳輸速度快等優(yōu)點,適用于現(xiàn)有的網(wǎng)絡(luò)傳輸系統(tǒng),在諸如數(shù)據(jù)采集、數(shù)據(jù)傳輸、智能化家居系統(tǒng)、工業(yè)智能化從站系統(tǒng)、網(wǎng)絡(luò)安全、儀器儀表等領(lǐng)域有著廣泛的應(yīng)用前景?;贔TP(File Transfer Protocol)標(biāo)準(zhǔn)的應(yīng)用協(xié)議,使主機間可靠高效地傳輸文件,方便實現(xiàn)遠(yuǎn)程文件存儲。因此,嵌入式TCP/IP協(xié)議棧的系統(tǒng)板加FTP應(yīng)用協(xié)議不僅可以實現(xiàn)遠(yuǎn)程文件傳輸,而且能夠解決跨平臺、多地訪問等問題,很好地實現(xiàn)了文件共享、數(shù)據(jù)管理和信息交互,使得文件傳輸不再局限于PC與PC之間或者PC與存儲設(shè)備之間。
主控制器接收各個終端采集的數(shù)據(jù)作為FTP服務(wù)器的數(shù)據(jù)來源并存儲在U盤中,以文件的方式管理采集的數(shù)據(jù)。以太網(wǎng)協(xié)議棧芯片CH395在該系統(tǒng)以太網(wǎng)數(shù)據(jù)傳輸中扮演重要角色,作為以太網(wǎng)接口使系統(tǒng)具備遠(yuǎn)程網(wǎng)絡(luò)數(shù)據(jù)傳輸能力。本系統(tǒng)以很低的硬件成本實現(xiàn)了一臺FTP服務(wù)器的功能,可以充當(dāng)作一臺PC來使用。
數(shù)據(jù)的傳輸基于具有可靠性的TCP(Transfer Control Protocol)協(xié)議,應(yīng)用層采用FTP協(xié)議,使得文件傳輸既便于控制,又保證了文件的正確性。用戶可以隨時通過網(wǎng)內(nèi)PC自帶的瀏覽器在遠(yuǎn)端訪問本系統(tǒng),并可以根據(jù)自己的需求做相應(yīng)的操作,例如下載、上傳、刪除、創(chuàng)建文件等。如果直接傳輸數(shù)據(jù),不僅不好區(qū)分?jǐn)?shù)據(jù)類型,而且不便于數(shù)據(jù)管理,而文件的方式共享數(shù)據(jù),不僅操作簡單,管理也更方便。
另外,為了數(shù)據(jù)的安全性,可以對不同的工作人員分配不同等級的權(quán)限。與普通的延長方式相比,這種方式有明顯的優(yōu)勢,例如,用USB延長方式訪問遠(yuǎn)端U盤,只有與U盤連接的那一臺PC才擁有操作U盤的權(quán)限,這種方式僅僅是遠(yuǎn)程訪問,無法做到多人控制,文件共享,而且無法分配權(quán)限等級。而基于該系統(tǒng)的設(shè)備,所有連入這個網(wǎng)內(nèi)的PC、移動設(shè)備都可以訪問、修改U盤中的數(shù)據(jù),實現(xiàn)真正意義上的遠(yuǎn)程文件共享及管理。系統(tǒng)總體架構(gòu)如圖1所示。
圖1 總體設(shè)計框圖
CH395芯片自帶10/100M 媒體訪問控制(MAC)和物理層(PHY),完全兼容IEEE802.3 10/100M 協(xié)議,支持MDI/MDIX線路自動轉(zhuǎn)換和低功耗模式,內(nèi)置IP、ARP、ICMP、IGMP、UDP、TCP等以太網(wǎng)協(xié)議棧固件以及24 K RAM,提供4個獨立的Socket接口,可以同時進行通信,每個傳輸通道獨立擁有2 KB發(fā)送緩沖區(qū)和4 KB的接收緩沖區(qū),可用于以太網(wǎng)數(shù)據(jù)收發(fā)。單片機只需執(zhí)行一些簡單的操作便可進行網(wǎng)絡(luò)通信[1]。CH395結(jié)構(gòu)圖如圖2所示。
圖2 CH395結(jié)構(gòu)圖
TCP/IP協(xié)議是一套把因特網(wǎng)上的各種系統(tǒng)互連起來的協(xié)議組,以保證因特網(wǎng)上數(shù)據(jù)的準(zhǔn)確快速傳輸。參考開放系統(tǒng)互連(OSI)模型,TCP/IP通常采用一種簡化的四層模型,分別為:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層[2]。
鏈路層的首要工作是在本地范圍內(nèi)實現(xiàn)網(wǎng)絡(luò),為面向硬件的物理層以及更抽象的、面向軟件的網(wǎng)絡(luò)層及上面各層的功能提供接口。網(wǎng)絡(luò)層的主要協(xié)議是IP(Internet Protocol),用于設(shè)備之間的數(shù)據(jù)交互。運輸層主要包括傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報協(xié)議(UDP),該層負(fù)責(zé)完成將數(shù)據(jù)從一個地方傳送到另一個地方的具體工作。應(yīng)用層負(fù)責(zé)處理特定的應(yīng)用程序細(xì)節(jié),它要有一個定義清晰的會話過程。在本系統(tǒng)中,F(xiàn)TP應(yīng)用層協(xié)議來保證數(shù)據(jù)傳輸過程中文件的完整性,傳輸層使用TCP來保證數(shù)據(jù)的正確性。
FTP即文本傳輸協(xié)議,是文件傳輸?shù)闹饕W(wǎng)絡(luò)標(biāo)準(zhǔn),F(xiàn)TP主要的功能被定義為在主機間可靠高效地傳輸文件,并允許方便地使用遠(yuǎn)程文件存儲能力。FTP的目標(biāo)是提高文件的共享性,提供非直接使用遠(yuǎn)程計算機,使存儲介質(zhì)對用戶透明并可靠高效地傳送數(shù)據(jù)[3]。
ASCII字符集是在ARPA-Internet協(xié)議手冊中定義的,在FTP里,ASCII字符被定義為8位的編碼集。FTP中有兩種類型的字節(jié)大?。何募倪壿嬜止?jié)大小和用于數(shù)據(jù)傳輸?shù)膫鬏斪止?jié)大小。傳輸字節(jié)大小通常是8位,傳輸字節(jié)不必等于系統(tǒng)中存儲數(shù)據(jù)的字節(jié)大小,也不必對數(shù)據(jù)結(jié)構(gòu)進行解釋。FTP可以支持不同操作系統(tǒng)、不同文件系統(tǒng)之間進行文件的傳輸,它們之間通信采用雙方都支持的一種格式。
控制連接是建立在USER-PIT和SERVER-PI之間用于交換命令與應(yīng)答的通信鏈路,該連接遵從Telnet協(xié)議。權(quán)限控制定義了用戶在一個系統(tǒng)中可使用的權(quán)限和對系統(tǒng)中文件操作的權(quán)限,為防止未被授權(quán)或意外地使用文件,權(quán)限控制是必須要做的。Server-FTP過程有調(diào)用權(quán)限控制的特權(quán)。
數(shù)據(jù)連接是在特定的模式和類型下進行的全雙工連接,傳輸數(shù)據(jù)可以是文件的一部分、整個文件或數(shù)個文件,鏈路可以建立在服務(wù)器DTP和用戶DTP之間,也可以建立在兩個服務(wù)器DTP之間。FTP將同時發(fā)生的TCP控制連接和數(shù)據(jù)傳輸分隔開,所有的數(shù)據(jù)傳輸都是基于控制連接的FTP命令來進行的,能對文件傳輸進行可靠高效的控制[4]。FTP框圖如圖3所示。
圖3 FTP框圖
整個系統(tǒng)充當(dāng)一個FTP服務(wù)器的角色,可以是匿名服務(wù)器,所有的PC或者移動設(shè)備都可以通過自帶瀏覽器訪問該服務(wù)器;可以設(shè)置用戶權(quán)限,只有擁有權(quán)限的用戶才可以訪問該服務(wù)器;也可以設(shè)置用戶權(quán)限等級,不同用戶擁有不同等級的權(quán)限,便于更好地對數(shù)據(jù)進行管理。本系統(tǒng)采用第三種方式,即所有網(wǎng)內(nèi)設(shè)備可以訪問該服務(wù)器、瀏覽數(shù)據(jù),但只有特殊權(quán)限的人員才能對文件數(shù)據(jù)進行管理。
單片機接收到的終端數(shù)據(jù)保存到存儲介質(zhì)中,根據(jù)需要可以有不同的文件命名方式,例如以遞增方式命名、數(shù)據(jù)類型命名等。FTP服務(wù)器所有的文件數(shù)據(jù)來源于存儲介質(zhì)U盤,U盤中的數(shù)據(jù)來源于各個采集終端,以文件的方式管理采集到的數(shù)據(jù),進而實現(xiàn)數(shù)據(jù)共享和遠(yuǎn)程控制。
硬件主要由CH563(主控芯片)、CH395(以太網(wǎng)協(xié)議棧芯片)、U盤(存儲介質(zhì))組成。
本系統(tǒng)主控芯片選用CH563,這是一款A(yù)RM9內(nèi)核的單片機。存儲介質(zhì)選用U盤,CH563的文件系統(tǒng)庫可以很方便地操作U盤設(shè)備,只需要調(diào)用一些簡單的接口函數(shù)即可進行文件的讀寫、枚舉、刪除和創(chuàng)建等操作,也支持其他存儲介質(zhì),如SD卡等。終端采集數(shù)據(jù)可通過串口、SPI接口等傳輸給單片機。網(wǎng)絡(luò)設(shè)備可以是交換機、路由器、PC或其他嵌入式網(wǎng)絡(luò)產(chǎn)品。
CH395是以太網(wǎng)協(xié)議棧管理芯片,用于單片機系統(tǒng)進行以太網(wǎng)通信。支持三種通信接口:高速8位被動并行接口、最高30 MHz速度的SPI設(shè)備接口、最高3 Mbps速度的異步串口,支持通信波特率動態(tài)調(diào)整。主控芯片可以通過上述任何一種通信接口控制CH395芯片進行以太網(wǎng)通信。CH395硬件電路設(shè)計如圖4所示。
圖4 CH395硬件電路設(shè)計圖
2.2.1 主程序流程
主控芯片進行初始化,初始化U盤,初始化CH395。單片機初始化狀態(tài)值、接口函數(shù)、定時器、中斷等。初始化U盤,先初始化文件系統(tǒng)庫,然后等待設(shè)備連接,枚舉U盤設(shè)備,等待進行讀寫操作。初始化CH395,設(shè)置CH395的IP地址、網(wǎng)關(guān)地址、子網(wǎng)掩碼,初始化一個Socket,建立端口21的TCP監(jiān)聽端口,等待用戶建立連接進行網(wǎng)絡(luò)通信。
初始化完成后,主程序循環(huán)查詢中斷和狀態(tài)機。中斷狀態(tài)有兩個部分:CH395中斷和串口接收中斷。如果有CH395中斷,則執(zhí)行CH395中斷處理程序。CH395中斷主要有TCP連接、連接關(guān)閉、接收數(shù)據(jù)中斷;如果有串口接收中斷,則處理串口中斷程序,查詢狀態(tài)機根據(jù)當(dāng)前狀態(tài)進入相應(yīng)狀態(tài)機程序處理部分。主程序流程圖如圖5所示。
圖5 主程序流程圖
2.2.2 中斷處理
FTP服務(wù)器采用默認(rèn)端口21,用戶只有與服務(wù)器建立連接后才可以進行通信,當(dāng)產(chǎn)生TCP連接中斷、建立連接后,客戶端發(fā)送FTP控制命令與服務(wù)器進行通信,服務(wù)器對客戶端的命令作出相應(yīng)地響應(yīng),接收命令會產(chǎn)生接收數(shù)據(jù)中斷。如果涉及文件數(shù)據(jù)的傳輸,則會建立另外一個臨時的數(shù)據(jù)連接通道,端口可以是雙方約定的任意一個,產(chǎn)生TCP連接中斷后,建立連接則可以進行文件數(shù)據(jù)的傳輸,傳輸完成后由數(shù)據(jù)發(fā)送方發(fā)起關(guān)閉連接操作,則會產(chǎn)生TCP斷開連接中斷信號,此時應(yīng)該關(guān)閉打開的文件。例如,當(dāng)用戶訪問服務(wù)器時,會顯示U盤根目錄下文件列表信息,打開一個文件夾時,會顯示該文件夾下所有文件列表,然后操作U盤獲取相應(yīng)的數(shù)據(jù)傳輸給用戶用于顯示。當(dāng)用戶不需要訪問服務(wù)器時,可以主動關(guān)閉與服務(wù)器的控制連接,釋放該通道,同樣會產(chǎn)生TCP斷開連接中斷信號。當(dāng)接收到串口接收中斷時,讀取數(shù)據(jù)暫存在緩沖區(qū)中,進入數(shù)據(jù)寫入狀態(tài)。中斷處理程序如圖6所示。
2.2.3 狀態(tài)查詢
圖6 中斷處理程序
查詢狀態(tài)主要有需要發(fā)送文件、有數(shù)據(jù)寫入、1 s超時狀態(tài)。如果需要發(fā)送文件,則根據(jù)獲取的參數(shù)(文件路徑)操作U盤讀取相應(yīng)數(shù)據(jù)通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù),發(fā)送完成后,關(guān)閉數(shù)據(jù)連接和打開的文件,發(fā)送傳輸結(jié)束命令。如果有數(shù)據(jù)寫入,則根據(jù)獲取的參數(shù)執(zhí)行寫U盤操作。當(dāng)數(shù)據(jù)發(fā)送完成時對方會通過控制連接發(fā)送命令通知服務(wù)器,并關(guān)閉數(shù)據(jù)連接,則寫U盤結(jié)束,更新文件長度并關(guān)閉文件。1 s超時為當(dāng)用戶不需要操作的時候,1 s內(nèi)未進行任何操作(包括數(shù)據(jù)通信),則會進入超時狀態(tài)。此時服務(wù)器會主動關(guān)閉與用戶的控制連接,目的是快速釋放連接通道,因為本FTP服務(wù)器同一時刻只有一個用戶連接,每次只有一個用戶在訪問,如果用戶不進行任何操作又長時間占用此通道則其他用戶無法訪問該服務(wù)器。1 s超時處理既不影響用戶正常操作,又可以快速釋放通道,保證多個用戶快速地訪問。狀態(tài)機程序如圖7所示。
圖7 狀態(tài)機程序
PC可通過自帶瀏覽器直接訪問U盤中的文件。支持對U盤中文件的創(chuàng)建、刪除、下載、上傳、讀取等操作,基本上與電腦直接操作文件一樣,傳輸速度穩(wěn)定,并且支持多人快速地訪問。遵循熟悉的文件操作方式,以很低的硬件成本實現(xiàn)了遠(yuǎn)程文件傳輸、數(shù)據(jù)管理、信息交互這一遠(yuǎn)程文件管理系統(tǒng)。
本文提出以太網(wǎng)協(xié)議棧接口芯片CH395作為網(wǎng)絡(luò)通信媒介,實現(xiàn)對遠(yuǎn)程文件的智能化管理,根據(jù)實際應(yīng)用增加特殊的功能擴展,可用于諸如智能化家居系統(tǒng)、工業(yè)智能化從站系統(tǒng)和網(wǎng)絡(luò)安全等多種場合。
[1]江蘇沁恒股份有限公司.以太網(wǎng)協(xié)議棧芯片CH395手冊(一),2013.
[2]科齊勒克.TCP/IP指南(卷1)[M].陳鳴,賈永興,宋麗華,譯.北京:人民郵電出版社,2008.
[3]Postel Jon.RFC 793—1981傳輸控制協(xié)議-DARPA Internet程序協(xié)議規(guī)范[S].