74
Microcontrollers &Embedded Systems 2012年第1期www.mesnet.com.cn
STM32用户基于IAP的程序更新技术*
李兴鹤1,蔡亮2,宋吉波1,王鹏2,金辛海2,时迎亮2
(1.上海辛格林纳新时达电机有限公司研发中心,上海201802;2.
上海新时达电气股份有限公司)*获得青年科技启明星计划(
B类)的资助(项目编号:09QB1403200)。引 言
嵌入式系统的开发最终需要将编译好的代码下载到具体的微控制器芯片上,而不同厂家的微控制器芯片有不同的下载方式。随着技术的发展和应用需求的更新,用户程序加载趋向于在线编程的方式,越来越多的芯片公司提供和开放了用户更新程序的接口与方式,以提高整个系统的可靠性和可维护性。ST公司基于Cortex-M3内核的STM32系列产品得到了广泛应用,在许多基于STM32系
列产品的开发过程中不可避免要进行用户程序的加载。本文在介绍IAP技术原理基础上,详细论述使用该技术在STM32F103ZE芯片上实现用户在线更新功能的方法,并具体分析其中可能发生异常的原因。
1 背景综述
1.1 主要程序更新方式
目前,除了直接通过仿真器或烧录器进行程序更新方式外,主要有Bootloader技术、ISP技术以及IAP技术3种更新程序的方法。
(1)Bootloader技术
引导加载程序,是指系统加电时,控制器将一段存储在外部非易失性存储器中的代码载入到内部高速存储器单元(如片内RAM)
中执行的过程。(2)ISP(In System Programming
)技术MCU内部自带Bootloader,通过指定的方式激活,通过通信接口下载或擦除用户代码。需要有外部介入,静态的,在用户代码没有运行时进行下载。
(3)IAP(In Application Programing
)技术单片机内部具有一些可擦写的非易失存储器,如Flash
。在微控制器运行时,用户利用自己编写的烧写程序通过通信下载或擦除自己的代码。注意不具备IAP功能的单片机并不能对Flash的数据进行修改。无需外部介入,动态的,在用户代码运行时进行下载。
1.2 S
TM32系列简介STM32系列微控制器基于Cortex-M
3内核,并在其架构上进行了多项改进,包括在提升性能的同时提高了代码密度的Thumb-2指令集,以及大幅度提高中断响应的紧耦合嵌套向量中断控制器,从而大大提高了处理速度,降低了系统功耗。使用新内核的Thumb-2指令集,设计人员可以把代码容量降低45%,几乎把应用软件所需内存容量降低了一半。此外,STM32提供丰富的外围接口,目前广泛应用到工业用及家用安全设备、消防和暖气通风空调系统等,以及家电、消费电子、低功耗的可便携式设备等。本文以STM32F103ZE为例来研究及使用IAP技术。
2
IAP技术2.1 IAP技术原理
首先人为设定单片机内部存储区分为两块:其中一块称为Boot区,用于存储IAP功能程序代码;另外一块称为常态存储区,用于存储除IAP功能外的所有程序代码。IAP技术指的是,MCU在运行的状态下,通过程序(PC)
指针不断读取需要执行的程序指令。正常情况下,PC指针只在常态存储区内移动,并读取指令,如图1所示。当用户需要更新或升级程序时,程序指令会将PC指针跳转至Boot区。这段存储区的指令代码的功能是,通过通信等方式接收用户需要更新的程序数据,并通过校验确认接收到的程序数据正确后,
根据约定的方式写入常态存储区,如图2所示。当完成用户程序更新后,PC指针再跳回到常态存储区,开始执行存储在其上的用户程序,这样便实现了IAP功能。
图2 更新存储
区代码
2.2 IAP技术关键点
通过研究IAP技术实现用户程序更新的过程,不难发现,在更新过程中必须保证PC指针在Boot区移动,而不能随意跳转至常态存储区。基于这个要求,结合微控制
paper@mesnet.com.cn(投稿专用) 2012年第1期
参考文献
[1]意法Cortex-M3微控制器重塑MCU市场[OL].(2007-06-
12)[2011-08].http://www.eccn.com/design_
2007061215020077.htm.
[2]彭刚,春志强.基于ARM Cortex-M3的STM32系列嵌入式
微控制器应用实践[M].北京:电子工业出版社,2011:320-
325.
李兴鹤(工程师),从事嵌入式系统、变频技术、新能源技术、电梯控
制系统等方面的研究。
(收稿日期:2011-08-19)嵌入式系统联谊会“嵌入式操作系统现状与趋势”主题讨论会结束
嵌入式系统联谊会“嵌入式操作系统现状与趋势”主题讨论会,于2011年12月17日在北京航空航天大学新主楼会议中心举办。本次会议针对国际嵌入式系统和IT产业巨头在软件和操作系统方面战略思路的变化,研讨技术、行业的现状和发展趋势。
日本名古屋大学讲师曾刚,在主题发言《嵌入式硬实时操作系统的趋势与TOPPERS技术》中谈到了当前热点RTOS的保护功能和如何开发多核处理器的问题,并简要介绍了TOPPERS与保护功能相关的开发成果———新一代车载系统RTOS的实际应用。
恒拓开源信息技术公司高可政,在主题发言《移动应用开发新趋势-Android应用开发成新宠》中提及,开发者选择开发平台的主要考量的是市场渗透能力、营收能力、是否拥有软件商店、开发者社区及开发难度,并详细介绍了Android应用的成功案例。
瑞典ENEA公司赵振生在《嵌入式操作系统在电信业中的现状与展望》中谈到了嵌入式操作系统在无线网络中的应用,同时指出了嵌入式操作系统应用的多样性。西安邮电大学计算机学院陈莉君教授带来题为《从机制与策略探究开源操作系统的设计之道》的主题报告,谈到Linux演化的主要推动力是系统新特性、新功能的增强,陈教授对进行的开源项目—弹性云存储作了具体介绍,同时还和大家探讨了如何将虚拟技术应用在调试器中。
RT-Thread创始人和维护者熊谱翔,在主题发言《MCU/MPU嵌入式操作系统趋势及RT-Thread策略》谈到了开源实时操作系统—RT-Thread,并指出其具有更好的便利性、互联性、包容性,在未来RT-Thread会朝着越来越开放的方式发展。北京航空航天大学自动化与机械学院魏洪兴副教授,在主题报告《面向服务机器人的实时操作系统及开源软件平台》中指出,当前机器人领域面临的挑战是多样化的体系结构与硬件平台,给出了机器人中间件的解决方案,还介绍了机器人操作系统在仿人机器上的应用。
在主题发言之后的讨论环节,MIPS费浙平、西安邮电大学陈莉君、《程序员》杂志主编刘江、清华大学袁涛、飞思卡尔半导体杨欣欣以及本刊主编何立民、副主编何小庆等人与其他到会者,就Android应用对产业的影响、国产MCU生态系统链、机器人开发平台制定标准以及对市场的理解等进行了深入探讨。
本刊编辑部下载本文