本帖最后由 小恩GG 于 2020-5-11 09:20 编辑
Kv31的pflash例程报错解决 跑kv31的pflash例程时候,发现程序卡住报错了。 我们发现错误出现在擦除操作之后,所以我们去查一下到底出了什么问题。 单步调试发现result返回值为104 正常应该是返回0的,那么查一下是谁返回的这个。单步调试之后发现是这里。通过这个变量名字,大概知道可能写了受保护的区域。查一下关于保护flash的寄存器值。 其中FPROT值都是0xff,按照文档描述,如果FPROT位为1说明是没有保护的。再FTFA的XACCH寄存器中发现有个数值是0x7f,而如果这个寄存器的位为1说明是被设置成只执行的。
而根据设置的位,我们可以判断受控制的段是最后的8kb(512/64),也就是XACHH0[XA63] 所以说(512-8)*1024=0x7e000,那么0x7e000到最后地址,这段flash被保护了。我们例程写入的地址是0x7f800,刚好在这个范围,所以最终报错了。如果改成不在范围即可。比如0xa000.
|