| Example |
/* Embedded Flash Device Driver Control Block */
EFS_DRV fl0_drv = {
Init,
UnInit,
ReadData,
ProgramPage,
EraseSector,
EraseChip
};
/* Erase Sector in Flash Memory. */
static BOOL EraseSector (U32 adr) {
U32 fsreg;
M16(base_adr | 0xAAA) = 0xAA;
M16(base_adr | 0x554) = 0x55;
M16(base_adr | 0xAAA) = ERASE;
M16(base_adr | 0xAAA) = 0xAA;
M16(base_adr | 0x554) = 0x55;
M16(adr) = ERA_SECT;
do { /* Wait for Sector Erase Timeout. */
fsreg = M16(adr);
} while ((fsreg & DQ3) < DQ3);
return (Q6Polling (adr)); /* Wait until Erase Completed */
}
|