at49bv.c File Reference


Detailed Description

Routines for Atmel AT49 flash memory chips.

 *
 * $Log: at49bv.c,v $
 * 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.

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_tflashptr_t

Functions

unsigned long At49bvInit (void)
unsigned long long AT49bvReadProtectionRegister (int factory)
 Read user or factory id from protection register.
int At49bvSectorErase (u_int off)
 Erase sector at the specified offset.
int At49bvChipErase (void)
 Erase entire flash memory chip.
int At49bvSectorRead (u_int off, void *data, u_int len)
 Read data from flash memory.
int At49bvSectorWrite (u_int off, CONST void *data, u_int len)
 Write data into flash memory.
int At49bvParamRead (u_int pos, void *data, u_int len)
 Load configuration parameters from flash memory.
int At49bvParamWrite (u_int pos, CONST void *data, u_int len)
 Store configuration parameters in flash memory.


Define Documentation

#define FLASH_CHIP_BASE   0x10000000

Base address of the flash memory chip.

Definition at line 74 of file at49bv.c.

#define FLASH_CONF_SECTOR   0x6000

Address offset of the configuration sector.

Definition at line 80 of file at49bv.c.

#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 91 of file at49bv.c.

#define FLASH_ERASE_WAIT   3000

Definition at line 95 of file at49bv.c.

#define FLASH_CHIP_ERASE_WAIT   50000

Definition at line 99 of file at49bv.c.

#define FLASH_WRITE_POLLS   1000

Definition at line 103 of file at49bv.c.

Referenced by At49bvSectorWrite().

#define FLASH_UNLOCK ( base   ) 

Value:

{ \
    base[0x0555] = 0xAA; \
    base[0x0AAA] = 0x55; \
}

Definition at line 118 of file at49bv.c.

Referenced by At49bvChipErase(), At49bvInit(), AT49bvReadProtectionRegister(), At49bvSectorErase(), and At49bvSectorWrite().

#define FLASH_COMMAND ( base,
cmd   ) 

Value:

{ \
    base[0x0555] = cmd; \
}

Definition at line 123 of file at49bv.c.

Referenced by At49bvChipErase(), At49bvInit(), AT49bvReadProtectionRegister(), At49bvSectorErase(), and At49bvSectorWrite().

#define FLASH_CMD_ERASE   0x80

Definition at line 127 of file at49bv.c.

Referenced by At49bvChipErase(), and At49bvSectorErase().

#define FLASH_CMD_ERASE_CHIP   0x10

Definition at line 128 of file at49bv.c.

Referenced by At49bvChipErase().

#define FLASH_CMD_ERASE_SECTOR   0x30

Definition at line 129 of file at49bv.c.

Referenced by At49bvSectorErase().

#define FLASH_CMD_ENTER_ID   0x90

Definition at line 131 of file at49bv.c.

Referenced by At49bvInit(), and AT49bvReadProtectionRegister().

#define FLASH_CMD_EXIT_ID   0xF0

Definition at line 132 of file at49bv.c.

Referenced by At49bvInit(), and AT49bvReadProtectionRegister().

#define FLASH_CMD_PROGRAM   0xA0

Definition at line 134 of file at49bv.c.

Referenced by At49bvSectorWrite().


Typedef Documentation

typedef unsigned short flashdat_t

Definition at line 110 of file at49bv.c.

typedef unsigned long flashadr_t

Definition at line 113 of file at49bv.c.

typedef volatile flashdat_t* flashptr_t

Definition at line 114 of file at49bv.c.


Function Documentation

unsigned long At49bvInit ( void   ) 

Definition at line 157 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.

Parameters:
factory If true, read factory id, otherwise read user id
Returns:
The ID read, 64 bit long!

Definition at line 178 of file at49bv.c.

References FLASH_CMD_ENTER_ID, FLASH_CMD_EXIT_ID, FLASH_COMMAND, and FLASH_UNLOCK.

int At49bvSectorErase ( u_int  off  ) 

Erase sector at the specified offset.

Definition at line 210 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 225 of file at49bv.c.

References FLASH_CHIP_ERASE_WAIT, FLASH_CMD_ERASE, FLASH_CMD_ERASE_CHIP, FLASH_COMMAND, and FLASH_UNLOCK.

int At49bvSectorRead ( u_int  off,
void *  data,
u_int  len 
)

Read data from flash memory.

Parameters:
off Start location within the chip, starting at 0.
data Points to a buffer that receives the data.
len Number of bytes to read.
Returns:
0 on success or -1 in case of an error.

Definition at line 244 of file at49bv.c.

References FLASH_CHIP_BASE, and memcpy().

Referenced by At49bvParamRead(), and At49bvParamWrite().

int At49bvSectorWrite ( u_int  off,
CONST void *  data,
u_int  len 
)

Write data into flash memory.

The related sector must have been erased before calling this function.

Parameters:
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.
Returns:
0 on success or -1 in case of an error.

Definition at line 262 of file at49bv.c.

References FLASH_CHIP_BASE, FLASH_CMD_PROGRAM, FLASH_COMMAND, FLASH_UNLOCK, and FLASH_WRITE_POLLS.

Referenced by At49bvParamWrite().

int At49bvParamRead ( u_int  pos,
void *  data,
u_int  len 
)

Load configuration parameters from flash memory.

Parameters:
pos Start location within configuration sector.
data Points to a buffer that receives the contents.
len Number of bytes to read.
Returns:
Always 0.

Definition at line 295 of file at49bv.c.

References At49bvSectorRead(), and FLASH_CONF_SECTOR.

Referenced by NutNvMemLoad().

int At49bvParamWrite ( u_int  pos,
CONST void *  data,
u_int  len 
)

Store configuration parameters in flash memory.

Parameters:
pos Start location within configuration sector.
data Points to a buffer that contains the bytes to store.
len Number of bytes to store.
Returns:
0 on success or -1 in case of an error.

Definition at line 309 of file at49bv.c.

References At49bvSectorErase(), At49bvSectorRead(), At49bvSectorWrite(), FLASH_CONF_SECTOR, FLASH_CONF_SIZE, free, malloc, memcmp(), and memcpy().

Referenced by NutNvMemSave().


© 2000-2007 by egnite Software GmbH - visit http://www.ethernut.de/