Ameba Arduino: [RTL8195] [RTL8710] Flash Memory – 使用超過4K的flash memory

材料準備

  • Ameba x 1

範例說明

Flash Memory API預設使用4K大小的memory,對大部份的應用應該已經足夠,但如果遇到需要用到超過4K的情況,可以指定特定的位置與大小來使用。
首先打開範例 “File” -> “Examples” -> “AmebaFlashMemory” -> “ReadWriteOneWord”
這個範例裡會宣告Flash起始位置為0xFC000, 大小為0x4000。(預設起始位置為0xFF000,大小為0x1000)
然後根據offset對特定位置做讀寫。範例裡使用offset 0x3F00,即Flash位置0xFC000 + 0x3F00 = 0xFFF00。第一次讀出來將值設定成0,之後每次開機都加1。
1

程式碼說明

之前的Flash API可以直接使用,但預設起始位置為0xFF000,大小為0x1000,如果要使用別的設定,則要呼叫begin(),範例裡第一個參數是起始位置,第二個參數是大小。

FlashMemory.begin(0xFC000, 0x4000);

要讀出這個區塊的值,使用readWord(),範例裡讀出offset 0x3F00的地方,也就是0xFC000 + 0x3F00 = 0xFFF00的位置,讀出來的大小為32-bit,放在回傳值裡

value = FlashMemory.readWord(0x3F00);

寫入則使用writeWord(),第一個參數是offset,第二個參數是要寫入的值。

FlashMemory.writeWord(0x3F0C, value);