国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于LoRa技術(shù)的網(wǎng)絡(luò)終端無(wú)線程序升級(jí)系統(tǒng)研究*

2017-11-09 01:14:22,,,,
關(guān)鍵詞:串口應(yīng)用程序終端

,,,,

(北京工業(yè)大學(xué) 信息學(xué)部,北京 100124)

基于LoRa技術(shù)的網(wǎng)絡(luò)終端無(wú)線程序升級(jí)系統(tǒng)研究*

高祥凱,耿淑琴,何蘊(yùn)良,彭曉宏,侯立剛

(北京工業(yè)大學(xué) 信息學(xué)部,北京 100124)

設(shè)計(jì)了一種基于LoRa技術(shù)的STM32F4無(wú)線程序升級(jí)系統(tǒng)。此系統(tǒng)由PC及相關(guān)STM32軟件開發(fā)環(huán)境、LoRa通信模塊及其控制器和STM32F4終端三部分組成。本系統(tǒng)采用LoRa技術(shù)將程序數(shù)據(jù)無(wú)線發(fā)送到終端,終端通過(guò)IAP技術(shù)實(shí)現(xiàn)遠(yuǎn)程無(wú)線程序自動(dòng)升級(jí)。測(cè)試結(jié)果表明,此系統(tǒng)能夠有效地進(jìn)行無(wú)線傳感網(wǎng)絡(luò)終端的程序升級(jí),極大節(jié)約了時(shí)間和人力成本。

LoRa技術(shù);STM32F4微控制器;IAP技術(shù)

引 言

近年來(lái),基于物聯(lián)網(wǎng)應(yīng)用的各種嵌入式產(chǎn)品層出不窮。但由于物聯(lián)網(wǎng)應(yīng)用中節(jié)點(diǎn)眾多、分布廣泛,為嵌入式終端固件升級(jí)帶來(lái)了很多不便,于是遠(yuǎn)程、無(wú)線程序升級(jí)方法便吸引了很多學(xué)者的研究,其中基于IAP編程模式的程序升級(jí)方法應(yīng)用較多。參考文獻(xiàn)[1]提出了利用GPRS通信技術(shù)實(shí)現(xiàn)基于51單片機(jī)的遠(yuǎn)程IAP功能;參考文獻(xiàn)[2]提出了一種基于HTTP協(xié)議的遠(yuǎn)程嵌入式產(chǎn)品程序升級(jí)方法;參考文獻(xiàn)[3]實(shí)現(xiàn)了一種基于nRF905通信技術(shù)的無(wú)線程序編程器,可以實(shí)現(xiàn)對(duì)51系列單片機(jī)的無(wú)線程序燒寫;參考文獻(xiàn)[4]提到了Wi-Fi環(huán)境覆蓋下的嵌入式產(chǎn)品系統(tǒng)升級(jí)方法;參考文獻(xiàn)[5]提出了一種基于藍(lán)牙串口模塊,通過(guò)ymodem傳輸協(xié)議實(shí)現(xiàn)的IAP方案。

以上的程序升級(jí)方法很難在節(jié)點(diǎn)眾多的物聯(lián)網(wǎng)應(yīng)用中取得廣泛應(yīng)用。LoRa技術(shù)適合組建低功耗無(wú)線傳感網(wǎng)絡(luò),廣泛應(yīng)用于物聯(lián)網(wǎng)研究中,本文嘗試將LoRa技術(shù)和IAP技術(shù)相結(jié)合,實(shí)現(xiàn)了一種應(yīng)用于STM32F4控制器的無(wú)線程序升級(jí)系統(tǒng)。采用此方案進(jìn)行程序升級(jí),節(jié)約了成本,減少了人力物力的消耗,對(duì)同類無(wú)線終端和節(jié)點(diǎn)的程序升級(jí)有借鑒意義。

1 STM32F4芯片IAP編程基礎(chǔ)

IAP即在應(yīng)用中編程,是指通過(guò)一種通信接口(USART、USB、CAN等)下載程序或應(yīng)用數(shù)據(jù)到存儲(chǔ)器中。通常用戶在實(shí)現(xiàn)IAP功能時(shí),需要人為地將芯片內(nèi)部存儲(chǔ)區(qū)分為兩塊:一塊用于存儲(chǔ)IAP程序,稱為BOOT區(qū);另一塊用于存儲(chǔ)除IAP功能外的應(yīng)用程序,稱為常態(tài)存儲(chǔ)區(qū)。STM32F40X/41X系列芯片的FLASH存儲(chǔ)區(qū)域組織如表1所列。通過(guò)設(shè)置BOOT0和BOOT1兩引腳的高低電平可設(shè)置程序的啟動(dòng)區(qū)域。一般將程序燒錄到主存儲(chǔ)區(qū)中,啟動(dòng)區(qū)域應(yīng)設(shè)置為主存儲(chǔ)區(qū)[6]。

