摘要:單片機的在應(yīng)用編程(In-ApplicationProgramming,IAP)功能指的是在應(yīng)用中編程,即允許單片機在運行自己的應(yīng)用程序時自我更新,通過特定的機制對程序存儲器進行更新或修改,其目的就是為了在產(chǎn)品在使用后可以方便地通過預(yù)留的通信接口可遠程對產(chǎn)品中的固件進行升級更新。在工程應(yīng)用中經(jīng)常會出現(xiàn)產(chǎn)品被安裝在某個特定的機械結(jié)構(gòu)中,更新程序的時候拆機很不方便,使用IAP技術(shù)能很好地降低工作量。產(chǎn)品MCU選擇STM32F405RG,該系列芯片面向需要在小至4mm×4.2mm的封裝內(nèi)實現(xiàn)高集成度、高性能、嵌入式存儲器和外設(shè)的醫(yī)療、工業(yè)與消費類應(yīng)用。STM32F405/415提供了工作頻率為168MHz的Cortex?-M4內(nèi)核(具有浮點單元)的性能。
關(guān)鍵詞:地鐵自動售檢票系統(tǒng)IO控制板在應(yīng)用編程自動化控制
ResearchonanewschemeofremoteupgradeofIOcontrolboardfirmwareinMetroAutomaticFareCollectionSystem
HUJingfeng
FujianUrbanConstructionIntelligentControlCO.,LTD.Fuzhou,F(xiàn)ujianProvince,350001China
Abstract:Thein-applicationProgramming(IAP)functionofthesinglechipmicrocomputerreferstoprogrammingIntheApplication,thatis,allowingthesinglechipmicrocomputertoself-updatewhenrunningitsownapplication,andupdateormodifytheprogrammemorythroughaspecificmechanism.Itspurposeistoconvenientlyupgradethefirmwareintheproductthroughthereservedcommunicationinterfaceafteruse.Inengineeringapplications,ourproductsareofteninstalledinaspecific&nbTdkMhrX9PXW9afTJL1emUA==sp;mechanicalstructure,anditisveryinconvenienttodisassemblethemachinewhenupdatingtheprogram.TheuseofIAPtechnologycanreducetheworkload.WehaveselectedtheSTM32F405RGfortheMCUformedical,industrialandconsumerapplicationsthatrequirehighlyintegrated,high-performance,embeddedmemoryandperipheralsinpackagesassmallas4mmx4.2mm.TheSTM32F405/415providestheperformanceofaCortex?-M4kernel(withfloatingpointunit)operatingat168MHz.
KeyWords:MetroAutomaticFareCollectionSystem;IOcontrolpanel;In-ApplicationProgramming;AutomationControl
目前,國內(nèi)地鐵自動售檢票系統(tǒng),已經(jīng)非常成熟且應(yīng)用范圍之廣,由于業(yè)務(wù)需求較多,其功能也是日益更新,軟件升級也比較頻繁,所以在軟件自動升級功能中,就凸顯出特別的重要,以提高工作效率和降低維護成本。
在一些終端設(shè)備中,使用了很多模塊,這些模塊一般都是采用單片機來控制,基于單片機的產(chǎn)品一般是沒有內(nèi)置操作系統(tǒng)。要完成升級,產(chǎn)品發(fā)布投入使用后,如果要對產(chǎn)品進行軟件升級時,要是沒有遠程升級功能,則需要工程師到現(xiàn)場一臺一臺的設(shè)備上進行拆卸,工作極其煩瑣,這樣會增加大量的維護成本和浪費開發(fā)人員的時間,效率也極低。
此產(chǎn)品,從電路設(shè)計到嵌入式系統(tǒng),為自主研發(fā),在AFC設(shè)備上大量的使用,比如自動售票機TVM、自動檢票機CTM等設(shè)備使用過程中,通過技術(shù)攻關(guān)和不間斷測試,實現(xiàn)了遠程在線升級功能,此功能能大量節(jié)省人工成本以及提高工作效率[1]。
精益求精,嚴謹細致,以此作為研發(fā)的宗旨。下面以這個產(chǎn)品的硬件設(shè)計和軟件設(shè)計,來討論和實現(xiàn)單片機(STM32)遠程自動在線升級功能。
1創(chuàng)新設(shè)計構(gòu)想
STM32單片機系列的MCU自帶有bootloader程序,需借助專業(yè)編程器,人為方式,進行下載更新升級,此方法不滿足生產(chǎn)環(huán)境上的需求,在大量現(xiàn)場使用的設(shè)備上進行更新操作,其效率太低,工作量繁瑣。在此背景下,我們公司自主研發(fā)的IO控制板,采用全自動的升級方式,將需要升級的固件從控制中心通過FTP的方式,下載至嵌入式系統(tǒng)中進行自身的更新操作,即在應(yīng)用編程(In-ApplicationProgramming,IAP)[2]。
實現(xiàn)思路,需要在單片機的ROM中,設(shè)計并運行兩個項目程序代碼,第一個程序叫Bootloader,其作用是通過遠程通信,通過上位機的串口相連,接收編譯好的固件二進制代碼(稱為第二段代碼,即APP),之后在相應(yīng)地址上擦除FLASH并更新數(shù)據(jù),再通過軟件方式,即可啟動APP,也就是真正的應(yīng)用軟件,這樣就能起到全自動升級的效果。
我們設(shè)計的新型方案是可相互升級Bootloader和App,Bootloader程序也可以在產(chǎn)品出廠時,先更新上去。也可以從第二段代碼去更新第一段代碼。這樣就能實現(xiàn)用Bootloader來升級App,或用App升級Bootloader的雙向升級的效果。在產(chǎn)品中,支持這2個種相互升級的功能,在我們的生產(chǎn)環(huán)境中,測試和運行的效果良好[3]。
對總體設(shè)計做簡潔說明:
(1)上電從棧頂?shù)刂?x08000000運行,執(zhí)行到地址0x08000004,再進入mabcdec8689d9fe0525fb019f5471ad1a7f8fd19fe62691e16a61fce6a7ab8b3a9in函數(shù),在main里停留3s,檢查0x08010000地址上的數(shù)據(jù)是否合法。如果合法,將進入App程序,正常執(zhí)行。如非法數(shù)據(jù)或未下載,LED顯示“E-99”提示,等待上位機升級指令。
(2)在App運行中,如有升級需求時,上位機發(fā)命令I(lǐng)O控制板,判斷是升級bootloader還是App,如是升級App,則自動復(fù)位進入bootloader程序,接收升級包后處理相應(yīng)扇區(qū)的擦除寫入,再跳轉(zhuǎn)到App地址空間,升級完畢[4]。
(3)如是升級bootloader,則就在App內(nèi)部,進行相應(yīng)扇區(qū)的擦除寫入,再跳轉(zhuǎn)到bootloader的地址空間,重新啟動,升級完畢。
我們先來熟悉一下STM32F405系列單片機的內(nèi)部FLASH的分層架構(gòu)。
查詢MCU的技術(shù)文件得知其內(nèi)部ROM的物理空間地址如上圖1所示,F(xiàn)lashMemory空間從0x08000000~0x080FFFFF,總共1MByte。因要運行2個程序,所以我們先對內(nèi)部物理空間做個分配,電路圖不作詳細講解。
(1)第一個bootloader程序的物理地址空間,我們設(shè)計從0x08000000~0x0800FFFF,占4個扇區(qū)(Sector0-4),每個扇區(qū)16K,總共64K,可通過SWD接口燒入。
(2)第二個App程序的物理空間,設(shè)計從地址0x08010000開始到0x080FFFFF(1M-16K=1008KByte),扇區(qū)從Sector4-11,占用8個扇區(qū)[5-6]。
3軟件設(shè)計
詳細解讀流程圖上的細節(jié)。
(1)上電后,系統(tǒng)自動運用bootloader程序,檢查0x08010000上數(shù)據(jù)的合法性。
(2)如果0x08010000空間上的代碼不合法,進入錯誤等待,LED上一直顯示:E-99。
(3)檢查標志位,是否有升級需求,判斷是升級App還是Bootloader,則發(fā)送升級確認包,進入下載固件包的流程,下發(fā),擦除相應(yīng)的扇區(qū),更新。
(4)通信下發(fā)流程,需取得雙向認證后(密鑰認證),才可以下發(fā)固件包。
(5)升級完畢后,系統(tǒng)復(fù)位再次進入bootloader,形成一個環(huán)流程[7]。
(6)如何進入App應(yīng)用,參考如圖4部分代碼。
4結(jié)語
在產(chǎn)品研發(fā)過程中,得到了很多寶貴的經(jīng)驗和教訓(xùn),通過深入的分析和探討,不僅增加了對學(xué)術(shù)研究的認知,還鍛煉了解決問題的能力。將繼續(xù)發(fā)揚科學(xué)求真精神,勇于創(chuàng)新、追求真理。精益求精,嚴謹細致,作為研發(fā)產(chǎn)品的宗旨,貴在創(chuàng)新。只有創(chuàng)新,才能學(xué)有所成,有所突破。只有發(fā)揮創(chuàng)新精神,才能在如此競爭激烈的浪潮中脫穎而出。
參考文獻
[1] 楊菁,劉伊敏,張燁宇.城市軌道交通信號電源系統(tǒng)的特點與發(fā)展趨勢[J].電池,2024,54(2):295-296.
[2] 金利,杭州市軌道交通站點發(fā)展水平評價及影響因素研究[D].杭州:浙江大學(xué),2023.
[3] 鮑賀文,BM城市軌道交通工程咨詢公司發(fā)展戰(zhàn)略研究[D].北京:北京交通大學(xué),2021.
[4] 劉斌,地鐵自動售檢票(AFC)系統(tǒng)及其發(fā)展趨勢[J].華東科技,2022(1):111-113.
[5] 韓宇淇,電氣自動化技術(shù)在城市軌道交通中的應(yīng)用[J].電子技術(shù)與軟件工程,2021(20):92-93.
[6] 劉昊杰,自動化技術(shù)在軌道交通工程中的應(yīng)用[J].集成電路應(yīng)用,2022,39(7):244-245.
[7] 施仲衡,馮愛軍.城市軌道交通技術(shù)發(fā)展戰(zhàn)略探討[J].都市快軌交通,2004(4):4-8.