Ameba Arduino: [RTL8195] [RTL8710] Flash Memory – 記錄資訊在FlashEEProm


材料準備

  • Ameba x 1

範例說明

Ameba提供Flash Memory供儲存永久性的資料,讓Ameba斷電之後這些資料可以保存。這些資料包括編譯好的程式。為了避免覆蓋到程式,Flash Api使用位址較後面的區段,大小為一個sector = 4K。
這個範例裡將開機的次數存到flash裡面,重開機之後將這個值讀出來加1,再寫回到flash裡面,並顯示在Serial Monitor上。

首先打開範例, “File” -> “Example” -> “AmebaFlashMemory” -> “FlashMemoryBasic”
1

將程式碼編繹並上傳到Ameba,結束之後按Reset按鈕
接著打開Serial Monitor,按個幾次Reset按鈕,會看到Boot count隨著開機次數而增加,表示開機次數成功地寫入到Flash Memory裡面。
2

程式碼說明

Flash Memory API預設使用位址0xFF000的Flash memory,大小為4K,即0xFF000~0xFFFFF
Flash Memory在讀的時候可以直接讀,但寫入時則有限制,如果前一次該位址已被寫入,則這次寫入會有問題。
要正確的寫入,需要先erase sector,但會一次清除4K大小的Flash memory。所以Flash API裡面使用4K大小的SRAM,記錄使用者要做的修改,最後再一併erase/write
FlashMemory.read()可以讀出Flash memory的值
FlashMemory.buf[0] = 0x00;可以直接操作4K大小的buf
FlashMemory.update();可以將buf所有內容更新到Flash Memory裡面