CH32V307非零等待区操作FLASH异常

内存分配为:192K+128K
FLASH分成4块:IAP(12K)+A区应用(180K)+B区应用(180K)+配置4K,IAP启动时判断是运行A区还是B区进行跳转,A区可以对B区进行代码更新和配置修改,同样B区可以更新A区和修改配置。
当前情况:
1.IAP修改配置无异常,程序运行在A区时,更新B区和配置无异常(采用fast操作)。
2.程序运行在B区时,更新A区和配置都直接挂。

3.最开始采用fast操作直接挂,后面看手册需要采用标准编程函数,也是直接挂。

请问有什么解决办法吗?

image.png


您好,注意在非零等待区域进行FLASH操作时,若要使用快速编程方式,需要将快速编程相关的函数放在零等待区域。关于将函数放在零等待区域的方法,可参考下链接介绍。使用标准编程2字节编程在非零等待区域操作应该是没问题的

https://www.cnblogs.com/liaigu/p/17330342.html



将快速编程相关的函数放在非零等待区域这种方式不满足当前项目需求。
请问在非零等待区域进行FLASH操作时,若使用标准编程,注意要关闭全局中断。
全局中断关闭就是core_riscv文件中的__disable_irq函数吧?

代码中进行flash操作时已经采用__disable_irq函数进行中断的关闭了。image.png


您好,上面回复有些问题,已修改,使用快速编程的话,要将快速编程相关函数放在零等待区域。在非零等待区域,使用标准编程2字节编程方式应该是没问题的,你可以试一下标准编程2字节方式执行编程。


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