本帖最后由 tangweichen1234 于 2019-3-22 23:48 编辑
最近有一个项目使用HC32F030J8TA作为主控,64K的FLASH规划0x00000000 - 0x00003800 低14K作为boot区, 0x00003800 - 0x0000FC00 49K作为app区,最后1K作为data区保存用户数据。在boot区中使用flash擦写功能更新app区的代码是正常的。而在app区中使用flash擦写功能更新data区就会触发HardFault_Handler,仔细检查代码逻辑没发现什么错误,因为boot区起始地址为0可以正常使用擦写功能,然后自己尝试逐渐降低app区的起始地址,实验发现只要app区地址是低于0x00002D00擦写功能正常,高于0x00002D00就会会触发HardFault_Handler。最奇怪的是当app区的起始地址高于0x00002D00时,用IAR单步执行官方驱动库flash擦写过程时又是正常的,直接运行就异常,这就有点摸不着头脑了
|