GD32F407ZET6 连续擦除扇区死机

[复制链接]
1373|15
 楼主| wangkl11 发表于 2023-10-9 11:16 | 显示全部楼层 |阅读模式
有没有大神遇到过,在连续擦除扇区,程序死了,找不到原因代码如下?
                        for (sector_num = 0; sector_num < 5; sector_num++)
                        {
                                ram_fmc_state = ram_fmc_sector_erase(CTL_SN(sector_num));
                                fmc_flag_clear(FMC_FLAG_END | FMC_FLAG_OPERR | FMC_FLAG_WPERR | FMC_FLAG_PGMERR | FMC_FLAG_PGSERR);
                                if(ram_fmc_state!=FMC_READY)
                                {
                                        while(1);
                                       
                                }
                        }


fmc_state_enum ram_fmc_sector_erase(uint32_t fmc_sector)
{
    fmc_state_enum fmc_state = FMC_READY;
    /*等待FMC准备好 */
    fmc_state = ram_fmc_ready_wait();

    if(FMC_READY == fmc_state) {
        /* start sector erase */
        FMC_CTL &= ~FMC_CTL_SN;
        FMC_CTL |= (FMC_CTL_SER | fmc_sector);
        FMC_CTL |= FMC_CTL_START;

        /* wait for the FMC ready */
        fmc_state = ram_fmc_ready_wait();
        FMC_CTL &= (~FMC_CTL_SER);
        FMC_CTL &= ~FMC_CTL_SN;
      
    }
    /* return the FMC state */
    return fmc_state;
}
仿真查看 擦除函数运行完就死机了,rerurn 返回值正常
 楼主| wangkl11 发表于 2023-10-9 13:32 | 显示全部楼层
就没人来回答一下么
玄德 发表于 2023-10-9 15:40 | 显示全部楼层

上GD官网,找联系电话,打一下。
一般第二天会有技术人员联系你。


 楼主| wangkl11 发表于 2023-10-9 17:11 | 显示全部楼层
玄德 发表于 2023-10-9 15:40
上GD官网,找联系电话,打一下。
一般第二天会有技术人员联系你。

空号...
zeshoufx 发表于 2023-10-9 17:25 | 显示全部楼层
你擦除的扇区是不是代码区了,,,操作内部flash一定要避开代码区,,,否则你把正在运行的代码擦除了,,必死机
ayb_ice 发表于 2023-10-9 17:27 | 显示全部楼层
有没有把代码所在的扇区也擦了呢
 楼主| wangkl11 发表于 2023-10-9 17:30 | 显示全部楼层
ayb_ice 发表于 2023-10-9 17:27
有没有把代码所在的扇区也擦了呢

就是代码区,
 楼主| wangkl11 发表于 2023-10-9 17:31 | 显示全部楼层
zeshoufx 发表于 2023-10-9 17:25
你擦除的扇区是不是代码区了,,,操作内部flash一定要避开代码区,,,否则你把正在运行的代码擦除了,, ...

远程升级程序  就是要把代码区擦除,再拷贝
zeshoufx 发表于 2023-10-9 17:36 | 显示全部楼层
wangkl11 发表于 2023-10-9 17:31
远程升级程序  就是要把代码区擦除,再拷贝

那是不是需要做跳转,,

评论

for(erase_counter = 0; (erase_counter < page_number) && (FMC_READY == ram_fmc_state); erase_counter++) { ram_fmc_state = ram_fmc_page_erase(BANK0_WRITE_START_ADDR + (FLASH0_PAGE_SIZE * erase_counter)); } if(ram_fmc_state!=FMC_READY)  发表于 2023-10-9 17:46
 楼主| wangkl11 发表于 2023-10-9 17:44 | 显示全部楼层
zeshoufx 发表于 2023-10-9 17:36
那是不是需要做跳转,,

不需要吧   用一个狗 可不可以让不死
sagade 发表于 2023-10-9 19:27 | 显示全部楼层
擦除前解锁了吗?
CTL_SN,检查擦除的扇区地址对不对
ayb_ice 发表于 2023-10-10 08:55 | 显示全部楼层

我说的是擦除代码本身所在的扇区
 楼主| wangkl11 发表于 2023-10-10 09:16 | 显示全部楼层
sagade 发表于 2023-10-9 19:27
擦除前解锁了吗?
CTL_SN,检查擦除的扇区地址对不对

第一个扇区都擦除成功了   与解锁没关系
 楼主| wangkl11 发表于 2023-10-10 14:34 | 显示全部楼层
哎 已解决  这兆易的资料真的少得可怜
liszt99 发表于 2023-10-11 08:34 | 显示全部楼层
wangkl11 发表于 2023-10-10 14:34
哎 已解决  这兆易的资料真的少得可怜

方便说一下怎么解决的吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

34

帖子

0

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