/* ----------------------------------------------------------------------------- * Copyright (c) 2014 ARM Ltd. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from * the use of this software. Permission is granted to anyone to use this * software for any purpose, including commercial applications, and to alter * it and redistribute it freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software in * a product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * * 3. This notice may not be removed or altered from any source distribution. * * * $Date: 14. Jan 2014 * $Revision: V1.00 * * Project: FlashOS Headerfile for Flash drivers * --------------------------------------------------------------------------- */ /* History: * Version 1.00 * Initial release */ #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);