Routines for Atmel AT49 flash memory chips. More...
#include <cfg/os.h>
#include <cfg/memory.h>
#include <sys/event.h>
#include <sys/timer.h>
#include <stdlib.h>
#include <string.h>
#include <dev/at49bv.h>
Go to the source code of this file.
Defines | |
#define | FLASH_CHIP_BASE 0x10000000 |
Base address of the flash memory chip. | |
#define | FLASH_CONF_SECTOR 0x6000 |
Address offset of the configuration sector. | |
#define | FLASH_CONF_SIZE 512 |
Size of the configuration area. | |
#define | FLASH_ERASE_WAIT 3000 |
#define | FLASH_CHIP_ERASE_WAIT 50000 |
#define | FLASH_WRITE_POLLS 1000 |
#define | FLASH_UNLOCK(base) |
#define | FLASH_COMMAND(base, cmd) |
#define | FLASH_CMD_ERASE 0x80 |
#define | FLASH_CMD_ERASE_CHIP 0x10 |
#define | FLASH_CMD_ERASE_SECTOR 0x30 |
#define | FLASH_CMD_ENTER_ID 0x90 |
#define | FLASH_CMD_EXIT_ID 0xF0 |
#define | FLASH_CMD_PROGRAM 0xA0 |
Typedefs | |
typedef unsigned short | flashdat_t |
typedef unsigned long | flashadr_t |
typedef volatile flashdat_t * | flashptr_t |
Functions | |
unsigned long | At49bvInit (void) |
unsigned long long | AT49bvReadProtectionRegister (int factory) |
Read user or factory id from protection register. | |
int | At49bvSectorErase (unsigned int off) |
Erase sector at the specified offset. | |
int | At49bvChipErase (void) |
Erase entire flash memory chip. | |
int | At49bvSectorRead (unsigned int off, void *data, unsigned int len) |
Read data from flash memory. | |
int | At49bvSectorWrite (unsigned int off, CONST void *data, unsigned int len) |
Write data into flash memory. | |
int | At49bvParamRead (unsigned int pos, void *data, unsigned int len) |
Load configuration parameters from flash memory. | |
int | At49bvParamWrite (unsigned int pos, CONST void *data, unsigned int len) |
Store configuration parameters in flash memory. |
Routines for Atmel AT49 flash memory chips.
* * $Log$ * Revision 1.6 2009/01/17 11:26:46 haraldkipp * Getting rid of two remaining BSD types in favor of stdint. * Replaced 'u_int' by 'unsinged int' and 'uptr_t' by 'uintptr_t'. * * Revision 1.5 2008/08/11 06:59:41 haraldkipp * BSD types replaced by stdint types (feature request #1282721). * * Revision 1.4 2008/07/17 11:51:18 olereinhardt * Added function AT49bvReadProtectionRegister to read the 64bit factory * or user id * * Revision 1.3 2006/10/08 16:48:09 haraldkipp * Documentation fixed * * Revision 1.2 2006/05/25 09:33:35 haraldkipp * Bugfix. At49bvParamWrite() returned an error when flash sector contents * was equal to the contents to write. * * Revision 1.1 2006/04/07 13:51:36 haraldkipp * AT49BV flash memory support added. A single sector may be used to * store system configurations in case there is no EEPROM available. * * *
Definition in file at49bv.c.
#define FLASH_CHIP_BASE 0x10000000 |
Base address of the flash memory chip.
Definition at line 81 of file at49bv.c.
Referenced by At49bvSectorErase(), At49bvSectorRead(), At49bvSectorWrite(), and ShowHardwareConfiguration().
#define FLASH_CONF_SECTOR 0x6000 |
Address offset of the configuration sector.
Definition at line 87 of file at49bv.c.
Referenced by At49bvParamRead(), and At49bvParamWrite().
#define FLASH_CONF_SIZE 512 |
Size of the configuration area.
During write operations a buffer with this size is allocated from heap and may cause memory problems with large sectors. Thus, this value may be less than the size of the configuration sector, in which case the rest of the sector is unused.
Definition at line 98 of file at49bv.c.
Referenced by At49bvParamWrite().
#define FLASH_ERASE_WAIT 3000 |
Definition at line 102 of file at49bv.c.
Referenced by At49bvSectorErase().
#define FLASH_CHIP_ERASE_WAIT 50000 |
Definition at line 106 of file at49bv.c.
Referenced by At49bvChipErase().
#define FLASH_WRITE_POLLS 1000 |
Definition at line 110 of file at49bv.c.
Referenced by At49bvSectorWrite().
#define FLASH_UNLOCK | ( | base | ) |
{ \ base[0x0555] = 0xAA; \ base[0x0AAA] = 0x55; \ }
Definition at line 125 of file at49bv.c.
Referenced by At49bvChipErase(), At49bvInit(), AT49bvReadProtectionRegister(), At49bvSectorErase(), and At49bvSectorWrite().
#define FLASH_COMMAND | ( | base, | |
cmd | |||
) |
{ \ base[0x0555] = cmd; \ }
Definition at line 130 of file at49bv.c.
Referenced by At49bvChipErase(), At49bvInit(), AT49bvReadProtectionRegister(), At49bvSectorErase(), and At49bvSectorWrite().
#define FLASH_CMD_ERASE 0x80 |
Definition at line 134 of file at49bv.c.
Referenced by At49bvChipErase(), and At49bvSectorErase().
#define FLASH_CMD_ERASE_CHIP 0x10 |
Definition at line 135 of file at49bv.c.
Referenced by At49bvChipErase().
#define FLASH_CMD_ERASE_SECTOR 0x30 |
Definition at line 136 of file at49bv.c.
Referenced by At49bvSectorErase().
#define FLASH_CMD_ENTER_ID 0x90 |
Definition at line 138 of file at49bv.c.
Referenced by At49bvInit(), and AT49bvReadProtectionRegister().
#define FLASH_CMD_EXIT_ID 0xF0 |
Definition at line 139 of file at49bv.c.
Referenced by At49bvInit(), and AT49bvReadProtectionRegister().
#define FLASH_CMD_PROGRAM 0xA0 |
Definition at line 141 of file at49bv.c.
Referenced by At49bvSectorWrite().
typedef unsigned short flashdat_t |
typedef unsigned long flashadr_t |
typedef volatile flashdat_t* flashptr_t |
unsigned long At49bvInit | ( | void | ) |
Definition at line 164 of file at49bv.c.
References FLASH_CMD_ENTER_ID, FLASH_CMD_EXIT_ID, FLASH_COMMAND, and FLASH_UNLOCK.
unsigned long long AT49bvReadProtectionRegister | ( | int | factory | ) |
Read user or factory id from protection register.
factory | If true, read factory id, otherwise read user id |
Definition at line 185 of file at49bv.c.
References FLASH_CMD_ENTER_ID, FLASH_CMD_EXIT_ID, FLASH_COMMAND, and FLASH_UNLOCK.
int At49bvSectorErase | ( | unsigned int | off | ) |
Erase sector at the specified offset.
Definition at line 217 of file at49bv.c.
References FLASH_CHIP_BASE, FLASH_CMD_ERASE, FLASH_CMD_ERASE_SECTOR, FLASH_COMMAND, FLASH_ERASE_WAIT, and FLASH_UNLOCK.
Referenced by At49bvParamWrite().
int At49bvChipErase | ( | void | ) |
Erase entire flash memory chip.
Definition at line 232 of file at49bv.c.
References FLASH_CHIP_ERASE_WAIT, FLASH_CMD_ERASE, FLASH_CMD_ERASE_CHIP, FLASH_COMMAND, and FLASH_UNLOCK.
int At49bvSectorRead | ( | unsigned int | off, |
void * | data, | ||
unsigned int | len | ||
) |
Read data from flash memory.
off | Start location within the chip, starting at 0. |
data | Points to a buffer that receives the data. |
len | Number of bytes to read. |
Definition at line 251 of file at49bv.c.
References FLASH_CHIP_BASE, and memcpy().
Referenced by At49bvParamRead(), and At49bvParamWrite().
int At49bvSectorWrite | ( | unsigned int | off, |
CONST void * | data, | ||
unsigned int | len | ||
) |
Write data into flash memory.
The related sector must have been erased before calling this function.
off | Start location within the chip, starting at 0. |
data | Points to a buffer that contains the bytes to be written. |
len | Number of bytes to write. |
Definition at line 269 of file at49bv.c.
References FLASH_CHIP_BASE, FLASH_CMD_PROGRAM, FLASH_COMMAND, FLASH_UNLOCK, and FLASH_WRITE_POLLS.
Referenced by At49bvParamWrite().
int At49bvParamRead | ( | unsigned int | pos, |
void * | data, | ||
unsigned int | len | ||
) |
Load configuration parameters from flash memory.
pos | Start location within configuration sector. |
data | Points to a buffer that receives the contents. |
len | Number of bytes to read. |
Definition at line 302 of file at49bv.c.
References At49bvSectorRead(), and FLASH_CONF_SECTOR.
Referenced by NutNvMemLoad().
int At49bvParamWrite | ( | unsigned int | pos, |
CONST void * | data, | ||
unsigned int | len | ||
) |
Store configuration parameters in flash memory.
pos | Start location within configuration sector. |
data | Points to a buffer that contains the bytes to store. |
len | Number of bytes to store. |
Definition at line 316 of file at49bv.c.
References At49bvSectorErase(), At49bvSectorRead(), At49bvSectorWrite(), FLASH_CONF_SECTOR, FLASH_CONF_SIZE, free(), malloc(), memcmp(), and memcpy().
Referenced by NutNvMemSave().