版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、IAP及其应用以LPC2300为例,讲述IAP功能在实际使用过程中的应用方法以及相关解决方案,产品应用笔记 AN070701,概述 Boot简介 片内Flash存储系统 数据存储解决方案 在线升级解决方案,概述 Boot简介 片内Flash存储系统 数据存储解决方案 在线升级解决方案,IAP(InAppplicationProgram),即在应用中编程。顾名思义,就是在系统运行的过程中动态编程,对程序执行代码的动态修改。 IAP技术应用于嵌入式系统的数据存储和在线升级。例如在程序运行工程中产生4k字节数据表,为了避免占用SRAM空间,用户可以使用IAP技术将此表写入片内Flash。又如用户在开
2、发完一个系统后要增加新的软件功能,可以使用IAP技术在线升级程序,避免重新拆装设备。,概述,概述 Boot简介 片内Flash存储系统 数据存储解决方案 在线升级解决方案,LPC2300系列处理器在出厂时,由厂家在片内固化了一段Boot代码。Boot装载程序控制芯片复位后的初始化操作,并提供对Flash编程的方法。Boot程序可以对芯片进行擦除、编程。,在系统编程(ISP) 在应用编程(IAP),Boot简介,Boot重映射,Boot装载程序提供了ISP和IAP编程接口,可以实现对片内Flash存储器的编程。,Boot区位于地址0 x0007 E0000 x0007 FFFF处。不过,芯片上电
3、以后,会首先对Boot区执行一次重映射,映射到片内存储器空间的最高处,即接近2G(0 x8000 0000)的地方。,8KB Boot Block 重映射,地址重映射,在系统编程(ISP),在系统编程是通过Boot装载程序和UART0对片内Flash存储器进行擦除/编程的方法。,UART0,ARM7 处理器核,CPU运行Boot代码,通过ISP对Flash编程,在应用编程(IAP),在应用编程是用户的应用代码对片内Flash存储器进行擦除/编程的方法。,ARM7 处理器核,CPU运行Boot代码,通过各种途径获取用户代码,通过IAP对Flash编程,在应用编程(IAP),IAP程序是Thumb
4、代码,位于地址0 x7FFF FFF0。在ARM系统中实现状态转换的指令是“BX Addr”,目标地址Addr的最低位(bit0)仅来确定最终状态,实际的“目的地址= Addr IAP iap_entry; unsigned long command5; unsigned long result2; iap_entry = (IAP) IAP_LOCATION; iap_entry (command , result);,在应用编程(IAP),执行跳转指令时,如果“目的地址”的bit0 = 1,表示处理器需要进行状态切换,由ARM状态切换到Thumb状态,Thumb代码是“半字”对齐格式,即地
5、址 设置系统模式堆栈 MSRCPSR_c, #0 xdf LDRSP, =StackUsr 32 MOVPC, R0,IAP的命令表,在应用编程(IAP),IAP各命令返回代码及意义表,概述 Boot简介 片内Flash存储系统 数据存储解决方案 在线升级解决方案,Boot Block 不占用片内Flash,在利用IAP代码来操作片内Flash时,必须熟悉片内Flash的扇区分布。片内Flash的操作是以“扇区”为单位进行的,每个“扇区”的大小不定。 由于IAP代码位于Boot区内,所以IAP命令不允许对Boot扇区执行写/擦除操作。,片内512KB Flash,用户Flash (128/25
6、6KB),片内256KB Flash,片内128KB Flash,片内Flash系统,对于LPC2368/78来说,Boot区位于512kB Flash的顶部,因此在LPC2368/78器件中,只有504kB Flash可供用户使用。,用户Flash (504KB),片内Flash系统,概述 Boot简介 片内Flash存储系统 数据存储解决方案 在线升级解决方案,数据存储解决方案,系统概述,通过IAP,用户可以使用片内Flash作为非易失性数据存储器,存储一些设备的配置信息。这样不仅可以节约成本,而且还可以减小线路板的面积。,LPC2364,Flash,Flash,Flash,系统概述,利用
7、IAP将Flash作为数据存储器时,用户需要控制自身代码量的大小及代码定位。绝对不能够出现Flash数据区和Flash代码区重叠的现象。因为在利用IAP向片内Flash存储器写入数据时,需要对数据扇区进行擦除。如果数据区和代码区重合,就有可能会破坏系统的代码空间,造成系统死机或崩溃。,通过IAP向片内Flash的扇区7写入512个字节的数据。,注意:任何Flash都是有寿命的,如果对片内Flash的操作过于频繁,就会对其造成损坏,LPC2300的Flash擦除/写入次数为10万次。,系统概述,使用IAP将SRAM中的数据编程到Flash时,源数据区只能够使用片内局部总线上的SRAM,不能使用通
8、用USB SRAM和以太网SRAM。,片内 SRAM,如果一个数据是从偶地址开始的连续存储,那么它就是半字对齐,否则就是非半字对齐; 如果一个数据是以能被4整除的地址开始的连续存储,那么它就是字对齐,否则就是非字对齐。,小知识:存储数据的对齐方式,片内Flash编程步骤,擦除操作之前必须先选择扇区,一次可以选择多个扇区,使用IAP之前需要定义的一些常量,写入数据之前要先擦除扇区,已擦除的可不必重复擦,IAP提供数据校验手段,用户不必自己动手校验数据,编程操作之前必须先选择扇区,一次可以选择多个扇区,字对齐的SRAM数据区数据写入到256字节对齐的Flash中,一次写入256、512、1024或
9、4096字节。,片内Flash编程步骤,#defineIAP_FCCLK48000 #define IAP_ENTER_ADR0 x7FFFFFF1 uint32paramin8; uint32paramout8;,通过在使用IAP代码之前,需要定义一些常量,如系统时钟、IAP函数入口、IAP入口缓冲区和出口缓冲区等。,确定系统参数,片内Flash编程步骤,uint32 SelSector(uint8 sec1,uint8 sec2) paramin0 = IAP_SELECTOR; paramin1 = sec1; paramin2 = sec2; (*(void(*)()IAP_ENTER
10、_ADR)(paramin,paramout); return(paramout0); ,对某一个扇区执行擦除、写入等操作之前,必须先选择该扇区。但也可以一次选择多个扇区。,选择扇区(可选),片内Flash编程步骤,uint32 EraseSector(uint32 sec1,uint32 sec2) paramin0 = IAP_ERASESECTOR; paramin1 = sec1; paramin2 = sec2; paramin3 = IAP_FCCLK; (*(void(*)()IAP_ENTER_ADR)(paramin,paramout); return(paramout0);
11、 ,LPC2300片内Flash在写入数据前需要执行擦除操作。如果目标区域已经被擦除,那么就不必重复擦除,可直接写入数据。擦除操作一次可以擦除多个扇区。,擦除扇区(可选),执行完以上几步后,就可以编程Flash了。执行编程扇区的操作时,IAP函数会将RAM中的数据拷贝到Flash中。,片内Flash编程步骤,uint32 RamToFlash(uint32 dst, uint32 src, uint32 no) paramin0 = IAP_RAMTOFLASH; paramin1 = dst; paramin2 = src; paramin3 = no; paramin4 = IAP_FCC
12、LK; (*(void(*)()IAP_ENTER_ADR)(paramin,paramout); return(paramout0); ,编程扇区,IAP代码还为用户提供了一个数据校验的手段,这样用户就可以不必自己动手来校验写入Flash中的数据是否正确。,片内Flash编程步骤,uint32 Compare(uint32 dst, uint32 src, uint32 no) paramin0 = IAP_COMPARE; paramin1 = dst; paramin2 = src; paramin3 = no; (*(void(*)()IAP_ENTER_ADR)(paramin,pa
13、ramout); return(paramout0); ,校验数据(可选),向扇区7写入512个字节的数据,扇区7可以作为一个E2PROM来使用,如存储一些系统的配置信息。,函数主体,#defineDestAddr0 x00007000 int main (void) _align(4) uint8 SendData512; uint32 i; for(i = 0; i 512; i+) SendDatai = i; SelSector(7, 7); EraseSector(7,7); SelSector(7, 7); RamToFlash(DestAddr, (uint32)SendData
14、, 512); while(1); ,编程后的Flash区域,擦除后的Flash区域,概述 Boot简介 片内Flash存储系统 数据存储解决方案 在线升级解决方案,在线升级解决方案,系统概述,“在线升级”实际上是Flash数据存储的一个应用特例。系统开发完毕后,在应用过程中,如果需要增加部分功能,那么为了避免重新拆装设备,可以借助“在线升级”方式。 目前,在线升级是很多系统都必需的一个功能,对于LPC2300来说,利用IAP函数即可实现在线升级。用户程序接收新的代码,然后调用IAP函数将新的代码编程到Flash扇区中,实现在线升级。,系统通过串口接收升级代码,然后调用IAP函数实现在线升级。
15、为了实现在线升级,本系统将芯片的片内Flash重新分区:,Boot代码区:又叫固件区,存放系统的BootLoader,可完成代码升级,首地址位于0 x0000 0000;,LOW区和HIGH区:用户代码分为两个区,LOW区和HIGH区,当程序位于LOW区时,可以对HIGH区进行升级。反之,如果程序位于HIGH区,可以对LOW区进行升级。LOW区的首地址为:0 x0000 8000,HIGH区的首地址为:0 x0001 0000,每个用户代码区的容量为32kB;,程序标志区:标记当前用户程序运行的区,程序标志区的首地址为:0 x0000 4000。对于这个区间,仅仅使用了前4个字节,用来保存当前
16、用户代码区的首地址。如程序标志 0 x0000 8000,则当前程序运行在LOW区;如程序标志 = 0 x0001 0000,则当前程序运行在HIGH区;如程序标志为其它值,则当前程序运行在固件区域。,升级HIGH区代码,UART0,通过IAP对Flash编程,ARM7 处理器核,0 x0001 0000,0 x0000 8000,程序运行在LOW区,P0.6处于低电平,串口接收升级代码,修改程序标志,标识程序运行在高区,CPU运行HIGH区的用户代码,ARM7 处理器核,此处为用户编写的Boot代码,有别于由芯片厂商固化在片内的Boot代码。,复位后CPU运行用户Boot代码,软件设计,“在线升级”模板,为了实现在线升级,我们专门设计了一套新的模板。该模板具有两个编译选项:HIGH和LOW。 当需要升级HIGH区时,就使用HIGH选项进行编译,用户代码位于HIGH区; 当需要升级LOW区时,就使用LOW选项进行编译,用户代码位于LOW区。,编译选项及其位置,用户程序代码编写区,代码量不得超过16K,位于系统Boot代码区,用户不能随便修改,升级方法,使用“在线升级模板”建立工程,编译以后产生树状的文件结构。LOW和HIGH选项都会生成两个二进制文件SYSTEM和USER。,LOW选项编译结果,HIGH选项编译结果,当前程序运行在LOW区,那么只能升级HIGH区。系统复位后,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (新教材)2026人教版三年级下册数学 1.3 旋转 教学课件
- 2025 网络基础之电商网络的供应链协同网络案例课件
- 碳五碳九可行性研究报告
- 禅茶书院可行性研究报告
- 行政处罚的基本概念和特征
- 2026年及未来5年市场数据中国儿童绘本馆行业市场全景评估及投资战略咨询报告
- 2026年及未来5年市场数据中国城市生活垃圾处理外包市场供需格局及未来发展趋势报告
- 2025 高中信息技术数据与计算之数据在智能医疗药物研发数据分析中的应用课件
- 2026年养老机构从数量扩张向提质增效转型战略前瞻
- 2026年中太平洋海山富钴结壳矿区资源潜力评估
- 2026湖南张家界市桑植县招聘城市社区专职工作者20人考试参考试题及答案解析
- 2025年国家保安员资格证考试题库+答案
- 20.1 勾股定理及其应用 课件 2025-2026学年 人教版八年级数学下册
- 2026年温州永嘉县国有企业面向社会公开招聘工作人员12人考试备考试题及答案解析
- 2025年宿州职业技术学院单招职业技能考试试题及答案解析
- 工艺报警考核制度
- 2025年泰州职业技术学院单招职业倾向性考试题库带答案解析
- 2025年专升本管理学原理模拟试卷及答案
- 保密要害部门部位课件
- 山东省济南市2025-2026年高三上第一次模拟考试历史+答案
- (新教材)2026年春期人教版三年级下册数学教学计划+教学进度表
评论
0/150
提交评论