/***********************************************************************/ /* This file is part of the ARM Toolchain package */ /* Copyright KEIL ELEKTRONIK GmbH 2003 - 2007 */ /***********************************************************************/ /* */ /* FlashOS.H: Data structures and entries */ /* for Flash Programming Functions */ /* */ /***********************************************************************/ #define VERS 1 // Interface Version 1.01 #define UNKNOWN 0 // Unknown #define ONCHIP 1 // On-chip Flash Memory #define EXT8BIT 2 // External Flash Device on 8-bit Bus #define EXT16BIT 3 // External Flash Device on 16-bit Bus #define EXT32BIT 4 // External Flash Device on 32-bit Bus #define EXTSPI 5 // External Flash Device on SPI #define SECTOR_NUM 512 // Max Number of Sector Items #define PAGE_MAX 65536 // Max Page Size for Programming struct FlashSectors { unsigned long szSector; // Sector Size in Bytes unsigned long AddrSector; // Address of Sector }; #define SECTOR_END 0xFFFFFFFF, 0xFFFFFFFF struct FlashDevice { unsigned short Vers; // Version Number and Architecture char DevName[128]; // Device Name and Description unsigned short DevType; // Device Type: ONCHIP, EXT8BIT, EXT16BIT, ... unsigned long DevAdr; // Default Device Start Address unsigned long szDev; // Total Size of Device unsigned long szPage; // Programming Page Size unsigned long Res; // Reserved for future Extension unsigned char valEmpty; // Content of Erased Memory unsigned long toProg; // Time Out of Program Page Function unsigned long toErase; // Time Out of Erase Sector Function struct FlashSectors sectors[SECTOR_NUM]; }; #define FLASH_DRV_VERS (0x0100 + VERS) // Driver Version, do not modify! // Flash Programming Functions (Called by FlashOS) extern int Init(unsigned long adr, // Initialize Flash unsigned long clk, unsigned long fnc); extern int UnInit(unsigned long fnc); // De-initialize Flash extern int BlankCheck(unsigned long adr, // Blank Check unsigned long sz, unsigned char pat); extern int EraseChip(void); // Erase complete Device extern int EraseSector(unsigned long adr); // Erase Sector Function extern int ProgramPage(unsigned long adr, // Program Page Function unsigned long sz, unsigned char *buf); extern unsigned long Verify(unsigned long adr, // Verify Function unsigned long sz, unsigned char *buf);