STM32F4系列控制器加入IAP后,程序流程為:程序從主存儲(chǔ)區(qū)(0x0800 0000)處開始執(zhí)行,先取出棧頂?shù)刂?,然后是?fù)位中斷向量,跳轉(zhuǎn)至復(fù)位程序處執(zhí)行,接下來(lái)程序便跳轉(zhuǎn)至mian函數(shù)處(為IAP程序的main 函數(shù))執(zhí)行IAP過(guò)程。IAP過(guò)程中控制器會(huì)接收功能程序,寫入FLASH并執(zhí)行。執(zhí)行過(guò)程與IAP程序開始執(zhí)行過(guò)程相似,此時(shí)FLASH內(nèi)部存在著兩個(gè)不同位置的向量表,當(dāng)應(yīng)用程序運(yùn)行時(shí),產(chǎn)生的中斷首先仍然返回到地址為0x0800 0004處的向量表,然后根據(jù)所設(shè)置的向量表偏移量找到向量中斷源并執(zhí)行中斷服務(wù)程序,執(zhí)行完成后會(huì)返回應(yīng)用程序的main函數(shù)。

表1 FLASH模塊組織

2 系統(tǒng)設(shè)計(jì)

2.1 系統(tǒng)總體設(shè)計(jì)

本系統(tǒng)由PC及相關(guān)STM32軟件開發(fā)環(huán)境、LoRa通信模塊及其控制器和STM32F4終端三部分組成。利用STM32軟件開發(fā)工具完成程序的編寫、調(diào)試,生成bin文件;PC機(jī)與LoRa模塊控制器通過(guò)串口相連,收到數(shù)據(jù)后串口會(huì)將數(shù)據(jù)每512字節(jié)打成一個(gè)數(shù)據(jù)包,然后發(fā)送給LoRa模塊進(jìn)行無(wú)線發(fā)送;與終端相連的LoRa模塊接收到數(shù)據(jù)后會(huì)發(fā)送給STM32F4終端,終端判斷完成數(shù)據(jù)接收后會(huì)寫入FLASH并執(zhí)行。

2.2 LoRa模塊及其控制器設(shè)計(jì)與分析

近些年來(lái),LoRa技術(shù)因支持遠(yuǎn)距離傳輸、大數(shù)量子節(jié)點(diǎn)和低功耗技術(shù)[7],在物聯(lián)網(wǎng)應(yīng)用中取得了廣泛的使用。本設(shè)計(jì)采用成都億百特電子有限公司的E32-TTL-1W LoRa模塊,該模塊采用Semtech公司SX1278射頻芯片,傳輸距離最遠(yuǎn)可達(dá)到8 km,工作頻段為411~441 MHz;該模塊支持4種工作模式和空中喚醒,可最大限度降低功耗;模塊通過(guò)串口實(shí)現(xiàn)外部通信,易于實(shí)現(xiàn)。該模塊共有7個(gè)引腳,通過(guò)串口實(shí)現(xiàn)與外部設(shè)備通信,引腳M0、M1用來(lái)設(shè)置模塊工作模式,AUX用來(lái)指示模塊工作狀態(tài)[8]。

圖1 LoRa模塊控制器程序流程圖

圖2 LoRa模塊與控制器連接圖

LoRa模塊控制器的程序流程圖如圖1所示,LoRa模塊與控制器的連接關(guān)系如圖2所示??刂破鲝腜C接收程序代碼,由于LoRa模塊接收緩存有限,控制器須將代碼分包,以一定時(shí)間間隔發(fā)送給LoRa模塊。控制器上電會(huì)完成兩個(gè)串口的初始化,串口1用來(lái)接收PC發(fā)送的bin文件,串口6用來(lái)向LoRa模塊發(fā)送數(shù)據(jù)。串口1接收到數(shù)據(jù)后會(huì)進(jìn)入串口接收中斷函數(shù),數(shù)據(jù)由DMA通道存儲(chǔ)到內(nèi)存特定區(qū)域,串口總線空閑中斷標(biāo)志接收代碼完成。發(fā)送循環(huán)中,控制器每次將一個(gè)512字節(jié)的數(shù)據(jù)包(最后一次將剩余全部)發(fā)送給LoRa模塊。當(dāng)LoRa模塊內(nèi)部緩沖區(qū)的數(shù)據(jù)被讀取時(shí),AUX引腳的電平會(huì)發(fā)生變化,PA1引腳會(huì)捕捉AUX電平變化并產(chǎn)生中斷,中斷函數(shù)會(huì)設(shè)置發(fā)送下一個(gè)數(shù)據(jù)包,程序依次循環(huán)直至代碼發(fā)送完全。

