打印
[AT32F413]

at32f413KBU7-4系列 升级程序问题

[复制链接]
1116|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
suoyu|  楼主 | 2022-12-23 19:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有遇到这种情况的没有:情况1: at32f413KBU7-4系列flash=128KB,远程升级flash规划,boot loader=3KB(实际使用2.2K),APP1=62KB(实际使用61K),APP2=62KB(实际使用61K),标志位=1KB(实际使用12字节).编写过程中遇到的问题是boot loader直接跳转到APP1程序运行正常,把boot loader修改直接跳转到APP2的地址,运行正常的APP1程序修改跳转接收地址到APP2,下载后bootloader可以正常跳转,APP无法正常运行,简单说就是:同一段程序在flash 0x08000C00--0x080103FF(62K)可以正常运行,在flash 0x08010400--0x0801FC00(62K)不能正常运行。   
boot loader 程序:int main(void)
{
//    u32 tem;
  SystemCoreClockUpdate();


while(1)
  {
        if((*(u32*)BOOTLOADER_FIRST_RUN_ADDR)==BOOTLOADER_FIRST_RUN)//0xFFFFFFFF//ÅжÏBOOTLOADERÊÇ·ñµÚÒ»´ÎÖ´ÐÐ
  {
                FLASH_Unlock();
                FLASH_ProgramWord(BOOTLOADER_FIRST_RUN_ADDR, 1);//дBootloader×îºóÒ»Ò³Êý¾ÝΪ0x00000001

    FLASH_ProgramWord(IAP1_UPGRADE_FLAG_ADDR, 1);//дAPP1×îºóÒ»Ò³Êý¾ÝΪ0x00000001
    FLASH_ProgramWord(IAP2_UPGRADE_FLAG_ADDR, 0);//дAPP2×îºóÒ»Ò³Êý¾ÝΪ0x00000000
                FLASH_Lock();
    if((*(vu32*)(APP1_START_ADDR+4)&0xFF000000)==0x08000000)  // ÅжÏAPP1ÆðʼµØÖ·ÊÇ·ñΪ0x08xxxxxx.
    IAP_Load_APP1(APP1_START_ADDR);                              // Ö´ÐÐAPP´úÂë
  } else{
              if(FLASH_Read_APP1_Upgrade_Flag() > FLASH_Read_APP2_Upgrade_Flag())
               {  
                if(((*(vu32*)(APP1_START_ADDR+4))&0xFF000000)==0x08000000)  // ÅжÏAPPÆðʼµØÖ·ÊÇ·ñΪ0x08xxxxxx.
                 {IAP_Load_APP1(APP1_START_ADDR);}
               }else{
                    if((*(vu32*)(APP2_START_ADDR+4) & 0xFF000000)==0x08000000)  // ÅжÏAPPÆðʼµØÖ·ÊÇ·ñΪ0x08xxxxxx.
                      {IAP_Load_APP1(APP2_START_ADDR);}      
                    }  
        }
  }
}

使用特权

评论回复
沙发
suoyu|  楼主 | 2022-12-27 10:12 | 只看该作者
继续验证程序的情况时改用下面的方法,不用APP2,直接把APP1的flash起始地址向后移动,当把APP1的起始地址移动到0x0800BC00时,程序执行开始出现异常。

使用特权

评论回复
板凳
muyichuan2012| | 2022-12-27 11:09 | 只看该作者
建议参考附件的应用指南进行配置。

AN0001_AT32_IAP_using_the_USART_ZH_V2.0.1.pdf

608.32 KB

使用特权

评论回复
地板
suoyu|  楼主 | 2023-1-6 16:19 | 只看该作者
muyichuan2012 发表于 2022-12-27 11:09
建议参考附件的应用指南进行配置。

多谢。。。

使用特权

评论回复
5
suoyu|  楼主 | 2023-1-6 16:33 | 只看该作者
问题已经找到: 413 的flash有零等待区和非零等待区  和 sram 大小可设置的功能。at32f413kbu7-4芯片的 默认sram大小是32K,flash大小是128K.在ICP上看sram的大小变成64K了(以前没有修改过这个值的,目前仍不知道什么原因造成32变64了),这样零等待区的flash变小了  ,查手册其实总flash也变小了由原来的128K变为128K-32K=96K,上述升级方案规划的是3K的boot loader  62K的app1和62K的APP2,1K的flash。程序是61K,超过了设置规划 [96K<(62K+61K)].归根结底但是用户手册没有完全读明白造成的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