Flash數據丟失,說(shuō)好的數據去哪了?
芯片貼板后跑不起來(lái)?Flash里面的數據在使用過(guò)程中莫名改變或不翼而飛?程序丟失可能無(wú)法正常運行,從而造成整個(gè)系統崩潰,下面我們來(lái)看看是什么原因讓數據異常變化。
本文引用地址:http://dyxdggzs.com/article/201706/346832.htm1、用戶(hù)代碼對Flash的誤操作不當引起程序丟失或被錯誤改寫(xiě)
說(shuō)好的數據,哪里去了?
例如,在有對Flash寫(xiě)入或擦除操作的代碼中,如果用戶(hù)誤調用了寫(xiě)入或擦除函數或者由于程序跑飛而恰好執行了Flash擦除或寫(xiě)入函數,這自然會(huì )導致數據丟失或改變。針對以上情況,可以在程序中設置多個(gè)允許操作的變量,當執行寫(xiě)入或擦除操作時(shí),對這些變量進(jìn)行判斷,只有條件全部滿(mǎn)足時(shí),才執行相應的操作。在一些不需要進(jìn)行擦除或寫(xiě)入操作的系統中,對存儲區進(jìn)行寫(xiě)保護或擦除保護設置,能有效的防止數據被意外修改。做到了寫(xiě)入或擦除的可控性,基本可以避免此種情況發(fā)生。
圖1 Flash保護
2、電源失效
圖2 電源噪聲嚴重
電源電壓的異??赡軙?huì )導致系統單片機系統工作異常的現象,如輸出電壓小于單片機系統工作所需的最小電壓,輸出電壓不干凈,噪音嚴重等,這些很容易引起單片機內部電路的邏輯紊亂,Flash的讀寫(xiě)信號處于不穩定狀態(tài)??赡墚a(chǎn)生滿(mǎn)足Flash的寫(xiě)操作,從而給系統帶來(lái)嚴重的損害。針對以上情況,可以在系統中加入電源監控芯片或使能MCU本身的電源監控電路,在電源異常的情況下禁止對Flash區域操作。
3、系統時(shí)鐘不穩定
無(wú)論對于內部Flash還是外部Flash,系統時(shí)鐘的不穩定,都將導致MCU得不到可靠的工作時(shí)序信號,從而在讀寫(xiě)Flash時(shí)產(chǎn)生不可預料的后果。
4、環(huán)境干擾
環(huán)境干擾的可能原因很多,如生產(chǎn)過(guò)程中的高溫焊接、靜電、使用環(huán)境的溫濕度,強磁場(chǎng)等,都可能影響到Flash或整個(gè)系統的穩定。環(huán)境干擾的因素很多,在此不展開(kāi)討論。
評論