基于STM32F10x处理器如何在IAP中实现设计和应用方案

引 言
cortex-m3是首款基于armv7-m体系结构的32位标准处理器,risc结构,包含高效灵活的thumb-2指令集,拥有杰出的低功耗特性,为微控制器系统、汽车车身控制系统、工业控制系统和无线网络等嵌入式应用量身设计。st公司推出基于cortex-m3内核的stm32系列处理器,凭借其出众的性能、创新的外设、优越的功耗控制,得到众多工程师的青睐。
针对嵌入式应用的特点,stm32处理器提供功能强大的硬件调试接口——jtag接口和串行接口,极大方便了设计,缩短了产品的开发周期。不仅如此,stm32处理器内嵌的闪存存储器允许在电路编程(in-circuit pro-gramming,icp)和在应用中编程(in-application program-ming,iap)。利用在应用中编程,仅需通过一根串口线,就可以完成产品固件的更新。本文对stm32处理器的在应用中编程进行了详细的分析,结合硬件和驱动给出了iap的具体实现方法,稍加修改,便可应用于stm32处理器的所有系列产品。
1 stm32f10x处理器
1.1 stm32处理器特点
stm32全系列处理器具有脚对脚、外设及软件的高度兼容性。这给应用带来很好的灵活性,易于将应用升级到不同存储空间或不同封装的平台。stm32处理器的产品全系列兼容,使得项目之间的代码重用和移植很方便。
1.2 stm32处理器内存映射
cortex-m3的存储系统采用统一编址的方式,程序存储器、数据存储器、寄存器被组织在4 gb的线性地址空间内,以小端格式(little-endian)存放。内存映射如图1所示。
在代码区,0x00000000地址为启动区。上电以后,cpu从这个地址开始执行代码0x08000000为用户flash的起始地址,0x1ffff000为系统存储器(system memory)的起始地址。对于stm32处理器,可以通过配置boot0和boot1两个引脚来选择不同的启动模式,如表1所列。cpu在时钟信号的第4个上升沿锁存boot引脚的值,根据两个引脚的值将对应的存储器物理地址映射到启动区。
系统存储器也称为“大信息块”,有2 kb的容量。所有上市的stm32处理器,在出厂前已经烧写进去自举模式下的启动程序(bootloader),并且将之锁定防止用户擦写。通过配置boot0和boot1选择系统存储器启动,相应的启动程序在复位后得以执行,配合pc端的通信软件,通过usart1口允许用户将程序烧写到用户flash区。之后,将boot0和b00t1重新配置为用户flash存储器启动,进入正常的应用程序。
上述的自举模式类似于isp编程,相比其他烧写方式方便许多,但真正方便灵活的是在应用中编程(iap),只需一根串口线就可以载入程序,复位后立即执行新的应用程序。
2 iap功能原理
在应用中编程(iap)使得用户可以在程序运行时重新对flash进行编程。简单地说,iap的编程工作是:下载编译好的二进制文件数据到ram;将数据重新编程到特定的flash区。这两个工作是由iap驱动程序完成的。使用iap功能后,系统的固件由2部分组成:第1部分是iap驱动,不执行通常的功能,而是通过微控制器支持的任一种通信管道(如usb、usart、spi等,本文使用usart)接收数据,并执行对第2部分代码的更新;第2部分是真正的应用程序代码,实现具体的功能。这两部分代码共同烧写在flash中。要注意的是,这两部分代码不能重叠,否则无法实现iap功能。
系统上电以后,iap驱动首先运行,它主要执行如下的操作:
①根据硬件信号或软件条件判断是否需要对第2部分代码进行更新;
②如果不需要更新,则跳转到④;
③执行更新操作;
④跳转到第2部分代码执行。
stm3210x处理器iap驱动的流程如图2所示。图中显示iap主界面是利用超级终端实现的,传输协议用的是ymodem协议。需要注意的是,由于iap驱动占用了用户flash区的一段起始空间,因此flash的可编程最大空间要把这部分除去。[page]
3 iap功能实现
3.1 硬件电路
采用stm32f10x型处理器作为核心。该处理器可全速工作在72 mhz,拥有3个usart接口,内嵌128 kb flash和20 kb sram。flash是以页的形式组织的,擦除1页的时间约为20~40 ms;在整个工作范围内其擦除次数可达10 000次,经10 000次擦除后,在+55℃的保存环境中数据保存期限仍可达20年。用户完全不必担心使用了iap功能后对产品造成不良影响。
iap驱动使用usart1口作为通信管道,pb口的第9引脚作为iap判断是否进入iap功能的信号线。引出一个按键,作为iap功能选择按键,只要在上电或复位时按住此键就会进入iap功能主界面,否则直接执行正常应用程序。boot0和boot1是启动配置跳线。相应的硬件电路分别如图3、图4和图5所示。
3.2 iap驱动
iap驱动主要包含如下源文件。
main.c:完成flash解锁、按键端口初始化、按键判断、usart1的初始化以及处理器的始终初始化,另外还初始化指针和跳转到应用程序处语句。然后从common.c执行主菜单。
common.c:显示主菜单。主菜单上显示一系列操作,如加载二进制文件、执行应用程序以及禁止写保护(如果事先flash被写保护)。
download.c:等待用户选择传送文件操作,或者放弃操作以及一些提示信息,但真正实现传送的是ymodem.c源文件。
ymodem.c:负责从超级终端接收数据(使用ymodem协议),并将数据加载到内部ram中。如果接收数据正常,则将数据编程到flash中;如果发生错误,则提示出错。
3.3 软件实现
要实现iap功能,还需做一些准备工作:
①要准备bin类型的代码文件。开发环境使用的是keil,默认情况下keil生成hex类型的编译文件。利用keil自带的fromelf.exe工具,就可以生成二进制文件。
②对超级终端进行设置。iap驱动中对usart1的设置为:波特率为115 200 kb/s,8位数据位,1位停止位,无校验位和硬件控制。超级终端也必须保持相同设置。
iap驱动和应用程序代码需要分配在flash的合适位置。图6是2部分代码在flash中的存储情况。由于iap驱动代码占用8 kb的空间,故而将flash最初的8 kb划出来,应用程序是从0x08020000地址处开始存放的。这是通过在common.h头文件中语句定义的:[page]
#define applicationaddress 0x08020000
也可以定义在其他0x08020000地址后的任何位置,只要保证应用程序大小不超过所用处理器flash的容量。在platform_config.h头文件中有定义flash的语句:
#define page_size(0x400) //flash页大小为1 kb
#define flash_size(0x20000)//flash容量为128 kb
stm32f10x处理器有2种flash页的大小:1 kb和2 kb。通过以上语句即可定义页大小。
在platform_config.h头文件中还定义了进入iap功能选择按键映射引脚:
iap驱动在keil中编译、链接后,利用arm公司的realview ulink2仿真器将生成的hex文件烧写到flash中。此时keil自带的flash烧写工具要设置flash的起始地址为0x08000000。在应用程序中,定义向量表的函数nvic_setvectortabl(nvic_vecttab_flash,0x2000)中的第2个参数,即flash的偏移量一定要设置成0x2000或更大的数值。同时,flash烧写工具也要做相对应的设置。将系统的串口与pc机串口相连,打开已经设置好参数的超级终端。将boot0跳线为0,boot1为0或1都可以。按住iap功能选择按键,给系统上电。此时,在超级终端就会显示iap功能主界面,如图7所示。
在键盘上按1选择待载入二进制文件,界面上会出现提示语。在“传送”菜单中选择传送文件后,只需几秒钟可以将6 kb左右的文件烧写到flash。下载完后,在键盘上按2或复位就可以直接执行应用程序了,如图8所示。虽然iap功能使用的是usart1口,但进入应用程序后就可以正常使用usart1口。随时可以通过复位后按住iap功能选择键来进行iap方式烧写应用程序。
结 语
stm32f10x处理器性能出众,已被广泛应用于各种场合。其iap功能给用户带来了极大方便,使得产品的固件更新快捷、简单。本文阐述了iap的基本原理,并详细描述了如何在stm32f10x处理器平台中实现iap功能,并在所设计的系统中进行了iap实验。实验证明,该款处理器的iap功能可靠、快捷。


网红电商服务领域新高地 陈知道创立汍峙直播基地亦庄揭幕
从手机到汽车,3D Touch重返台前
三层交换机到底要怎么配置 有哪些常用的配置命令
飞兆增强型重启定时器解决硬件锁死重启
智慧工厂实验平台的MES软件系统介绍
基于STM32F10x处理器如何在IAP中实现设计和应用方案
TCL旗下公司经营范围新增智能机器人等业务
简述运动传感器在未来蜂窝手持设备领域的关键作用
IBM帮助中国移动宁夏公司构建了统一的供应商协同平台
电子产品设计的步骤是什么
区块链在商业中扮演怎样的角色
氮化镓充电器Galio推出,支持最大充电器功率为120W
射频大气压辉光放电的典型结构以及产生办法
赛普拉斯推出全新蓝牙低功耗模块和蓝牙智能网格
区块链创业公司DADI正在构建云计算新方法,用来创造积极的社会变革
惠更斯原理,惠更斯原理示意图
南卡T1怎么样 一款非常有诚意的真无线耳机
全球四大机器人巨头财务报表大揭秘
医疗器械检测标准的依据是什么?
DCDC转换器让您的电力更持久