新闻中心

EEPW首页>嵌入式系统>设计应用> LPC1100处理器通过SD卡实现IAP功能

LPC1100处理器通过SD卡实现IAP功能

作者: 时间:2016-11-27 来源:网络 收藏
随着处理器的发展,IAP升级方式越来越受到欢迎。而IAP升级的方式也由很多,如:通过串口升级、GPRS远程升级、SD卡升级等等。这里详细介绍怎样使用SD卡升级应用程序的方法.

本文引用地址://m.amcfsurvey.com/article/201611/322352.htm

下面先介绍LPC1100处理器IAP的基础知识:

1. LPC1100处理器(LPC1114)Flash分配:LPC1114一共有32K Flash,共分为8个扇区,每个扇区的大小为4K,具体如下:

2.NXP的IAP命令都一样,一共有9条:

3.IAP命令是通过寄存器R0和R1进行参数传递的,R0传递参数,R1传递返回值:

IAP功能应用:

1.定义IAP程序的入口地址

代码:

#defineIAP_ENTER_ADR 0x1FFF1FF1

2.定义参数

代码:

uint32ParamIn[8];
uint32ParamOut[8];

3.定义函数类型指针

代码:

void (*IAP_Entry)(uint32 *param_tab, uint32 *result_tab) =

(void(*)())IAP_ENTER_ADR; // 定义函数指针

4.注意事项:

①按照上面函数类型调用IAP函数即可,不过要注意函数的参数。

②由于在擦写操作期间,片上Flash存储器不可访问。IAP代码不能使用或禁止中断。

③Flash编程命令使用片上RAM顶端32字节,用户程序不能使用此空间。

IAP命令应用(代码来自周工):

IAP有多个命令,这里我们只把编程常用的几个命令函数贴出来,如果网友需要其他代码可以在网络上自行搜索。

1.准备写操作扇区

代码:


uint32 SectorPrepare(uint8 sec1, uint8 sec2)
{
ParamIn[0] = IAP_Prepare;
ParamIn[1] = sec1;
ParamIn[2] = sec2;
(*IAP_Entry)(ParamIn, ParamOut);

return (ParamOut[0]);
}

2.将RAM 内容复制到Flash

代码:


uint32 RamToFlash(uint32 dst, uint32 src, uint32 no)
{
ParamIn[0] = IAP_RAMTOFLASH;
ParamIn[1] = dst;
ParamIn[2] = src;
ParamIn[3] = no;
ParamIn[4] = IAP_FCCLK;
(*IAP_Entry)(ParamIn, ParamOut);

return (ParamOut[0]);
}

3.擦除扇区

代码:


uint32 SectorErase(uint8 sec1, uint8 sec2)
{
ParamIn[0] = IAP_ERASESECTOR;
ParamIn[1] = sec1;
ParamIn[2] = sec2;
ParamIn[3] = IAP_FCCLK;
(*IAP_Entry)(ParamIn, ParamOut);

return (ParamOut[0]);
}

4.扇区查空


上一页 1 2 下一页

评论


技术专区

关闭