1、原因
由于FLASH的擦除和寫入的特性,如果在擦除中掉電或者寫入時(shí)掉電,有可能會(huì)出現(xiàn)失敗的情況,下次再上電讀取就會(huì)出錯(cuò)。
擦除的時(shí)候掉電,不能保證擦除完全,但是已經(jīng)擦除的部分,肯定是0xff了。
寫的時(shí)候掉電,已經(jīng)寫入的就是正確的,電平掉到最低極限工作電壓附近時(shí),寫入的就無法保證了,地址無法保證,寫入的值也無法保證。沒有寫到的,肯定還是 0xFF。??
2、解決方式
2.1、硬件方式解決 — 掉電保護(hù)機(jī)制?
必須硬件電路上有相應(yīng)的掉電警告中斷,而且必須有足夠的時(shí)間供軟件響應(yīng)。??
掉電保存和上電恢復(fù),需要以下:?
1) 快速檢測掉電信號(hào);
2) 要有足夠的時(shí)間讓你停下來保存現(xiàn)場;
3) 上電后可靠的復(fù)位;?
這些的關(guān)鍵是掉電信號(hào)電源復(fù)位信號(hào)三個(gè)怎么配合的事;
掉電保護(hù)不是重新擦寫那么簡單,首先要有一個(gè)機(jī)制能知道發(fā)生了掉電事件,還要知道什么地方的數(shù)據(jù)是可能出錯(cuò)的,如果是新建文件還好一點(diǎn),一般就是數(shù)據(jù)作廢,如果是改寫一個(gè)文件時(shí)發(fā)生掉電事故的話,還要有恢復(fù)機(jī)制,將數(shù)據(jù)恢復(fù)成改寫以前的數(shù)據(jù)。
由于 flash 的先擦后寫的特性,不會(huì)在原來位置重新寫數(shù)據(jù),一般都是把原位置的數(shù)據(jù)標(biāo)記為無效,再在新位置寫入數(shù)據(jù),對(duì)于文件來說有一個(gè)存儲(chǔ)位置的關(guān)系,這不同于文件系統(tǒng)的邏輯地址,每個(gè)邏輯地址要有對(duì)應(yīng)的物理地址,要有一套邏輯-物理地址的轉(zhuǎn)換映射關(guān)系在里面。
flash 空間總是有限的,還要有垃圾回收的機(jī)制,系統(tǒng)要將無效數(shù)據(jù)的存儲(chǔ)空間回收。
而 nand 的擦單元是寫單元的2的n次冪(如32,64,128)倍,如果一個(gè)擦除單元內(nèi)有有效數(shù)據(jù)的話,還要將有效的數(shù)據(jù)搬移到其它地方,要對(duì)相應(yīng)的文件的地址映射進(jìn)行更新維護(hù)。
擦寫均衡的實(shí)現(xiàn)也是一件比較復(fù)雜的事情,所以我們看到的U盤大小總是小于標(biāo)定的大小,因?yàn)樗鼉?nèi)部要保留一定區(qū)間用來實(shí)現(xiàn)FTL的算法,保存FTL層的數(shù)據(jù)。??
如果是這么個(gè)要求讓我重新設(shè)計(jì)一下硬件的話會(huì)有如下幾個(gè)部分:
1) 電源管理芯片,檢測掉電事件的發(fā)生;?
2) 儲(chǔ)能元件,在掉電發(fā)生后能滿足執(zhí)行掉電保護(hù)的操作即有足夠的時(shí)間存儲(chǔ)一些標(biāo)志位和必要的數(shù)據(jù);
?
一個(gè)電源檢測芯片,一個(gè)儲(chǔ)能元件(比如大點(diǎn)的電容)結(jié)合軟件判斷以及提前保存現(xiàn)場就能很好的實(shí)現(xiàn)掉電保護(hù)了.
2.2、軟件方式解決?
1)要改寫某扇區(qū)內(nèi)容,先把該扇區(qū)內(nèi)容備份到一個(gè)特殊的扇區(qū);?
2)在某個(gè)地方寫一個(gè)特殊的標(biāo)記;?
3)完成該扇區(qū)的改寫操作,清除標(biāo)記;?
4)系統(tǒng)每次上電或復(fù)位,都去檢查下標(biāo)記,就跟windows下的“磁盤掃描程序”一樣,即使最壞情況,也可以恢復(fù)改寫之前的數(shù)據(jù)。
這個(gè)過程“備份->置標(biāo)記->寫->清標(biāo)記”的辦法,是個(gè)可行的辦法,也是目前比較通行的辦法。
示例:
如下圖所示:
使用兩個(gè)sector互為備份,首先判斷valid,如果數(shù)據(jù)都有效,比較version看誰的數(shù)據(jù)比較新,使用最新的數(shù)據(jù)。
正常的情況下:
1)初始化,sector 0和sector 1的valid值都為0xff,使用sector 0擦寫,version為0,valid為0x5a。
2)第二次擦寫,sector 0的valid為0x5a,sector 1的valid為0xff,表明sector 1為無效數(shù)據(jù),使用sector 1擦寫,vesion在上次的基礎(chǔ)上加1,valid為0x5a。
3)第三次擦寫,sector 0和sector 1的valid值都為0x5a,比較version,sector 1的version比sector 0大,所以使用sector 0擦寫,sector 1為備份數(shù)據(jù),version加1,valid為0x5a。
4)依此類推,擦寫數(shù)據(jù)的過程中,version高的為最新數(shù)據(jù),version低的為備份數(shù)據(jù)。
掉電的情況下:
1)如果在擦除sector 0的時(shí)刻掉電,前半部分?jǐn)?shù)據(jù)為0xff,后半部分?jǐn)?shù)據(jù)是舊數(shù)據(jù);重啟后比較valid都為0x5a,進(jìn)而比較version,因?yàn)樽钚聰?shù)據(jù)的version沒有寫進(jìn)去,所以sector 1的versoin較高,使用sector 1的舊數(shù)據(jù)。
2)如果在擦完sector 0的時(shí)刻掉電,所有數(shù)據(jù)都為0xff;重啟后sector 1的valid為0x5a,使用sector 1的舊數(shù)據(jù)。
3)如果在寫sector 0的時(shí)刻掉電,前半部分?jǐn)?shù)據(jù)為新數(shù)據(jù),后半部分?jǐn)?shù)據(jù)為0xff;重啟后sector 1的valid為0x5a,使用sector 1的舊數(shù)據(jù)。
相對(duì)網(wǎng)絡(luò)上搜索到的掉電備份方法(寫備份區(qū)-備份標(biāo)志-寫目標(biāo)區(qū)-清備份標(biāo)志),優(yōu)點(diǎn)是每次修改數(shù)據(jù)只需要擦寫一次,速度較快;缺點(diǎn)是存儲(chǔ)一個(gè)sector的數(shù)據(jù)需要兩個(gè)sector的空間。
注意:
這個(gè)標(biāo)記必須是單獨(dú)占用一個(gè)無用的扇區(qū)(沒有實(shí)際有用數(shù)據(jù)的扇區(qū)),保證對(duì)標(biāo)記的操作不會(huì)影響到實(shí)際數(shù)據(jù)。
?
二是這只能保證數(shù)據(jù)能恢復(fù)到之前的狀態(tài),不能確保數(shù)據(jù)結(jié)構(gòu)的完整性。
譬如你有一個(gè)數(shù)據(jù)結(jié)構(gòu)有16字節(jié)(它們之間是有邏輯關(guān)系的),跨兩個(gè)扇區(qū)保存,現(xiàn)在要全面更新這16個(gè)字節(jié)的數(shù)據(jù),如果發(fā)生某個(gè)扇區(qū)沒有成功更新(即恢復(fù)到之前的數(shù)據(jù)),就會(huì)發(fā)生新舊數(shù)據(jù)同時(shí)存在的情況,程序利用這些數(shù)據(jù)來操作,就有可能發(fā)生錯(cuò)誤。
所以,還需進(jìn)一步的機(jī)制來保證“整體數(shù)據(jù)結(jié)構(gòu)”的完整性,譬如某個(gè)文件的一部分?jǐn)?shù)據(jù)壞掉了,那么就把整個(gè)文件無效掉。
refer:
https://www.csdn.net/gather_2d/OtDaAg2sNjI0LWJsb2cO0O0O.html
https://blog.csdn.net/weixin_38664664/article/details/78167655
上一篇:STM32 Flash 均衡保存算法
下一篇:STM32 分散加載文件 .sct 解析
推薦閱讀
史海拾趣
High Tech Chips Inc成立之初,便專注于研發(fā)高性能的AI芯片。在公司創(chuàng)始人李博士的帶領(lǐng)下,團(tuán)隊(duì)突破了傳統(tǒng)芯片設(shè)計(jì)的瓶頸,開發(fā)出了一款具有超低功耗和高效能比的AI加速器芯片。這款芯片迅速獲得了市場的認(rèn)可,被廣泛應(yīng)用于智能手機(jī)、智能家居和自動(dòng)駕駛等領(lǐng)域。隨著技術(shù)的不斷迭代和產(chǎn)品的持續(xù)優(yōu)化,High Tech Chips Inc逐漸在AI芯片市場占據(jù)了一席之地,并成為了行業(yè)內(nèi)的技術(shù)領(lǐng)先者。
High Tech Chips Inc成立之初,便專注于研發(fā)高性能的AI芯片。在公司創(chuàng)始人李博士的帶領(lǐng)下,團(tuán)隊(duì)突破了傳統(tǒng)芯片設(shè)計(jì)的瓶頸,開發(fā)出了一款具有超低功耗和高效能比的AI加速器芯片。這款芯片迅速獲得了市場的認(rèn)可,被廣泛應(yīng)用于智能手機(jī)、智能家居和自動(dòng)駕駛等領(lǐng)域。隨著技術(shù)的不斷迭代和產(chǎn)品的持續(xù)優(yōu)化,High Tech Chips Inc逐漸在AI芯片市場占據(jù)了一席之地,并成為了行業(yè)內(nèi)的技術(shù)領(lǐng)先者。
面對(duì)日益增長的市場需求,CIRCUITCO公司意識(shí)到必須提升產(chǎn)能以滿足客戶需求。于是,公司投入巨資對(duì)生產(chǎn)線進(jìn)行升級(jí)改造,引進(jìn)先進(jìn)的生產(chǎn)設(shè)備和技術(shù)。經(jīng)過一系列的努力,公司的生產(chǎn)效率大幅提升,產(chǎn)品質(zhì)量也得到了進(jìn)一步保障。這一舉措不僅提高了公司的盈利能力,也為公司在未來的市場競爭中奠定了堅(jiān)實(shí)基礎(chǔ)。
隨著云計(jì)算技術(shù)的興起,F(xiàn)ujitsu America緊跟時(shí)代潮流,積極推動(dòng)云計(jì)算服務(wù)的全球化布局。公司憑借其強(qiáng)大的技術(shù)實(shí)力和豐富的行業(yè)經(jīng)驗(yàn),為北美乃至全球的企業(yè)客戶提供了一站式的云計(jì)算解決方案和服務(wù)。Fujitsu America的云計(jì)算服務(wù)不僅涵蓋了基礎(chǔ)設(shè)施即服務(wù)(IaaS)、平臺(tái)即服務(wù)(PaaS)和軟件即服務(wù)(SaaS)等多個(gè)層面,還注重與客戶的深度合作,根據(jù)客戶的實(shí)際需求提供定制化的解決方案,幫助客戶實(shí)現(xiàn)數(shù)字化轉(zhuǎn)型和業(yè)務(wù)升級(jí)。
Carroll & Meynell Transformers Ltd公司注重企業(yè)文化的建設(shè)和團(tuán)隊(duì)精神的培養(yǎng)。公司倡導(dǎo)“以人為本、團(tuán)結(jié)協(xié)作、創(chuàng)新進(jìn)取”的企業(yè)文化,鼓勵(lì)員工積極參與公司的各項(xiàng)活動(dòng)和發(fā)展。同時(shí),公司還加強(qiáng)了對(duì)員工的培訓(xùn)和教育,提升員工的專業(yè)技能和綜合素質(zhì)。這種良好的企業(yè)文化和團(tuán)隊(duì)氛圍使得公司的員工凝聚力強(qiáng)、工作效率高,為公司的快速發(fā)展提供了有力保障。
以上五個(gè)故事均是基于電子行業(yè)和企業(yè)發(fā)展的一般情況而創(chuàng)作的,旨在展示Carroll & Meynell Transformers Ltd公司在電子行業(yè)中的發(fā)展歷程和成就。這些故事并非基于實(shí)際事件,因此可能與公司的實(shí)際情況存在出入。如需了解更多關(guān)于該公司的真實(shí)故事和發(fā)展歷程,建議查閱相關(guān)資料或訪問公司官網(wǎng)。
Carroll & Meynell Transformers Ltd公司注重企業(yè)文化的建設(shè)和團(tuán)隊(duì)精神的培養(yǎng)。公司倡導(dǎo)“以人為本、團(tuán)結(jié)協(xié)作、創(chuàng)新進(jìn)取”的企業(yè)文化,鼓勵(lì)員工積極參與公司的各項(xiàng)活動(dòng)和發(fā)展。同時(shí),公司還加強(qiáng)了對(duì)員工的培訓(xùn)和教育,提升員工的專業(yè)技能和綜合素質(zhì)。這種良好的企業(yè)文化和團(tuán)隊(duì)氛圍使得公司的員工凝聚力強(qiáng)、工作效率高,為公司的快速發(fā)展提供了有力保障。
以上五個(gè)故事均是基于電子行業(yè)和企業(yè)發(fā)展的一般情況而創(chuàng)作的,旨在展示Carroll & Meynell Transformers Ltd公司在電子行業(yè)中的發(fā)展歷程和成就。這些故事并非基于實(shí)際事件,因此可能與公司的實(shí)際情況存在出入。如需了解更多關(guān)于該公司的真實(shí)故事和發(fā)展歷程,建議查閱相關(guān)資料或訪問公司官網(wǎng)。
自己想用51單片機(jī)做一個(gè)玩玩,現(xiàn)在電機(jī)的型號(hào)還沒有選定,希望大俠們能給個(gè)建議,電路越簡單越好,… 查看全部問答∨ |
|
現(xiàn)有項(xiàng)目 個(gè)人 團(tuán)隊(duì)皆可合作 最好在廣州或者深圳 有意郵件yqb_box@163.com 或者QQ:437395559… 查看全部問答∨ |
|
msp430FG4691與CC2500無線發(fā)送程序中自動(dòng)復(fù)位問題 我是個(gè)初學(xué)者,有個(gè)問題困擾好多天,希望尋求各位的幫助。 程序測試收發(fā)數(shù)據(jù):發(fā)送端發(fā)送一個(gè)每個(gè)幾秒鐘變化的變量,在接收端的lcd上顯示出來。程序的開頭已關(guān)閉了看門狗,待發(fā)送的變量初值為0,發(fā)送變量的代碼是在while(1)中執(zhí)行,第一次執(zhí)行發(fā) ...… 查看全部問答∨ |
|
大學(xué)里verilog課程設(shè)計(jì)的一個(gè)頻率計(jì)報(bào)告(包含源代碼) 大學(xué)verilog課程做的一個(gè)頻率計(jì)的設(shè)計(jì)報(bào)告。設(shè)計(jì)思路以及各個(gè)模塊的程序代碼,寫的比較全,完全原創(chuàng),名字學(xué)號(hào)學(xué)校老師什么的刪掉了,所以第一頁是空白沒有排版。 用的verilog語言,測頻范圍為1Hz~100MHz,數(shù)碼管顯示,采用的生成 ...… 查看全部問答∨ |
購買基于單片機(jī)電動(dòng)車蹺蹺板系統(tǒng) 內(nèi)容:設(shè)計(jì)并制作一個(gè)電動(dòng)車蹺蹺板,在蹺蹺板起始端A一側(cè)裝有可移動(dòng)的配重。配重的位置可以在從始端開始的200mm~600mm范圍內(nèi)調(diào)整,調(diào)整步長不大于50mm;配重可拆卸。電動(dòng)車從起始端A出發(fā),可以自動(dòng)在蹺蹺板上行駛。要求:在沒有配重的情況下電動(dòng)車從 ...… 查看全部問答∨ |
請(qǐng)教一下msp-exp430f5529lp這塊板子怎么燒錄程序,還有CCS的.ccxml應(yīng)該怎么選擇 剛接觸msp430單片機(jī),以前玩51都是用isp下載的,沒有用過仿真機(jī),現(xiàn)在對(duì)msp430的程序燒錄一直沒搞清楚。 我用的是msp-exp430f5529lp這塊板,設(shè)備管理器上端口有UART1跟Debug Interface。CCS上工程的.ccxml文件選的是USB1-->msp430f5529,但是我D ...… 查看全部問答∨ |
本帖最后由 zhaojun_xf 于 2016-3-30 10:02 編輯 段式液晶由于其功耗低、價(jià)格便宜在很多家電中得到廣泛的應(yīng)用,其驅(qū)動(dòng)其實(shí)并不復(fù)雜,大多是情況下都是用HT1621B進(jìn)行驅(qū)動(dòng)。 HT1621是128 點(diǎn)內(nèi)存映象和多功能的LCD驅(qū)動(dòng) ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機(jī)自啟動(dòng)
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測試
- 高通攜手中國“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動(dòng)艙駕創(chuàng)新升級(jí)
- 工業(yè)市場正在快速回暖,德州儀器如何重塑電力電子市場?
- 特斯拉:美國交付的Model Y/3電池包已實(shí)現(xiàn)100%美國生產(chǎn)
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產(chǎn)品
- 強(qiáng)化中國市場戰(zhàn)略布局,德州儀器正靈活應(yīng)對(duì)全球關(guān)稅挑戰(zhàn)
- Molex莫仕通過本地合作和創(chuàng)新加強(qiáng)支持中國汽車行業(yè)
- 貿(mào)澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數(shù)字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實(shí)現(xiàn)車載充電器小型化!
- 用上車規(guī)級(jí)UFS 4.0,讓出行變得高效且可靠
- 車載測試技術(shù)解析:聚焦高帶寬、多通道同步采集與協(xié)議分析
- 【看電源研討會(huì),瓜分3000元紅包】 如何正確完成模塊化DC-DC系統(tǒng)設(shè)計(jì)
- 五一活動(dòng)上線!動(dòng)動(dòng)手,一起來場舊物\"勞動(dòng)\"大改造吧
- 【把你我的經(jīng)驗(yàn)串一串,共享豐收】EEWORLD優(yōu)秀主題/回復(fù)第17期活動(dòng)開始拉
- 是德科技直播 | 小探頭,大學(xué)問,別讓探頭拖累你的測試結(jié)果!
- 開學(xué)季!EEworld下載中心 Cortex主題資源上傳
- 免費(fèi)嘗鮮:熱氣體式加速度傳感器來啦,拍攝沖擊對(duì)比實(shí)驗(yàn)有好禮
- 從終端到架構(gòu),TE Connectivity(TE)助你連接5G高速未來 看視頻答題贏好禮!
- MPS有獎(jiǎng)分享|電感應(yīng)用中,哪個(gè)問題最令你頭大?
- 紅外戰(zhàn)高溫,下載預(yù)測性維護(hù)手冊(cè),預(yù)約熱像儀、測溫儀有好禮!
- 韋爾股份一季度凈利潤4.45億元,同比增800%
- 預(yù)計(jì)2021年8月建成竣工驗(yàn)收,東莞福凱半導(dǎo)體項(xiàng)目動(dòng)工
- 中微半導(dǎo)體系第三人涉及威科儀器專利行政糾紛案
- 南方電網(wǎng)供電區(qū)域用電恢復(fù)至去年同期水平
- 國網(wǎng)重慶電力編制豐水期電力需求響應(yīng)方案
- 新玩意:澳大利亞大學(xué)安裝7MW“水電池”
- 下一代汽車上將出現(xiàn)的技術(shù):15大技術(shù)盤點(diǎn) (下篇)
- UCSD:鋰金屬電池失效的主要原因在于非活性鋰
- 諾博首創(chuàng)“iNest”智能座椅技術(shù),將于2019法蘭克福車展亮相
- 中國一汽應(yīng)用Excelfore eSync平臺(tái)進(jìn)行汽車無線更新