@@ -89,6 +89,11 @@ pub trait NorFlash: ReadNorFlash {
89
89
/// The minumum number of bytes the storage peripheral can erase
90
90
const ERASE_SIZE : usize ;
91
91
92
+ /// The content of erased storage
93
+ ///
94
+ /// Usually is `0xff` for NOR flash
95
+ const ERASE_BYTE : u8 = 0xff ;
96
+
92
97
/// Erase the given storage range, clearing all data within `[from..to]`.
93
98
/// The given range will contain all 1s afterwards.
94
99
///
@@ -168,6 +173,7 @@ impl<T: ReadNorFlash> ReadNorFlash for &mut T {
168
173
impl < T : NorFlash > NorFlash for & mut T {
169
174
const WRITE_SIZE : usize = T :: WRITE_SIZE ;
170
175
const ERASE_SIZE : usize = T :: ERASE_SIZE ;
176
+ const ERASE_BYTE : u8 = T :: ERASE_BYTE ;
171
177
172
178
fn erase ( & mut self , from : u32 , to : u32 ) -> Result < ( ) , Self :: Error > {
173
179
T :: erase ( self , from, to)
@@ -361,7 +367,7 @@ where
361
367
// Use `merge_buffer` as allocation for padding `data` to `WRITE_SIZE`
362
368
let offset = addr as usize % S :: WRITE_SIZE ;
363
369
let aligned_end = data. len ( ) % S :: WRITE_SIZE + offset + data. len ( ) ;
364
- self . merge_buffer [ ..aligned_end] . fill ( 0xff ) ;
370
+ self . merge_buffer [ ..aligned_end] . fill ( S :: ERASE_BYTE ) ;
365
371
self . merge_buffer [ offset..offset + data. len ( ) ] . copy_from_slice ( data) ;
366
372
self . storage
367
373
. write ( addr - offset as u32 , & self . merge_buffer [ ..aligned_end] ) ?;
0 commit comments