Ameba Arduino: [RTL8195] 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里面