打印

GD32F407ZET6 连续擦除扇区死机

[复制链接]
953|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官网,找联系电话,打一下。
一般第二天会有技术人员联系你。

空号...

使用特权

评论回复
5
zeshoufx| | 2023-10-9 17:25 | 只看该作者
你擦除的扇区是不是代码区了,,,操作内部flash一定要避开代码区,,,否则你把正在运行的代码擦除了,,必死机

使用特权

评论回复
6
ayb_ice| | 2023-10-9 17:27 | 只看该作者
有没有把代码所在的扇区也擦了呢

使用特权

评论回复
7
wangkl11|  楼主 | 2023-10-9 17:30 | 只看该作者
ayb_ice 发表于 2023-10-9 17:27
有没有把代码所在的扇区也擦了呢

就是代码区,

使用特权

评论回复
8
wangkl11|  楼主 | 2023-10-9 17:31 | 只看该作者
zeshoufx 发表于 2023-10-9 17:25
你擦除的扇区是不是代码区了,,,操作内部flash一定要避开代码区,,,否则你把正在运行的代码擦除了,, ...

远程升级程序  就是要把代码区擦除,再拷贝

使用特权

评论回复
9
zeshoufx| | 2023-10-9 17:36 | 只看该作者
wangkl11 发表于 2023-10-9 17:31
远程升级程序  就是要把代码区擦除,再拷贝

那是不是需要做跳转,,

使用特权

评论回复
评论
wangkl11 2023-10-9 17:46 回复TA
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) { }这个是 GD207的 都没问题 移到407就出问题了 困扰了两天了 
10
wangkl11|  楼主 | 2023-10-9 17:44 | 只看该作者
zeshoufx 发表于 2023-10-9 17:36
那是不是需要做跳转,,

不需要吧   用一个狗 可不可以让不死

使用特权

评论回复
11
sagade| | 2023-10-9 19:27 | 只看该作者
擦除前解锁了吗?
CTL_SN,检查擦除的扇区地址对不对

使用特权

评论回复
12
ayb_ice| | 2023-10-10 08:55 | 只看该作者

我说的是擦除代码本身所在的扇区

使用特权

评论回复
13
wangkl11|  楼主 | 2023-10-10 09:16 | 只看该作者
sagade 发表于 2023-10-9 19:27
擦除前解锁了吗?
CTL_SN,检查擦除的扇区地址对不对

第一个扇区都擦除成功了   与解锁没关系

使用特权

评论回复
14
wangkl11|  楼主 | 2023-10-10 14:34 | 只看该作者
哎 已解决  这兆易的资料真的少得可怜

使用特权

评论回复
15
liszt99| | 2023-10-11 08:34 | 只看该作者
wangkl11 发表于 2023-10-10 14:34
哎 已解决  这兆易的资料真的少得可怜

方便说一下怎么解决的吗

使用特权

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

本版积分规则

8

主题

34

帖子

0

粉丝