由于AUX的變化只能表示LoRa模塊已開始發(fā)送緩沖區(qū)內(nèi)的數(shù)據(jù),并不能確保數(shù)據(jù)已被完全發(fā)送且接收方LoRa模塊也需要足夠的時(shí)間來(lái)接收數(shù)據(jù),因此發(fā)送下一個(gè)數(shù)據(jù)包之前會(huì)有一段延時(shí),以確保完整的數(shù)據(jù)發(fā)送和接收,這個(gè)延時(shí)數(shù)值在應(yīng)用中應(yīng)根據(jù)無(wú)線傳輸?shù)木嚯x而定,不能小于數(shù)據(jù)從寫進(jìn)發(fā)送端LoRa緩沖區(qū)到接收端完全接收的時(shí)間間隔,本系統(tǒng)中設(shè)置的時(shí)間為1 s,滿足這一要求。

2.3 終端程序設(shè)計(jì)與分析

2.3.1 終端IAP程序設(shè)計(jì)與分析

IAP程序以SWD方式下載至芯片中,IAP程序流程圖如圖3所示。

圖3 終端IAP程序流程圖

上電復(fù)位后,依照BOOT模式設(shè)置,程序會(huì)從主存儲(chǔ)區(qū)開始執(zhí)行IAP程序。首先完成初始化,LoRa模塊處于休眠狀態(tài);然后查詢存儲(chǔ)于FLASH地址為0x080E 0000處的變量更新標(biāo)志位(upstate_mark)的值,如果該值為0x01,則表示程序需要等待更新,此時(shí)需將LoRa模塊從休眠狀態(tài)喚醒,終端會(huì)等待接收程序代碼。終端一旦通過(guò)串口接收到LoRa模塊發(fā)送的程序數(shù)據(jù),就會(huì)記錄所接收數(shù)據(jù)的長(zhǎng)度,并且以1 s的時(shí)間間隔查詢數(shù)據(jù)長(zhǎng)度,如有兩次發(fā)現(xiàn)數(shù)據(jù)長(zhǎng)度不變,則判定接收完成,緊接著將update_mark置0x00,表示下次終端上電無(wú)需等待更新。應(yīng)用程序代碼會(huì)被寫到起始地址為FLASH_APP1_ADDR的連續(xù)FLASH存儲(chǔ)區(qū)內(nèi)。在此終端程序中給它分配的值為0x0801 0000,即在此之前給IAP程序預(yù)留的空間為64 KB,通過(guò)Keil軟件查看編譯后的IAP程序代碼大小完全夠用。向FLASH寫入代碼前,首先要判斷一下復(fù)位向量所在的物理存儲(chǔ)空間是不是指向FLASH的,代碼如下:

(*(vu32*)(FLASH_APP1_ADDR+4))&0xFF000000)==0x08000000;

確認(rèn)無(wú)誤后,開始調(diào)用向FLASH寫應(yīng)用程序函數(shù),代碼如下:

iap_write_app(FLASH_APP1_ADDR,(uint32_t)USART_RX_BUF,REC_CNT);

此函數(shù)會(huì)調(diào)用STM32F4開發(fā)庫(kù)中的寫FLASH函數(shù),代碼如下:

if(FLASH_ProgramWord(WriteAddr,*pBuffer)!=FLASH_COMPLETE){ //寫入FLASH

break;}

WriteAddr+=4;

pBuffer++;

……

FLASH_ProgramWord()每次會(huì)向FLASH寫入一個(gè)字(4字節(jié)),接收數(shù)組是字節(jié)類型的,因此調(diào)用時(shí)要強(qiáng)制地址類型轉(zhuǎn)換。執(zhí)行完寫程序后,將upstate_mark變量重寫為0x00,下次上電復(fù)位標(biāo)志無(wú)需等待更新,直接執(zhí)行程序跳轉(zhuǎn)。代碼如下:

if(((*(vu32 *)App1Addr)&0x2FFE0000)==0x20000000){

//檢查棧頂?shù)刂肥欠窈戏?/p>

JumpToApp=(iapfun)*(vu32*)( App1Addr +4);

//取出復(fù)位函數(shù)地址

MSR_MSP(*(vu32*) App1Addr);

//設(shè)置主堆棧指針

JumpToApp ();

//跳轉(zhuǎn)執(zhí)行應(yīng)用程序

}

