Added support for FRAM and added some defines for save sizes

This commit is contained in:
normmatt234 2006-11-13 07:26:03 +00:00
parent eba2abe57a
commit 248521cd2b
2 changed files with 33 additions and 0 deletions

View File

@ -18,6 +18,15 @@
#define BM_CMD_WRITEHIGH 0xA
#define BM_CMD_READHIGH 0xB
/* FLASH*/
#define COMM_PAGE_WRITE 0x0A
#define COMM_PAGE_ERASE 0xDB
#define COMM_SECTOR_ERASE 0xD8
#define COMM_CHIP_ERASE 0xC7
#define CARDFLASH_READ_BYTES_FAST 0x0B /* Not used*/
#define CARDFLASH_DEEP_POWDOWN 0xB9 /* Not used*/
#define CARDFLASH_WAKEUP 0xAB /* Not used*/
void mc_init(memory_chip_t *mc, int type)
{
mc->com = 0;
@ -35,6 +44,7 @@ void mc_init(memory_chip_t *mc, int type)
mc->addr_size = 1;
break;
case MC_TYPE_EEPROM2:
case MC_TYPE_FRAM:
mc->addr_size = 2;
break;
case MC_TYPE_FLASH:
@ -48,6 +58,14 @@ u8 *mc_alloc(memory_chip_t *mc, u32 size)
{
u8 *buffer;
buffer = malloc(size);
//Experimental code
/*
if(size<MC_SIZE_64KBITS) mc->type=MC_TYPE_EEPROM1; mc->addr_size = 1;
else if((size>MC_SIZE_64KBITS)&&(size<=MC_SIZE_512KBITS)) mc->type=MC_TYPE_EEPROM2; mc->addr_size = 2;
else if((size>MC_SIZE_1MBITS)&&(size<MC_SIZE_64MBITS)) mc->type=MC_TYPE_FLASH; mc->addr_size = 3;
*/
if(!buffer) { return NULL; }
mc->data = buffer;
mc->size = size;
@ -161,6 +179,7 @@ u8 bm_transfer(memory_chip_t *mc, u8 data)
case BM_CMD_READLOW:
if(mc->addr < mc->size) /* check if we can read */
{
//LOG("Read Backup Memory addr %08X(%02X)\n", mc->addr, mc->data[mc->addr]);
data = mc->data[mc->addr]; /* return byte */
mc->addr++; /* then increment address */
}
@ -169,6 +188,7 @@ u8 bm_transfer(memory_chip_t *mc, u8 data)
case BM_CMD_WRITELOW:
if(mc->addr < mc->size)
{
//LOG("Write Backup Memory addr %08X with %02X\n", mc->addr, data);
mc->data[mc->addr] = data; /* write byte */
mc->addr++;
}
@ -179,6 +199,7 @@ u8 bm_transfer(memory_chip_t *mc, u8 data)
}
else if(mc->com == BM_CMD_READSTATUS)
{
//LOG("Backup Memory Read Status: %02X\n", mc->writeable_buffer << 1);
return (mc->writeable_buffer << 1);
}
else /* finally, check if it's a new command */

View File

@ -11,6 +11,18 @@ extern "C" {
#define MC_TYPE_EEPROM1 0x1
#define MC_TYPE_EEPROM2 0x2
#define MC_TYPE_FLASH 0x3
#define MC_TYPE_FRAM 0x4
#define MC_SIZE_4KBITS 0x000200
#define MC_SIZE_64KBITS 0x002000
#define MC_SIZE_256KBITS 0x008000
#define MC_SIZE_512KBITS 0x010000
#define MC_SIZE_1MBITS 0x020000
#define MC_SIZE_2MBITS 0x040000
#define MC_SIZE_4MBITS 0x080000
#define MC_SIZE_8MBITS 0x100000
#define MC_SIZE_16MBITS 0x200000
#define MC_SIZE_64MBITS 0x800000
typedef struct
{