当前位置: 首页 > >

基于STM32系列电子产品的IAP研究

发布时间:

龙源期刊网 http://www.qikan.com.cn 基于 STM32 系列电子产品的 IAP 研究 作者:康燕萍 程小辉 黄鹏 来源:《现代电子技术》2017 年第 22 期 摘 要: 研究一种基于 STM32 系列单片机实现 IAP 升级固件的方案,此方案对比 ST 官网 IAP 升级固件方案有较大的改进。电子产品出厂烧录固件时无需额外烧录 BootLoader 引导代 码,出厂后的电子产品可使用 USB 线与电脑连接,通过 USB 接口把需要升级的固件拷贝到电 子产品自带的外部 FLASH 中。STM32 读取外部 FLASH 中的固件对自身的 FLASH 数据进行升 级,整个升级过程中不受断电影响。此升级方案可应用于智能家居产品、医疗电子产品、智能 家电产品等。 关键词: STM32; 在线应用编程; 固件; USB; 闪存 中图分类号: TN911? 34; TP311 文献标识码: A 文章编号: 1004? 373X(2017) 22? 0142? 03 Abstract: A research scheme of IAP firmware upgrading based on SCMs in STM32 series is introduced, which is improved greatly in comparison with the IAP firmware upgrading scheme shown in ST official website. The electronic product factory doesn′t need to burn the BootLoader guidance code in its electronic products additionally when burning the products′ firmwares. The final electronic product is connected with computer via USB cable. The firmware needing upgrade is copied into the external FLASH built? in electronic products through USB interface. The FLASH data of the firmware itself in external FLASH is read by means of STM32 for upgrade, and the whole upgrade process isn′t affected by power outage. This upgrade scheme can be applied to the intelligent household products, medical electronic products and intelligent appliances. Keywords: STM32; IAP; firmware; USB; FLASH Memory 0引言 STM32 控制器内嵌 ARM Cortex? M3 内核,具有高性能、低成本、低功耗等特点,受到越 来越多电子开发人员青睐。STM32 具有 IAP 功能,可实现用户或售后技术人员对出厂后的电 子产品进行固件升级。 IAP 的具体应用可通过不同方式实现。对比文献[1]方案和 ST 官网的 IAP 方案:文献[1]方 案与 ST 官网的 IAP 方案相同,将 BootLoader 代码存放在 FLASH 中,执行 BootLoader 之前先 将 BootLoader 代码拷贝到单片机的 RAM 中执行,对整片 FLASH 进行数据升级[1];ST 官网方 案的缺点是固件升级过程中不能断电,如果断电将损坏原有的固件,导致 STM32 不能正常启 动。文献[2? 3]在 ST 官网的方案上进行改进,BootLoader 代码存放在 FLASH 中,并在 FLASH 中执行 BootLoader 代码,固件升级时跳过 BootLoader 代码存储区,对 BootLoader 存储区域之 龙源期刊网 http://www.qikan.com.cn 外的 FLASH 进行数据升级,确保 BootLoader 代码的完整性,可解决固件升级过程中断电损坏 原有固件的问题[2? 3]。但使用 PC 机的超级终端中的 Ymodem 协议通过串口发送固件。此方 案在使用过程中存在较大的局限性,其要求 PC 机必须要有串口。如果 PC 机有串口,那么使 用 IAP 升级的意义不大,因为通过串口可使用 STM32 已固化的 BootLoader 代码进行 ISP 操 作。文献[4? 5]对方案进一步改进使用 SD 卡或 USB 接口进行固件升级,这样可以解决 PC 机 串口局限性问题[4? 5],但仍然使用两个固件的方案,对于产品生产而言增加了固件烧录的工 作量,也不便于固件的维护。文献[6]对两个固件进行手工合并,将两个固件合并成一个固 件,可以解决固件烧录的工作量大的问题[6]。但是由于手工操作,降低了固件合并的可靠 性。文中方案对比上述方案有进一步改进。文中的改进方案在程序设计时也使用两个工程,但 最终将 BootLoader 程序工程的固件通过编译器链接到应用程序工程代码中,最终生成一个固 件,减少产品生产烧录固件的工作量。由于固件合并是由编译器自动完成,增加了固件合并的 可靠性。IAP 升级固件时通过 PC 机的 USB 端口拷贝固件到电子产品的外部 FLASH 中,然后 进行升级固件,解决了 PC 機要求有串口的局限性。BootLoader 存放在 0x08000000~ 0x08004FFF 地址区域,上电后先执行 BootLoader 代码,满足条件才跳转至应用程序执行,固 件升级



友情链接: