日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

NVM區(qū)數(shù)據(jù)備份機(jī)制

上一篇主要說(shuō)明NVM區(qū)操作注意事項(xiàng),本文針對(duì)上篇提到的NVM區(qū)數(shù)據(jù)備份方法進(jìn)行補(bǔ)充講解。

NVM區(qū)主要特性是寫入數(shù)據(jù)掉電不丟失,可以永久的保存數(shù)據(jù),一般用作存放不經(jīng)常修改的數(shù)據(jù),此功能類似FLASH。向NVM區(qū)寫入數(shù)據(jù)可分為3步:第一步,將目標(biāo)扇區(qū)內(nèi)原有數(shù)據(jù)讀出到RAM中;第二步,擦除NVM目標(biāo)扇區(qū)內(nèi)數(shù)據(jù);第三步,將新數(shù)據(jù)和RAM中的舊數(shù)據(jù)寫入到該扇區(qū)中?;谝陨蠈懖僮鞯奶攸c(diǎn)可以看出,若執(zhí)行寫NVM區(qū)操作的第二步或第三步時(shí)芯片斷電了,就會(huì)造成NVM區(qū)內(nèi)原有數(shù)據(jù)丟失,而新數(shù)據(jù)寫入失敗,表現(xiàn)出NVM區(qū)內(nèi)數(shù)據(jù)錯(cuò)亂的現(xiàn)象。雖然這只是小概率事件,但出于穩(wěn)定性和產(chǎn)品健壯性考慮也要加入數(shù)據(jù)備份機(jī)制。

數(shù)據(jù)備份有兩套基本方案,分別適用于小數(shù)據(jù)量和大數(shù)據(jù)量的應(yīng)用場(chǎng)景。本期介紹小數(shù)據(jù)量備份方案,即要求每次更新數(shù)據(jù)量小于一個(gè)扇區(qū)大小減1,本例扇區(qū)大小256字節(jié),因此更新數(shù)據(jù)量最大255字節(jié)。(注意:不同型號(hào)芯片NVM扇區(qū)大小會(huì)有差異,可以聯(lián)系凌科技術(shù)確認(rèn))。實(shí)現(xiàn)思路是:從NVM區(qū)選取兩塊區(qū)域,每個(gè)區(qū)域的最后一字節(jié)記錄該區(qū)域的操作次數(shù)。以該標(biāo)志決定更新數(shù)據(jù)應(yīng)選用哪個(gè)區(qū)域。依次循環(huán)操作兩個(gè)區(qū)域,操作區(qū)域1的時(shí)候,區(qū)域2就充當(dāng)了備份作用,反之同理。

第一次寫入數(shù)據(jù)

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

#define Block1 0x0000

#define Block2 0x0200

第二步:定義一個(gè)256字節(jié)的數(shù)組databuf和一個(gè)標(biāo)志位變量cnt,并將cnt賦值0。

unsigned char databuf[256];

Unsigned char cnt = 0;

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

databuf[255] = cnt+1;

第四步:調(diào)用WriteNVM函數(shù)向Block1寫入數(shù)據(jù)databuf,寫入長(zhǎng)度256字節(jié)。調(diào)用WriteNVM函數(shù)向Block2+255位置寫入cnt,寫入長(zhǎng)度1字節(jié)

WriteNVM(Block1,databuf,256);

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

更新數(shù)據(jù)

第一步:調(diào)用ReadNVM函數(shù)分別讀取Block1和Block2的標(biāo)志位(最后一字節(jié))。

unsigned char flag1,flag2;

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

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

第二步:判斷兩個(gè)Block的標(biāo)志位大小,選取標(biāo)志位數(shù)值小的Block進(jìn)行更新。將目標(biāo)數(shù)據(jù)(待寫入數(shù)據(jù))拷貝到databuf數(shù)組中,并將標(biāo)志位加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);

}

讀取數(shù)據(jù)

第一步:讀取Block1和Block2的標(biāo)志位數(shù)據(jù)。

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

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

第二步:判斷標(biāo)志位大小,數(shù)值大的Block內(nèi)為新數(shù)據(jù),數(shù)值小的Block內(nèi)為舊數(shù)據(jù)。

if(flag1 > flag2)

{

ReadNVM(Block1,databuf,255);

}else{

ReadNVM(Block2,databuf,255);

}

全部回復(fù)(21)
正序查看
倒序查看
2019-08-13 17:16
能來(lái)點(diǎn)干貨嗎?期待樓主的更新
0
回復(fù)
zhanglu
LV.1
3
2019-08-13 17:20
@胖爺阿戈
能來(lái)點(diǎn)干貨嗎?期待樓主的更新
太專業(yè)了,不明覺(jué)厲。
0
回復(fù)
2019-08-13 17:33
@zhanglu
太專業(yè)了,不明覺(jué)厲。
太棒啦,有了NVM區(qū)數(shù)據(jù)備份機(jī)制,芯片斷電的時(shí)候,就不用擔(dān)心NVM區(qū)內(nèi)原有數(shù)據(jù)丟失和新數(shù)據(jù)寫入失敗了,贊!
0
回復(fù)
Hex315
LV.5
5
2019-08-13 20:26
@阿倫學(xué)
太棒啦,有了NVM區(qū)數(shù)據(jù)備份機(jī)制,芯片斷電的時(shí)候,就不用擔(dān)心NVM區(qū)內(nèi)原有數(shù)據(jù)丟失和新數(shù)據(jù)寫入失敗了,贊!
雖然感覺(jué)操作有點(diǎn)復(fù)雜,但是能解決數(shù)據(jù)掉電不丟失的情況,麻煩點(diǎn)也能接受,下次可以試一下
0
回復(fù)
2019-08-14 08:30
@Hex315
雖然感覺(jué)操作有點(diǎn)復(fù)雜,但是能解決數(shù)據(jù)掉電不丟失的情況,麻煩點(diǎn)也能接受,下次可以試一下
    .
