longe1201 发表于 2021-4-29 14:12

AT32F413RCT7的串口iap升级问题

同样的程序,同样的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程序里面设置,我 ...

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

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

@muyichuan2012
页: [1]
查看完整版本: AT32F413RCT7的串口iap升级问题