999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式系統軟件自動生成方法研究

2018-01-09 13:06:12陳駿勰
軟件導刊 2017年12期
關鍵詞:物聯網

陳駿勰

摘要:相比于PC軟件系統的設計,嵌入式系統的設計具有更多難點。由于嵌入式系統的CPU性能較差,嵌入式系統軟件設計對于很多初學者而言較為困難。研究了嵌入式系統軟件自動生成的方法,它是一款具有云服務的嵌入式系統開發套件的一部分,可以根據開發者需求,智能生成嵌入式軟件,所生成的軟件代碼只需進行少量改動,即能實現具有云服務功能的嵌入式終端設計。經過測試,生成的程序運行穩定、通信安全性高、操作方便,可以為嵌入式系統學習者和開發人員提供一條新的系統開發路徑。

關鍵詞:云技術;物聯網;阿里云;嵌入式技術;ESP8266

DOIDOI:10.11907/rjdk.172612

中圖分類號:TP301

文獻標識碼:A 文章編號:1672-7800(2017)012-0036-04

Abstract:Compared to the design of PC software system, the design of embedded system is more difficult. The current common market development kit mainly reduce hardware development difficulty. Due to poor CPU performance of the embedded system, embedded system software design is still one of the hardest difficult for many beginners to get started.Thic topic research the method of embedded system software automatically generated. It is a part of a cloud service development kit. The intelligent generation code only needs a little change, and can be achieved with embedded terminal design of cloud services. After testing, the generated program runs stably, the communication security is high, and the operation is convenient. It can provide a new system development path for the embedded system learners and developers.

Key Words:cloud technology; Internet of Things; Ali cloud; embedded; ESP8266

0 引言

嵌入式系統[1]應用非常廣泛,它是一種專用的計算機系統,相比于PC系統,其是軟件和硬件的綜合體,除需要設計軟件代碼外,硬件的相關設計也是嵌入式系統設計的難點之一。傳統的嵌入式系統開發套件更多地考慮了硬件設計的便利性,而對于嵌入式系統軟件設計的智能化和自動化研究較少,從而影響了嵌入式系統的開發和普及。隨著嵌入式系統的一大分支——智能家居[2]的發展,嵌入式系統的問題逐漸凸顯出來,如各種智能家居系統普遍存在不同廠家間設備難以兼容、云服務器設計難度大、難以保證信息安全性等問題。因此,各類為智能家居系統提供服務的云平臺服務系統應運而生。阿里云物聯網開發套件即是其中的產品之一,它是阿里云專門為物聯網領域開發人員推出的,其目的是幫助開發者搭建安全且性能強大的數據通道,方便終端(如傳感器、執行器、嵌入式設備或智能家電等)和云端的雙向通信。在安全上,物聯網套件提供多重防護,保障設備云端安全;在性能上,物聯網套件能夠支撐億級設備長連接,百萬消息并發。物聯網套件還提供了一站式托管服務,從數據采集到計算,再到存儲,用戶無需購買服務器部署分布式架構,只需通過規則引擎在Web上配置規則,即可實現“采集+計算+存儲”等全棧服務。另一方面,隨著無線通信技術的進步,國內外出現了大量帶有無線近距離通信功能的MCU芯片,其中ESP8266即是一款性價比較高的低功耗WiFi芯片[3-4]。它可以作為WiFi終端,也可以作為路由器使用,其同時具有較多外設,開發靈活,應用前景廣闊。

筆者結合ESP8266與阿里云物聯網套件,設計了一款具有云服務功能的開發套件,它與其它同類產品最大的區別在于具有智能化的嵌入式系統軟件自動生成功能。相比于人工編寫代碼的方式,自動生成的代碼具有通信安全性高、配置方便、穩定性高、兼容性強等優勢,從而降低了嵌入式系統開發難度,提高了開發者的開發效率。

開發套件由一個云平臺、終端軟件生成工具和相關硬件平臺構成,默認硬件采用STM32F103C8T6(以下簡稱STM32)為核心,開發套件的開發流程如圖1所示。使用者完成項目設計后,通過IE瀏覽器訪問云平臺,對自己的項目進行配置,再通過嵌入式軟件生成算法生成相應工程代碼,適當修改后,燒錄入硬件平臺中,即可完成一個具有云服務功能的嵌入式系統設計。本文在簡要介紹整個系統結構的前提下,主要介紹開發套件的核心,即嵌入式系統軟件自動生成算法的原理與流程。

1 開發套件整體結構

