externC bool flash_code_overlaps(void *start, void *end);
externC char *flash_errmsg(int err);
-#define FLASH_ERR_OK 0x00 // No error - operation complete
-#define FLASH_ERR_INVALID 0x01 // Invalid FLASH address
-#define FLASH_ERR_ERASE 0x02 // Error trying to erase
-#define FLASH_ERR_LOCK 0x03 // Error trying to lock/unlock
-#define FLASH_ERR_PROGRAM 0x04 // Error trying to program
-#define FLASH_ERR_PROTOCOL 0x05 // Generic error
-#define FLASH_ERR_PROTECT 0x06 // Device/region is write-protected
-#define FLASH_ERR_NOT_INIT 0x07 // FLASH info not yet initialized
-#define FLASH_ERR_HWR 0x08 // Hardware (configuration?) problem
-#define FLASH_ERR_ERASE_SUSPEND 0x09 // Device is in erase suspend mode
-#define FLASH_ERR_PROGRAM_SUSPEND 0x0a // Device is in in program suspend mode
-#define FLASH_ERR_DRV_VERIFY 0x0b // Driver failed to verify data
-#define FLASH_ERR_DRV_TIMEOUT 0x0c // Driver timed out waiting for device
-#define FLASH_ERR_DRV_WRONG_PART 0x0d // Driver does not support device
-#define FLASH_ERR_LOW_VOLTAGE 0x0e // Not enough juice to complete job
+#define FLASH_ERR_OK 0x00 // No error - operation complete
+#define FLASH_ERR_INVALID 0x01 // Invalid FLASH address
+#define FLASH_ERR_ERASE 0x02 // Error trying to erase
+#define FLASH_ERR_LOCK 0x03 // Error trying to lock/unlock
+#define FLASH_ERR_PROGRAM 0x04 // Error trying to program
+#define FLASH_ERR_PROTOCOL 0x05 // Generic error
+#define FLASH_ERR_PROTECT 0x06 // Device/region is write-protected
+#define FLASH_ERR_NOT_INIT 0x07 // FLASH info not yet initialized
+#define FLASH_ERR_HWR 0x08 // Hardware (configuration?) problem
+#define FLASH_ERR_ERASE_SUSPEND 0x09 // Device is in erase suspend mode
+#define FLASH_ERR_PROGRAM_SUSPEND 0x0a // Device is in in program suspend mode
+#define FLASH_ERR_DRV_VERIFY 0x0b // Driver failed to verify data
+#define FLASH_ERR_DRV_TIMEOUT 0x0c // Driver timed out waiting for device
+#define FLASH_ERR_DRV_WRONG_PART 0x0d // Driver does not support device
+#define FLASH_ERR_LOW_VOLTAGE 0x0e // Not enough juice to complete job
#ifdef CYGPKG_IO_FLASH_BLOCK_DEVICE
typedef struct {
- CYG_ADDRESS offset;
- int len;
- int flasherr;
- void **err_address;
+ CYG_ADDRESS offset;
+ int len;
+ int flasherr;
+ void **err_address;
} cyg_io_flash_getconfig_erase_t;
typedef struct {
- int dev_size;
+ int dev_size;
} cyg_io_flash_getconfig_devsize_t;
typedef struct {
- CYG_ADDRESS offset;
- int block_size;
+ CYG_ADDRESS offset;
+ int block_size;
} cyg_io_flash_getconfig_blocksize_t;
#endif
#ifdef _FLASH_PRIVATE_
struct flash_info {
- int block_size; // Assuming fixed size "blocks"
- int blocks; // Number of blocks
- int buffer_size; // Size of write buffer (only defined for some devices)
- unsigned long block_mask;
- void *start, *end; // Address range
- int init;
- _printf *pf;
+ int block_size; // Assuming fixed size "blocks"
+ int blocks; // Number of blocks
+ int buffer_size; // Size of write buffer (only defined for some devices)
+ unsigned long block_mask;
+ void *start, *end; // Address range
+ int init;
+ _printf *pf;
};
externC struct flash_info flash_info;
externC int flash_hwr_init(void);
externC int flash_hwr_map_error(int err);
-//
+//
// Some FLASH devices may require additional support, e.g. to turn on
// appropriate voltage drivers, before any operation.
//