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_TypeDefNORFLASH_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]addrThe 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]addrAddress 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]addrThe first address in the flash to be programmed.
[in]dataPointer to the data to be programmed.
[in]countNumber 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]addrThe address to be programmed.
[in]dataThe 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]addrThe address to be programmed.
[in]dataThe 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]addrThe address to be programmed.
[in]dataThe 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.