满足IoT市场的CC3200 WiFi无线存储系统*

2017-02-09 03:12柯玉山陈阿辉邱菁
单片机与嵌入式系统应用 2017年1期
关键词:服务器端报文端口

柯玉山,陈阿辉,邱菁

(福州大学 物理与信息工程学院,福州 350002)



满足IoT市场的CC3200 WiFi无线存储系统*

柯玉山,陈阿辉,邱菁

(福州大学 物理与信息工程学院,福州 350002)

本文围绕实现无线存储系统展开,客户端通过远程无线方式与服务器进行通信,该服务器简单易行,而且能有效对服务器端文件进行管理,同时能支持下载和上传功能。该系统的硬件是以CC3200为主,存储设备使用SD卡,软件分服务器端和客户端两部分,服务器端搭载在CC3200上,软件用QT实现。服务器依赖主芯片性能,文件传输以TFTP协议为基础,构建TFTP服务器,实现在无线环境下对服务器端资料的操作。

CC3200;TFTP;SD卡

引 言

以往对CC3200中文件的更新基本上是用直接烧录的方式来进行的,对于已经投入市场的产品,用这种方式更新文件无形中增加了许多困难。本文更新的文件是利用TFTP协议[1]来传输,由于TFTP协议不支持用户交互,这样无疑增加了用户的难度,所以这里用JSON[2]来传输文件名和命令操作指令,使得可以具有保持TFTP协议特性的同时也具有可交互。通过本文的方法可以在产品运行的同时,实施对文件的更新,而且可以为用户提供类似网盘的数据存储。

1 系统硬件部分

该系统的硬件主要是CC3200核心模块(见图1)与SD卡槽(见图2)连接而成,SD卡只要三个线连接到核心板上即可,即SD_CMD、SD_CLK、SD_DATA分别连接到核心板上的PIN02、PIN01、PIN64,这三个引脚是CC3200为连接SD卡而预留的特定引脚。核心板上的S10是拨码开关,这样可以选择不同的程序载入模式,P10是为了测电流而预留的引脚,可以直接连接;SD卡槽三个连接芯片引脚必须接上拉电阻。

图1 核心板原理图

图2 SD卡槽连接原理图

2 系统软件部分

系统是利用TFTP协议实现无线管理文件的,图3是IP数据报文格式,除去IP首部和UDP首部,余下的是TFTP数据报文。在文件上传和下载时会涉及到TFTP协议报文中的5种模式:读取操作请求(RRQ)、写操作请求(WRQ)、传输数据(DATA)、回应报文(ACK)、错误指示(ERROR)(见图3),在程序中一般分别以1~5来标识。具体会根据服务器和客户端之间协定的不同指令来发送报文,文件数据是通过操作码为DATA来传输,每次是以512字节来发送,最后小于512字节表明文件数据传输结束。TFTP协议规定数据传输通过69号端口,服务器和客户端之间文件的上传和下载都是通过该端口进行[3]。

图3 TFTP数据帧格式

2.1 客户端程序实现

系统的客户端界面是用QT来编写的,TFTP协议本身不具有可视化的功能,所以对于界面上的上传(upload)、下载(download)、删除(rm)、列文件(ls)、重命名(rename)可以再开辟一个端口来进行命令数据的传输,新开辟的端口与TFTP协议要求的端口不一样,本文取8090作为命令数据传输的端口。客户端和服务器端通信指令以JSON字符串进行,如{“cmd”:“rm”},JSON提供键值的形式非常适合该场合下应用,首先对命令进行JSON转换然后传输,接收端接收到数据后对JSON字符串解析,之后再进行对应操作。

对于文件的上传与下载就利用TFTP文件传输协议来实现,该协议也是基于UDP协议,通信端口为69,这个端口是TFTP协议规定的端口,与上面提及的命令解析所用的端口8090完全不一样。

