LPC1100处理器通过SD卡实现IAP功能
代码:本文引用地址://m.amcfsurvey.com/article/201611/322352.htm
uint32 BlankChk(uint8 sec1, uint8 sec2)
{
}
5.比较 <地址1> <地址2> <字节数>字节数> 地址2> 地址1>
代码:
uint32 DataCompare(uint32 dst, uint32 src, uint32 no)
{
}
有上面的几个函数后,下面就可以根据需要编写SD卡升级函数了:
1.定义用户程序地址
定义用户程序的起始地址,用户可以根据自己的实际情况设定,一般都从0x0000 0000开始存放IAP代码,之后的空间才是存放用户代码的。
代码:
#define APP_CODE_START_ADDR
2.从SD卡中读写bin文件更新升级
从SD卡中升级程序很简单。流程是:从SD卡中打开升级文件,每次读取512字节,然后写入Flash,直到编写完成。
IAP支持256/512/1024/2048/4096等多字节编程方式,只是SD卡每扇区大小一般都是512字节,所以这里使用512字节为单位进行编程。
代码:
uint8 UCSDCardProgram(uint8 *fileName, uint8 *buf)
{
uint32 addr = 0;
FATFS fs;
FIL file;
UINTbr;
FRESULT res;
uint8 UCSDCardProgram(uint8 *fileName, uint8 *buf)
{
}
3.主函数:
主函数实现按键扫描,如果有按键,进行SD卡升级,如果没有按键直接跳转到应用程序。
代码一开始判断按键,所以一般都是需要按下按键后复位系统,当然也可以适当循环扫描按键的次数。等待一定的时间。。。。。。。
代码:
int main(void)
{
}
到此IAP程序完成了,下面就是编写应用程序了。。。。。。。。。。。。。。。。。。。。。。
应用程序编写:
应用程序编写没有什么特殊的,只是需要注意几个地方的设置
1.设置编译地址:
2.编译设置
设置NO_CRP条件编译,否则程序编译会出错,此字段在启动代码中使用,如果要加密代码,此段号也需要设置。
3.生存bin文件
设置bin文件生成命令,具体的设置方法请看<
4.编写应用程序,并把bin文件存放SD卡中,运行IAP升级程序。
具体的升级过程:
1.把IAP程序下载到板子上。
2.编写并编译好应用程序,需要是的bin文件。
3.把应用程序的bin文件拷贝到SD卡中。
4.在板子上插入SD卡,并按下按键重启系统。
5.板子就会自动实现升级并跳转到应用中运行。
评论