柯玉山,陳阿輝,邱菁
(福州大學 物理與信息工程學院,福州 350002)
?
滿足IoT市場的CC3200 WiFi無線存儲系統(tǒng)*
柯玉山,陳阿輝,邱菁
(福州大學 物理與信息工程學院,福州 350002)
本文圍繞實現(xiàn)無線存儲系統(tǒng)展開,客戶端通過遠程無線方式與服務器進行通信,該服務器簡單易行,而且能有效對服務器端文件進行管理,同時能支持下載和上傳功能。該系統(tǒng)的硬件是以CC3200為主,存儲設備使用SD卡,軟件分服務器端和客戶端兩部分,服務器端搭載在CC3200上,軟件用QT實現(xiàn)。服務器依賴主芯片性能,文件傳輸以TFTP協(xié)議為基礎,構建TFTP服務器,實現(xiàn)在無線環(huán)境下對服務器端資料的操作。
CC3200;TFTP;SD卡
以往對CC3200中文件的更新基本上是用直接燒錄的方式來進行的,對于已經(jīng)投入市場的產(chǎn)品,用這種方式更新文件無形中增加了許多困難。本文更新的文件是利用TFTP協(xié)議[1]來傳輸,由于TFTP協(xié)議不支持用戶交互,這樣無疑增加了用戶的難度,所以這里用JSON[2]來傳輸文件名和命令操作指令,使得可以具有保持TFTP協(xié)議特性的同時也具有可交互。通過本文的方法可以在產(chǎn)品運行的同時,實施對文件的更新,而且可以為用戶提供類似網(wǎng)盤的數(shù)據(jù)存儲。
該系統(tǒng)的硬件主要是CC3200核心模塊(見圖1)與SD卡槽(見圖2)連接而成,SD卡只要三個線連接到核心板上即可,即SD_CMD、SD_CLK、SD_DATA分別連接到核心板上的PIN02、PIN01、PIN64,這三個引腳是CC3200為連接SD卡而預留的特定引腳。核心板上的S10是撥碼開關,這樣可以選擇不同的程序載入模式,P10是為了測電流而預留的引腳,可以直接連接;SD卡槽三個連接芯片引腳必須接上拉電阻。
圖1 核心板原理圖
圖2 SD卡槽連接原理圖
系統(tǒng)是利用TFTP協(xié)議實現(xiàn)無線管理文件的,圖3是IP數(shù)據(jù)報文格式,除去IP首部和UDP首部,余下的是TFTP數(shù)據(jù)報文。在文件上傳和下載時會涉及到TFTP協(xié)議報文中的5種模式:讀取操作請求(RRQ)、寫操作請求(WRQ)、傳輸數(shù)據(jù)(DATA)、回應報文(ACK)、錯誤指示(ERROR)(見圖3),在程序中一般分別以1~5來標識。具體會根據(jù)服務器和客戶端之間協(xié)定的不同指令來發(fā)送報文,文件數(shù)據(jù)是通過操作碼為DATA來傳輸,每次是以512字節(jié)來發(fā)送,最后小于512字節(jié)表明文件數(shù)據(jù)傳輸結束。TFTP協(xié)議規(guī)定數(shù)據(jù)傳輸通過69號端口,服務器和客戶端之間文件的上傳和下載都是通過該端口進行[3]。
圖3 TFTP數(shù)據(jù)幀格式
2.1 客戶端程序實現(xiàn)
系統(tǒng)的客戶端界面是用QT來編寫的,TFTP協(xié)議本身不具有可視化的功能,所以對于界面上的上傳(upload)、下載(download)、刪除(rm)、列文件(ls)、重命名(rename)可以再開辟一個端口來進行命令數(shù)據(jù)的傳輸,新開辟的端口與TFTP協(xié)議要求的端口不一樣,本文取8090作為命令數(shù)據(jù)傳輸?shù)亩丝?。客戶端和服務器端通信指令以JSON字符串進行,如{“cmd”:“rm”},JSON提供鍵值的形式非常適合該場合下應用,首先對命令進行JSON轉換然后傳輸,接收端接收到數(shù)據(jù)后對JSON字符串解析,之后再進行對應操作。
對于文件的上傳與下載就利用TFTP文件傳輸協(xié)議來實現(xiàn),該協(xié)議也是基于UDP協(xié)議,通信端口為69,這個端口是TFTP協(xié)議規(guī)定的端口,與上面提及的命令解析所用的端口8090完全不一樣。
由于QT具有優(yōu)良的跨平臺特性[4],而且模塊化程度比較高,所以本系統(tǒng)的客戶端是利用QT來實現(xiàn)界面的。這里QT界面產(chǎn)生指令或者網(wǎng)絡上報的消息要預先和對應的處理函數(shù)綁定,即信號和槽通過connect函數(shù)進行連接,這樣只要有界面指令或網(wǎng)絡信號,就會觸發(fā)相應的處理函數(shù),然后依據(jù)具體的處理函數(shù)來處理相關事件,為了程序流程圖比較好描述,本文用CMD來表示不同處理函數(shù)的選擇。
客戶端軟件執(zhí)行過程如圖4所示。
圖4 客戶端軟件流程
① 界面相關的設置,主要有上傳、刪除、下載等UI控件界面;
② 客戶端創(chuàng)建套接字,協(xié)議類型是UDP,采用的端口是8090;
③ UI控件對應處理函數(shù)和UDP數(shù)據(jù)主動上報的處理函數(shù)綁定;
④ 系統(tǒng)依據(jù)操作命令的不同而進行相應的處理,執(zhí)行完之后重回等待命令。
通過TFTP協(xié)議實現(xiàn)文件上傳,就是預先給服務器發(fā)送一個寫請求,得到回應之后,批量讀取本地文件的數(shù)據(jù),然后發(fā)送,等待服務器回應,接收到回應后就繼續(xù)發(fā)送本地文件數(shù)據(jù),直到把文件數(shù)據(jù)完全發(fā)送完成。
如圖5所示,文件數(shù)據(jù)上傳程序執(zhí)行流程如下:
① 當界面命令指示進行文件上傳的時候,會先創(chuàng)建一個WRQ報文并發(fā)送;
② 服務器端接收到WRQ報文,允許上傳就會發(fā)回應答報文,客戶端接收報文,確認可以發(fā)送文件數(shù)據(jù);
③ 客戶端接收到確認信號,讀取本地文件數(shù)據(jù),然后發(fā)送,直到全部發(fā)送完成。
圖5 文件上傳功能
文件下載事先向服務器發(fā)送一個讀取報文,然后等待服務器確認,發(fā)回要下載的文件數(shù)據(jù),客戶端接收到數(shù)據(jù)并把它存儲到本地文件,直到把全部數(shù)據(jù)接收完成。
如圖6所示,文件下載的程序流程如下:
① 指令指示下載文件時,客戶端先創(chuàng)建一個RRQ報文,即下載文件請求并將該報文發(fā)送至服務器端;
② 服務器端接收到下載請求報文就會把客戶端需要的文件數(shù)據(jù)發(fā)送給客戶端,客戶端在此過程中等待接收文件數(shù)據(jù);
③ 客戶端把接收到的數(shù)據(jù)報文存儲到本地空間,并回復應答信號給服務器端;
④ 重復步驟③,直到文件下載完畢。
2.2 CC3200服務器端
服務器端是由CC3200來實現(xiàn)的,其中使用了TI的實時操作系統(tǒng)TIRTOS來對兩個任務實施調度,一個是負責文件上傳和下載的數(shù)據(jù)傳輸,另一個是負責JSON指令的轉換和解析。
如圖7所示,服務器端程序執(zhí)行流程如下:
① 開始先對板子上的設備初始化,這里主要有時鐘、串口、SD卡引腳相關的初始化;
圖6 下載文件流程圖
圖7 服務器端程序流程圖
② 服務器端要初始化文件系統(tǒng),以便對SD卡中的文件進行操作;
③ 任務處理函數(shù)的初始化和任務啟動,CC3200的WiFi開啟在TFTP任務中進行;
④ 依照接收到的命令執(zhí)行相應的任務,任務執(zhí)行之后,重復步驟④;
TFTP的任務是處理文件的上傳與下載,這部分與上文客戶端談及的文件下載和上傳是相似的,不再重復;命令解析任務是處理由客戶端傳遞到服務器端的JSON指令,即使命令轉化成JSON字符串和JSON字符串反解析成命令的操作。
該部分主要是軟件上的測試,本文采用的是先分后總的測試方法,即先分別測試服務器和客戶端,然后再對整個系統(tǒng)測試。
首先,在硬件可用的基礎上,利用TCP/IP測試工具對服務器和客戶端分別單獨測試。當TCP/IP工具作客戶端,CC3200作服務器端,將事先預定好的指令發(fā)送給服務器端,根據(jù)返回的字符串是否滿足預期來判斷服務器端代碼是否正常;當TCP/IP測試工具作服務器,客戶端與之連接,與上面的步驟相似,依據(jù)返回結果來判斷客戶端代碼是否正常。
最后,兩個部分單獨測試正常后,對整個系統(tǒng)進行測試,此時不用通過TCP/IP測試工具作為中間媒介,直接進行測試。經(jīng)過測試,結果完全正常。這里只給出
WiFi Wireless Storage System Based on CC3200 for IoT
Ke Yushan,Chen Ahui,Qiu Jing
(College of Physics and Information Engineering,Fuzhou University,Fuzhou 350002,China)
In the paper,the implementation of wireless storage system is discussed.The client communicates with the server through the wireless remote way.The server is simple and effective for server-side file management,at the same time it can support the download and upload functions.The hardware of the system is mainly based on CC3200,the storage device uses the SD card.The software is divided into two parts such as the server and the client.The server is equipped on the CC3200 board,the software is realized with QT.The server depends on the performance of the main chip,the file transfer is based on TFTP protocol,which can achieve the operation of the server side data in the wireless environment.
CC3200;TFTP;SD card
福建省科技計劃重點項目(2014H0026)。
TP368.5
A