[討論] 斷電復電後的EEPROM的資料確認方法

看板ASM (組合語言)作者 (wayne)時間14年前 (2011/04/22 15:57), 編輯推噓7(7024)
留言31則, 8人參與, 最新討論串1/1
各為先進你們好~ 小弟目前再做一台機器 需要有斷電後能保存重要參數的功能 功能大概是每當系統有更新資料時就自動備份資料 以備斷電複電時將資料讀回,確保系統可以有連續性 的運作,不用每當斷電復電就要重新設定一次系統 的各個參數,而小弟雖然有做備份電源,但因為為了 延長備份電源的供電持久性,所以電源只供應RTC,其 他重要的參數由於資料量過多,所以我採用了一個EEPROM 來紀錄,現在問題來了! 我要斷電複電後要怎麼去判定這筆資料是新的還是舊的? 需要判定的原因是因為我有些資料是有相關性的! 若是一筆資料是新的一筆資料是舊的!那讀出來給系統去 運作後會的到錯誤的結果!所以我需要去判定這幾筆資料 中是否有舊的資料?有的話則必須將此區塊資料都放棄! 重新讀取別的區塊的資料! 我想到的做法:一塊記憶體區塊存份新資料 另一塊是存放上次的舊資料 斷電復電後則先判斷新資料是存在哪一塊記憶體 再將此塊記憶體的資料讀出並提供給系統運算 但仔細想想總覺得這樣的做法似乎很浪費時間和記憶體的空間, 不知道各為先進是否有更好的做法? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.69.128.66

04/22 18:06, , 1F
就算資料只有1 byte 還是有可能在寫入時斷電造成錯誤
04/22 18:06, 1F

04/22 18:07, , 2F
這個要先想清楚再考慮其它的
04/22 18:07, 2F

04/22 20:14, , 3F
把RTC寫在前面來做判斷,在偵測到低電壓時馬上寫入
04/22 20:14, 3F

04/22 21:11, , 4F
什麼叫做把RTC寫在前面?有點不懂大大的意思!
04/22 21:11, 4F

04/22 21:19, , 5F
k大!很多傳輸也有資料傳輸錯誤的情況~我想要做的就是能
04/22 21:19, 5F

04/22 21:20, , 6F
避開取到錯誤的值!我總部可能連續兩塊記憶體的資料都是
04/22 21:20, 6F

04/22 21:20, , 7F
的吧!
04/22 21:20, 7F

04/22 21:20, , 8F
04/22 21:20, 8F

04/23 01:12, , 9F
你預計怎樣避開取到錯誤的值?
04/23 01:12, 9F

04/23 01:13, , 10F
為何你認為連續兩塊記憶體不會都是錯的?
04/23 01:13, 10F

04/23 01:51, , 11F
為何不設計check sum or crc之類的方法來確認資料正確性?
04/23 01:51, 11F

04/23 02:41, , 12F
我是給MCU一個0.1F的電容器,確保斷電的ISR可以備份REGIS
04/23 02:41, 12F

04/24 02:21, , 13F
其實一開始我有考慮過使用CRC的方法!只不過看了維基和一
04/24 02:21, 13F

04/24 02:22, , 14F
些資料後還是搞不懂CRC到底在做什麼?至於check sum可否
04/24 02:22, 14F

04/24 02:23, , 15F
可否稍微跟我解釋一下時什麼意思?抱歉!我還是個大菜鳥
04/24 02:23, 15F

04/24 02:24, , 16F
麻煩了= ="
04/24 02:24, 16F

04/24 02:25, , 17F
W大!你說再MCU端接一個0.1F的電容可以大概描述是怎麼接
04/24 02:25, 17F

04/24 02:26, , 18F
的嗎?是接在資料線上嗎?這樣做不會影響波型嗎??
04/24 02:26, 18F

04/24 02:38, , 19F
他是說在MCU的VCC上接一個.1F的大電容,在斷電時確保電源
04/24 02:38, 19F

04/24 02:39, , 20F
足夠寫完這些事情
04/24 02:39, 20F

04/24 02:39, , 21F
check sum就是把你一連串的資料加總後得到一個值,用這個
04/24 02:39, 21F

04/24 02:40, , 22F
值來確認這一串資料是正確的,CRC也是相同的概念
04/24 02:40, 22F

04/24 02:40, , 23F
只是當check sum計算出來是相符時,仍然有機會前面的資料
04/24 02:40, 23F

04/24 02:41, , 24F
有錯但沒有被偵測出來,CRC則比較能保證錯誤出現時能偵測
04/24 02:41, 24F

04/24 02:41, , 25F
到,所以CRC的計算也比較複雜
04/24 02:41, 25F

04/24 10:49, , 26F
RUEMANN正姐 :P
04/24 10:49, 26F

04/26 21:59, , 27F
一般低階MCU用CRC太複雜也太耗運算,不過既然是check sum
04/26 21:59, 27F

04/26 21:59, , 28F
當然可以自己用簡單的數學寫出個類似的玩意
04/26 21:59, 28F

04/26 22:50, , 29F
CRC用查表法 不會太耗
04/26 22:50, 29F

04/26 22:59, , 30F
查表? ROM比較值錢吧...就移位加而已哪來耗運算?
04/26 22:59, 30F

04/28 10:14, , 31F
可參考關鍵詞搜尋"CRC運算的查表法原理" 只是方法之一
04/28 10:14, 31F
文章代碼(AID): #1DiJK2Pc (ASM)
文章代碼(AID): #1DiJK2Pc (ASM)