在用MSP430F5438A芯片时,经常会碰到程序跑乱的情况,于是想查一下看flash有没有异常。
试验过程:用全新的芯片做实验,在烧写程序之前,先读一下芯片的flash,烧完程序后立即再读一遍,当程序运行异常后,再次读一遍flash,分别存在3个文件夹里。其中烧程序后立即读出时,不管是烧完后立即读,还是运行一会再读,读出来的内容都是一致的,只有出问题后,读出来的才不一致。程序里实际没有操作flash,既没有读,也没有写。
问题分析:对比烧写前读出的文件和烧完后立即读出的文件,发现头和尾都是一致的,只有程序存储区0x5c00至0x2e800区域不一致。说明烧写过程正常,没有擦写不该擦写的区域。对比故障后读出的文件,发现从0x1100开始就有很多不一致,0x1000至0x17ff应该是BSL flash区域,按理说是不能被改写的。用户程序区更是被大量的改写了,0x5c00至0x45bff区域有很多块被擦写成0xff。
请帮忙分析出现此现象的原因,谢谢!