capsules_extra

Module nonvolatile_to_pages

Source
Expand description

Map arbitrary nonvolatile reads and writes to page operations.

This splits non-page-aligned reads and writes into a series of page level reads and writes. While it is handling a read or write it returns BUSY to all additional requests.

This module is designed to be used on top of any flash storage and below any user of NonvolatileStorage. This module handles different sized pages.

hil::nonvolatile_storage::NonvolatileStorage
               ┌─────────────┐
               │             │
               │ This module │
               │             │
               └─────────────┘
              hil::flash::Flash

§Usage

sam4l::flashcalw::FLASH_CONTROLLER.configure();
let page_buffer = static_init!(
    sam4l::flashcalw::Sam4lPage,
    sam4l::flashcalw::Sam4lPage::default()
);
let nv_to_page = static_init!(
    capsules::nonvolatile_to_pages::NonvolatileToPages<'static, sam4l::flashcalw::FLASHCALW>,
    capsules::nonvolatile_to_pages::NonvolatileToPages::new(
        &mut sam4l::flashcalw::FLASH_CONTROLLER,
        page_buffer));
hil::flash::HasClient::set_client(&sam4l::flashcalw::FLASH_CONTROLLER, nv_to_page);

Structs§