NORFlash

Detailed Description

Driver for Spanion S29GL128P90FFIR13 and S29GL064N NOR Flash devices.

The NORFlash driver implements a common API for different types of NOR Flash devices. The current version of the driver is implemented based on Spanion S29GL128P90FFIR13 and S29GL064N (model 3). This driver supports non-uniform sectored flash architecture devices that has a top/bottom sector which is divided into a smaller sectors. Spansion S29GL128P90FFIR13 is a 16MByte device organized in 128 sectors of 128KBytes each. S29GL064N (model 3) is using boot sectored flash architecture and is organized in 127 sectors of 64KBytes each, in addition to a top 8-8 Kbyte sectors. The module can easily be modified to suit other NOR Flash devices.

Data Structures

struct NORFLASH_Info_TypeDef
NORFLASH device information struct.

Enumerations

enum NORFLASH_Status_TypeDef {
NORFLASH_STATUS_OK = 0,
NORFLASH_UNSUPPORTED_DEVICE = -1,
NORFLASH_NOT_CFI_DEVICE = -2,
NORFLASH_WRITE_FAILURE = -3,
NORFLASH_WRITE_TIMEOUT = -4,
NORFLASH_INVALID_ADDRESS = -5,
NORFLASH_MISALIGNED_ADDRESS = -6
}
NORFlash status enumerator.

Functions

bool NORFLASH_AddressValid (uint32_t addr)
Check if an address is valid for the flash device.
NORFLASH_Info_TypeDef * NORFLASH_DeviceInfo (void)
Return a pointer to a NORFLASH_Info_TypeDef , which contain vital flash device information.
int NORFLASH_EraseDevice (void)
Erase entire flash device.
int NORFLASH_EraseSector (uint32_t addr)
Erase a sector in the flash device.
int NORFLASH_Init (void)
Initialize the NORFLASH module.
int NORFLASH_Program (uint32_t addr, uint8_t *data, uint32_t count)
Program the flash device.
int NORFLASH_ProgramByte (uint32_t addr, uint8_t data)
Program a single byte in the flash device.
int NORFLASH_ProgramWord16 (uint32_t addr, uint16_t data)
Program a word (16bit) in the flash device.
int NORFLASH_ProgramWord32 (uint32_t addr, uint32_t data)
Program a word (32bit) in the flash device.

Enumeration Type Documentation

NORFlash status enumerator.

Enumerator
NORFLASH_STATUS_OK

No errors detected.

NORFLASH_UNSUPPORTED_DEVICE

The flash is not supported by the driver.

NORFLASH_NOT_CFI_DEVICE

The flash is not CFI compliant.

NORFLASH_WRITE_FAILURE

Flash write/erase failure.

NORFLASH_WRITE_TIMEOUT

Flash write/erase timeout.

NORFLASH_INVALID_ADDRESS

Invalid flash address.

NORFLASH_MISALIGNED_ADDRESS

Misaligned flash word address.

Definition at line 52 of file norflash.h .

Function Documentation

bool NORFLASH_AddressValid ( uint32_t addr )

Check if an address is valid for the flash device.

Parameters
[in] addr The address value to check.
Returns
True if address value is valid, false otherwise.

Definition at line 84 of file norflash.c .

References NORFLASH_Info_TypeDef::baseAddress , NORFLASH_Info_TypeDef::deviceSize , and NORFLASH_STATUS_OK .

Referenced by NORFLASH_EraseSector() , NORFLASH_Program() , and NORFLASH_ProgramWord16() .

NORFLASH_Info_TypeDef * NORFLASH_DeviceInfo ( void )

Return a pointer to a NORFLASH_Info_TypeDef , which contain vital flash device information.

Returns
NULL if unable to initialize the flash if no prior call to NORFLASH_Init() has been made. Pointer to a NORFLASH_Info_TypeDef on success.

Definition at line 110 of file norflash.c .

References NORFLASH_STATUS_OK .

