【可斷電保存的儲存裝置】
I-7188 上可用的斷電保存儲存裝置共有三種,各有其特色,大小不同,寫入速度不同,讀取速度也不一樣。
  1. NVRAM
  2. EEPROM
  3. Flash Memory
  4. 三者比較

回主目錄

NVRAM

  1. I-7188 上的 NVRAM 一共只有31 bytes。 這是 RTC 附帶的儲存空間。

  2. 他其實也是 SRAM ,但是因為另有一顆電池提供電源,所以I-7188斷電後,他的資料仍能保持住,不會消失。 不過如果電池沒電了就跟一般的 SRAM 一樣,斷電後就沒資料了。如果沒有漏電的話,I-7188 上的電池應該可以用 10 年。

  3. NVRAM 沒有寫入次數的限制,所以非常適合儲存常常需要變更的資料。 需要考慮的是資料多久變更一次,以及寫入一次資料需要花多少時間。

  4. 如果是量不大的資料也適合存在NVRAM,例如一組user id 加上 password 應該沒問題, 存一些系統設定值也可以。或是存一些量測值,例如 PULSE 數,D/I 或 D/O 的最新狀態等等。
回本頁目錄

EEPROM

  1. 在 I-7188 上的 EEPROM 儲存容量是2048 Bytes。分成 8 個 BLOCK,每個 BLOCK 有256 bytes。

  2. 存在 EEPROM 裡頭的資料在系統斷電後仍不會消失。

  3. EEPROM 有寫入次數的限制,可以重複寫入 100 萬次。 當開始無法再寫入的狀況發生時就是某一個(或某幾個)bit 的值無法改變,不論寫什麼進去,就是都讀到那一個值。 這其實也可以拿來當作一種保護,就是先刻意把 EEPROM 的某個位置重複寫入值, 一直到他開始無法再寫入的現象發生後,再用程式每次寫一個其他值進去再讀回來, 如果讀到寫進去的值就表示這已經不是原來的eeprom,可能是程式被盜用了。

  4. 因為 EEPROM 有寫入次數的限制,所以用它存資料時要考慮夠不夠用。 通常就是計算這個系統要使用多久,應該會有多少次的寫入,只要在其限制內應該就沒問題。

  5. 如果發現寫入的次數不夠用,又如果資料量不大的話,還有一個可以補救的方式就是將資料存放在很多地方。 例如資料只有256 bytes,那就可以每個 block 都存資料,相當於可以寫入的次數乘以8倍。

  6. 另一個該考慮的問題是寫入時間。EEPROM 寫入一個位置約要 4ms 的時間, 如果比4 ms 還短的時間需要寫入多次就不適合。

  7. 適合用來存變化不是非常頻繁的資料。例如USER ID,PASSWORD,或其他系統設定值。

  8. 適合用來存多個 channel 的累積讀值,例如累積雨量,累積用電量,累積時間等等。
回本頁目錄

Flash Memory

  1. I-7188 的 FLASH 有兩種大小,256K 及 512K。
  2. ROMDOS 或 MiniOS7 會佔用 FLASH 的最後64K。其他的空間用來放檔案或是 USER 的資料。 在 MiniOS7 使用 LOAD 命令來 DOWNLOAD 檔案到 I-7188 就是存放在 FLASH 裡頭。 在 ROMDOS 使用 TOROM 命令來 DOWNLOAD 檔案(ROM-DISK.IMG)到 I-7188 也是存放在 FLASH 裡頭。
  3. 存在FLASH內的資料也不會因斷電而消失。
  4. 7188XC/7521 所使用的 FLASH 的一個特性就是寫入資料時,資料只能由 1 變成 0 。 也就是說當呼叫 FlashWite() 時,新舊資料有不同的地方如果都是 1 變成 0 就可以寫入成功,如果有 0 變成 1 的地方就會寫入失敗。
  5. FlashErase() 就是當要重新寫入資料之前,用來把所有的資料都清成 1, 以便任意的資料都可以再寫進去。但是這個動作一次要清除 64K 的資料。 所以用 FLASH 來存放收集到的資料時要好好規劃寫入,讀取,及清除的順序。 以便充分利用 FLASH。
  6. FLASH 可以重複寫入 10萬次。
  7. FLASH 另一個好處是 CPU 可以直接讀到存在裡頭的值(MiniOS7 或 ROM-DOS 就是放在裡頭直接執行的), 所以有些固定不變的資料可以放在 FLASH 裡頭,程式一樣可以直接讀到,可以減少一些程式對 SRAM 的需求。
  8. FLASH 寫入的時間很短,是三種儲存裝置中最快的。但是每寫完64k資料需要做一次erase才能在一次寫入,erase 的時間大約是 0.7 秒。

  9. FLASH 讀取的時間也是最快的,最重要的是它可以不用先讀到記憶體(SRAM)中,CPU 本身就可以直接讀取FLASH裡頭的資料。 而使用 nvram 或 eeprom 都需要先讀到一個變數中再使用。

  10. 因為 flash 的空間大,所以許多資料都可以放存在裡頭。要查表的資料如三角函數的table, 又如學校教室電燈或冷暖氣的電源的開關時間表等。

  11. 又如要長時間紀錄一些量測值,也可以一筆一筆存放在 flash 裡頭,在flash空間用完之前由主機讀回就可以。 (這需要計算資料量,與想要儲存資料的時間,看 flash 空出的空間夠不夠用, 一般用 512k 的 flash 存一星期的資料量應該是夠用的。)另外跟 eeprom 一樣需要考慮使用壽命的問題。
回本頁目錄

三者比較
項目NVRAMEEPROMFLASH MEMORY
大小31 bytes2048 bytes最大128/384 k bytes
寫入次數沒限制100萬次10萬次
寫入時間約0.12ms。最慢。約4ms。最快。約0.0411 ms
讀取時間約0.11ms。最慢。約0.37ms。最快,cpu可直接讀取。
ERASE不用。不用。需要,一個sector約0.7秒。
使用電池做斷電保持需要。不用。不用。

回主目錄 | 回本頁目錄
I-7188入門課程 1.10版 〔by:蔡坤廷〕 〔本檔最後修改日期:02/09/2001〕