[AT32F413] AT32F413RCT7的串口iap升级问题

[复制链接]
1765|10
 楼主| longe1201 发表于 2021-4-29 14:12 | 显示全部楼层 |阅读模式
同样的程序,同样的mcu型号。有一片一升级就死,必须flash全部擦除之后,重新烧录才可以正常用,但还是不能iap升级。  其他的又都正常, 说明程序应该没有问题。   有问题的那一片mcu是flash坏了吗?
muyichuan2012 发表于 2021-4-29 14:22 来自手机 | 显示全部楼层
可以debug一下,看程序死在哪里吗?
muyichuan2012 发表于 2021-4-29 14:23 来自手机 | 显示全部楼层
看是不是有可能这款芯片的flash 某个sector erase时间超过了典型值。
 楼主| longe1201 发表于 2021-4-29 15:47 | 显示全部楼层
muyichuan2012 发表于 2021-4-29 14:23
看是不是有可能这款芯片的flash 某个sector erase时间超过了典型值。

都是用的库函数, 需要改哪里可以避免这种可能?
 楼主| longe1201 发表于 2021-4-29 15:52 | 显示全部楼层
muyichuan2012 发表于 2021-4-29 14:23
看是不是有可能这款芯片的flash 某个sector erase时间超过了典型值。

我是在app1段,通过串口传输,将升级的bin文件写到flash的app2段。 写完后,复位进入到iap,再将app1段擦除,复制app2段到app1段。   
20062516 发表于 2021-4-30 10:20 | 显示全部楼层
413RC默认ram是32K,需要设置一下才能用到64K,你的程序是不是用的超过32K了啊。可以在IAP程序里面设置,我就是这样做的。
void RunApp(void)
{
       
        unsigned int lTemp;
        lTemp = *(unsigned int *)(0x1FFFF810);
        if((lTemp & 0x00000003) == 0x03)
        {
                MCU_Init();
                FLASH_Unlock();
                FLASH_EraseOptionBytes();
                FLASH_ProgramOptionByteData(0x1FFFF810,SRAM_64K);
                FLASH_Lock();
        }
        lJumpAddress = *(vu32*) (APPLICATIONADDRESS + 4);
        Jump_To_Application = (pFunction) lJumpAddress;
        Jump_To_Application();
}
 楼主| longe1201 发表于 2021-4-30 11:08 | 显示全部楼层
20062516 发表于 2021-4-30 10:20
413RC默认ram是32K,需要设置一下才能用到64K,你的程序是不是用的超过32K了啊。可以在IAP程序里面设置,我 ...

如果是这个问题,不应该其他没问题,独独这一片不行吧。

评论

@20062516 :同样的程序和同样的字节文件,应该没有设置问题。 焊接的话,但是重新擦除烧录后,功能又全部正常。  发表于 2021-4-30 11:17
会不会别的设置过。或者焊接问题呢  发表于 2021-4-30 11:12
 楼主| longe1201 发表于 2021-4-30 11:14 | 显示全部楼层
20062516 发表于 2021-4-30 10:20
413RC默认ram是32K,需要设置一下才能用到64K,你的程序是不是用的超过32K了啊。可以在IAP程序里面设置,我 ...

这个问题最大的麻烦之处就是,出货之前必须试一下iap升级, 不然有问题的mcu出到客户手上,只要一升级,产品就废了。
 楼主| longe1201 发表于 2021-4-30 11:39 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部