HC32F030J8TA擦写FLASH碰到的问题
本帖最后由 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擦写过程时又是正常的,直接运行就异常,这就有点摸不着头脑了{:dizzy:}
快来个大神解答下啊 Boot 和APP运行的主频是一样的吗 需要确认几点:
1)Flash相关设置是否确认无误;
2)Clock相关设置(Boot区和App区)是否确认无误;
如果可以,能否贴出代码来一起研究一下? 1. 对flash 进行Program/Erase操作的函数处于0x8000之内,可以正常执行flash操作。
2. 对flash 进行Program/Erase操作的函数高于0x8000空间,会出现hard fault中断。
此方案是因出于安全性考虑为防止**者将代码驻留到高地址空间对低地址空间进行探测,因此关闭了在0x8000以上地址空间的flash操作功能。
补救措施
1.将flash操作函数完整放入0x8000以内空间运行;
2.将flash操作函数放置于RAM处运行;
这个case,我刚刚看到,之前不知道怎么就忽略了,不好意思! liaotian001 发表于 2019-7-19 09:43
1. 对flash 进行Program/Erase操作的函数处于0x8000之内,可以正常执行flash操作。
2. 对flash 进行Program ...
感谢您的解答,确实如此。 确实,我今天也遇到了!
页:
[1]