如圖2所示,開發套件由兩部分構成,一部分依托于阿里云的主控服務器(以下簡稱云端),另一部分是STM32和ESP8266組成的嵌入式系統開發模塊(以下簡稱終端)。云端由數據服務器和授權服務器構成。數據服務器是整個云端的核心,為終端提供了與云服務有關的支持,如數據交互;授權服務器主要實現兩方面功能:一是給予開發人員項目設置功能,如配置項目數據點,綁定對應的手機APP;二是給予終端設備授權驗證功能,實現設備秘鑰的分發,簡化設備初次上網難度。終端由ESP8266和STM32組成,ESP8266實現與云端通信,STM32是終端的核心,嵌入式系統軟件生成工具的主要目標就是智能化地生成終端軟件代碼。

云端布置在阿里云上,通過阿里云物聯網套件與終端通信,每個開發者在云端、網頁完成注冊后,可以建立屬于自己的項目。開發套件的項目結構如圖3所示,一個開發者可以新建若干項目,每一個項目下可以有多個終端設備。開發者使用賬號密碼管理自己創建的項目,每個項目會分配一個項目ID和項目秘鑰,這兩個參數需要寫入該項目的終端設備中。云端通過終端設備上報的項目ID和項目秘鑰對應相應的項目,同時每個終端會包含終端獨有設備ID和設備秘鑰,阿里云物聯網套件會通過該ID和秘鑰驗證終端身份,并且區分每個設備,以保證通信的可靠性。

2 云端與終端通信協議

云端與終端的數據交互方式非常重要,它提供了兩者數據交互的信道,對其進行合理設計具有諸多重要意義:一方面數據交互是兩者間通信的重點,合理的通信方式可以在減少自動生成方法設計難度的同時,提高整體的通信安全性;另一方面是在終端初次聯網時,能夠智能地配置終端相關參數,使開發者在使用本系統學習與調試時不用頻繁配置云端,解決了終端批量化生產后的參數配置問題。

2.1 云端與終端通信方式

由于終端與云端的通信需要借助于阿里云物聯網套件,因此終端使用MQTT[6-7](Message Queuing Telemetry Transport,消息隊列遙測傳輸)協議與云端進行通信。MQTT可以應用在低帶寬、不可靠的通信信道中,同時阿里云開發套件在MQTT協議之上額外使用TSL加密技術[8],以保證通信的保密性。因此,本系統的終端使用該協議與云端進行通信,終端將MQTT協議封裝于ESP8266中,不需要開發者關心使用細節。

2.2 終端聯網參數配置方式

終端設備連接云端時,云端需要驗證終端的設備ID和秘鑰,用于分辨終端設備。為方便學習者燒寫程序后能自動刷新設備,設備ID和秘鑰記錄在STM32中,可以選擇在燒寫程序時固化,也可以在初次聯網時動態獲取。

當終端需要智能獲取聯網參數時,它會與云端的授權服務器通信,以獲取必要的參數。其流程是終端使用包含項目ID的數據包,通過HTTP協議向授權服務器申請新的設備ID和秘鑰,并加上相應的MD5簽名[9],該簽名與項目秘鑰及當前時間有關。如果授權服務器驗證通過,則會通過加密方式發送新的設備ID和設備秘鑰。

2.3 數據交互協議設計

系統的云端與終端兩部分間需要進行數據交互,為了簡化設計,所有數據均采用數據點的方式進行通信,也即是將要通信的數據做成一個個節點,當終端和云端通信時,協議實現了這些節點數據的同步。對于云端和終端中同步的變量,兩者均保存一個副本,如一個燈的開關狀態,當一方需要修改該參數時,則通知另一方同時進行修改,或者對于某一方可執行的額外解析程序,如終端的異常報警,云端接收后不需要保存即可直接對用戶進行警告。

數據點從10H開始編號,最大編號為FFFFH,當云端和終端通信時,這些數據點只使用編號進行標識,以減少網絡帶寬的消耗。這些數據點可以是整型、布爾型、浮點型、信息型或復合類型中的某一種類型,數字類型均采用固定字節的整型傳輸方式。對于浮點型的傳輸,會先乘以預先設置好的放大系數,取整后再通過整型進行傳輸。信息類型可以用來傳輸包括字符串在內的任何長度的任何數據,用戶可以靈活地進行擴展。

信息類型的協議如表1所示,其規則與MQTT編碼類似,先發送MsgLen,再發送MsgData,當信息長度小于128字節時,MsgLen占用1個字節,否則MsgLen占用2個字節,為第一個字節信息長度除以128的余數部分加上80H。第二個字節為整數部分,當接收方解析時,根據相同規則進行解析。

