CH579M操作FLASH异常被锁住

前提:

1.芯片型号CH579M

2.bin文件约110K。

3.芯片分为IAP、A、B三个区,A和B存放当前运行程序和升级程序,IAP负责判断A还是B为当前运行程序并启动。

4.工作环境40~60摄氏度。

更新FLAHS操作步骤:

1.请求当前运行区域,当前运行在A区则发送B区升级文件,反之同理。

2.发送升级区文件,以每包256字节写入,每512字节擦除块一次,进行程序更新。

3.发送完成后进行读取整个flash的文件进行md5校验,校验成功则重启,让IAP运行新升级包。


发现问题:

      预计有1000左右CH579M芯片应用量,无规律的进行程序升级和更新,总体平均不超过3次,每片最高不超过10次,断断续续发现有4片FLASH芯片出现坏块无法写入。

  1. 通过程序中使用FlashBlockErase和FlashWriteBuf块进行更新,然后读数据进行校验时,校验异常。

  2. 通过jlink进行烧写,烧写正常,校验异常。

  3. 通过WCHISPTool串口进行烧写,烧写正常,校验异常。

  4. 还有一点奇怪的是至少有两片芯片(其余芯片之前没有太留意),异常块地址为0xF700,不知道有没有什么提示作用。


但是机缘巧合的是,以上都失败以后,通过WCHISPTool开启两线仿真后,jlink一下烧写正常,然后其余flash操作又都正常了。感觉开启两线仿真把某些标志位清除了,请问能否告诉一下开启两线仿真做了什么设置,以便让程序在操作flash出现异常后能自己清除标志位。期待技术人员的回复,谢谢。若代码不便公开,可否发送到个人信息保护,已隐藏邮箱。

以下为程序更新flash的操作代码、jlink烧写报错代码、WCHISPTool串口烧写报错截图

image.png

8c831e7f8fa1ed6b4224e56995673d5.png607b970f59c866fc675f973d88c4767.png



已邮件联系。


只有登录才能回复,可以选择微信账号登录