基于IAP技术的ADuC702x固件升级方案
摘要:本文介绍了一种基于ADuC702x的智能仪表在应用编程升级固件程序的方案。该方案已成功应用于光通讯和其他产品中,使产品的固件程序升级变得简单方便,且实践验证具有高可靠性。
关键词:ADuC702x;IAP;在应用编程;远程升级
引言
目前,智能仪表等产品的设计主要以微控制器为控制核心,但是其设计往往不可能一步到位,尤其是固件程序部分,需要根据产品使用反馈不断地进行修改和完善。当程序需要根据用户需求变更时,传统情况下需要将产品拆卸下来返回原厂修改程序,或请专业的维修服务人员亲自到设备现场,将设备取下或者打开设备,通过JTAG方式连接PC等来重新烧写程序。在应用编程(In Application Programming,IAP)技术可实现对产品的在应用升级。
ADuC702x系列微处理器由ADI公司生产,集成了ARM7TDMI 16位/32位RISC(精简指令集计算机)内核,具有8kB的SRAM、62kB的Flash/EE存储器,可通过UART或JTAG端口在线编程,最高处理能力达44MIPS。当工作频率为41.78 MHz时,典型的功耗为120mW。
ADuC702x在线IAP升级方案
ADuC702x系列微处理器物理存储结构地址如图1所示,其程序通常放置在62kB的Flash/EE存储器内,该Flash/EE可通过该系列微处理器内部Flash Control Interface进行读写访问操作,通过该操作实现IAP固件程序升级功能。后续IAP方案研究和程序设计均针对该Flash/EE实施。
使用IAP对ADuC702x升级,首先需要了解ADuC702x的Flash/EE基本存储结构和对程序存放的Flash/EE进行合理分区规划。Flash/EE基本存储结构如图2所示,从图中可以看出,Flash/EE地址从0x00080000到0x0008FFFF,总大小为64kB,其Flash(闪存)的位宽为16位,因而Flash大小即为32k×16b。Flash中512B(即256×16b)为一块,为最小Flash读写操作单元。64kB Flash中有2kB(1k×16b)用于该系列微处理器出厂固化启动引导程序,即为On-Chip kernel(片上内核),该段程序空间不能为用户所使用。另外一部分62kB(31×16b)为用户可使用程序段,该段程序用于存放用户代码,在IAP方案设计中IAP操作指代对此62kB的Flash/EE操作。
通过对62kB此段用户可使用的Flash/EE做一定的分区规划和操作,实现IAP固件程序升级。对62kB此段Flash/EE规划如图3所示。从图3中可知,IAP使用将用户可使用的Flash/EE划分为了三个区:Bootloader区,User Application区以及Flag标志区。三个Flash区功能描述如下。
1. Bootloader区:用来存放用户编写的Bootloader代码,该代码类似于PC机的BIOS(基本输入输出系统),一旦固化成功,该段程序将不再更改,除非Bootloader代码出现BUG(错误),该段程序只能用ISP(在系统编程)方式通过串口通讯或者JTAG方式写入ADuC702x内部。
2. User Application(用户应用)区:该区用来存放用户应用程序代码,用户代码的固化需要有配套的PC机程序通过串口来完成,该PC机程序需要根据指定的协议和流程编写,该协议和流程将在下文中给出。
3. Flag标志区:用来存放各个标志,用户代码程序是否有效标志,是否进入Bootloader标志(该标志用来IAP更新应用程序)。Flag定义如图4所示。
程序启动流程如图5所示。
下文对Bootloader程序、User程序设计以及Flag进行详细的阐述。
BootLoader程序设计及固化
一、BootLoader程序设计
本设计在Keil for ARM集成环境下使用。首先在Keil软件下新建一个工程,并选择芯片型号为ADuC702x,且不拷贝startup文件。然后分别添加对应源文件,在Keil环境中配置BootLoader程序起始地址为0x00080000,大小0x5000;SM起始地址为0x00010040,大小为0x1FC0。
二、Bootloader程序固化
Bootloader固化有两种方式:UART0和JTAG。UART0固化程序参照ADI公司ARMWSD.exe;JTAG下载可以使用ULINK系列仿真器。
Bootloader程序下载需要注意以下两点:
⒈Bootloader程序大小不能超过20kB;
⒉Bootloader程序固化时,选择“Erase Sectors”,不要选择“Erase Full Chip”擦除整个存储空间。
用户应用程序设计与固化
一、用户应用程序设计
首先在Keil软件下新建一个工程,并选择芯片型号为ADuC702x,且不拷贝startup文件。然后分别添加对应源文件,在Keil环境中配置用户应用程序起始地址为0x00085000,大小0xA600;SRAM起始地址为0x00010040,大小为0x1FC0。
二、用户应用程序固化
用户应用程序固化也有两种方式:UART和JTAG。JTAG下载可以使用ULINK系列仿真器;UART固化程序需要根据通讯协议格式编写PC机程序,下文中进行具体描述。
用户应用程序下载需要注意
- MSP43F149系列单片机的IAP功能设计(09-08)
- 基于IAP的STM32程序更新技术(01-23)
- 基于IAP和Keil MDK的远程升级设计(12-19)
- STM32 IAP 无法运行用户程序的解决方法(12-03)
- STC单片机 EEPROM/IAP 功能测试程序演示(12-01)
- 9G-STM32 简易BOOT及XMODEM串口IAP移植过程简介(11-29)