0
回復(fù)
2019-08-14 09:33
@胖爺阿戈
  .
如此操作的好處是什么?會(huì)不會(huì)導(dǎo)致可用數(shù)據(jù)區(qū)變小呢?
0
回復(fù)
2019-08-14 09:34
@胖爺阿戈
如此操作的好處是什么?會(huì)不會(huì)導(dǎo)致可用數(shù)據(jù)區(qū)變小呢?
這個(gè)不錯(cuò),可以試試看
0
回復(fù)
2019-08-14 09:43
@胖爺阿戈
如此操作的好處是什么?會(huì)不會(huì)導(dǎo)致可用數(shù)據(jù)區(qū)變小呢?
好處是數(shù)據(jù)有備份,不會(huì)丟失。數(shù)據(jù)區(qū)雖然變小,但是夠用就行。
0
回復(fù)
114W1
LV.5
10
2019-08-14 09:50
@大衛(wèi)是誰(shuí)
好處是數(shù)據(jù)有備份,不會(huì)丟失。數(shù)據(jù)區(qū)雖然變小,但是夠用就行。
這樣操作影響數(shù)據(jù)的讀寫速度嗎?
0
回復(fù)
2019-08-14 13:56
@114W1
這樣操作影響數(shù)據(jù)的讀寫速度嗎?
讀寫速度相比沒(méi)有備份機(jī)制的速度慢了
0
回復(fù)
BLoun
LV.5
12
2019-08-15 13:22
@小屁孩456
讀寫速度相比沒(méi)有備份機(jī)制的速度慢了
讀寫速度應(yīng)該是存儲(chǔ)的數(shù)據(jù)大小有關(guān)系,如果數(shù)據(jù)很大,讀寫的速度肯定會(huì)變慢一些
0
回復(fù)
zhanglu
LV.1
13
2019-08-15 13:53
@BLoun
讀寫速度應(yīng)該是存儲(chǔ)的數(shù)據(jù)大小有關(guān)系,如果數(shù)據(jù)很大,讀寫的速度肯定會(huì)變慢一些
哪款產(chǎn)品有nvm區(qū)呢?樓主推薦一下
0
回復(fù)
鄧女士
LV.5
14
2019-08-15 18:28
@zhanglu
哪款產(chǎn)品有nvm區(qū)呢?樓主推薦一下
很多芯片都有NVM區(qū),你可以咨詢幾個(gè)廠家問(wèn)問(wèn),LKT的有個(gè)型號(hào)是帶NVM的,具體還得看你需要多大的空間
0
回復(fù)
2019-08-15 20:25
看完樓主最近這幾篇文章,大概了解啦NVM區(qū)數(shù)據(jù)備份機(jī)制,文章不錯(cuò)哦
0
回復(fù)
2019-08-16 08:23
看了樓主的文章很有啟發(fā),這就去咨詢一下
0
回復(fù)
114W1
LV.5
17
2019-08-16 08:55
@miniminimini
看了樓主的文章很有啟發(fā),這就去咨詢一下
樓上提到的LKT和樓主說(shuō)的凌科技術(shù)是一家嗎?有哪位大神用過(guò)他家產(chǎn)品沒(méi)?產(chǎn)品技術(shù)怎么樣?怎樣才能聯(lián)系到他們的技術(shù)人員?
0
回復(fù)
BLoun
LV.5
18
2019-08-16 16:43
@114W1
樓上提到的LKT和樓主說(shuō)的凌科技術(shù)是一家嗎?有哪位大神用過(guò)他家產(chǎn)品沒(méi)?產(chǎn)品技術(shù)怎么樣?怎樣才能聯(lián)系到他們的技術(shù)人員?
這么搞的話,太局限了,超過(guò)256字節(jié)就沒(méi)法用了,太理想化
0
回復(fù)
2019-08-16 17:02
@BLoun
這么搞的話,太局限了,超過(guò)256字節(jié)就沒(méi)法用了,太理想化
文中的小概率事件能不能避免
0
回復(fù)
zhanglu
LV.1
20
2019-08-19 09:00
@小屁孩456
文中的小概率事件能不能避免
樓上同問(wèn)。
0
回復(fù)
Hex315
LV.5
21
2019-08-19 13:42
@zhanglu
樓上同問(wèn)。
不同型號(hào)的加密芯片其NVM扇區(qū)大小有差異,是不是越大的越好?
0
回復(fù)
2019-08-19 21:24
@Hex315
不同型號(hào)的加密芯片其NVM扇區(qū)大小有差異,是不是越大的越好?
防數(shù)據(jù)丟失有多種方案這個(gè)先收藏以后嘗試一下。
0
回復(fù)
發(fā)