Mercurial > ecos
comparison packages/io/flash/current/src/flash.c @ 1400:707a873489c8
* src/flash.c: gcc 3.x vs gcc 2.x problems.
| author | asl |
|---|---|
| date | Tue, 25 Nov 2003 09:05:31 +0000 |
| parents | 587b0b1c6927 |
| children | e1d094896914 |
comparison
equal
deleted
inserted
replaced
| 1399:1bc2e99ec44b | 1400:707a873489c8 |
|---|---|
| 70 # warning "Can only enable the flash debugging when configured for RAM startup" | 70 # warning "Can only enable the flash debugging when configured for RAM startup" |
| 71 #endif | 71 #endif |
| 72 | 72 |
| 73 struct flash_info flash_info; | 73 struct flash_info flash_info; |
| 74 | 74 |
| 75 // These are the functions in the HW specific driver we need to call. | |
| 76 typedef void code_fun(void*); | |
| 77 | |
| 78 externC code_fun flash_query; | |
| 79 externC code_fun flash_erase_block; | |
| 80 externC code_fun flash_program_buf; | |
| 81 externC code_fun flash_read_buf; | |
| 82 externC code_fun flash_lock_block; | |
| 83 externC code_fun flash_unlock_block; | |
| 84 | |
| 75 int | 85 int |
| 76 flash_init(_printf *pf) | 86 flash_init(_printf *pf) |
| 77 { | 87 { |
| 78 int err; | 88 int err; |
| 79 | 89 |
| 103 { | 113 { |
| 104 typedef void code_fun(void*); | 114 typedef void code_fun(void*); |
| 105 code_fun *_flash_query; | 115 code_fun *_flash_query; |
| 106 int d_cache, i_cache; | 116 int d_cache, i_cache; |
| 107 | 117 |
| 108 externC code_fun flash_query; | |
| 109 _flash_query = (code_fun*) __anonymizer(&flash_query); | 118 _flash_query = (code_fun*) __anonymizer(&flash_query); |
| 110 | 119 |
| 111 HAL_FLASH_CACHES_OFF(d_cache, i_cache); | 120 HAL_FLASH_CACHES_OFF(d_cache, i_cache); |
| 112 (*_flash_query)(data); | 121 (*_flash_query)(data); |
| 113 HAL_FLASH_CACHES_ON(d_cache, i_cache); | 122 HAL_FLASH_CACHES_ON(d_cache, i_cache); |
| 165 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT | 174 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT |
| 166 if (plf_flash_query_soft_wp(addr,len)) | 175 if (plf_flash_query_soft_wp(addr,len)) |
| 167 return FLASH_ERR_PROTECT; | 176 return FLASH_ERR_PROTECT; |
| 168 #endif | 177 #endif |
| 169 | 178 |
| 170 externC code_fun flash_erase_block; | |
| 171 _flash_erase_block = (code_fun*) __anonymizer(&flash_erase_block); | 179 _flash_erase_block = (code_fun*) __anonymizer(&flash_erase_block); |
| 172 | 180 |
| 173 block = (unsigned short *)((CYG_ADDRESS)addr & flash_info.block_mask); | 181 block = (unsigned short *)((CYG_ADDRESS)addr & flash_info.block_mask); |
| 174 end_addr = (unsigned short *)((CYG_ADDRESS)addr+len); | 182 end_addr = (unsigned short *)((CYG_ADDRESS)addr+len); |
| 175 | 183 |
| 252 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT | 260 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT |
| 253 if (plf_flash_query_soft_wp(addr,len)) | 261 if (plf_flash_query_soft_wp(addr,len)) |
| 254 return FLASH_ERR_PROTECT; | 262 return FLASH_ERR_PROTECT; |
| 255 #endif | 263 #endif |
| 256 | 264 |
| 257 externC code_fun flash_program_buf; | |
| 258 _flash_program_buf = (code_fun*) __anonymizer(&flash_program_buf); | 265 _flash_program_buf = (code_fun*) __anonymizer(&flash_program_buf); |
| 259 | 266 |
| 260 #ifdef CYGSEM_IO_FLASH_CHATTER | 267 #ifdef CYGSEM_IO_FLASH_CHATTER |
| 261 (*flash_info.pf)("... Program from %p-%p at %p: ", (void*)data, | 268 (*flash_info.pf)("... Program from %p-%p at %p: ", (void*)data, |
| 262 (void*)(((CYG_ADDRESS)data)+len), (void*)addr); | 269 (void*)(((CYG_ADDRESS)data)+len), (void*)addr); |
| 326 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT | 333 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT |
| 327 if (plf_flash_query_soft_wp(addr,len)) | 334 if (plf_flash_query_soft_wp(addr,len)) |
| 328 return FLASH_ERR_PROTECT; | 335 return FLASH_ERR_PROTECT; |
| 329 #endif | 336 #endif |
| 330 | 337 |
| 331 externC code_fun flash_read_buf; | |
| 332 _flash_read_buf = (code_fun*) __anonymizer(&flash_read_buf); | 338 _flash_read_buf = (code_fun*) __anonymizer(&flash_read_buf); |
| 333 | 339 |
| 334 #ifdef CYGSEM_IO_FLASH_CHATTER | 340 #ifdef CYGSEM_IO_FLASH_CHATTER |
| 335 (*flash_info.pf)("... Read from %p-%p at %p: ", (void*)data, | 341 (*flash_info.pf)("... Read from %p-%p at %p: ", (void*)data, |
| 336 (void*)(((CYG_ADDRESS)data)+len), (void*)addr); | 342 (void*)(((CYG_ADDRESS)data)+len), (void*)addr); |
| 406 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT | 412 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT |
| 407 if (plf_flash_query_soft_wp(addr,len)) | 413 if (plf_flash_query_soft_wp(addr,len)) |
| 408 return FLASH_ERR_PROTECT; | 414 return FLASH_ERR_PROTECT; |
| 409 #endif | 415 #endif |
| 410 | 416 |
| 411 externC code_fun flash_lock_block; | |
| 412 _flash_lock_block = (code_fun*) __anonymizer(&flash_lock_block); | 417 _flash_lock_block = (code_fun*) __anonymizer(&flash_lock_block); |
| 413 | 418 |
| 414 block = (unsigned short *)((CYG_ADDRESS)addr & flash_info.block_mask); | 419 block = (unsigned short *)((CYG_ADDRESS)addr & flash_info.block_mask); |
| 415 end_addr = (unsigned short *)((CYG_ADDRESS)addr+len); | 420 end_addr = (unsigned short *)((CYG_ADDRESS)addr+len); |
| 416 | 421 |
| 471 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT | 476 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT |
| 472 if (plf_flash_query_soft_wp(addr,len)) | 477 if (plf_flash_query_soft_wp(addr,len)) |
| 473 return FLASH_ERR_PROTECT; | 478 return FLASH_ERR_PROTECT; |
| 474 #endif | 479 #endif |
| 475 | 480 |
| 476 externC code_fun flash_unlock_block; | |
| 477 _flash_unlock_block = (code_fun*) __anonymizer(&flash_unlock_block); | 481 _flash_unlock_block = (code_fun*) __anonymizer(&flash_unlock_block); |
| 478 | 482 |
| 479 block = (unsigned short *)((CYG_ADDRESS)addr & flash_info.block_mask); | 483 block = (unsigned short *)((CYG_ADDRESS)addr & flash_info.block_mask); |
| 480 end_addr = (unsigned short *)((CYG_ADDRESS)addr+len); | 484 end_addr = (unsigned short *)((CYG_ADDRESS)addr+len); |
| 481 | 485 |
