亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        NB 超聲波燃?xì)獗淼男滦筒罘稚?jí)系統(tǒng)實(shí)現(xiàn)

        2023-10-24 03:30:06
        物聯(lián)網(wǎng)技術(shù) 2023年10期
        關(guān)鍵詞:程序

        陳 爽

        (遼寧思凱科技股份有限公司,遼寧 丹東 118008)

        0 引 言

        隨著智慧城市概念的不斷深入,智慧生活理念不斷增強(qiáng),互聯(lián)互通成為引領(lǐng)時(shí)代潮流的主題化代名詞,體現(xiàn)在燃?xì)庑袠I(yè)的技術(shù)進(jìn)步與發(fā)展的歷程為:普通機(jī)械式膜式燃?xì)獗怼A(yù)付費(fèi)IC、CPU 卡智能膜式燃?xì)獗怼悄軣o(wú)線遠(yuǎn)傳燃?xì)獗怼悄艹暡o(wú)線遠(yuǎn)傳燃?xì)獗?。智能超聲波無(wú)線遠(yuǎn)傳燃?xì)獗硪?guī)避了膜式燃?xì)獗頇C(jī)械磨損的弊端,降低了燃?xì)饧瘓F(tuán)供銷差,更有效地保障安全計(jì)量、安全用氣。但超聲波燃?xì)獗韀1]在應(yīng)用過(guò)程中也存在諸如微小流量誤報(bào)、脈動(dòng)流等問(wèn)題,還可能存在其他潛在的、未知的風(fēng)險(xiǎn)。另外,隨著技術(shù)的進(jìn)步,需要通過(guò)云端[2]獲取燃?xì)獗砩蠄?bào)的用氣情況進(jìn)行用戶用氣習(xí)慣的大數(shù)據(jù)分析,以保障用戶加深用氣安全理念,同時(shí)掌握其他非硬件變動(dòng)情況下用戶需求的改變。燃?xì)獗淼倪h(yuǎn)程升級(jí)變成了解決上述問(wèn)題的一種必要的技術(shù)手段。

        為解決超聲波燃?xì)獗淼拇a處理量過(guò)大、占用程序存儲(chǔ)空間過(guò)多,以及使用傳統(tǒng)的差分方式會(huì)導(dǎo)致極少的改動(dòng)和產(chǎn)生較多的差分升級(jí)包等問(wèn)題,選用或研發(fā)適宜的差分升級(jí)方式以及在不改變超聲波燃?xì)獗肀旧砉δ艿那疤嵯陆档痛a存儲(chǔ)空間顯得尤為重要。減少升級(jí)包,降低程序升級(jí)過(guò)程中的交互次數(shù)有如下優(yōu)勢(shì):首先,市面上的超聲波燃?xì)獗泶蠖疾捎盟上碌姆桨高M(jìn)行數(shù)據(jù)采集,正常模式下松下?lián)Q能器2 s 發(fā)送一次數(shù)據(jù)到燃?xì)獗碇骺匕澹式档蜔o(wú)線數(shù)據(jù)傳輸?shù)慕换ゴ螖?shù)可有效地緩解甚至避免計(jì)量數(shù)據(jù)被打斷或丟失的問(wèn)題;其次,普通程序升級(jí)方式下,由于升級(jí)包數(shù)過(guò)多,長(zhǎng)時(shí)間占用信道,影響其他表具的附網(wǎng)成功率;再次,普通程序升級(jí)方式下,升級(jí)時(shí)間較長(zhǎng),這對(duì)于電池電量的損耗是未知的,同時(shí)多包數(shù)據(jù)交互也大大降低了程序升級(jí)的一次成功率。因此,減少程序升級(jí)過(guò)程中的交互次數(shù)十分必要。

        1 差分升級(jí)方案的制定

        超聲波燃?xì)獗硗ǔ>邆淙缦鹿δ埽河?jì)量數(shù)據(jù)的采集、處理、存儲(chǔ),拆表、倒流、反裝、脈動(dòng)流及安全功能檢測(cè),無(wú)線通信配合紅外通信的遠(yuǎn)程控制等。其代碼空間的占用量大于等于60 KB,遠(yuǎn)大于無(wú)線遠(yuǎn)傳膜式燃?xì)獗硭褂玫拇a空間。

        考慮到針對(duì)指定硬件主板,其AD 采集、I2C、SPI、液晶驅(qū)動(dòng)等底層驅(qū)動(dòng)程序是固定不變的,故采用一種新思想:將固定不變的底層程序固化于BootLoader 程序中,應(yīng)用程序可通過(guò)指針?lè)绞?,調(diào)用引導(dǎo)程序中的底層驅(qū)動(dòng)程序,從而通過(guò)降低應(yīng)用程序的代碼空間,節(jié)省單片機(jī)硬件資源(程序存儲(chǔ)空間)的同時(shí),間接降低差分程序的差分包數(shù)。在此前提下,可選取性價(jià)比較高且資源滿足當(dāng)前需求的國(guó)產(chǎn)單片機(jī):FM33LG048。

        采用新型的差分升級(jí)包的生成方式:借鑒效率較高且便于應(yīng)用的Diff and Patch 差分包生成方式,結(jié)合單片機(jī)輸出全部子函數(shù)入口地址,以供上位機(jī)精準(zhǔn)比對(duì)當(dāng)前APP 程序與待升級(jí)APP 程序的差異的方式,進(jìn)行差分包[3]的生成。在此基礎(chǔ)上,為滿足對(duì)差分包的進(jìn)一步壓縮,選用可調(diào)整壓縮等級(jí)的LZO、LZW、GZIP 等方法對(duì)差分包進(jìn)行數(shù)據(jù)壓縮。

        保障數(shù)據(jù)安全、數(shù)據(jù)傳輸?shù)耐暾约胺乐雇獠繑?shù)據(jù)攻擊,也是值得考慮的技術(shù)亮點(diǎn)。綜合考慮代碼空間及數(shù)據(jù)加密的安全級(jí)別等問(wèn)題,選用FM33LG048 自帶的AES128 硬件加密模塊(加密模式選用CBC 模式[4],該模式加密安全系數(shù)較高,不易被主動(dòng)攻擊)。配合使用場(chǎng)內(nèi)自定義的SM2[5](橢圓曲線公鑰密碼算法)作為數(shù)字簽名方法,以保證數(shù)據(jù)完整性。

        基于上述應(yīng)用情況,本文重點(diǎn)介紹了一種新型差分升級(jí)方式。該方法需將應(yīng)用程序中驅(qū)動(dòng)層程序固化于引導(dǎo)程序中,選用Diff and Patch 的文件差分方法對(duì)文件進(jìn)行差分,并配合可配置壓縮率的數(shù)據(jù)壓縮方法,通過(guò)無(wú)線數(shù)據(jù)傳輸?shù)姆绞綄⒓用芎蟮腜atch 包傳遞到燃?xì)獗韮?nèi),在應(yīng)用程序中進(jìn)行解壓縮、解Patch,后跳轉(zhuǎn)于引導(dǎo)程序中,將解碼包覆蓋原有應(yīng)用程序,最終實(shí)現(xiàn)程序升級(jí)。

        2 程序空間分區(qū)及BootLoader 中底層驅(qū)動(dòng)程序固化的實(shí)現(xiàn)

        2.1 程序存儲(chǔ)空間分區(qū)

        程序存儲(chǔ)空間分為4 個(gè)區(qū)域,分別為:搭載底層驅(qū)動(dòng)的BootLoader 區(qū)、Patch 包存儲(chǔ)區(qū)、應(yīng)用程序運(yùn)行區(qū)、Patch 包解壓縮暫存及備份程序存儲(chǔ)區(qū)。搭載底層驅(qū)動(dòng)的BootLoader區(qū)的作用是:將應(yīng)用程序中固定不變的底層驅(qū)動(dòng)子程序全部生成到引導(dǎo)程序中,以便程序復(fù)位時(shí)代碼從BootLoader 程序跳轉(zhuǎn)到應(yīng)用程序后,應(yīng)用程序能夠?qū)σ龑?dǎo)程序中的底層驅(qū)動(dòng)程序進(jìn)行精準(zhǔn)調(diào)用。Patch 包存儲(chǔ)區(qū)的作用是:將通過(guò)差分包生成組件生成的壓縮后的差分包,通過(guò)無(wú)線遠(yuǎn)傳或紅外近端無(wú)線通信等方式發(fā)送到指定的超聲波燃?xì)獗斫K端,經(jīng)判定接收數(shù)據(jù)無(wú)誤后,存儲(chǔ)于該區(qū)域備用的數(shù)據(jù)存儲(chǔ)位置。應(yīng)用程序運(yùn)行區(qū)的作用是:作為存儲(chǔ)程序正常執(zhí)行時(shí)的表端功能性程序的存儲(chǔ)位置。Patch 包解壓縮暫存區(qū)及備份程序存儲(chǔ)區(qū)的作用是:既可以將壓縮的Patch 包解壓縮后暫時(shí)存儲(chǔ)到該區(qū)域,然后整體搬運(yùn)到Patch 包存放區(qū),又可將解Patch后所還原出的待升級(jí)應(yīng)用程序存放于此位置,以便待升級(jí)應(yīng)用程序校驗(yàn)成功后直接覆蓋原應(yīng)用程序存儲(chǔ)區(qū)。程序存儲(chǔ)空間分區(qū)示意圖如圖1 所示。

        2.2 BootLoader 中進(jìn)行底層驅(qū)動(dòng)程序固化的實(shí)現(xiàn)

        將底層驅(qū)動(dòng)程序固化到BootLoader中的操作方式主要是采用了幾個(gè)關(guān)鍵的C 語(yǔ)言語(yǔ)法,以及在Keil 中實(shí)現(xiàn)將變量或常量存于FLASH 的指定位置。具體實(shí)現(xiàn)方式如下:

        (1)將自定義的底層驅(qū)動(dòng)程序的子函數(shù)庫(kù)文件夾添加到BootLoader 程序所在的工程下,這時(shí)如果該底層驅(qū)動(dòng)程序不被BootLoader 程序調(diào)用,在該工程中是不會(huì)被編譯的。故我們可新建一個(gè)const unsigned int 類型的不定長(zhǎng)數(shù)組,將每一個(gè)底層驅(qū)動(dòng)子函數(shù)的地址取出存放于指定位置。例如:

        const uint32_t func_table[]__attribute__((section(“.ARM.__at_0x00001000”))) ={(uint32_t)&API_ADC};

        該語(yǔ)法的意義是,將API_ADC 子函數(shù)的地址取出,存放于0x00001000 地址所指向的FLASH 空間。

        (2)要實(shí)現(xiàn)在應(yīng)用程序中調(diào)用固化于BootLoader 的底層驅(qū)動(dòng)程序,需在引導(dǎo)程序中開(kāi)辟的存放驅(qū)動(dòng)程序的首地址位置進(jìn)行調(diào)用。接上例,已知底層驅(qū)動(dòng)程序的全部子程序執(zhí)行位置首地址均依次存放于以0x00001000 為首地址的數(shù)組func_table[]中,進(jìn)行如下操作即可調(diào)用API_ADC 函數(shù):

        值得注意的是,此例中僅為如何在應(yīng)用程序中調(diào)用引導(dǎo)程序的一個(gè)函數(shù),如有多個(gè)驅(qū)動(dòng)程序,依次排列即可。

        2.3 BootLoader 中進(jìn)行底層驅(qū)動(dòng)程序固化的優(yōu)勢(shì)

        由于底層驅(qū)動(dòng)程序是無(wú)須進(jìn)行更改的單片機(jī)硬件配置應(yīng)用程序,諸如串口驅(qū)動(dòng)程序、定時(shí)器驅(qū)動(dòng)程序及液晶顯示驅(qū)動(dòng)程序等,均為可被BootLoader、當(dāng)前執(zhí)行的應(yīng)用程序、待升級(jí)的應(yīng)用程序重復(fù)利用的代碼。該底層驅(qū)動(dòng)程序固化的實(shí)現(xiàn)方式,避免了在BootLoader、當(dāng)前執(zhí)行的應(yīng)用程序、待升級(jí)的應(yīng)用程序中重復(fù)定義3 次,節(jié)省了2 倍的代碼空間,可將節(jié)省下來(lái)的代碼空間分配給Patch 包存儲(chǔ)區(qū),這樣就避免了因程序存儲(chǔ)空間的不足而需引入外掛FLASH,從而造成成本增加等方面的困擾。

        3 可變壓縮率新型Patch 差分包生成方式

        3.1 Diff and Patch 思想的原理

        新型Patch 差分包生成方式參考了Diff and Patch 思想,Diff 和Patch 是一對(duì)相互配合使用的算法工具。從數(shù)學(xué)的角度來(lái)說(shuō),Diff 算法是對(duì)兩個(gè)有交集的集合的差運(yùn)算,而Patch算法則是對(duì)兩個(gè)有交集的集合的和運(yùn)算(值得注意的是,對(duì)兩個(gè)無(wú)交集的集合進(jìn)行運(yùn)算毫無(wú)意義)。Diff 的作用是比較兩個(gè)相關(guān)聯(lián)的文件的差異,并將差異記錄下來(lái),生成一個(gè)差分文件,即Patch 文件(又可稱為補(bǔ)丁文件)。舉例說(shuō)明:現(xiàn)有文件A 和文件B,經(jīng)過(guò)Diff 算法運(yùn)算后生成文件C,該過(guò)程相當(dāng)于A-B=C,而Patch 運(yùn)算的過(guò)程為B+C=A 或A-C=B。故可知,對(duì)于A、B、C 文件,已知其中兩個(gè)就能用Diff and Patch 算法還原出第三個(gè)文件。

        3.2 新型Patch 差分包的生成原理

        新型Patch 差分包的生成原理為:同時(shí)獲取當(dāng)前應(yīng)用程序文件中各函數(shù)首地址,及待升級(jí)程序文件中各函數(shù)首地址,并將地址順序由大到小排序。通過(guò)對(duì)比兩文件中均存在的各函數(shù)對(duì)應(yīng)存放位置偏移情況,及函數(shù)占用空間長(zhǎng)度的差異,精準(zhǔn)定位差異區(qū)。對(duì)于刪減或者新增的代碼,須做額外標(biāo)記,以便在應(yīng)用程序中進(jìn)行填充。最后利用Diff and Patch 開(kāi)源代碼進(jìn)行改造,從而生成新型Patch 差分包,該差分包的字節(jié)數(shù)必小于等于直接封裝好的利用Diff and Patch開(kāi)源代碼所生成的字節(jié)數(shù)。

        值得注意的是,對(duì)于使用類似Keil 開(kāi)發(fā)工具開(kāi)發(fā)的代碼可借助于.map 文件進(jìn)行調(diào)用;否則,新型Patch 差分包的生成方案必須借助于嵌入式程序配套處理。需要在嵌入式程序中進(jìn)行如下操作:首先,定義const unsigned int 類型的不定長(zhǎng)數(shù)組,在數(shù)組中存放全部使用的main 函數(shù)及子函數(shù)的入口地址;然后,將print 打印函數(shù)映射到指定可輸出數(shù)據(jù)的串口;最后,將存放程序入口地址的數(shù)組中的成員依次進(jìn)行打印輸出,全部傳遞給差分包生成組件。.map 文件導(dǎo)出程序地址的格式如圖2 所示。

        圖2 .map 文件導(dǎo)出程序地址格式

        3.3 差分包生成組件生成差分包的配置流程

        差分包生成組件包括:升級(jí)包選擇區(qū),用以導(dǎo)入原程序文件及待升級(jí)程序文件的可拖拽式接口;串口設(shè)置區(qū),用以配置與表端相匹配的串口波特率、校驗(yàn)位、停止位及數(shù)據(jù)位,實(shí)現(xiàn)與超聲波燃?xì)獗碇靼暹M(jìn)行串行數(shù)據(jù)通信;差分升級(jí)區(qū),可配置壓縮率,可點(diǎn)擊“導(dǎo)入文件”按鈕,導(dǎo)入差分包到顯示窗口,可選擇進(jìn)行本地升級(jí)或無(wú)線升級(jí)的功能。差分包生成組件的界面如圖3 所示。

        圖3 差分包生成組件界面

        差分包生成組件配置流程為:第一步,將原程序文件拖入舊文件存放區(qū),將待升級(jí)程序文件拖入新文件存放區(qū)備用;第二步,配置串口參數(shù)(須根據(jù)超聲波燃?xì)獗矶说拇趨?shù)進(jìn)行相應(yīng)的配置);第三步,超聲波燃?xì)獗砀鶕?jù)與差分包生成組件間的私有協(xié)議,發(fā)送原程序文件及待升級(jí)程序文件的全部main 函數(shù)及子函數(shù)的入口地址(若存在.map 文件,則點(diǎn)擊“解析.map”,利用該文件生成差分包);第四步,選擇壓縮率(本組件采用LZO 數(shù)據(jù)壓縮方式);第五步,點(diǎn)擊“導(dǎo)入文件”按鈕,生成差分包。由圖3 可知,導(dǎo)入的OLD2.bin、NEW2.bin 文件大小分別為75 264 B、75 260 B,生成的差分文件大小為5 547 B。由此可知用于程序升級(jí)的數(shù)據(jù)量大大減少了。

        差分包生成組件支持本地差分升級(jí)功能(差分包已經(jīng)按照私有協(xié)議進(jìn)行分段,可直接用于對(duì)超聲波燃?xì)獗淼拇诓罘稚?jí))。選用NB 模組作為超聲波燃?xì)獗淼臒o(wú)線通信模組[6]時(shí),無(wú)線差分升級(jí)須基于SOTA升級(jí)技術(shù)[7],將組件生成的.bin格式的差分包文件導(dǎo)入AEP 平臺(tái)的SOTA 升級(jí)組件中,并下發(fā)升級(jí)任務(wù)。等待表具主動(dòng)上報(bào)后,執(zhí)行SOTA 升級(jí)流程。

        4 差分?jǐn)?shù)據(jù)包的加密、驗(yàn)簽?zāi)J降倪x取及應(yīng)用

        4.1 AES 加密算法的特點(diǎn)

        AES 加密算法是一種使用密鑰加密的標(biāo)準(zhǔn)區(qū)塊加密算法,可彌補(bǔ)DES 算法的缺點(diǎn),并且可以取代它。AES 加密算法是一種對(duì)稱加密算法,在國(guó)際上是通用的,其CBC 模式極大地增加了破解難度, 且FM33LG048 單片機(jī)中自帶硬件AES 加密機(jī)制,故選取該算法對(duì)超聲波燃?xì)獗淼牟罘职M(jìn)行加密。AES 加密算法的CBC 模式的數(shù)據(jù)加密流程如圖4 所示。

        圖4 CBC 模式的數(shù)據(jù)加密流程

        4.2 SM2 驗(yàn)簽算法的特點(diǎn)

        SM2 算法是國(guó)家保密標(biāo)準(zhǔn)非對(duì)稱算法[8],該算法雖然不具備國(guó)際通用性,且私有性很強(qiáng),但其運(yùn)用的橢圓曲線公鑰密碼算法的安全性是超乎想象的,即便使用極短的密鑰也能提供相當(dāng)大的安全性。故選用該算法作為超聲波燃?xì)獗聿罘职用芎蟮尿?yàn)簽算法的性價(jià)比是極高的。

        5 結(jié) 語(yǔ)

        隨著燃?xì)庑袠I(yè)各項(xiàng)技術(shù)和通信技術(shù)的進(jìn)步,燃?xì)庑袠I(yè)不斷與時(shí)俱進(jìn)、突破發(fā)展成為了必然趨勢(shì)。將無(wú)線通信技術(shù)的優(yōu)勢(shì)發(fā)揮到極致,使廣大燃?xì)庥脩羰斋@更多方便的體驗(yàn),也是新型超聲波燃?xì)獗硇枰?、迭代的根本原因。本文中所描述的基于FM33LG048 的超聲波燃?xì)獗硇滦筒罘稚?jí)系統(tǒng)的設(shè)計(jì)理念正是服務(wù)于提升燃?xì)庥脩羰褂皿w驗(yàn)、提升燃?xì)庑袠I(yè)技術(shù)水平這一思想。這一新型差分升級(jí)系統(tǒng)的設(shè)計(jì),借助于LoRa[9]、4G、NB(采用SOTA 升級(jí)方式最佳)、5G 等無(wú)線通信方式[10]得以實(shí)現(xiàn)。該新型差分升級(jí)方案大大減少了差分升級(jí)的交互報(bào)文包數(shù),降低了干擾計(jì)量精確度的風(fēng)險(xiǎn),節(jié)省了表具升級(jí)時(shí)進(jìn)行無(wú)線通信交互的功耗,減少了因占用信道時(shí)間過(guò)長(zhǎng)而阻礙其他表具聯(lián)網(wǎng)進(jìn)程的風(fēng)險(xiǎn),提升了用戶使用超聲波燃?xì)獗淼捏w驗(yàn),為燃?xì)饧瘓F(tuán)及燃?xì)庥脩魩?lái)極大的便利。

        猜你喜歡
        程序
        給Windows添加程序快速切換欄
        試論我國(guó)未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
        基于VMM的程序行為異常檢測(cè)
        偵查實(shí)驗(yàn)批準(zhǔn)程序初探
        我國(guó)刑事速裁程序的構(gòu)建
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        恐怖犯罪刑事訴訟程序的完善
        99精品久久这里只有精品| 国产午夜精品无码| 特级毛片a级毛片100免费播放 | 一级片麻豆| 国产黑色丝袜在线观看视频| 国产一区二区av在线观看| 国产一区亚洲二区三区| 亚洲中文字幕久久精品无码喷水| 午夜精品久久久| 男女羞羞的视频免费网站| 久久少妇高潮免费观看| 久久亚洲av无码精品色午夜| 欧美人与禽zozzo性伦交| 精品视频一区二区三三区四区| 国产亚洲无码1024| 国产91成人精品高潮综合久久 | 日韩不卡一区二区三区色图| 无码人妻久久一区二区三区蜜桃| 久久精品亚洲中文字幕无码网站 | 成全视频高清免费| 欧美巨大xxxx做受中文字幕| 91一区二区三区在线观看视频| 免费观看91色国产熟女| 精品国产一区二区三区香蕉| 人伦片无码中文字幕| 日韩精品极品免费在线视频 | 亚洲区一区二区三区四| 在线视频观看国产色网| 国产一区二区精品久久| 免费国产99久久久香蕉| 91亚洲色图在线观看| 男女av免费视频网站| 内射爽无广熟女亚洲| 午夜毛片午夜女人喷潮视频| 蜜桃一区二区三区在线视频 | 日本免费影片一区二区| 亚洲 日本 欧美 中文幕| 老太脱裤子让老头玩xxxxx| 伊人久久大香线蕉免费视频 | 成人午夜免费无码视频在线观看| 日韩一级精品亚洲一区二区精品|