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