ChibiOS
21.6.0
|
HAL Generic Flash Driver Interface. More...
HAL Generic Flash Driver Interface.
The flash driver implements a state machine internally, not all the driver functionalities can be used in any moment, any transition not explicitly shown in the following diagram has to be considered an error and shall be captured by an assertion (if enabled).
Macros | |
#define | _base_flash_methods_alone |
BaseFlash specific methods. More... | |
#define | _base_flash_methods |
BaseFlash specific methods with inherited ones. More... | |
#define | _base_flash_data |
BaseFlash specific data. More... | |
Flash attributes | |
#define | FLASH_ATTR_ERASED_IS_ONE 0x00000001U |
Defines one as the erased bit state. More... | |
#define | FLASH_ATTR_MEMORY_MAPPED 0x00000002U |
The memory is accessible in a memory mapped mode. More... | |
#define | FLASH_ATTR_REWRITABLE 0x00000004U |
Programmed pages can be programmed again. More... | |
#define | FLASH_ATTR_ECC_CAPABLE 0x00000008U |
The memory is protected by an ECC mechanism. More... | |
#define | FLASH_ATTR_ECC_ZERO_LINE_CAPABLE 0x00000010U |
The device is able to overwrite zero to a line. More... | |
#define | FLASH_ATTR_SUSPEND_ERASE_CAPABLE 0x00000020U |
The device is able to suspend erase operations. More... | |
Macro Functions (BaseFlash) | |
#define | getBaseFlash(ip) ((BaseFlash *)&(ip)->vmt) |
Instance getter. More... | |
#define | flashGetDescriptor(ip) (ip)->vmt->get_descriptor(ip) |
Gets the flash descriptor structure. More... | |
#define | flashRead(ip, offset, n, rp) (ip)->vmt->read(ip, offset, n, rp) |
Read operation. More... | |
#define | flashProgram(ip, offset, n, pp) (ip)->vmt->program(ip, offset, n, pp) |
Program operation. More... | |
#define | flashStartEraseAll(ip) (ip)->vmt->start_erase_all(ip) |
Starts a whole-device erase operation. More... | |
#define | flashStartEraseSector(ip, sector) (ip)->vmt->start_erase_sector(ip, sector) |
Starts an sector erase operation. More... | |
#define | flashQueryErase(ip, msec) (ip)->vmt->query_erase(ip, msec) |
Queries the driver for erase operation progress. More... | |
#define | flashVerifyErase(ip, sector) (ip)->vmt->verify_erase(ip, sector) |
Returns the erase state of a sector. More... | |
Typedefs | |
typedef uint32_t | flash_offset_t |
Type of a flash offset. More... | |
typedef uint32_t | flash_sector_t |
Type of a flash sector number. More... | |
Data Structures | |
struct | flash_sector_descriptor_t |
Flash sector descriptor. More... | |
struct | flash_descriptor_t |
Type of a flash device descriptor. More... | |
struct | BaseFlashVMT |
BaseFlash virtual methods table. More... | |
struct | BaseFlash |
Base flash class. More... | |
Functions | |
flash_error_t | flashWaitErase (BaseFlash *devp) |
Waits until the current erase operation is finished. More... | |
flash_offset_t | flashGetSectorOffset (BaseFlash *devp, flash_sector_t sector) |
Returns the offset of a sector. More... | |
uint32_t | flashGetSectorSize (BaseFlash *devp, flash_sector_t sector) |
Returns the size of a sector. More... | |
Enumerations | |
enum | flash_state_t |
Driver state machine possible states. More... | |
enum | flash_error_t |
Type of a flash error code. More... | |
#define FLASH_ATTR_ERASED_IS_ONE 0x00000001U |
Defines one as the erased bit state.
Definition at line 39 of file hal_flash.h.
#define FLASH_ATTR_MEMORY_MAPPED 0x00000002U |
The memory is accessible in a memory mapped mode.
Definition at line 43 of file hal_flash.h.
#define FLASH_ATTR_REWRITABLE 0x00000004U |
Programmed pages can be programmed again.
FLASH_ATTR_ECC_CAPABLE
. Definition at line 48 of file hal_flash.h.
#define FLASH_ATTR_ECC_CAPABLE 0x00000008U |
The memory is protected by an ECC mechanism.
Definition at line 59 of file hal_flash.h.
#define FLASH_ATTR_ECC_ZERO_LINE_CAPABLE 0x00000010U |
The device is able to overwrite zero to a line.
FLASH_ATTR_ECC_CAPABLE
must be specified. Definition at line 65 of file hal_flash.h.
#define FLASH_ATTR_SUSPEND_ERASE_CAPABLE 0x00000020U |
The device is able to suspend erase operations.
Definition at line 69 of file hal_flash.h.
#define _base_flash_methods_alone |
BaseFlash
specific methods.
Definition at line 176 of file hal_flash.h.
#define _base_flash_methods |
BaseFlash
specific methods with inherited ones.
Definition at line 197 of file hal_flash.h.
#define _base_flash_data |
BaseFlash
specific data.
Definition at line 211 of file hal_flash.h.
#define getBaseFlash | ( | ip | ) | ((BaseFlash *)&(ip)->vmt) |
Instance getter.
This special method is used to get the instance of this class object from a derived class.
Definition at line 240 of file hal_flash.h.
#define flashGetDescriptor | ( | ip | ) | (ip)->vmt->get_descriptor(ip) |
Gets the flash descriptor structure.
[in] | ip | pointer to a BaseFlash or derived class |
Definition at line 250 of file hal_flash.h.
#define flashRead | ( | ip, | |
offset, | |||
n, | |||
rp | |||
) | (ip)->vmt->read(ip, offset, n, rp) |
Read operation.
[in] | ip | pointer to a BaseFlash or derived class |
[in] | offset | flash offset |
[in] | n | number of bytes to be read |
[out] | rp | pointer to the data buffer |
FLASH_NO_ERROR | if there is no erase operation in progress. |
FLASH_BUSY_ERASING | if there is an erase operation in progress. |
FLASH_ERROR_READ | if the read operation failed. |
FLASH_ERROR_HW_FAILURE | if access to the memory failed. |
Definition at line 268 of file hal_flash.h.
#define flashProgram | ( | ip, | |
offset, | |||
n, | |||
pp | |||
) | (ip)->vmt->program(ip, offset, n, pp) |
Program operation.
[in] | ip | pointer to a BaseFlash or derived class |
[in] | offset | flash offset |
[in] | n | number of bytes to be programmed |
[in] | pp | pointer to the data buffer |
FLASH_NO_ERROR | if there is no erase operation in progress. |
FLASH_BUSY_ERASING | if there is an erase operation in progress. |
FLASH_ERROR_PROGRAM | if the program operation failed. |
FLASH_ERROR_HW_FAILURE | if access to the memory failed. |
Definition at line 286 of file hal_flash.h.
#define flashStartEraseAll | ( | ip | ) | (ip)->vmt->start_erase_all(ip) |
Starts a whole-device erase operation.
[in] | ip | pointer to a BaseFlash or derived class |
FLASH_NO_ERROR | if there is no erase operation in progress. |
FLASH_BUSY_ERASING | if there is an erase operation in progress. |
FLASH_ERROR_HW_FAILURE | if access to the memory failed. |
Definition at line 300 of file hal_flash.h.
#define flashStartEraseSector | ( | ip, | |
sector | |||
) | (ip)->vmt->start_erase_sector(ip, sector) |
Starts an sector erase operation.
[in] | ip | pointer to a BaseFlash or derived class |
[in] | sector | sector to be erased |
FLASH_NO_ERROR | if there is no erase operation in progress. |
FLASH_BUSY_ERASING | if there is an erase operation in progress. |
FLASH_ERROR_HW_FAILURE | if access to the memory failed. |
Definition at line 315 of file hal_flash.h.
#define flashQueryErase | ( | ip, | |
msec | |||
) | (ip)->vmt->query_erase(ip, msec) |
Queries the driver for erase operation progress.
[in] | ip | pointer to a BaseFlash or derived class |
[out] | msec | recommended time, in milliseconds, that should be spent before calling this function again, can be NULL |
FLASH_NO_ERROR | if there is no erase operation in progress. |
FLASH_BUSY_ERASING | if there is an erase operation in progress. |
FLASH_ERROR_ERASE | if the erase operation failed. |
FLASH_ERROR_HW_FAILURE | if access to the memory failed. |
Definition at line 333 of file hal_flash.h.
#define flashVerifyErase | ( | ip, | |
sector | |||
) | (ip)->vmt->verify_erase(ip, sector) |
Returns the erase state of a sector.
[in] | ip | pointer to a BaseFlash or derived class |
[in] | sector | sector to be verified |
FLASH_NO_ERROR | if the sector is erased. |
FLASH_BUSY_ERASING | if there is an erase operation in progress. |
FLASH_ERROR_VERIFY | if the verify operation failed. |
FLASH_ERROR_HW_FAILURE | if access to the memory failed. |
Definition at line 349 of file hal_flash.h.
typedef uint32_t flash_offset_t |
Type of a flash offset.
Definition at line 113 of file hal_flash.h.
typedef uint32_t flash_sector_t |
Type of a flash sector number.
Definition at line 118 of file hal_flash.h.
enum flash_state_t |
Driver state machine possible states.
Definition at line 87 of file hal_flash.h.
enum flash_error_t |
Type of a flash error code.
Definition at line 99 of file hal_flash.h.
flash_error_t flashWaitErase | ( | BaseFlash * | devp | ) |
Waits until the current erase operation is finished.
[in] | devp | pointer to a BaseFlash object |
FLASH_NO_ERROR | if there is no erase operation in progress. |
FLASH_ERROR_ERASE | if the erase operation failed. |
FLASH_ERROR_HW_FAILURE | if access to the memory failed. |
Definition at line 59 of file hal_flash.c.
References flashQueryErase.
flash_offset_t flashGetSectorOffset | ( | BaseFlash * | devp, |
flash_sector_t | sector | ||
) |
Returns the offset of a sector.
[in] | devp | pointer to a BaseFlash object |
[in] | sector | flash sector number |
Definition at line 84 of file hal_flash.c.
References flashGetDescriptor, flash_sector_descriptor_t::offset, osalDbgAssert, flash_descriptor_t::sectors, and flash_descriptor_t::sectors_size.
uint32_t flashGetSectorSize | ( | BaseFlash * | devp, |
flash_sector_t | sector | ||
) |
Returns the size of a sector.
[in] | devp | pointer to a BaseFlash object |
[in] | sector | flash sector number |
Definition at line 109 of file hal_flash.c.
References flashGetDescriptor, osalDbgAssert, flash_descriptor_t::sectors, flash_descriptor_t::sectors_size, and flash_sector_descriptor_t::size.