楊震倫,許鍵新,楊培彬
(廣州番禺職業(yè)技術(shù)學(xué)院信息工程學(xué)院,廣州 511483)
基于TI-RTOS的物聯(lián)網(wǎng)網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)
楊震倫,許鍵新,楊培彬
(廣州番禺職業(yè)技術(shù)學(xué)院信息工程學(xué)院,廣州511483)
提出一種基于嵌入式實(shí)時(shí)操作系統(tǒng)TI-RTOS,在低成本MCU平臺F28M35Hx上實(shí)現(xiàn)的物聯(lián)網(wǎng)網(wǎng)關(guān)方案,給出硬件設(shè)計(jì)和軟件設(shè)計(jì)的關(guān)鍵點(diǎn)。該物聯(lián)網(wǎng)網(wǎng)關(guān)具有性價(jià)比高,靈活性強(qiáng)等特點(diǎn),在低成本,小規(guī)模的物聯(lián)網(wǎng)應(yīng)用系統(tǒng)中具有較高的應(yīng)用價(jià)值。
物聯(lián)網(wǎng);網(wǎng)關(guān);TI-RTOS;F28M35Hx
2016年度大學(xué)生科技創(chuàng)新培育專項(xiàng)資金立項(xiàng)項(xiàng)目(No.pdjh2016b0681)
隨著物聯(lián)網(wǎng)技術(shù)及相關(guān)應(yīng)用的迅速發(fā)展,接入物聯(lián)網(wǎng)的各類傳感設(shè)備及其他設(shè)備的數(shù)量和種類都不斷增加,而這些設(shè)備所采用的接口和協(xié)議都存在著較大差距。在早期的系統(tǒng)構(gòu)建中,針對相應(yīng)的具體應(yīng)用場景,人們往往需要研發(fā)特定物聯(lián)網(wǎng)設(shè)備,而當(dāng)應(yīng)用場景發(fā)生變化,相當(dāng)部分物聯(lián)網(wǎng)設(shè)備需要重新開發(fā),這導(dǎo)致工程應(yīng)用的較長周期和較高成本。所以目前的很多研究提出了一款被稱為物聯(lián)網(wǎng)網(wǎng)關(guān)的新型設(shè)備,如圖1所示,物聯(lián)網(wǎng)網(wǎng)關(guān)實(shí)現(xiàn)了多種傳感設(shè)備和外界的數(shù)據(jù)通路,能夠?qū)⒍嘟涌凇⒍鄥f(xié)議的傳感設(shè)備的數(shù)據(jù)進(jìn)行匯聚并且無差異地提供給應(yīng)用程序,是物聯(lián)網(wǎng)網(wǎng)絡(luò)層的核心組件。目前,大量的研究集中在各類基于Linux系統(tǒng)的物聯(lián)網(wǎng)網(wǎng)關(guān)[1-3],然而,對于一些低成本,小規(guī)模的應(yīng)用,基于Linux系統(tǒng)的物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)備存在成本過高,靈活性差等問題。本文提出了一種基于嵌入式實(shí)時(shí)操作系統(tǒng)TI-RTOS的低成本物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)備,在小規(guī)模的物聯(lián)網(wǎng)應(yīng)用中能降低系統(tǒng)構(gòu)建的成本,并且具有靈活性高的特點(diǎn)。
TI-RTOS是有德州儀器公司 (Texas Instruments, TI)所研發(fā)的一款面向MCU平臺,功能完善的實(shí)時(shí)操作系統(tǒng)[4]。TI-RTOS提供了經(jīng)過了預(yù)測試和預(yù)集成的一整套系統(tǒng)軟件組件,使得開發(fā)人員能夠?qū)W⒂谠O(shè)計(jì)應(yīng)用系統(tǒng),并且在使用中無需預(yù)付或運(yùn)行時(shí)許可費(fèi)用,能大大縮短相關(guān)產(chǎn)品的開發(fā)周期。TI-RTOS內(nèi)核在大多數(shù)TI公司的MCU和DSP平臺上都可使用,TI-RTOS中間件、驅(qū)動程序和板級支持包在某些選定的ARM處理器、ARM+DSP雙核處理器以及無線MCU上都可以使用。目前已經(jīng)有越來越多的廠商認(rèn)識到TI-RTOS的優(yōu)點(diǎn)并開始在各類應(yīng)用系統(tǒng)的設(shè)計(jì)中使用它。TIRTOS包含了眾多組件,下面是這些主要組件的簡單介紹。
圖1 物聯(lián)網(wǎng)系統(tǒng)示意圖
●TI-RTOS kernel:該內(nèi)核之前稱為SYS/BIOS,能提供搶占式多線程、線程間通信服務(wù)、內(nèi)存管理等。該內(nèi)核具有很優(yōu)秀的可配置性和可裁剪性。
●TI-RTOS NDK:TI-RTOS NDK提供了標(biāo)準(zhǔn)的IPv4和IPv6雙協(xié)議棧,編程接口支持BSD套接字,便于將Linux上開發(fā)的應(yīng)用程序移植到TI-RTOS上運(yùn)行。此外,網(wǎng)絡(luò)加密方面,TI-RTOS還提供了一個(gè)SSL庫,包括了TLS/SSL和DTLS以及一個(gè)內(nèi)容豐富的密碼庫
●TI-RTOS File System:該文件系統(tǒng)是與FAT兼容的文件系統(tǒng)。
●TI-RTOS USB:該USB協(xié)議棧同時(shí)支持USB HOST和DEVICE模式。
●TI-RTOS IPC:該組件主要在多核器件內(nèi)提供處理器間的通信機(jī)制。
●TI-RTOS UIA:該組件主要提供了一種統(tǒng)一的儀器架構(gòu),使得對儀器數(shù)據(jù)的收集更為便利。
●TI-RTOS Drivers and Board Initialization:TIRTOS的驅(qū)動程序和板級支持功能提供了一套標(biāo)準(zhǔn)的驅(qū)動程序API以及所有受支持的demo板的板級支持代碼。
本文所提出的物聯(lián)網(wǎng)網(wǎng)關(guān)的硬件主要是基于高性價(jià)比的MCU平臺F28M35Hx,軟件主要是基于TIRTOS操作系統(tǒng),具有成本低及靈活性高等特點(diǎn),下面將分別對物聯(lián)網(wǎng)網(wǎng)關(guān)的硬件和軟件設(shè)計(jì)分別展開闡述,其中對基于TI-RTOS的軟件開發(fā)給出重點(diǎn)說明。
2.1物聯(lián)網(wǎng)網(wǎng)關(guān)硬件設(shè)計(jì)
F28M35Hx是TI公司推出的DSP+ARM雙核處理器系列,具有以太網(wǎng)控制器、PWM、ADC、CAN、USB、SPI、IIC等豐富的片上外設(shè),并且由于該系列處理器的單片價(jià)格為10美元左右,而對于很多常規(guī)的應(yīng)用,幾乎不需要添加額外的片外外設(shè)即可滿足設(shè)計(jì)的需求,具有很高的性價(jià)比[5]。物聯(lián)網(wǎng)網(wǎng)關(guān)的硬件結(jié)構(gòu)如圖2所示,其中可以通過IIC接口訪問本地?cái)U(kuò)展的EEPROM,在本設(shè)計(jì)中,采用的是Atmel公司的AT24C512C,通過串口可以通過Wi-Fi模塊訪問無線路由器,在本設(shè)計(jì)中采用的是EPS8266模塊,通過串口連接的ZigBee模塊,可以收集無線傳感器網(wǎng)絡(luò)的數(shù)據(jù),本設(shè)計(jì)中采用的是高性能的Xbee模塊,通過ADC可以采集眾多直接連接的傳感器的數(shù)據(jù),而通過SPI、CAN和USB等接口,可以和各類數(shù)據(jù)采集設(shè)備或者RFID設(shè)備相連接。此外,F(xiàn)28M35Hx具有片上以太網(wǎng)控制器,可通過外接的SMSC公司的物理層芯片LAN8710a來接入以太網(wǎng)。
圖2 物聯(lián)網(wǎng)網(wǎng)關(guān)硬件結(jié)構(gòu)框圖
2.2物聯(lián)網(wǎng)網(wǎng)關(guān)軟件設(shè)計(jì)
物聯(lián)網(wǎng)網(wǎng)關(guān)的軟件設(shè)計(jì)基于多任務(wù),在TI-RTOS上進(jìn)行開發(fā),需要使用TI公司的Code Composer Studio(CCS)集成開發(fā)工具。具體而言包括兩部分工作,第一部分是在相應(yīng)工程中對*.cfg文件,可對各外設(shè)的驅(qū)動、網(wǎng)絡(luò)協(xié)議、任務(wù)、任務(wù)間通信和同步機(jī)制等模塊進(jìn)行靜態(tài)配置和裁剪,第二部分是在調(diào)用SYS/BIOS、NDK等組件的API函數(shù)基礎(chǔ)上完成應(yīng)用程序的設(shè)計(jì)。
在物聯(lián)網(wǎng)網(wǎng)關(guān)的軟件設(shè)計(jì)中,為了實(shí)現(xiàn)有效的進(jìn)程同步機(jī)制,采用了信號量(Semphore)機(jī)制,而對于每個(gè)啟用的接口,采用了單獨(dú)創(chuàng)建一個(gè)伺服進(jìn)程來處理數(shù)據(jù)的方法,而對所有采集的數(shù)據(jù)都將通過一個(gè)數(shù)據(jù)處理任務(wù)來進(jìn)行進(jìn)一步處理,并實(shí)現(xiàn)本地存儲或者通過通信接口發(fā)送,其中為了提高通信的安全性,可以啟用TI-RTOS的SSL模塊。在進(jìn)行*.cfg文件的配置上,可以通過圖形界面來點(diǎn)選完成,也可以直接對*.cfg文件進(jìn)行編輯,下面是本設(shè)計(jì)中*.cfg文件的部分關(guān)鍵代碼,主要包含四部分,為了便于說明,我們在每行代碼的前面加了行號。
初始化部分主要包括:
1. var BIOS = xdc.useModule(’ti.sysbios.BIOS’);
2. var Clock = xdc.useModule(’ti.sysbios.knl.Clock’);
3. var Task = xdc.useModule(’ti.sysbios.knl.Task’);
4. var Semaphore = xdc.useModule(’ti.sysbios.knl.Semaphore’);
5. var Hwi = xdc.useModule(’ti.sysbios.hal.Hwi’);
6. var HeapMem = xdc.useModule(’ti.sysbios.heaps.HeapMem’);
7. var UART = xdc.useModule(’ti.drivers.UART’);
這里的每一行都是初始化一個(gè)模塊,包括內(nèi)核(1至3行),信號量(第4行)和串口(第7行)等。
NDK的配置代碼為:
1. var Global = xdc.useModule(’ti.ndk.config.Global’);
2. var Ip = xdc.useModule(’ti.ndk.config.Ip’);
3. var Udp = xdc.useModule(’ti.ndk.config.Udp’);
4. var Tcp = xdc.useModule(’ti.ndk.config.Tcp’);
5. Global.IPv6 = true;
6. Global.stackLibType = Global.MIN;
7. Global.networkOpenHook = "&netOpenHook";
8. Global.networkCloseHook = ’&netCloseHook’;
第2到4行是啟動網(wǎng)絡(luò)的IP、TCP、UDP協(xié)議,第7、8行是協(xié)議棧啟動和結(jié)束的鉤子函數(shù),對于和網(wǎng)絡(luò)相關(guān)的初始化代碼放在netOpenHook函數(shù)中,而用于程序結(jié)束時(shí)的處理代碼則放在netCloseHook函數(shù)中。
每個(gè)信號量的配置代碼如下:
1. var semaphore0Params = new Semaphore.Params();
2. semaphore0Params.instance.name = "semaphoreUART";
3. semaphore0Params.mode = Semaphore.Mode_BINARY;
4. Program.global.semaphoreUART = Semaphore.create(null, semaphore0Params);
主要包括了信號量命名(第2行),信號量的模式配置(第3行),信號量的創(chuàng)建(第4行)等。
在程序設(shè)計(jì)中,主程序主要是初始化硬件,創(chuàng)建任務(wù),最后調(diào)用BIOS_start函數(shù)來啟動操作系統(tǒng)。創(chuàng)建任務(wù)的一個(gè)例子為:
1. Error_init(&ebtime);
2. Timer_Params_init(&timerParams);
3. timerParams.period = 100;
4. timerParams.arg = 1;
5. timerHandle = Timer_create(Timer_ANY, tickfunc, &timerParams, &ebtime);
該例子主要是創(chuàng)建一個(gè)時(shí)間定時(shí)處理任務(wù),前面4行主要是參數(shù)的設(shè)置,如第3行表示定時(shí)處理時(shí)間為100毫秒,第5行為任務(wù)的創(chuàng)建,其中tickfunc為任務(wù)的執(zhí)行體函數(shù)。
在每個(gè)接口的伺服任務(wù)中,具體而言是等待相應(yīng)的硬件中斷,然后通過驅(qū)動程序讀取硬件數(shù)據(jù),經(jīng)過處理后提交給數(shù)據(jù)處理任務(wù),其具體流程可參見圖3左圖。而對于數(shù)據(jù)處理任務(wù)而言,受各接口的伺服進(jìn)程發(fā)送數(shù)據(jù)的事件驅(qū)動,其流程可參見圖3右圖??煽闯?,在TI-RTOS上實(shí)現(xiàn)的物聯(lián)網(wǎng)網(wǎng)關(guān)軟件具有簡潔高效的特點(diǎn)。其中任務(wù)間同步的關(guān)鍵代碼的一個(gè)例子為:
1. Semaphore_post(semaphoreUART);
2. Semaphore_pend(semaphoreUARTDone,BIOS_WAIT_FOREVER);
這段代碼中包括兩個(gè)信號量,semaphoreUART和semaphoreUARTDone,semaphoreUART是在第1行代碼中用于當(dāng)前任務(wù)向其它任務(wù)發(fā)送信號,而semaphoreUARTDone是在第2行用于由當(dāng)前任務(wù)等待其他任務(wù)發(fā)送信號,其中的BIOS_WAIT_FOREVER表示永久等待。
在物聯(lián)網(wǎng)網(wǎng)關(guān)的硬件和基礎(chǔ)軟件的基礎(chǔ)上,可根據(jù)需要進(jìn)一步開發(fā)中間件軟件,實(shí)現(xiàn)過濾、數(shù)據(jù)格式轉(zhuǎn)換以及數(shù)據(jù)加密等功能。
圖3 接口伺服任務(wù)及數(shù)據(jù)處理任務(wù)流程
隨著物聯(lián)網(wǎng)相關(guān)技術(shù)及應(yīng)用的快速發(fā)展,作為連接感知系統(tǒng)和通信網(wǎng)絡(luò)的物聯(lián)網(wǎng)網(wǎng)關(guān)在其中的地位也日益重要,基于當(dāng)前大多數(shù)物聯(lián)網(wǎng)網(wǎng)關(guān)的造價(jià)高,靈活性低的現(xiàn)狀,本文提出了一種基于低成本MCU平臺F28M35Hx的物聯(lián)網(wǎng)網(wǎng)關(guān),其軟件設(shè)計(jì)基于TI-RTOS,具有簡潔高效的特點(diǎn)。本文所提出的物聯(lián)網(wǎng)網(wǎng)關(guān)在各類低成本,小規(guī)模的物聯(lián)網(wǎng)系統(tǒng)中具有廣泛的應(yīng)用前景,在其硬件基礎(chǔ)上可進(jìn)一步開發(fā)中間件系統(tǒng),這對于加快物聯(lián)網(wǎng)技術(shù)在相關(guān)領(lǐng)域的應(yīng)用及提升相關(guān)應(yīng)用的技術(shù)水平具有一定的意義。
[1]常英亮.基于嵌入式Linux的物聯(lián)網(wǎng)網(wǎng)關(guān)研究與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2014.
[2]賈崢.基于嵌入式Linux的物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計(jì)與應(yīng)用[D].重慶:重慶理工大學(xué),2014.
[3]洪嵐,王佳斌.基于 Linux的物聯(lián)網(wǎng)智能網(wǎng)關(guān)的軟件設(shè)計(jì)[J].中國新通信.2016,18(9).
[4]TI-RTOS.[EB/OL];2016 updated 2016;cited];Available from:http://processors.wiki.ti.com/index.php/TI-RTOS.
[5]王建偉.基于F28M35Hx的嵌入式TCP/IP協(xié)議棧的研究與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2013.
Internet of Things;Gateway;TI-RTOS;F28M35Hx
Implement of IoT Gateway Based on TI-RTOS
YANG Zhen-lun XU Jiang-xin YANG Pei-bin
(School of Information Engineering,Guangzhou Panyu Polytechnic College,Guangzhou 511483)
Proposes the Internet of Things(IoT)gateway scheme based on real-time operation system TI-RTOS and the low price MCU platform F28M35Hx,and presents the hardware and software implement.The IoT gateway characterized by high performance-price ratio and flexibility,and can be applied on the lost price and small scale IoT systems.
1007-1423(2016)28-0058-04
10.3969/j.issn.1007-1423.2016.28.016
楊震倫(1978-),男,廣東大埔人,副教授,碩士,研究方向?yàn)檫M(jìn)化算法、圖像處理、物聯(lián)網(wǎng)技術(shù)許鍵新(1996-),男,廣東汕頭人,??疲芯糠较?yàn)槲锫?lián)網(wǎng)技術(shù)楊培彬(1996-),男,廣東潮州人,專科,研究方向?yàn)槲锫?lián)網(wǎng)技術(shù)
2016-08-16
2016-09-30