FLASH數(shù)據(jù)丟失錯(cuò)誤原因:
由于FLASH寫(xiě)入的特性是先擦后寫(xiě),寫(xiě)入不會(huì)在原來(lái)位置重新寫(xiě)數(shù)據(jù),一般都是把原位置的數(shù)據(jù)標(biāo)記為無(wú)效,再在新位置寫(xiě)入數(shù)據(jù)。如果在擦除中掉電或者寫(xiě)入時(shí)掉電,有可能會(huì)出現(xiàn)失敗的情況,下次再上電讀取就會(huì)出錯(cuò);如果是在擦除的時(shí)候掉電,不能保證擦除完全,但是已經(jīng)擦除的部分,全變成0xff了。如果是寫(xiě)的時(shí)候掉電,已經(jīng)寫(xiě)入的就是正確的,電平掉到最低極限工作電壓附近時(shí)寫(xiě)入的數(shù)據(jù)就無(wú)法保證寫(xiě)入正確。
解決方法:
(1)硬件加入掉電保護(hù)機(jī)制?
硬件電路上有相應(yīng)的掉電警告中斷,而且必須有足夠的時(shí)間供軟件響應(yīng)。
1) 電源管理芯片,檢測(cè)掉電事件的發(fā)生;?
2) 儲(chǔ)能元件,在掉電發(fā)生后能滿足執(zhí)行掉電保護(hù)的操作即有足夠的時(shí)間存儲(chǔ)一些標(biāo)志位和必要的數(shù)據(jù);
一個(gè)電源檢測(cè)芯片,一個(gè)儲(chǔ)能元件(比如大點(diǎn)的電容)結(jié)合軟件判斷以及提前保存現(xiàn)場(chǎng)就能很好的實(shí)現(xiàn)掉電保護(hù)。
(2)軟件方式解決?
1)要改寫(xiě)某扇區(qū)內(nèi)容,先把該扇區(qū)內(nèi)容備份到一個(gè)特殊的扇區(qū);?
2)在某個(gè)地方寫(xiě)一個(gè)特殊的標(biāo)記;?
3)完成該扇區(qū)的改寫(xiě)操作,清除標(biāo)記;?
4)每次操作前先判斷備份區(qū)數(shù)據(jù)是否需要恢復(fù)。
這個(gè)過(guò)程“備份->置標(biāo)記->寫(xiě)->清標(biāo)記”能有效的解決FLASH突然掉電數(shù)據(jù)異常的問(wèn)題。
-
電源
+關(guān)注
關(guān)注
185文章
18840瀏覽量
263499 -
芯片
+關(guān)注
關(guān)注
463文章
54007瀏覽量
465949 -
FlaSh
+關(guān)注
關(guān)注
10文章
1748瀏覽量
155513
原文標(biāo)題:FLASH 數(shù)據(jù)丟失原因分析及解決方案
文章出處:【微信號(hào):凌科芯安加密芯片,微信公眾號(hào):凌科芯安加密芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
LabView隊(duì)列操作程序數(shù)據(jù)會(huì)丟失,請(qǐng)問(wèn)有什么好的改進(jìn)方法減少數(shù)據(jù)的丟失呢?
請(qǐng)問(wèn)F28062如何把數(shù)據(jù)寫(xiě)入FLASH使數(shù)據(jù)掉電不丟失從而代替EEPROM
Flash 數(shù)據(jù)丟失
msvcr71dll等dll丟失的解決方法
nvs_flash.h頭文件的解決方法
短波通信盲區(qū)現(xiàn)象解決方法介紹
Flash數(shù)據(jù)丟失的原因
Flash數(shù)據(jù)的內(nèi)容丟失的原因有哪些詳細(xì)說(shuō)明
工控機(jī)數(shù)據(jù)丟失原因及解決方法
"STM32下載出現(xiàn)Cannot Load Flash Device Decription! 和 Error: Flash Download faled . ""Cortex-M3*的解決方法"
STM32無(wú)法連接JLink(Flash讀寫(xiě)保護(hù))解決方法
工業(yè)路由器為何會(huì)出現(xiàn)數(shù)據(jù)包丟失?丟包的4個(gè)常見(jiàn)問(wèn)題與解決方法
FLASH數(shù)據(jù)丟失的解決方法
評(píng)論