对于在应用编程( IAP) 来说,应当通过寄存器 r0 中的字指针指向包含命令代码和参数的存储器(RAM)来调用 IAP 程序。 IAP 命令的结果返回到寄存器 r1 所指向的结果表( resulttable)。用户可通过传递寄存器 r0 和 r1 中的相同指针来重新使用命令表以获取结果。参数表应当大到足够存放所有的结果以防结果的数目大于参数的数目。参数传递的过程如下图所示。
参数和结果的数目根据 IAP 命令而有所不同。参数的最大数目为 5, 被传递给“将RAM 内容复制到 Flash”命令。结果的最大数目为 2,由“扇区查空”命令返回。命令处理程序在接收到一个未定义的命令时发送状态代码 INVALID_COMMAND。 IAP 程序是 thumb代码,位于地址 0x7FFF FFF0 处。
IAP 功能可用下面的 C 代码来调用。定义 IAP 程序的入口地址。由于 IAP 地址的第 0 位是 1,因此,当程序计数器转移到该地址时会引起 Thumb 指令集的变化。下面附上IAP函数代码:
/**************************************************
名称: 宏定义(Flash操作)
**************************************************/
#define IAP_LOCATION 0x7FFFFFF1 //定义IAP程序的入口地址
#define IapGetAddr(addr) (volatile uint16 *)(0x80000000|(addr
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』