91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

NVM區數據備份機制是什么

發布時間:2021-07-09 18:00:00 來源:億速云 閱讀:291 作者:chen 欄目:大數據

這篇文章主要介紹“NVM區數據備份機制是什么”,在日常操作中,相信很多人在NVM區數據備份機制是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”NVM區數據備份機制是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

NVM區主要特性是寫入數據掉電不丟失,可以永久的保存數據,一般用作存放不經常修改的數據,此功能類似FLASH。向NVM區寫入數據可分為3步:第一步,將目標扇區內原有數據讀出到RAM中;第二步,擦除NVM目標扇區內數據;第三步,將新數據和RAM中的舊數據寫入到該扇區中。基于以上寫操作的特點可以看出,若執行寫NVM區操作的第二步或第三步時芯片斷電了,就會造成NVM區內原有數據丟失,而新數據寫入失敗,表現出NVM區內數據錯亂的現象。雖然這只是小概率事件,但出于穩定性和產品健壯性考慮也要加入數據備份機制。

數據備份有兩套基本方案,分別適用于小數據量和大數據量的應用場景。本期介紹小數據量備份方案,即要求每次更新數據量小于一個扇區大小減1,本例扇區大小256字節,因此更新數據量最大255字節。(注意:不同型號芯片NVM扇區大小會有差異,可以聯系凌科技術確認)。實現思路是:從NVM區選取兩塊區域,每個區域的最后一字節記錄該區域的操作次數。以該標志決定更新數據應選用哪個區域。依次循環操作兩個區域,操作區域1的時候,區域2就充當了備份作用,反之同理。

第一次寫入數據

第一步:將NVM區地址0x0000~0x00FF定義為Block1,將0x0200~0x02FF定義為Block2。

#define Block1 0x0000

#define Block2 0x0200

第二步:定義一個256字節的數組databuf和一個標志位變量cnt,并將cnt賦值0。

unsigned char databuf[256];

Unsigned char cnt = 0;

第三步:將目標數據(待寫入數據)拷貝到databuf數組中,并將cnt+1拷貝到databuf+255的位置。

databuf[255] = cnt+1;

第四步:調用WriteNVM函數向Block1寫入數據databuf,寫入長度256字節。調用WriteNVM函數向Block2+255位置寫入cnt,寫入長度1字節

WriteNVM(Block1,databuf,256);

WriteNVM(Block2+255,&cnt,1);

更新數據

第一步:調用ReadNVM函數分別讀取Block1和Block2的標志位(最后一字節)。

unsigned char flag1,flag2;

ReadNVM(Block1+255,&flag1,1);

ReadNVM(Block2+255,&flag2,1);

第二步:判斷兩個Block的標志位大小,選取標志位數值小的Block進行更新。將目標數據(待寫入數據)拷貝到databuf數組中,并將標志位加2后拷貝到databuf+255的位置。

if(flag1 > flag2)

{

cnt = flag2 + 2;

databuf[255] = cnt;

WriteNVM(Block2,databuf,256);
}else{

cnt = flag1 +2;

databuf[255] = cnt;

WriteNVM(Block1,databuf,256);

}

讀取數據

第一步:讀取Block1和Block2的標志位數據。

ReadNVM(Block1+255,&flag1,1);

ReadNVM(Block2+255,&flag2,1);

第二步:判斷標志位大小,數值大的Block內為新數據,數值小的Block內為舊數據。

if(flag1 > flag2)

{

ReadNVM(Block1,databuf,255);

}else{

ReadNVM(Block2,databuf,255);

}

到此,關于“NVM區數據備份機制是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

nvm
AI

斗六市| 满城县| 金寨县| 财经| 克什克腾旗| 西安市| 江山市| 石台县| 青田县| 五河县| 金秀| 马山县| 旬邑县| 惠州市| 云和县| 五大连池市| 扎兰屯市| 崇信县| 客服| 南康市| 石阡县| 盘山县| 晴隆县| 平利县| 桦南县| 微山县| 炉霍县| 南木林县| 长海县| 滁州市| 樟树市| 鹿邑县| 湛江市| 广水市| 保靖县| 射洪县| 达州市| 海阳市| 华安县| 疏附县| 石门县|