熱度 9
上一篇文章介紹了第一種NVM區(qū)備份機(jī)制,但寫(xiě)入數(shù)據(jù)長(zhǎng)度受限于扇區(qū)大小,本文介紹第二種NVM區(qū)數(shù)據(jù)備份機(jī)制。此方法會(huì)先將NVM區(qū)劃分為A、B兩個(gè)等大小區(qū)域,將A區(qū)作為正式數(shù)據(jù)區(qū),B區(qū)作為備份區(qū),每個(gè)區(qū)域的最后一字節(jié)為數(shù)據(jù)有效標(biāo)志位FLAG,1表示該區(qū)數(shù)據(jù)有效,0表示該區(qū)數(shù)據(jù)無(wú)效。更新數(shù)據(jù)過(guò)程中若出現(xiàn)掉電,重新上電后先根據(jù)A、B兩區(qū)FLAG判斷哪個(gè)區(qū)域內(nèi)數(shù)據(jù)有效,進(jìn)而繼續(xù)完成更新操作。本例中NVM區(qū)大小是32KB,A區(qū)大小劃分為16KB,B區(qū)大小劃分為16KB。舉例說(shuō)明:本例假設(shè)A區(qū)已經(jīng)成功寫(xiě)入了數(shù)據(jù),需要向NVM區(qū)寫(xiě)入新數(shù)據(jù)。其他情況處理流程與下述4步同理。
(1)判斷A區(qū)FLAG = 1后,將A區(qū)數(shù)據(jù)讀出寫(xiě)入到B區(qū),寫(xiě)入成功后,將B區(qū) FLAG賦值為1。
(2)B區(qū)FLAG修改成功后,將A區(qū)FLAG標(biāo)志改為0。
(3)A區(qū)FLAG標(biāo)志修改成功后,對(duì)A區(qū)進(jìn)行數(shù)據(jù)更新操作,即寫(xiě)入新數(shù)據(jù)。更新成功后,將A區(qū)FLAG標(biāo)志寫(xiě)為1。
(4)A區(qū)FLAG修改成功后,將B區(qū)FLAG標(biāo)志修改為 0,至此完成數(shù)據(jù)更新操作。
至此,兩種NVM區(qū)數(shù)據(jù)備份方案全部介紹完畢。
tyl20100: 樓主介紹的這種NVM區(qū)數(shù)據(jù)備份機(jī)制有什么優(yōu)缺點(diǎn)嗎?