对于大多数NXP的MCU,FLASH 在擦除状态下为全1状态,即在调试器Memory窗口中呈现为0xFF。写操作就是将1变为0。然而对于LPC55xx系列,在对FLASH执行完擦除操作后,我们在MCUXpresso IDE的调试器中却看到相应的FLASH地址区域显示全0状态。这一不同让很多LPC55的初学者感到困惑,甚至怀疑是否调试器的Memory窗口反映了FLASH的真是状态。
LPC55擦除后的状态和其他大多数MCU相反,擦除后为0,而不是1。 遗憾的是,我们不能用代码实时读到擦除后的FLASH状态。这是因为LPC55的增强型FLASH添加了ECC校验功能。擦除操作将被擦除的FLASH区域及其对应的ECC位全部置0。在这种情况下再去读这一区域时,CPU因检测到FLASH内容和对应ECC不匹配而报错(AHB read hardfault error )。MCUXpressoIDE 的LinkServer调试器能采取一些预防措施来避免此问题。所以我们在调试器Memory窗口中可以看到FLASH擦除状态 当执行写操作时, 校验位依据写入数据被重新计算并和该数据一起写进FLASH。写操作重建了正确的写入数据校验位,这样即使有1bit错误的情况下,也能够读出正确的数据。 LPC55的文档没有明显的地方标注FLASH擦除状态值。小编唯一能够找到的是在空白检测命令的描述中: “ Theselected pages are checked for the erased condition (all 0 including parity)”
希望以上介绍能对大家进一步了解LPC55xx FLASH有所帮助。
|