崔浩東 王秋霞 姜亞濤 于雙娜
摘 要:目前基于STM32處理器的設(shè)備基數(shù)大,且固件升級頻繁,在某些ESD敏感的系統(tǒng)中,有線連接的程序下載方式造成的設(shè)備損傷越來越多。本項目提出一種基于藍牙的STM32固件升級的解決方案,通過PC端的藍牙與STM32進行數(shù)據(jù)傳輸,以達到對基于STM32處理器的設(shè)備進行無線固件升級的目的。這種方式只需要很少的系統(tǒng)資源就可以運行,給嵌入式產(chǎn)品的開發(fā)和維護帶來很大的靈活性和便利性。它還具備了安全可靠的更新機制,能夠保證同件的可靠更新,較大地提升了嵌入式軟件吏新過程的可靠性。尤其能夠有效地防止嵌入式系統(tǒng)同件更新失敗后,系統(tǒng)無法啟動的情況,能有效地降低嵌入式軟件的開發(fā)和維護成本,將具有較高的應(yīng)用價值。同時本項目通過遠程下載程序的方式來減少頻繁拆裝機器可能引發(fā)的事故,該技術(shù)將被廣泛應(yīng)用于基于STM32處理器的設(shè)備的管理和固件升級等方面。
關(guān)鍵詞:STM32;固件升級;藍牙
1.STM32單片機概述
STM32 F4是ARM最新的嵌入式處理器Cortex M4,常用于控制和信號處理功能混合的數(shù)字控制。該控制器(MCU)提高了運行速度,增加了信號處理功能,同時增加了浮點運算單元(FPU)、自適應(yīng)實時加速器、32位多重AHB總線矩陣和多通道DMA控制器、數(shù)字信號控制器(DSC)等多種功能。其集成度較高,功耗較低,內(nèi)置最高1 MB Flash 192 kB SRAM,正常工作頻率為168 MHz,因此得到了廣泛的應(yīng)用。對于STM32F4系列產(chǎn)品,其程序下載方式有ICP、ISP和IAP3種,而過去工程開發(fā)時常用ISP方式,即J-LINK或串口方式,但是這種有線下載方式對于程序更新非常不方便。因此,本文開發(fā)了在PC上位機直接通過藍牙實現(xiàn)程序更新的方法。在分析STM32F4啟動方式及程序下載的基礎(chǔ)上,實現(xiàn)了STM32F4_ bootloader的下載程序。并針對該下載程序,提出了修改應(yīng)用程序的方法,從而實現(xiàn)了應(yīng)用程序的遠程在線升級。
2.系統(tǒng)功能
2.1下位機IAP和APP的設(shè)計與實現(xiàn)
2.1.1下位機IAP的設(shè)計思路
IAP和APP這兩個項目代碼都同時燒錄在User Flash中,當(dāng)芯片上電后,首先是第一個項目代碼(又稱之為Bootloader程序)開始運行,它作如下操作:
1)檢查是否需要對第二部分代碼(稱之為APP程序)進行更新
2)如果不需要更新則轉(zhuǎn)到4)
3)執(zhí)行更新操作
4)跳轉(zhuǎn)到第二部分代碼執(zhí)行
STM32F429的APP程序不僅可以放到FLASH里面運行,也可以放到SRAM里面運行,本項目中制作了兩個APP,一個用于FLASH運行,一個用于SRAM運行。
2.1.2 APP的設(shè)計
(1)主界面
主界面下顯示了目前可實現(xiàn)的功能模塊,分別為連接藍牙、打開文件和發(fā)送文件三個模塊,單擊即可進行該模塊模式下的功能選擇操作。當(dāng)手機APP選中藍牙模式與STM32成功連接后,即可通過打開文件選擇手機中想要發(fā)送給下位機的升級程序再通過發(fā)送文件發(fā)送到下位機,由下位機接收到文件并對文件進行識別和處理來對下位機軟件進行升級。
(2)可執(zhí)行文件
只要APP程序的FLASH和SRAM大小不超過的設(shè)置即可。不過MDK默認生成的文件是.hex文件,并不方便用作IAP更新,希望生成的文件是.bin文件,這樣可以方便進行IAP升級。而生成.bin文件我們只需通過MDK keil5自帶的格式轉(zhuǎn)換工具fromelf.exe,來實現(xiàn).axf文件到.bin文件的轉(zhuǎn)換即可。
2.2 PC端GUI界面的實現(xiàn)與設(shè)計
(1)GUI界面操作
讀取文件時,會顯示文件讀取狀態(tài),讀取成功后,會顯示文件名稱和長度,同時,在發(fā)送文件的過程中,發(fā)送字節(jié)數(shù)也會實時更新,可以通過發(fā)送字節(jié)數(shù)和文件長度做一個簡單的對比,從而判斷文件是否發(fā)送完畢。
(2)PC端GUI(藍牙串口軟件)的操作流程如下:
1)藍牙串口的端口號及其波特率、校驗位、停止位、數(shù)據(jù)位的配置;
2)打開串口后,然后點擊固件升級,下位機即進入等待升級狀態(tài);
3)打開BIN文件,發(fā)送文件即可成功升級,如果不需要升級,可以點擊系統(tǒng)運行按鈕,可再次進入APP運行狀態(tài)。
2.3藍牙通訊
(1)HC-05與上位機(筆記本電腦)配對使用:給模塊上電,利用電腦自帶藍牙搜索連接,適合筆記本電腦與設(shè)備間的藍牙串口通信,使用方法與串口一樣。HC-05作為中間橋梁,以此實現(xiàn)上位機與STM32之間的通信。
(2)HC-05模塊配置步驟:
①USB TO TTL模塊接藍牙模塊,然后按下S1按鍵,上電,進去AT指令模式;
②打開串口助手XCOM 2.0,發(fā)送AT測試指令,模塊響應(yīng)OK,即表明模塊已進去AT指令模式,正常工作;
③發(fā)送AT+ROLE=0,模塊響應(yīng)OK,即藍牙模塊角色設(shè)置為從角色;
④發(fā)送AT+UART=115200,0,0,模塊響應(yīng)OK,波特率成功設(shè)置為115200,校驗位為NONE,停止位為1,數(shù)據(jù)位為8。
3.技術(shù)指標測試
3.1 BIN文件讀取速度
讀取47KB大小的BIN文件所用讀取時間為:32s,則BIN文件讀取速率大約為:1.47KB/s。
3.2 BIN文件發(fā)送速率
BIN文件的發(fā)送速率取決于藍牙模塊和單片機的波特率設(shè)置,本項目的波特率為115200。
3.3藍牙模塊有效傳輸距離
HC-05藍牙模塊理論上的最大傳輸距離為10米,但是在實際測試時,考慮到在室內(nèi),連接信號在5米處開始變的微弱,5米內(nèi)能夠保證信號的正常連接和數(shù)據(jù)發(fā)送。
4.結(jié)語
本項目在分析研究了市場上大量嵌入式平臺的應(yīng)用需求,和Bootloader的功能特點和實現(xiàn)原理的基礎(chǔ)上,設(shè)汁與實現(xiàn)了基于藍牙的無線遠程進行STM32固件升級的解決方案。最后詳細測試了本項目中下位機IAP和APP程序的功能、藍牙模塊的通信性能和上位機藍牙助手的成效,結(jié)果證明完全達到了預(yù)期的設(shè)計目標。
參考文獻:
[1]黃小松.分油機模擬控制面板智能化設(shè)計[D].遼寧:大連海事大學(xué),2017.
[2]袁三男. 基于STM32F4控制器的程序遠程下載的實現(xiàn)[N].上海電力學(xué)院學(xué)報,2013.
[3]許青青.一種輕量級Bootloader(LWBL)的設(shè)計與實現(xiàn)[D].上海:華東師范大學(xué),2012.
[4] STMicroelectronics web site. STM32F42x and STM32F43x datasheets. Earthquack Eng [DB/CD].2014.
作者簡介:
崔浩東,生于1997年7月,男,漢族,河南省,天津工業(yè)大學(xué)本科在讀,電子信息工程方向。