int NORFLASH_EraseDevice ( void )

Erase entire flash device.

Returns
NORFLASH_STATUS_OK on success, an error code enumerated in NORFLASH_Status_TypeDef on failure.

Definition at line 129 of file norflash.c .

References NORFLASH_Info_TypeDef::baseAddress , and NORFLASH_STATUS_OK .

int NORFLASH_EraseSector ( uint32_t addr )

Erase a sector in the flash device.

Parameters
[in] addr Address of the sector to erase.
Returns
NORFLASH_STATUS_OK on success, an error code enumerated in NORFLASH_Status_TypeDef on failure.

Definition at line 162 of file norflash.c .

References NORFLASH_Info_TypeDef::bootSectorSize , NORFLASH_AddressValid() , NORFLASH_INVALID_ADDRESS , NORFLASH_STATUS_OK , and NORFLASH_Info_TypeDef::sectorSize .

int NORFLASH_Init ( void )

Initialize the NORFLASH module.

Note
This function should be called before any other NORFLASH_xxx() functions are used.
Returns
NORFLASH_STATUS_OK on success, an error code enumerated in NORFLASH_Status_TypeDef on failure.

Definition at line 209 of file norflash.c .

int NORFLASH_Program ( uint32_t addr,
uint8_t * data,
uint32_t count
)

Program the flash device.

Note
It is assumed that the area to be programmed is erased.
Parameters
[in] addr The first address in the flash to be programmed.
[in] data Pointer to the data to be programmed.
[in] count Number of bytes to be programmed.
Returns
NORFLASH_STATUS_OK on success, an error code enumerated in NORFLASH_Status_TypeDef on failure.

Definition at line 234 of file norflash.c .

References NORFLASH_Info_TypeDef::bootSectorSize , NORFLASH_AddressValid() , NORFLASH_INVALID_ADDRESS , NORFLASH_ProgramByte() , NORFLASH_ProgramWord16() , NORFLASH_STATUS_OK , NORFLASH_Info_TypeDef::sectorSize , SL_MIN , and NORFLASH_Info_TypeDef::writeBufferSize .

int NORFLASH_ProgramByte ( uint32_t addr,
uint8_t data
)

Program a single byte in the flash device.

Note
It is assumed that the area to be programmed is erased.
Parameters
[in] addr The address to be programmed.
[in] data The byte value to be programmed.
Returns
NORFLASH_STATUS_OK on success, an error code enumerated in NORFLASH_Status_TypeDef on failure.

Definition at line 329 of file norflash.c .

References NORFLASH_ProgramWord16() .

Referenced by NORFLASH_Program() .

int NORFLASH_ProgramWord16 ( uint32_t addr,
uint16_t data
)

Program a word (16bit) in the flash device.

Note
It is assumed that the area to be programmed is erased.
Parameters
[in] addr The address to be programmed.
[in] data The word value to be programmed.
Returns
NORFLASH_STATUS_OK on success, an error code enumerated in NORFLASH_Status_TypeDef on failure.

Definition at line 360 of file norflash.c .

References NORFLASH_AddressValid() , NORFLASH_INVALID_ADDRESS , NORFLASH_MISALIGNED_ADDRESS , and NORFLASH_STATUS_OK .

Referenced by NORFLASH_Program() , NORFLASH_ProgramByte() , and NORFLASH_ProgramWord32() .

int NORFLASH_ProgramWord32 ( uint32_t addr,
uint32_t data
)

Program a word (32bit) in the flash device.

Note
It is assumed that the area to be programmed is erased.
Parameters
[in] addr The address to be programmed.
[in] data The word value to be programmed.
Returns
NORFLASH_STATUS_OK on success, an error code enumerated in NORFLASH_Status_TypeDef on failure.

Definition at line 407 of file norflash.c .

References NORFLASH_MISALIGNED_ADDRESS , NORFLASH_ProgramWord16() , and NORFLASH_STATUS_OK .