由于QT具有优良的跨平台特性[4],而且模块化程度比较高,所以本系统的客户端是利用QT来实现界面的。这里QT界面产生指令或者网络上报的消息要预先和对应的处理函数绑定,即信号和槽通过connect函数进行连接,这样只要有界面指令或网络信号,就会触发相应的处理函数,然后依据具体的处理函数来处理相关事件,为了程序流程图比较好描述,本文用CMD来表示不同处理函数的选择。

客户端软件执行过程如图4所示。

图4 客户端软件流程

① 界面相关的设置,主要有上传、删除、下载等UI控件界面;

② 客户端创建套接字,协议类型是UDP,采用的端口是8090;

③ UI控件对应处理函数和UDP数据主动上报的处理函数绑定;

④ 系统依据操作命令的不同而进行相应的处理,执行完之后重回等待命令。

通过TFTP协议实现文件上传,就是预先给服务器发送一个写请求,得到回应之后,批量读取本地文件的数据,然后发送,等待服务器回应,接收到回应后就继续发送本地文件数据,直到把文件数据完全发送完成。

如图5所示,文件数据上传程序执行流程如下:

① 当界面命令指示进行文件上传的时候,会先创建一个WRQ报文并发送;

② 服务器端接收到WRQ报文,允许上传就会发回应答报文,客户端接收报文,确认可以发送文件数据;

③ 客户端接收到确认信号,读取本地文件数据,然后发送,直到全部发送完成。

图5 文件上传功能

文件下载事先向服务器发送一个读取报文,然后等待服务器确认,发回要下载的文件数据,客户端接收到数据并把它存储到本地文件,直到把全部数据接收完成。

如图6所示,文件下载的程序流程如下:

① 指令指示下载文件时,客户端先创建一个RRQ报文,即下载文件请求并将该报文发送至服务器端;

② 服务器端接收到下载请求报文就会把客户端需要的文件数据发送给客户端,客户端在此过程中等待接收文件数据;

③ 客户端把接收到的数据报文存储到本地空间,并回复应答信号给服务器端;

④ 重复步骤③,直到文件下载完毕。

2.2 CC3200服务器端

服务器端是由CC3200来实现的,其中使用了TI的实时操作系统TIRTOS来对两个任务实施调度,一个是负责文件上传和下载的数据传输,另一个是负责JSON指令的转换和解析。

如图7所示,服务器端程序执行流程如下:

① 开始先对板子上的设备初始化,这里主要有时钟、串口、SD卡引脚相关的初始化;

图6 下载文件流程图

图7 服务器端程序流程图

② 服务器端要初始化文件系统,以便对SD卡中的文件进行操作;

③ 任务处理函数的初始化和任务启动,CC3200的WiFi开启在TFTP任务中进行;

④ 依照接收到的命令执行相应的任务,任务执行之后,重复步骤④;

TFTP的任务是处理文件的上传与下载,这部分与上文客户端谈及的文件下载和上传是相似的,不再重复;命令解析任务是处理由客户端传递到服务器端的JSON指令,即使命令转化成JSON字符串和JSON字符串反解析成命令的操作。

3 系统测试

该部分主要是软件上的测试,本文采用的是先分后总的测试方法,即先分别测试服务器和客户端,然后再对整个系统测试。

首先,在硬件可用的基础上,利用TCP/IP测试工具对服务器和客户端分别单独测试。当TCP/IP工具作客户端,CC3200作服务器端,将事先预定好的指令发送给服务器端,根据返回的字符串是否满足预期来判断服务器端代码是否正常;当TCP/IP测试工具作服务器,客户端与之连接,与上面的步骤相似,依据返回结果来判断客户端代码是否正常。

最后,两个部分单独测试正常后,对整个系统进行测试,此时不用通过TCP/IP测试工具作为中间媒介,直接进行测试。经过测试,结果完全正常。这里只给出

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

猜你喜欢
服务器端报文端口
基于J1939 协议多包报文的时序研究及应用
一种端口故障的解决方案
Linux环境下基于Socket的数据传输软件设计
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
浅析异步通信层的架构在ASP.NET 程序中的应用
端口阻塞与优先级
基于Qt的安全即时通讯软件服务器端设计
ATS与列车通信报文分析
8端口IO-Link参考设计套件加快开发速度