《IAP使用方法》PPT课件.ppt
《《IAP使用方法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《IAP使用方法》PPT课件.ppt(44页珍藏版)》请在三一办公上搜索。
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处。不过,芯片上电以后,会首先对Boot区执行
3、一次重映射,映射到片内存储器空间的最高处,即接近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代码,位于地址0 x7FFF F
4、FF0。在ARM系统中实现状态转换的指令是“BX Addr”,目标地址Addr的最低位(bit0)仅来确定最终状态,实际的“目的地址=Addr&0 xFFFF FFFE”。在调用IAP函数时,不仅要实现跳转而且还要完成状态转换。,0 x7FFF FFF0,ARM代码,Thumb代码,0 x7FFF FFF1&0 x7FFF FFFE,BX 0 x7FFF FFF1,IAP程序入口,Bit0=1使处理器切换到Thumb状态,ARM状态字对齐,Thumb状态半字对齐,注意:此为示意代码,实际编程中请用LDR R0,=0 x7FFFFFF1BX R0代码替代。,在应用编程(IAP),在调用IAP函数
5、时,寄存器R0中的字指针指向存储器(RAM)中包含的命令代码和参数,它作为函数的入口参数,函数执行的返回值保存在寄存器R1中的字指针指向存储器(RAM)中,包含状态代码和结果。,参数表最大数目为5,结果表最大数目为2,#defineIAP_LOCATION0 x7FFFFFF1typedefvoid(*IAP)(unsigned int,unsigned int);IAP iap_entry;unsigned long command5;unsigned long result2;iap_entry=(IAP)IAP_LOCATION;iap_entry(command,result);,在应
6、用编程(IAP),执行跳转指令时,如果“目的地址”的bit0=1,表示处理器需要进行状态切换,由ARM状态切换到Thumb状态,Thumb代码是“半字”对齐格式,即地址&0 xFFFF FFFE。因此,虽然此处跳转目的地址=0 x7FFFFFF1,实际上跳转到地址0 x7FFFFFF0,同时进行切换到Thumb状态。,在应用编程(IAP),由于IAP是Thumb代码,因此,需要在ADS编译选项中,选中ARM/Thumb Interworking选型,这样ARM和Thumb指令就可以混合编译。,在应用编程(IAP),IAP程序会使用片内RAM空间的顶部32个字节,因此,在支持IAP的场合,用户程
7、序应该避免使用这部分空间。,IAP代码使用,IAP代码使用,小知识:当前程序状态寄存器,ARM内核包含1个当前程序状态寄存器(CPSR)。CPSR反映当前处理器的状态,其包含:4个条件代码标志(负标志N、零标志Z、进位标志C和溢出标志V);2个中断禁止位(IRQ禁止与FIQ禁止);5个对当前处理器模式进行编码的位(M4:0);1个用于指示当前执行指令的位(ARM指令还是Thumb指令)。,程序状态寄存器的格式,条件代码标志,保留,控制位,溢出标志,进位或借位扩展,零,负或小于,IRQ禁止,FIQ禁止,状态位,模式位,N,Z,C,V,I,T,F,条件代码标志,各标志位的含义如下:负标志N:运算结
8、果的第31位值,记录标志设置操作的结果;零标志Z:如果标志设置的操作为0,则置位;进位标志C:记录无符号加法溢出,减法无借位,循环移位;溢出标志V:记录标志设置操作的有符号溢出。,警告:绝对不要强制改变CPSR寄存器中的控制位T。如果这样做,处理器将进入一个无法预测的状态。,控制位,1、中断禁止控制位I和F;,2、处理器状态位T;,3、处理器模式位M0M4。,注意:不是所有模式位的组合都定义了有效的处理器模式,如果将非法值写入M4:0中,处理器将进入一个无法恢复的模式。,保留位,CPSR中的保留位被保留将来使用。当改变CPSR标志和控制位时,请确认没有改变这些保留位。另外,请确保您的程序不依赖
9、于包含特定值的保留位,因为将来的处理器可能会将这些位设置为1或者0。,在应用编程(IAP),用户可以在启动代码Startup.s文件中的InitStack函数内调整各个模式的堆栈空间位置。,InitStack;设置系统模式堆栈MSRCPSR_c,#0 xdfLDRSP,=StackUsr 32MOVPC,R0,IAP的命令表,在应用编程(IAP),IAP各命令返回代码及意义表,概述Boot简介片内Flash存储系统数据存储解决方案在线升级解决方案,Boot Block 不占用片内Flash,在利用IAP代码来操作片内Flash时,必须熟悉片内Flash的扇区分布。片内Flash的操作是以“扇区
10、”为单位进行的,每个“扇区”的大小不定。由于IAP代码位于Boot区内,所以IAP命令不允许对Boot扇区执行写/擦除操作。,片内512KB Flash,用户Flash(128/256KB),片内256KB Flash,片内128KB Flash,片内Flash系统,对于LPC2368/78来说,Boot区位于512kB Flash的顶部,因此在LPC2368/78器件中,只有504kB Flash可供用户使用。,用户Flash(504KB),片内Flash系统,概述Boot简介片内Flash存储系统数据存储解决方案在线升级解决方案,数据存储解决方案,系统概述,通过IAP,用户可以使用片内Fl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IAP使用方法 IAP 使用方法 PPT 课件

链接地址:https://www.31ppt.com/p-5576977.html