mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-06 20:13:40 +00:00
machine/flash: remove FlashBuffer, modify flash example to use BlockDevice interface
Signed-off-by: deadprogram <ron@hybridgroup.com>
This commit is contained in:
+38
-11
@@ -7,7 +7,10 @@ import (
|
||||
|
||||
var (
|
||||
err error
|
||||
message = "1234567887654321123456788765432112345678876543211234567887654321"
|
||||
message = "1234567887654321123456788765432112345678876543211234567887654321" +
|
||||
"1234567887654321123456788765432112345678876543211234567887654321" +
|
||||
"1234567887654321123456788765432112345678876543211234567887654321" +
|
||||
"1234567887654321123456788765432112345678876543211234567887654321"
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -21,30 +24,54 @@ func main() {
|
||||
println("Flash erase block size:", machine.Flash.EraseBlockSize())
|
||||
println()
|
||||
|
||||
flash := machine.OpenFlashBuffer(machine.Flash, machine.FlashDataStart())
|
||||
original := make([]byte, len(message))
|
||||
saved := make([]byte, len(message))
|
||||
|
||||
// Read flash contents on start (data shall survive power off)
|
||||
print("Reading data from flash: ")
|
||||
_, err = flash.Read(original)
|
||||
println("Reading original data from flash:")
|
||||
_, err = machine.Flash.ReadAt(original, 0)
|
||||
checkError(err)
|
||||
println(string(original))
|
||||
|
||||
// erase flash
|
||||
println("Erasing flash...")
|
||||
needed := int64(len(message)) / machine.Flash.EraseBlockSize()
|
||||
if needed == 0 {
|
||||
// have to erase at least 1 block
|
||||
needed = 1
|
||||
}
|
||||
|
||||
err := machine.Flash.EraseBlocks(0, needed)
|
||||
checkError(err)
|
||||
|
||||
// Write the message to flash
|
||||
print("Writing data to flash: ")
|
||||
flash.Seek(0, 0) // rewind back to beginning
|
||||
_, err = flash.Write([]byte(message))
|
||||
println("Writing new data to flash:")
|
||||
_, err = machine.Flash.WriteAt([]byte(message), 0)
|
||||
checkError(err)
|
||||
println(string(message))
|
||||
|
||||
// Read back flash contents after write (verify data is the same as written)
|
||||
print("Reading data back from flash: ")
|
||||
flash.Seek(0, 0) // rewind back to beginning
|
||||
_, err = flash.Read(saved)
|
||||
println("Reading data back from flash: ")
|
||||
_, err = machine.Flash.ReadAt(saved, 0)
|
||||
checkError(err)
|
||||
if !equal(saved, []byte(message)) {
|
||||
println("data verify error")
|
||||
}
|
||||
|
||||
println(string(saved))
|
||||
println()
|
||||
println("Done.")
|
||||
}
|
||||
|
||||
func equal(a, b []byte) bool {
|
||||
if len(a) != len(b) {
|
||||
return false
|
||||
}
|
||||
for i, v := range a {
|
||||
if v != b[i] {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func checkError(err error) {
|
||||
|
||||
Reference in New Issue
Block a user