搜索
bottom↓
回复: 14

G0 HAL库系列擦除Flash出错

[复制链接]

出0入0汤圆

发表于 2020-9-30 16:03:49 | 显示全部楼层 |阅读模式

//升级的时候还没接收到包就可以复位了,哪位高手帮忙 指点一下哪里有问题。半路接的前任程序
void FLASH_APP2_Erase(void)
{
        uint32_t PAGEError = 0;
        /* Unlock the Flash to enable the flash control register access *************/
  HAL_FLASH_Unlock();
  /* Erase the user Flash area
    (area defined by FLASH_USER_START_ADDR and FLASH_USER_END_ADDR) ***********/
  /* Fill EraseInit structure*/
  EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
  EraseInitStruct.Page = GetPage(FLASH_APP2_START_ADDR);//return (FLASH_APP2_START_ADDR - FLASH_BASE) / FLASH_PAGE_SIZE;;
  EraseInitStruct.NbPages     = FLASH_APP_SIZE / FLASH_PAGE_SIZE;
        /*擦除APP2的FALSH*/
        HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError);
        //HAL_IWDG_Refresh(&hiwdg);  
        FLASH_WaitForLastOperation(50000);
        /* Lock the Flash to disable the flash control register access (recommended
     to protect the FLASH memory against possible unwanted operation) *********/
  HAL_FLASH_Lock();
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入29汤圆

发表于 2020-9-30 16:08:44 | 显示全部楼层
G0系列,库和F/L系列完全不同,研究很多天了(刚刚把串口,IO搞通),还好有FAE支持,不然真搞不懂

出0入0汤圆

 楼主| 发表于 2020-9-30 16:20:37 | 显示全部楼层
sunrn123 发表于 2020-9-30 16:08
G0系列,库和F/L系列完全不同,研究很多天了(刚刚把串口,IO搞通),还好有FAE支持,不然真搞不懂 ...

搞这个IAP升级功能,一到擦除flash就复位,晕死

出110入0汤圆

发表于 2020-9-30 16:42:36 | 显示全部楼层
还没用过G0,前几天坛友 Elex 的分享可以看看

https://www.amobbs.com/thread-5740222-1-1.html

出0入442汤圆

发表于 2020-9-30 17:31:17 来自手机 | 显示全部楼层
lnso 发表于 2020-9-30 16:20
搞这个IAP升级功能,一到擦除flash就复位,晕死

你是不是开狗了?flash操作要关狗,因为时间通常很长(ms级),你狗太快了就复位了。另外,尽量在ram里面执行iap代码,因为此时flash是不可访问的。

出0入0汤圆

 楼主| 发表于 2020-9-30 18:29:10 | 显示全部楼层
wye11083 发表于 2020-9-30 17:31
你是不是开狗了?flash操作要关狗,因为时间通常很长(ms级),你狗太快了就复位了。另外,尽量在ram里面 ...

开了1S狗,我试试关狗,等操作完了再开狗。

出0入0汤圆

 楼主| 发表于 2020-9-30 18:35:04 | 显示全部楼层
wye11083 发表于 2020-9-30 17:31
你是不是开狗了?flash操作要关狗,因为时间通常很长(ms级),你狗太快了就复位了。另外,尽量在ram里面 ...

看门狗启用以后好像不能关闭吧

出0入0汤圆

 楼主| 发表于 2020-10-1 06:40:46 | 显示全部楼层
//升级的时候还没接收到包就开始复位了,哪位高手帮忙 指点一下哪里有问题。半路接的前任程序,屏蔽擦除flash的函数,就可以收到完整包,程序开了看门狗。如何软件关狗?网上有资料说ST的开了狗,软件关不了

出0入984汤圆

发表于 2020-10-8 09:46:26 | 显示全部楼层
lnso 发表于 2020-10-1 06:40
//升级的时候还没接收到包就开始复位了,哪位高手帮忙 指点一下哪里有问题。半路接的前任程序,屏蔽擦除fla ...

擦除了bootloader所在的flash块? 或者说代码正在执行的给擦掉了?

出0入0汤圆

 楼主| 发表于 2020-10-8 10:07:56 | 显示全部楼层
Himem 发表于 2020-10-8 09:46
擦除了bootloader所在的flash块? 或者说代码正在执行的给擦掉了?

单片机程序烧录了两个程序,一个是BootLoader程序,另外一个是app1,要升级的是在app2.
ERR_CODE_E UserMcuOtaEraseDataAreaCb(xt_u32 image_size)
{
       
        LOG_DEBUG("ota Prepare, erase flash, image size %d\r\n", image_size);

       
        LdsLedSetForOtaStart();
       
        FLASH_APP2_Erase();//这句屏蔽就正常接收完整的升级包,如果不屏蔽就会复位
       
       
        app_size = image_size;
        app_address = FLASH_APP2_ADDR;
       
        return XT_SUCC;
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入984汤圆

发表于 2020-10-8 10:30:54 | 显示全部楼层
本帖最后由 Himem 于 2020-10-8 10:33 编辑
lnso 发表于 2020-10-8 10:07
单片机程序烧录了两个程序,一个是BootLoader程序,另外一个是app1,要升级的是在app2.
ERR_CODE_E UserM ...


HAL_FLASH_CLEAR_FLAG先清一下错误标志

另外不要全擦
每次只擦一页,擦一页喂一次狗
看看是从一开始挂掉的还是其他问题

出0入0汤圆

 楼主| 发表于 2020-10-8 18:52:26 | 显示全部楼层
Himem 发表于 2020-10-8 10:30
HAL_FLASH_CLEAR_FLAG先清一下错误标志

另外不要全擦

嗯,板子在公司,明天我试下。堆空间和栈空间设计的大小会有关系吗?

出0入984汤圆

发表于 2020-10-8 19:41:35 | 显示全部楼层
本帖最后由 Himem 于 2020-10-8 19:56 编辑
lnso 发表于 2020-10-8 18:52
嗯,板子在公司,明天我试下。堆空间和栈空间设计的大小会有关系吗?


没有 用不到堆
栈估计也用不到32字节

我倾向于有flag错误擦除失败卡在某个校验函数

单步调试蛮好分析的

出0入0汤圆

 楼主| 发表于 2020-10-9 18:55:50 | 显示全部楼层
Himem 发表于 2020-10-8 10:30
HAL_FLASH_CLEAR_FLAG先清一下错误标志

另外不要全擦

看门狗引起复位了,所以应该是按照你的方法一次写一页,喂一次狗。一页一页如何擦除,用库函数的话?

出0入0汤圆

 楼主| 发表于 2020-10-9 18:59:10 | 显示全部楼层
Himem 发表于 2020-10-8 10:30
HAL_FLASH_CLEAR_FLAG先清一下错误标志

另外不要全擦

另外,我开了一个定时器中断,用来超时判断串口接收完整的一帧,这个定时器中断在擦除flash的需要关掉吗?如果关了,那串口又超时了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 22:07

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表