首先檢查棧頂?shù)刂肥欠窈戏?,App1Addr為應(yīng)用程序地址,程序代碼第一個(gè)字為棧頂?shù)刂?,判斷棧頂?shù)刂肥欠裨?x2000 0000~0x2001 FFFF(RAM區(qū)域)范圍內(nèi);取出應(yīng)用程序復(fù)位函數(shù)地址;設(shè)置棧指針;程序跳轉(zhuǎn)到應(yīng)用程序復(fù)位函數(shù)地址處,應(yīng)用程序開始執(zhí)行[9]。

2.3.2 終端IAP程序設(shè)計(jì)與分析

終端應(yīng)用程序中首先要設(shè)置中斷向量表偏移量:SCB->VTOR = FLASH_BASE|0x1 0000;這樣在main函數(shù)執(zhí)行過(guò)程中,如果CPU得到一個(gè)中斷請(qǐng)求,PC指針仍強(qiáng)制跳轉(zhuǎn)到地址0x0800 0004中斷向量表處,然后再根據(jù)設(shè)置的中斷向量表偏移量跳轉(zhuǎn)到對(duì)應(yīng)中斷服務(wù)程序中,最后進(jìn)入正常的應(yīng)用程序功能。

圖4 終端應(yīng)用程序流程圖

當(dāng)終端正常運(yùn)行時(shí)要進(jìn)行程序升級(jí),只需通過(guò)LoRa模塊向指定終端發(fā)送更新指令(本次系統(tǒng)設(shè)置為“up”兩個(gè)字節(jié)),終端收到指令后將update_mark置0x01,緊接著執(zhí)行一次軟件復(fù)位,程序?qū)⒃俅芜M(jìn)入到IAP程序,檢查到update_mark為0x01會(huì)一直等待接收程序,從而可以完成程序的升級(jí)。終端應(yīng)用程序流程圖如圖4所示。

3 實(shí)驗(yàn)驗(yàn)證和分析

本文實(shí)驗(yàn)所采用的STM32F4終端為ST官方開發(fā)板STM32F4DICOVERY,實(shí)驗(yàn)在同一樓層內(nèi)相距約40 m的兩間實(shí)驗(yàn)室內(nèi)進(jìn)行。PC通過(guò)串口發(fā)送給LoRa控制器,控制器返回一些信息用來(lái)提示程序進(jìn)程,每發(fā)送完一個(gè)512字節(jié)的數(shù)據(jù)包,就會(huì)返回一個(gè)blockxover信息,以便查看程序進(jìn)程。

本文通過(guò)連續(xù)兩次對(duì)同一終端進(jìn)行程序更新,首先在PC上完成第一個(gè)程序的編譯調(diào)試,得到程序bin文件大小為3.25 KB,發(fā)送完成后檢測(cè)終端運(yùn)行情況正常。之后如果需要再次更新程序,先發(fā)送更新指令(本次設(shè)計(jì)為字符串“up”),然后發(fā)送第二個(gè)程序bin文件即可,本次實(shí)驗(yàn)第二個(gè)應(yīng)用程序編譯之后bin文件大小為4.52 KB。

進(jìn)行實(shí)驗(yàn)時(shí),PC端發(fā)送完程序后,在另一個(gè)實(shí)驗(yàn)地點(diǎn)觀察終端指示燈LD3的狀態(tài),當(dāng)終端運(yùn)行IAP程序時(shí),LD3處于熄滅狀態(tài),當(dāng)其點(diǎn)亮的時(shí)候表明應(yīng)用程序已開始運(yùn)行,此時(shí)檢驗(yàn)終端功能是否與程序一致。先后下載的兩個(gè)應(yīng)用程序與預(yù)期結(jié)果表現(xiàn)一致,驗(yàn)證了本系統(tǒng)的可靠性。

結(jié) 語(yǔ)

