930电子网

 找回密码
 立即注册
艾克姆科技推出最新产品STC32G12K128开发板
查看: 6824|回复: 1

24LE1 用于空中固件升级时,固件的升级的驻留程序是如何放在保护区的?

[复制链接]

5

主题

14

帖子

95

积分

注册会员

Rank: 2

积分
95
发表于 2018-10-12 08:37:13 | 显示全部楼层 |阅读模式
void main(void)
{
    uint16_t i;

    //
    // copy bootloader functions from FLASH to RAM:
    uint8_t code *psrc = (uint8_t code*)SROM_MC_SRC(CODE_BOOTLOADER);
    uint8_t xdata *pdest = (uint8_t xdata*)SROM_MC_TRG(CODE_BOOTLOADER);
    for(i=0;i<SROM_MC_LEN(CODE_BOOTLOADER);i++)
    {
        *pdest++ = *psrc++;
    }
    //
    // Copy bootloader constants from FLASH to RAM:
    psrc = (uint8_t code*)SROM_MC_SRC(CONST_BOOTLOADER);
    pdest = (uint8_t xdata*)SROM_MC_TRG(CONST_BOOTLOADER);
    for(i=0;i<SROM_MC_LEN(CONST_BOOTLOADER);i++)
    {
        *pdest++ = *psrc++;
    }
    bootloader(); // Will never return
}



将引导加载程序代码复制到XDATA RAM并启动bootlader命令解析器 这段代码不是懂运用到空中固件升级中,
回复

使用道具 举报

52

主题

339

帖子

6487

积分

版主

Rank: 7Rank: 7Rank: 7

积分
6487
发表于 2018-10-12 09:21:32 | 显示全部楼层
这个是U1的,E1的无需这么做,可以参考以下的流程。
1:设置Flash保护区,bootlader地址从0开始,应用程序APP从保护区开始,程序中根据实际情况设置STP的值,让程序从0开始执行或者是从保护区开始运行。
2:升级时在bootlader完成(设置STP可以从地址0也就是bootlader开始运行),bootlader接收升级固件并写入到保护区的Flash空间。
3:成功接收完升级固件并写入到Flash后(保护区),设置STP,然后复位,即可从保护区开始运行程序,而不会运行bootlader。


关于保护区和STP的设置,参见数据手册的memory章节。
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|官方淘宝店|930电子网 ( 皖ICP备16000695号-2 )

GMT+8, 2024-4-19 12:07 , Processed in 0.064615 second(s), 23 queries .

快速回复 返回顶部 返回列表