#define uchar unsigned char #define uint unsigned int #define ushort unsigned short #define ulong unsigned long #define TOGGLE_MASK1 0x40 #define TOGGLE_MASK2 0x20 #define FIRST_CMD 0xaa #define SECOND_CMD 0x55 #define POLL_MASK1 0x80 #define POLL_MASK2 0x20 #define PROGRAM_CMD 0xA0 #define ERASE_CMD 0x80 #define ERASE_ALL_CMD 0x10 #define ERASE_SEC_CMD 0x30 #define ID_CMD 0x90 #define RESET_CMD 0xf0 #define FPROGRAM 0 #define FERASEALL 1 #define FERASESEC 2 #define FREADID 3 #define BASE_ADDRESS 0x8000000UL // Flash Start address #define BUFFER_SIZE 0x2000 typedef struct { ulong Command; ulong Result; ulong Reserved1[4]; ulong Reserved2; ulong TargetAddr; ulong Length; ulong Reserved3; ulong Reserved4; ulong Reserved5; ulong Reserved6; ulong Reserved7; ulong Reserved8; uchar Buf[BUFFER_SIZE]; } FLASH_INFO; #define __NOP __nop // flash.c extern void Program(void); extern void EraseAll(void); extern void EraseSector(void); extern void ReadChipID(void); extern int BlankCheck(ulong targetAddr,ulong targetSize); extern int Verification(ulong targetAddr, ulong limit, ulong srcAddr); extern int OneSectorErase(ulong targetAddr); extern void Main(void); extern int Wait(ulong tAddr); extern void dummy(void);