资源简介

关于8051系列单片机用bootloader实现IAP的方法做了详细说明,并提供了一个工程模板

资源截图

代码片段和文件信息

#include


//用户程序起始地址
#define USER_APP_ADDR 0x1000

char power_on_test(void);
char check_upgrade_request(void);
char upgrade(void);

 
void main(void)
{
//定义一个函数指针,用于跳转到用户程序
void (*boot)() = USER_APP_ADDR;

//bootloader里不能开启中断
EA = 0;

//添加系统初始化代码


if(power_on_test()){ //开机自检

upgrade();  

}else if(check_upgrade_request()){ //检查是否有升级需求

upgrade();

}


//如果不需要升级,或者升级已经完成,执行下面的代码进入用户程序
(*boot)();

//正常情况下不会运行到这里,以防万一
while(1);
}
 

char power_on_test(void)
{
//添加开机自检代码,如果自检错误,进入升级模式



return 0;
}
char check_upgrade_request(void)
{
//添加检查用户是否有升级要求的代码,例如输入命令或按下按键,如果有,则进入升级模式




return 0;

}



char upgrade(void)
{

//添加传输升级文件和升级用户程序区的代码
return 1;
}



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1158  2013-01-10 10:08  bootloader\bootloader.Opt

     文件        174  2013-01-10 10:08  bootloader\bootloader.plg

     文件       2159  2013-01-10 09:00  bootloader\bootloader.Uv2

    .......      1156  2013-01-10 09:02  bootloader\bootloader_Opt.Bak

    .......      2172  2013-01-09 23:17  bootloader\bootloader_Uv2.Bak

     文件        952  2013-01-10 09:02  bootloader\Main.c

     文件       7087  2013-01-09 17:07  bootloader\STARTUP.A51

     文件        187  2013-01-10 09:08  userapp\Main.c

     文件       6376  2005-03-22 15:22  userapp\STARTUP.A51

     文件       1158  2013-01-10 10:01  userapp\userapp.Opt

     文件        332  2013-01-10 10:01  userapp\userapp.plg

     文件       2192  2013-01-10 10:01  userapp\userapp.Uv2

    .......      1158  2013-01-10 09:33  userapp\userapp_Opt.Bak

    .......      2191  2013-01-10 09:07  userapp\userapp_Uv2.Bak

     文件      93696  2013-01-10 10:09  说明.doc

     目录          0  2013-01-10 10:08  bootloader

     目录          0  2013-01-10 10:01  userapp

----------- ---------  ---------- -----  ----

               122148                    17


评论

共有 条评论