FLASH數(shù)據(jù)丟失錯(cuò)誤原因:
由于FLASH寫入的特性是先擦后寫,寫入不會(huì)在原來(lái)位置重新寫數(shù)據(jù),一般都是把原位置的數(shù)據(jù)標(biāo)記為無(wú)效,再在新位置寫入數(shù)據(jù)。如果在擦除中掉電或者寫入時(shí)掉電,有可能會(huì)出現(xiàn)失敗的情況,下次再上電讀取就會(huì)出錯(cuò);如果是在擦除的時(shí)候掉電,不能保證擦除完全,但是已經(jīng)擦除的部分,全變成0xff了。如果是寫的時(shí)候掉電,已經(jīng)寫入的就是正確的,電平掉到最低極限工作電壓附近時(shí)寫入的數(shù)據(jù)就無(wú)法保證寫入正確。
解決方法:
(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)要改寫某扇區(qū)內(nèi)容,先把該扇區(qū)內(nèi)容備份到一個(gè)特殊的扇區(qū);?
2)在某個(gè)地方寫一個(gè)特殊的標(biāo)記;?
3)完成該扇區(qū)的改寫操作,清除標(biāo)記;?
4)每次操作前先判斷備份區(qū)數(shù)據(jù)是否需要恢復(fù)。
這個(gè)過程“備份->置標(biāo)記->寫->清標(biāo)記”能有效的解決FLASH突然掉電數(shù)據(jù)異常的問題。
-
電源
+關(guān)注
關(guān)注
185文章
18841瀏覽量
263556 -
芯片
+關(guān)注
關(guān)注
463文章
54010瀏覽量
466175 -
FlaSh
+關(guān)注
關(guān)注
10文章
1748瀏覽量
155535
原文標(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)問有什么好的改進(jìn)方法減少數(shù)據(jù)的丟失呢?
請(qǐng)問F28062如何把數(shù)據(jù)寫入FLASH使數(shù)據(jù)掉電不丟失從而代替EEPROM
Flash 數(shù)據(jù)丟失
msvcr71dll等dll丟失的解決方法
nvs_flash.h頭文件的解決方法
短波通信盲區(qū)現(xiàn)象解決方法介紹
Flash數(shù)據(jù)丟失的原因
Flash數(shù)據(jù)的內(nèi)容丟失的原因有哪些詳細(xì)說明
工控機(jī)數(shù)據(jù)丟失原因及解決方法
"STM32下載出現(xiàn)Cannot Load Flash Device Decription! 和 Error: Flash Download faled . ""Cortex-M3*的解決方法"
STM32無(wú)法連接JLink(Flash讀寫保護(hù))解決方法
工業(yè)路由器為何會(huì)出現(xiàn)數(shù)據(jù)包丟失?丟包的4個(gè)常見問題與解決方法
FLASH數(shù)據(jù)丟失的解決方法
評(píng)論