mirror of
				https://github.com/IcedRooibos/py32f0-template.git
				synced 2025-10-31 01:42:04 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* -----------------------------------------------------------------------------
 | |
|  * 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);
 | 
