你好,
我有一款运行 MK64FN01M 的板,与 frdm_K64 的板类似。
我确实在存储CRC的最后一个字节上存储了闪存中的设置。
对于板上的一个扇区,我在阅读该部分时出现总线故障
该代码调用了从 0xE5FF8 到 RAM 的简单 memcpy,长度为 8 字节。
该代码中的该函数之前被不同的内存部分调用过。
只有在这些位置上,代码才会崩溃。
当我把这个扇区移到其他位置时,它就能正常工作了。
是否知道为什么特定内存会出现问题?
谢谢,阿迪布
你好@theadib
BR
爱丽丝
你好@theadib
你好@Alice_Yang,
也许这个问题与我使用世纪佳缘 JLink 时发现的一些奇怪行为有关。
当我在 JLink 中使用 MK64FN1M0XXX12 连接到我的 MK64FN1MOVLQ12 时:
设备 mk64fn1moxxx12
如果 SWD
速度 1000
connect
erase
loadbin imagefile.bin 0
通常 jLink 会声称设备在擦除后受到保护。
并提出了所附的对话。
我本以为在执行擦除命令后设备不受保护且不安全。
使用 JLink 完全擦除闪存并加载新映像的首选顺序是什么?
。 预先致谢
您好@Alice_Yang
很抱歉打扰您......
,我现在已经找到了根本原因,即向同一地址重复写入相同数据。
这种情况不应该发生在没有错误的代码中
但是,
,第二次写入会返回错误代码
,但随后即使读取该扇区也会导致 BUS_FAULT 陷阱。
有没有可能在一次访问导致整个程序崩溃之前检查扇区状态?
这样,我就可以再次正确擦除扇区,并将扇区置于正确的状态。
??
我已经查看了参考手册第 29.4.10.2 节中的 FSFE 描述闪存命令。
但我没有看到一条命令可以"测试" 程序存储器中的一个扇区。
我是不是漏掉了什么?
这样,我就能制作出更具弹性的应用程序,在重启后检查闪存状态。
预先致谢,
Adib
你好@theadib
谢谢。
BR
爱丽丝
你好@theadib
用上市 “擦除闪存扇区” 命令后,FRFE 会擦除所选闪存,然后验证其是否已擦除。如果擦除验证失败,则 FSTAT[MGSTAT0] 位被置位。 在擦除闪存扇区操作
完成后,CCIF 标志被置位。擦除闪存扇区命令可挂起(参见 FCNFG[ERSSUSP] 位和图 29-11)。
BR
爱丽丝