[1] 胡靜靜.實(shí)現(xiàn)基于GPRS的無(wú)線遠(yuǎn)程IAP功能[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2005(6):21-23,38.

[2] QINGQING X.A design and implement of IAP based on HTTP[C]//proceedings of the 2011 International Conference on Computer Science and Service System (CSSS),2011.

[3] 薛秀云,洪添勝,宋淑然,等.基于無(wú)線通信技術(shù)的程序編程器[J].沈陽(yáng)農(nóng)業(yè)大學(xué)學(xué)報(bào),2013,44(3):15-20.

[4] ZAWARE P G,SHINDE S V.Wireless monitoring, control-

ling and firmware upgradation of embedded devices using Wi-Fi[C]//Proceedings of the 2014 International Conference on Advances in Communication and Computing Technologies (ICACACT 2014),2014.

[5] 徐洋,馬躍.STM32F103系列微控制器在應(yīng)用編程技術(shù)研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2013(8):35-37,40.

[6] STMicroelectronics.DM00031020 F4xx Reference Manual[EB/OL].[2017-06].http://www.stmcu.org/document.

[7] STAN V A,TIMNEA R S,GHEORGHIU R A.Overview of high reliable radio data infrastructures for public automation applications:LoRa networks[C]//Proceedings of the 2016 8th International Conference on Electronics,Computers and Artificial Intelligence,2016.

[8] 成都億百特電子科技有限公司.AN001產(chǎn)品應(yīng)用手冊(cè)[EB/OL].[2017-06].http://www.cdebyte.com.

[9] 張舞杰,南亦民.基于STM32F103VB的應(yīng)用編程技術(shù)的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2009(10):2820-2822.

高祥凱(碩士研究生),主要研究方向?yàn)闊o(wú)線傳感器網(wǎng)絡(luò); 耿淑琴(高級(jí)講師),主要研究方向?yàn)樯漕l識(shí)別、無(wú)線傳感網(wǎng)等;何蘊(yùn)良(碩士研究生),主要研究方向?yàn)榧呻娐吩O(shè)計(jì)與系統(tǒng)集成。

結(jié) 語(yǔ)

參考文獻(xiàn)

[1] 王誠(chéng).Altera FPGA/CPLD設(shè)計(jì)(基礎(chǔ)篇)[M].2版.北京:人民郵電出版社,2011.

[2] 吳厚航.FPGA/CPLD邊練邊學(xué)——快速入門Verilog/VHDL[M].北京:北京航空航天大學(xué)出版社,2013.

[3] 王忠林.基于Quartus II的CPLD的數(shù)字系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社,2012.

[4] Altera.Altera Device Package Information[EB/OL].[2017-05].https://www.altera.com.cn/.

[5] Altera.MAX V Device Handbook[EB/OL].[2017-05].https://www.altera.com.cn/.

[6] Altera.MAX V Device Family Pin Connection Guidelines[EB/OL].[2017-05].https://www.altera.com.cn/.

[7] Altera.Pin Information for the MAX V 5M570Z Device[EB/OL].[2017-05].https://www.altera.com.cn/.

[8] Altera.MAX V Device Family Overview[EB/OL].[2017-05].https://www.altera.com.cn/.

WirelessProgramUpdatingSystemofNetworkTerminalBasedonLoRaTechnology

GaoXiangkai,GengShuqin,HeYunliang,PengXiaohong,HouLigang

(College of Information Technology,Beijing University of Technology,Beijing 100124,China)

In the paper,a wireless program updating system of STM32F4 microcontroller based on LoRa technology is proposed.The system consists of three parts:a PC and related software development tools,the communication module of LoRa with microcontroller and STM32F4 terminal.The wireless communication between the terminal and the PC is achieved through LoRa technology,and the terminal could update its program automatically using IAP technology.The experiment results show that it’s an effective method for wireless program updating with saving time and labor costs.

LoRa technology;STM32F4 microcontroller;IAP technology

北京市自然科學(xué)基金(Z2002013201501);北京市自然科學(xué)基金資助項(xiàng)目(4172010)。

TP311

A

2017-06-02)

(責(zé)任編輯:薛士然 收稿日期:2017-05-12)

猜你喜歡
串口應(yīng)用程序終端
淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
X美術(shù)館首屆三年展:“終端〉_How Do We Begin?”
通信控制服務(wù)器(CCS)維護(hù)終端的設(shè)計(jì)與實(shí)現(xiàn)
刪除Win10中自帶的應(yīng)用程序
多功能北斗船載終端的開發(fā)應(yīng)用
電子制作(2016年15期)2017-01-15 13:39:14
USB接口的多串口數(shù)據(jù)并行接收方法探索
基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無(wú)線通信
基于并行控制的FPGA多串口拓展實(shí)現(xiàn)
ABB Elastimold 10kV電纜終端及中間接頭
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
修水县| 台中县| 明水县| 黑山县| 滦南县| 加查县| 宁阳县| 九龙城区| 安龙县| 岢岚县| 莒南县| 虞城县| 北流市| 平塘县| 林芝县| 亚东县| 弥勒县| 扶风县| 新邵县| 海阳市| 昌图县| 泾阳县| 汉川市| 扬中市| 罗城| 玉林市| 金华市| 辽宁省| 贵德县| 民县| 阿勒泰市| 洞口县| 阜新| 万宁市| 琼中| 翼城县| 蚌埠市| 柳河县| 石河子市| 永济市| 秦安县|