LPC1114 IAP 在线升级
IAP(InApplicationProgram),即在应用中可编程。顾名思义,就是在系统运行的过程中动
态编程,这种编程是对程序执行代码的动态修改,而且毋须借助于任何外部力量,也毋须
进行任何机械操作。这一点有别于 ISP(In System Programming),即在系统可编程。一般来
说,ISP 在进行加载程序以前,需要设置某些功能引脚,而 IAP 则不需要作硬件上的任何
动作,只要有合法的数据来源。LPC11XX 支持 ISP 和 IAP 升级程序,当采用 RS485 通信时
候的,由于 ISP 升级程序受条件限制,只能采用 IAP 升级程序。
IAP 原理以及如何调用
IAP 函数是固化在微处理器内部 flash 上的一些函数代码,最终的用户程序可以直接通过调
用这些函数来对内部 flash 进行擦除和编程操作。
对于在应用编程来说,应当通过寄存器 r0 中的字指针指向存储器(RAM)包含的命令代码和
参数来调用 IAP 程序。IAP 命令的结果返回到寄存器 r1 所指向的返回表。用户可通过传递
寄存器 r0 和 r1 中的相同指针重用命令表来得到结果。参数表应当大到足够保存所有的结
果以防结果的数目大于参数的数目。参数传递见图 2-1。参数和结果的数目根据 IAP 命令
而有所不同。参数的最大数目为 5,由“将 RAM 内容复制到 Flash”命令传递。结果的最大
数目为 2,由“扇区查空”命令返回。命令处理程序在接收到一个未定义的命令时发送状态代
码 INVALID_COMMAND。IAP 程序是 thumb 代码,位于地址 0x7FFFFFF0。
图 2-1 IAP 的参数传递
表 2-1 描述了 IAP 的命令。
表 2-1 IAP 命令汇总
IAP 命令 命令代码 描述
准备编程扇区
50
该命令必须在执行“将 RAM 内容复制到 Flash”或“擦除扇区”命令之前执行。
这两个命令的成功执行会导致相关的扇区再次被保护。该命令不能用于
评论6