在本系統中,一幀數據包只能傳遞一個數據點。因此,如果項目需要一次性傳輸多個數據點,則必須使用復合類型,復合類型可以將多個數據點打包(包括另一個復合類型的數據點)。復合類型在申明時,可以申明所包含數據點的ID和對應順序,發送時按照申明時的順序進行發送。比如要發送包含2個數據的復合類型數據點,本身ID為15H,其中第一個數據的ID為10H,類型為整型,第二個數據的ID為22H,類型為布爾型,則發送的數據包(十六進制表示)可能為15 00 78 56 34 12 01,這代表了整型數據為12345678H,布爾型數據為真。

3 終端代碼生成與運行原理

代碼生成工具生成的軟件代碼由固定部分與動態生成部分構成,其中固定部分的代碼與項目無關,也是生成項目的核心程序,動態生成的程序代碼與項目相關,由必要的動作函數和描述項目的數組組成,其中固定部分是生成代碼的核心,動態部分作為固定部分的補充。

3.1 智能終端程序結構

終端由ESP8266和STM32構成,其中ESP8266的代碼考慮到燒寫問題,直接固化,不需要代碼生成工具生成,對于任何項目均不改變,主要完成與云端交互的功能。代碼生成工具主要生成STM32的運行代碼。STM32程序由內核層、API層、驅動層和數據點層構成。內核層是自動化生成代碼的核心,與具體項目無關;數據點層用于存儲每個數據點的情況,代碼的生成是代碼生產器的核心工作;API層作為與內核其它部分的接口,在自動化生成工具生成的同時,需要開發者進行定義;驅動層實現了硬件資源的封裝與調用,如調用串口與ESP8266通信,與具體硬件相關,通常不需要用戶定義與修改。

內核層的核心流程由消息和任務隊列組成,內核程序流程如圖4所示,任務隊列由消息驅動,程序的其它部分都可以往消息隊列里添加消息。終端通過內核層的任務機制,實現了偽并行功能,提高了終端并發的穩定性。

數據點層和API層是具體項目的核心,其中數據點層用來保存數據點的整體情況,除固定的API函數外,需要由代碼生成工具生成一個與項目相關的結構體數據,用來保存每個數據點的情況;API層是一個C文件,里面保存了所有數據點對應的讀寫函數,開發者可能需要對這一部分進行二次定義;驅動層實現了內核與硬件的交互,提供了諸如獲取系統狀態、發送調試數據等常用功能,可方便開發者調用系統資源,這里不作贅述。

3.2 智能終端數據收發流程

云端和終端數據交互是每個項目的核心功能之一,它驅動了云端和終端的相關事務流程,是自動生成方法的核心之一,以下介紹數據的收發流程。

當終端接收到一幀完整的數據包時,會依托內核層建立一個任務用以解析該幀數據,任務的執行流程如圖5所示,可以簡述為:①解析數據包,通過數據點層API獲得云端發送數據的數據類型;②判斷數據點類型是否為復合類型,是則進入③,否則進入④;③通過數據點層API獲取該數據點集合,對于集合當中的每個數據點,執行②;④根據數據類型的編碼規則分離出數據,建立一個新任務,在新任務中執行對應數據點的寫API,將數據接入對應數據點。

在此流程當中,網絡數據的解析與響應分為兩個任務執行,可避免解析程序運行時間過長,以提升產品用戶體驗。

當需要將終端數據發送給云端時,其流程與接收類似,開發者使用公共的發送API進行發送,其輸入參數為數據點ID與需要發送的數據,它會根據數據點層將待發送的數據打包為數據幀,發送到云端。

3.3 程序自動生成方法

由于代碼生成工具生成的項目代碼中,大部分都與具體項目無關,對于這些代碼直接復制即可,少部分需要動態生成的代碼具有較統一的格式。它們的生成方法很簡單,流程如圖6所示。首先生成工具會讀取具體項目的配置文件,獲得正常開發的項目參數,之后根據預先設計好的模板寫入各個參數,生成可編譯的代碼,寫入硬盤的相應位置,供用戶繼續開發使用。

4 結語

綜上述,本文研究的嵌入式軟件智能生成方法具有以下優點:①項目數據點設計靈活,項目設計靈活性高;②可擴展性較強,如二次開發者可以將本系統僅作為數據收發使用;③自動化程度高,可以智能地生成大部分代碼,減輕開發者工作難度。經過合作學校的試用,獲得了較好的反響,該開發套件將在學生學習以及開發具有云功能的產品中扮演重要角色。

參考文獻:

[1] 湯琳.基于智能電網的物聯網技術及其應用研究[J].綿陽師范學院學報,2016,35(5):79-83.

[2] 童曉渝,房秉毅,張云勇,等.物聯網智能家居發展分析[J].移動通信,2010,34(9):16-20.

