摘要:单片机的在应用编程(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.