国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

xiaoyuhzou1228的個人空間 http://www.qingdxww.cn/space-uid-139997.html [收藏] [復制] [RSS]

博客

NVM區數據備份機制

熱度 10已有 1790 次閱讀2019-8-8 17:24

上一篇主要說明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);

}


路過

雞蛋

鮮花

握手

雷人

發表評論 評論 (20 個評論)

回復 tyl20100 2019-8-13 17:15
能來點干貨嗎?期待樓主的更新
回復 zhanglu95 2019-8-13 17:18
太專業了,不明覺厲。
回復 dg336699 2019-8-13 17:27
太棒啦,有了NVM區數據備份機制,芯片斷電的時候,就不用擔心NVM區內原有數據丟失和新數據寫入失敗了,贊!
回復 Test_wf 2019-8-13 20:21
雖然感覺操作有點復雜,但是能解決數據掉電不丟失的情況,麻煩點也能接受,下次可以試一下
回復 miniminimini 2019-8-13 22:18
這個方法不錯,可以試試
回復 tyl20100 2019-8-14 08:34
如此操作的好處是什么?會不會導致可用數據區變小呢?
回復 kessy1 2019-8-14 09:11
好處是數據有備份,不會丟失。數據區雖然變小,但是夠用就行。
回復 wang0327 2019-8-14 09:31
這樣操作影響數據的讀寫速度嗎?
回復 小屁孩123 2019-8-14 13:54
讀寫速度相比沒有備份機制的速度慢了
回復 QL87 2019-8-15 13:18
讀寫速度應該是存儲的數據大小有關系,如果數據很大,讀寫的速度肯定會變慢一些
回復 zhanglu95 2019-8-15 13:49
哪款產品有NVM區呢?樓主推薦一下
回復 kessy1 2019-8-15 18:15
很多芯片都有NVM區,你可以咨詢幾個廠家問問,LKT的有個型號是帶NVM的,具體還得看你需要多大的空間
回復 dg336699 2019-8-15 19:27
看完樓主最近這幾篇文章,大概了解啦NVM區數據備份機制,文章不錯!
回復 miniminimini 2019-8-16 08:25
看了樓主的文章很有啟發,這就去咨詢一下
回復 wang0327 2019-8-16 08:53
樓上提到的LKT和樓主說的凌科技術是一家嗎?有哪位大神用過他家產品沒?產品技術怎么樣?怎樣才能聯系到他們的技術人員?
回復 QL87 2019-8-16 16:29
這么搞的話,太局限了,超過256字節就沒法用了,太理想化
回復 小屁孩123 2019-8-16 17:00
文中的小概率事件能不能避免
回復 zhanglu95 2019-8-19 09:04
樓上同問
回復 Test_wf 2019-8-19 13:40
不同型號的加密芯片其NVM扇區大小有差異,是不是越大的越好?
回復 tyl2010 2019-8-19 21:27
防數據丟失有多種方案這個先收藏以后嘗試一下。

facelist

您需要登錄后才可以評論 登錄 | 立即注冊

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
返回頂部
主站蜘蛛池模板: 四虎影视精品永久免费网站 | 欧美成人性生活视频 | 三级在线网站 | 好属妞这里只有精品久久 | 亚洲视频免费一区 | 四虎地址8848在线观看 | 九九在线精品视频 | 亚洲欧美日本一区 | 欧洲成人免费高清视频 | 国产成a人片在线观看视频 国产产一区二区三区久久毛片国语 | 欧美视频 亚洲视频 | 国产色91| 最新黄色网址在线观看 | 中文字幕天堂在线 | 亚洲欧美日韩国产综合高清 | 亚洲高清毛片 | 网红主播大尺度精品福利视频 | 伊在人亚洲香蕉精品区麻豆 | 欧美不卡视频在线 | 最新版天堂资源中文下载 | 青青青激情视频在线最新 | 亚洲第四页 | 九七在线 | 亚洲欧美成人综合 | 免费一级毛片在线播放不收费 | 亚洲欧美日韩一区高清中文字幕 | 亚洲欧美日韩一区 | 麻豆91免费视频 | 国内精品91 | 色天使久久综合给合久久97色 | 卡一卡二卡三免费的视频 | 久久精品三级 | 亚洲欧美一区二区三区四区 | 99精品久久秒播无毒不卡 | 国产有码在线 | 在线观看亚洲网站 | 色综合久久98天天综合 | 国产成人精品高清不卡在线 | 日本高清视频色 | 国产一国产一有一级毛片 | 国四虎影永久 |