



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