浅谈STM32用户基于IAP的程序更新技术
2018-12-07张航
张航
摘 要:随着科学技术的不断发展,STM32也需要不断的进行更新、升级,才能跟上时代的发展。基于此,本文通过对介绍IAP的写入途径,从IAP技术工作的基本过程、中断处理方式、IAP技术实现程序更新的关键点等方面论述了IAP技术在STM32程序更新中的应用。
关键词:STM32用户;IAP;程序更新技术
DOI:10.16640/j.cnki.37-1222/t.2018.21.123
0 前言
在开发嵌入式系统时,最终的目的都是将编写好的结构代码下载到预定的微控制芯片上。对于微控制片来说,大部分生产厂家的下载方式都是不同的。现阶段,在对用户程序进行加载时,所采用的方式大多是在线编程。很多生产芯片的公司将用户更新程序中的方式和接口进行开放式设计,以此使整个系统能够安全可靠的运行,同时提高其可维护性。
1 IAP写入途径
IAP的写入途径主要有三种:
第一,从串口写入。从串口写入是指在程序升级时,所需的固件是从串口写入产品的。这种方法的使用,在开发引导程序过程中是比较简单的,不用在额外的添加其他的文件系统,只需要将串口驱动加入即可。从串口写入的方法也有一定的缺点,在升级固件时,需要串口软件、PC机以及串口线等,这些装备很多用户都不具备,应用范围比较小,同时操作的难度也是比较大的。第二,从U盘或者SD卡写入。从U盘或者SD卡写入是指在升级固件之前,先用U盘或者SD卡将固件拷贝下来,然后直接进行升级操作就可以将固件升级。这种方法的使用,使用这种方法的缺点是所需要的代码数量比较多,程序的开发引导比较复杂,需要的存储空间比较大。如用U盘时,需要将USB协议和文件系统嵌入程序中;在用SD卡时需要将SD卡中的驱动程序和文件系统嵌入到程序中。第三,从网络直接升级。从网络上直接升级的应用对于用户来说是最方便的,在升级过程中,并不需要使用任何设备。产品在联网状态下,IAP技术会实现自动升级。但是这种方法的应用也有一定的缺点,在程序开发引导过程中,所需的代码数量非常多且比較复杂。
2 IAP技术在STM32程序更新中的应用
2.1 IAP技术工作的基本过程
IAP有两部分项目代码,其一是引导程序代码;其二是产品功能程序代码。其中在开发引导程序时,是需要利用专门的设备写入的,如JTAG和串口等,这样在开发过程中,需要写的代码数量就会大大降低,同时节省了存储空间;在开发产品功能程序时,上述的三种写入方法都可实现。这两个程序在烧录时,必须是同时的且在User Flash中。当芯片通电之后,IAP技术的基本工作过程如下:第一步,引导程序开始运行;第二步,对STM32中的代码进行检查,检查之后,识别出那些代码需要更新;第三步,如果检查之后,发现STM32中的代码没有需要更新的,那么就会自动转接到第五步;第四步,检查需要有更新的代码,会执行更新任务,利用U盘、SD卡等写入方式将固件升级,用户只需要有U盘或者SD卡就可以完成升级,操作起来非常的简单,且比较方便。然后存储到User Flash中;第五步,如果没有需要更新的代码,那么会直接执行产品功能程序代码。
2.2 IAP中断处理
在User Flash中,存在两个程序,在开机之后,设备默认的执行顺序是先从引导程序开始,因此需要更改产品功能程序的中断向量。例如:在对STM32F4系列进行更新过程中,它的内部闪存地址起始于0x08000000,文件开始执行时,以此地址为起点。在运行过程中,会经过以“中断向量表”,这个中断向量表起到响应中断的作用。在程序启动之后,IAP技术会在表中将复位中断向量取出,然后执行复位中断程序,以此将IAP启动。这个表的地址是0x08000004,当即将要进行中断处理时,STM32F4内部的各种硬件以及机制会自动的定位PC指针,将其定位到“中断向量表”处。同时会在中断的源头处取出执行过程中的中断服务程序。这时,产品功能程序中的中断向量表,会移动到程序的起始地址位置处[1]。
2.3 IAP技术实现程序更新的关键点
想要实现IAP技术对程序更新,需要做到以下几点:
第一,对产品功能程序的中断向量地址和起始地址进行更改。在联网状态下,则需要使用网卡芯片,同时还需要将网络协议和驱动程序嵌入到程序中,如LEIP。例如:IAP中引导程序所占的空间是64K,对于产品功能程序来说,它的起始地址就应该更改成0x08010000。对于程序文件system_stm32f4xx.c来说,文件内部的flash向量地址应该修改为SCB->VTOR=FLASH_BASE|0x10000[2]。第二,要烧录程序内部的flash,在联网状态下,则需要使用网卡芯片,同时还需要将网络协议和驱动程序嵌入到程序中,如LEIP。仍然以STM32F4为例,由于它的扇区比较大,在保存扇区数据过程中,无法利用内部的RAM,因此,在这种情况下,在写地址时,都会现将扇区中的数据擦除,然后再写入数据,而不管是什么数据都会占用一个扇区。如果扇区中的数据特别重要,要注意先保存备份。这样就能够实现IAP技术对STM32系列的更新。
3 结论
综上所述,IAP技术的写入方法很多,合理的应用这些方法可以使程序更新更加方便、快捷。经过上文分析可得,我们IAP 技术在对STM32系列进行更新时,首先要了解IAP技术的基本工作过程。其次,它的中断处理过程是非常重要的。最后实现程序更新需要把握两个关键点。因此,IAP技术对于STM32系列的更新有非常重要的意义。
参考文献:
[1]陈亮.基于STM32处理器的存储器IAP编程技术[J].电子测试,
2017(10):77-78.
[2]唐玉兵,龙舰涵.基于STM32系列处理器IAP技术研究[J].科技展望,2015,25(21):122.