flash_store_refactor #49

Merged
sb10q merged 4 commits from flash_store_refactor into master 2021-01-13 17:30:12 +08:00
2 changed files with 10 additions and 12 deletions
Showing only changes of commit 1c71fbb6a7 - Show all commits

View File

@ -11,7 +11,7 @@ MEMORY
CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K
} }
_stack_start = ORIGIN(CCMRAM) + LENGTH(CCMRAM);
_dfu_msg = ORIGIN(DFU_MSG);
_config_start = ORIGIN(CONFIG);
_flash_start = ORIGIN(FLASH); _flash_start = ORIGIN(FLASH);
_config_start = ORIGIN(CONFIG);
_dfu_msg = ORIGIN(DFU_MSG);
Outdated
Review

Keep the same order as the declarations above.

Keep the same order as the declarations above.
_stack_start = ORIGIN(CCMRAM) + LENGTH(CCMRAM);

View File

@ -20,18 +20,18 @@ pub struct FlashBackend {
flash: FLASH, flash: FLASH,
} }
unsafe fn get_offset() -> usize { fn get_offset() -> usize {
Outdated
Review

I suggest moving the unsafe block into this function and marking it safe.

I suggest moving the ``unsafe`` block into this function and marking it safe.
unsafe {
(&_config_start as *const usize as usize) - (&_flash_start as *const usize as usize) (&_config_start as *const usize as usize) - (&_flash_start as *const usize as usize)
} }
}
impl StoreBackend for FlashBackend { impl StoreBackend for FlashBackend {
type Data = [u8]; type Data = [u8];
fn data(&self) -> &Self::Data { fn data(&self) -> &Self::Data {
unsafe {
&self.flash.read()[get_offset()..(get_offset() + FLASH_SECTOR_SIZE)] &self.flash.read()[get_offset()..(get_offset() + FLASH_SECTOR_SIZE)]
} }
}
type Error = Error; type Error = Error;
fn erase(&mut self) -> Result<(), Self::Error> { fn erase(&mut self) -> Result<(), Self::Error> {
@ -40,11 +40,9 @@ impl StoreBackend for FlashBackend {
} }
fn program(&mut self, offset: usize, payload: &[u8]) -> Result<(), Self::Error> { fn program(&mut self, offset: usize, payload: &[u8]) -> Result<(), Self::Error> {
unsafe {
self.flash.unlocked() self.flash.unlocked()
.program(get_offset() + offset, payload.iter().cloned()) .program(get_offset() + offset, payload.iter().cloned())
} }
}
fn backup_space(&self) -> &'static mut [u8] { fn backup_space(&self) -> &'static mut [u8] {
unsafe { &mut BACKUP_SPACE } unsafe { &mut BACKUP_SPACE }