comparison packages/io/flash/current/src/flash.c @ 157:b65ec671dd4c

Merge from eCos master repository on 2001-04-06-18:28:36-BST
author jlarmour
date Fri, 06 Apr 2001 19:06:06 +0000
parents b939e9cada46
children 0d0f03f76f6a
comparison
equal deleted inserted replaced
156:b939e9cada46 157:b65ec671dd4c
155 } 155 }
156 *block_size = flash_info.block_size; 156 *block_size = flash_info.block_size;
157 *blocks = flash_info.blocks; 157 *blocks = flash_info.blocks;
158 return FLASH_ERR_OK; 158 return FLASH_ERR_OK;
159 } 159 }
160
160 int 161 int
161 flash_erase(void *addr, int len, void **err_addr) 162 flash_erase(void *addr, int len, void **err_addr)
162 { 163 {
163 unsigned short *block, *end_addr; 164 unsigned short *block, *end_addr;
164 int stat = 0; 165 int stat = 0;
252 if (size > flash_info.block_size) size = flash_info.block_size; 253 if (size > flash_info.block_size) size = flash_info.block_size;
253 254
254 stat = (*_flash_program_buf)(addr, data, size, 255 stat = (*_flash_program_buf)(addr, data, size,
255 flash_info.block_mask, flash_info.buffer_size); 256 flash_info.block_mask, flash_info.buffer_size);
256 stat = flash_hwr_map_error(stat); 257 stat = flash_hwr_map_error(stat);
258 #ifdef CYGSEM_IO_FLASH_VERIFY_PROGRAM
257 if (memcmp(addr, data, size) != 0) { 259 if (memcmp(addr, data, size) != 0) {
258 stat = 0x0BAD; 260 stat = 0x0BAD;
259 printf("V"); 261 printf("V");
260 } 262 }
263 #endif
261 if (stat) { 264 if (stat) {
262 *err_addr = (void *)addr; 265 *err_addr = (void *)addr;
263 break; 266 break;
264 } 267 }
265 printf("."); 268 printf(".");