[3] 范興隆.ESP8266在智能家居監控系統中的應用[J].單片機與嵌入式系統應用,2016,16(9):52-56.

[4] 曹振民,陳年生,馬強,等.基于ESP8266的無線控制電路設計[J].工業控制計算機,2017,30(1):68-69.

[5] 李寧,卞祥.基于機智云的智能宿舍系統設計[J].物聯網技術,2016(2):59-60,64.

[6] 劉峰,陳樸,賈軍營,等.WebSocket與MQTT在Web即時通信系統中的應用[J].計算機系統應用,2016,25(5):28-33.

[7] IBM,Eurotech . MQTT V3.1 Protocol Specification [EB/OL]. https://www.ibm.com/developerworks/library/ws-mqtt/.

[8] 楊亞平,李偉琴.基于SSL的數據安全傳輸系統的設計與實現[J].北京航空航天大學學報,2001,27(4):469-473.

[9] 張裔智,趙毅,湯小斌,等.MD5算法研究[J].計算機科學,2008,35(7):295-297.

(責任編輯:黃 健)

猜你喜歡
物聯網
基于物聯網的無線測溫模塊設計
軟件導刊(2016年9期)2016-11-07 21:56:29
基于物聯網ZigBee技術的智能家居監控系統 
軟件導刊(2016年9期)2016-11-07 21:32:45
物聯網監測技術在G15W112邊坡的應用
基于物聯網的健康管理服務模式
基于物聯網的煤礦智能倉儲與物流運輸管理系統設計與應用
基于高職院校物聯網技術應用人才培養的思考分析
如何在高校架設學生洗衣服務系統
科技視界(2016年22期)2016-10-18 17:23:30
基于無線組網的智慧公交站點信息系統研究與實踐
基于LABVIEW的溫室管理系統的研究與設計
論智能油田的發展趨勢及必要性
主站蜘蛛池模板: 国产亚洲欧美在线中文bt天堂| 高清精品美女在线播放| 亚洲综合色区在线播放2019| 中国一级毛片免费观看| 嫩草国产在线| 丁香亚洲综合五月天婷婷| 亚洲天堂首页| 久久国产高潮流白浆免费观看| 欧美福利在线观看| 国产在线视频二区| 国产免费一级精品视频| 五月天福利视频 | 免费观看欧美性一级| 国产日韩精品欧美一区灰| 国产对白刺激真实精品91| 无码人妻免费| 欧美亚洲第一页| 夜夜爽免费视频| 国产在线麻豆波多野结衣| 97超爽成人免费视频在线播放| 亚洲日韩精品伊甸| 亚洲精品午夜无码电影网| 免费国产福利| 无码日韩视频| 欧美亚洲欧美| 欧美日韩一区二区三区在线视频| 国产一级裸网站| 在线a视频免费观看| 国产后式a一视频| 欧美精品亚洲精品日韩专区| 国产va在线观看| 老司国产精品视频91| 六月婷婷精品视频在线观看| 亚洲精品麻豆| 欧洲亚洲一区| 国产一区二区三区在线精品专区| 日韩一区二区三免费高清| 日本草草视频在线观看| 精品无码视频在线观看| 亚洲天堂久久| 精品欧美日韩国产日漫一区不卡| 日韩av资源在线| 日韩第八页| 免费国产高清精品一区在线| 国产国拍精品视频免费看| 国产成人无码久久久久毛片| 国产区人妖精品人妖精品视频| 高清无码一本到东京热| 亚洲天堂在线视频| 久久国产精品夜色| 成人午夜天| 青青国产在线| yjizz国产在线视频网| 无码专区在线观看| 青青青草国产| 国产成人亚洲精品蜜芽影院| 久久久久亚洲av成人网人人软件| 97在线公开视频| 欧美专区在线观看| 91久久偷偷做嫩草影院电| 一区二区欧美日韩高清免费| 国产欧美日韩资源在线观看| 国产一区免费在线观看| 国产欧美日韩视频怡春院| 伊人久久大香线蕉成人综合网| 九九热免费在线视频| 国产欧美日韩资源在线观看| 欧美中文字幕一区| 成人国产免费| 精品欧美日韩国产日漫一区不卡| 免费A∨中文乱码专区| 第一页亚洲| 天天综合网色中文字幕| 97亚洲色综久久精品| 91在线播放免费不卡无毒| 美女国产在线| 亚洲精品制服丝袜二区| 98精品全国免费观看视频| 91原创视频在线| 亚洲人成网站观看在线观看| 国产成人久久综合777777麻豆| 国产成人综合亚洲欧美在|