Index: devs/flash/intel/stratav2/current/ChangeLog =================================================================== RCS file: /cvs/ecos/ecos/packages/devs/flash/intel/stratav2/current/Attic/ChangeLog,v retrieving revision 1.1.2.3 diff -u -r1.1.2.3 ChangeLog --- devs/flash/intel/stratav2/current/ChangeLog 21 Aug 2004 08:48:17 -0000 1.1.2.3 +++ devs/flash/intel/stratav2/current/ChangeLog 14 Sep 2004 15:57:02 -0000 @@ -1,3 +1,9 @@ +2004-09-14 Andrew Lunn + + * include/flash_strata_v2.inl: Return the end address which is the + last valid address, not the first invalid address. + Also import Mark Salters changes from the trunk. + 2004-08-21 Andrew Lunn * include/flash_strata_v2.inl (flash_unlock_block): Index: devs/flash/intel/stratav2/current/include/flash_strata_v2.inl =================================================================== RCS file: /cvs/ecos/ecos/packages/devs/flash/intel/stratav2/current/include/Attic/flash_strata_v2.inl,v retrieving revision 1.1.2.3 diff -u -r1.1.2.3 flash_strata_v2.inl --- devs/flash/intel/stratav2/current/include/flash_strata_v2.inl 21 Aug 2004 08:48:17 -0000 1.1.2.3 +++ devs/flash/intel/stratav2/current/include/flash_strata_v2.inl 14 Sep 2004 15:57:03 -0000 @@ -70,6 +70,17 @@ extern int strncmp(const char *s1, const char *s2, size_t len); extern void *memcpy( void *, const void *, size_t ); +// Platforms may define these for special handling when accessing the +// query data or write buffer . +#ifndef CYGHWR_FLASH_READ_QUERY +#define CYGHWR_FLASH_READ_QUERY(a) (*(a)) +#endif +#ifndef CYGHWR_FLASH_WRITE_BUF +#define CYGHWR_FLASH_WRITE_BUF(a,b) (*(a) = *(b)) +#endif + + + //---------------------------------------------------------------------------- // Functions that put the flash device into non-read mode must reside // in RAM. @@ -158,7 +169,7 @@ #endif // Not CYGOPT_FLASH_IS_BOOTBLOCK dev->end = dev->start + - (num_regions*region_size*CYGNUM_FLASH_INTERLEAVE); + (num_regions*region_size*CYGNUM_FLASH_INTERLEAVE) -1; priv->buffer_size = buffer_size; priv->block_info[0].blocks = num_regions; priv->block_info[0].block_size = region_size * CYGNUM_FLASH_INTERLEAVE; @@ -241,10 +252,10 @@ #endif // Not CYGOPT_FLASH_IS_BOOTBLOCK for (cnt = CNT; cnt > 0; cnt--) ; - for ( /* i */; i > 0; i-- ) { + for ( /* i */; i > 0; i--, ++ROM ) { // It is very deliberate that data is chars NOT flash_t: // The info comes out in bytes regardless of device. - *data++ = (unsigned char) (*ROM++); + *data++ = (unsigned char) CYGHWR_FLASH_READ_QUERY(ROM); #ifndef CYGOPT_FLASH_IS_BOOTBLOCK # if 8 == CYGNUM_FLASH_WIDTH // strata flash with 'byte-enable' contains the configuration data @@ -366,7 +377,7 @@ #ifdef CYGHWR_FLASH_WRITE_ELEM CYGHWR_FLASH_WRITE_ELEM(addr+i, data+i); #else - *(addr+i) = *(data+i); + CYGHWR_FLASH_WRITE_BUF(addr+i, data+i); #endif } *BA = FLASH_Confirm; Index: devs/flash/sst/39vfxxx/current/ChangeLog =================================================================== RCS file: /cvs/ecos/ecos/packages/devs/flash/sst/39vfxxx/current/ChangeLog,v retrieving revision 1.1.2.2 diff -u -r1.1.2.2 ChangeLog --- devs/flash/sst/39vfxxx/current/ChangeLog 6 Aug 2004 13:11:33 -0000 1.1.2.2 +++ devs/flash/sst/39vfxxx/current/ChangeLog 14 Sep 2004 15:57:04 -0000 @@ -1,3 +1,8 @@ +2004-09-14 Andrew Lunn + + * include/flash_sst_39vfxxx.inl: Set the end address to the last + valid address in flash, not the first invalid address. + 2004-08-06 Andrew Lunn * include/flash_sst_39vfxxx.inl: The structure declared by Index: devs/flash/sst/39vfxxx/current/include/flash_sst_39vfxxx.inl =================================================================== RCS file: /cvs/ecos/ecos/packages/devs/flash/sst/39vfxxx/current/include/flash_sst_39vfxxx.inl,v retrieving revision 1.1.2.2 diff -u -r1.1.2.2 flash_sst_39vfxxx.inl --- devs/flash/sst/39vfxxx/current/include/flash_sst_39vfxxx.inl 6 Aug 2004 13:11:34 -0000 1.1.2.2 +++ devs/flash/sst/39vfxxx/current/include/flash_sst_39vfxxx.inl 14 Sep 2004 15:57:04 -0000 @@ -64,7 +64,6 @@ #define _FLASH_PRIVATE_ #include - //---------------------------------------------------------------------------- // Common device details. #define FLASH_Read_ID FLASHWORD( 0x90 ) @@ -170,7 +169,7 @@ // Hard wired for now dev->end = dev->start + - (FLASH_NUM_REGIONS * FLASH_BLOCK_SIZE * CYGNUM_FLASH_SERIES); + (FLASH_NUM_REGIONS * FLASH_BLOCK_SIZE * CYGNUM_FLASH_SERIES) -1; dev->num_block_infos = 1; priv->block_info[0].blocks = FLASH_NUM_REGIONS * CYGNUM_FLASH_SERIES; priv->block_info[0].block_size = FLASH_BLOCK_SIZE; @@ -266,7 +265,6 @@ } prev_state = state; } - // Verify loaded data bytes while (len > 0) { if (*addr_ptr != FLASH_BlankValue) { @@ -278,7 +276,6 @@ len -= sizeof(*addr_ptr); } } - return CYG_FLASH_ERR_OK; } Index: devs/flash/synthv2/current/ChangeLog =================================================================== RCS file: /cvs/ecos/ecos/packages/devs/flash/synthv2/current/Attic/ChangeLog,v retrieving revision 1.1.2.3 diff -u -r1.1.2.3 ChangeLog --- devs/flash/synthv2/current/ChangeLog 9 Sep 2004 13:13:22 -0000 1.1.2.3 +++ devs/flash/synthv2/current/ChangeLog 14 Sep 2004 15:57:04 -0000 @@ -1,3 +1,8 @@ +2004-09-14 Andrew Lunn + + * src/synth.c (synth_flash_erase_block): Remove asserts which are + no longer true. + 2004-09-09 Andrew Lunn * src/flash_synth.c: Allow the use of arbitary sized block. Index: devs/flash/synthv2/current/src/synth.c =================================================================== RCS file: /cvs/ecos/ecos/packages/devs/flash/synthv2/current/src/Attic/synth.c,v retrieving revision 1.1.2.2 diff -u -r1.1.2.2 synth.c --- devs/flash/synthv2/current/src/synth.c 9 Sep 2004 13:13:23 -0000 1.1.2.2 +++ devs/flash/synthv2/current/src/synth.c 14 Sep 2004 15:57:04 -0000 @@ -207,9 +207,6 @@ synth_flash_erase_block(struct cyg_flash_dev *dev, const cyg_flashaddr_t block_base) { -#ifdef CYGDBG_USE_ASSERTS - struct cyg_flash_synth_config *config = dev->config; -#endif struct cyg_flash_synth_priv *priv = dev->priv; int offset = (int)block_base; size_t remaining; @@ -225,11 +222,6 @@ empty_inited = true; } - CYG_ASSERT(sizeof(empty) < config->block_size, - "Eckk! Can't work with such small blocks"); - CYG_ASSERT(config->boot_blocks && sizeof(empty) < config->boot_block_size, - "Eckk! Can't work with such small blocks"); - remaining = flash_block_size(dev, block_base); while (remaining) { Index: io/flash/current/ChangeLog =================================================================== RCS file: /cvs/ecos/ecos/packages/io/flash/current/ChangeLog,v retrieving revision 1.38.2.7 diff -u -r1.38.2.7 ChangeLog --- io/flash/current/ChangeLog 9 Sep 2004 13:11:46 -0000 1.38.2.7 +++ io/flash/current/ChangeLog 14 Sep 2004 15:59:38 -0000 @@ -1,3 +1,10 @@ +2004-09-14 Andrew Lunn + + * src/flash.c (cyg_flash_init): Add assert checking that the + end address matches the block information. + * src/legacy_dev.c (legacy_flash_init): Ensure that the end + address is the last valid address, not the first invalid address. + 2004-09-09 Andrew Lunn * src/flash.c: Support flash blocks of arbitary size. The Index: io/flash/current/src/flash.c =================================================================== RCS file: /cvs/ecos/ecos/packages/io/flash/current/src/flash.c,v retrieving revision 1.26.2.4 diff -u -r1.26.2.4 flash.c --- io/flash/current/src/flash.c 9 Sep 2004 13:11:47 -0000 1.26.2.4 +++ io/flash/current/src/flash.c 14 Sep 2004 15:59:39 -0000 @@ -170,7 +170,16 @@ CYG_ASSERT(dev->funs->flash_erase_block, "No erase function"); CYG_ASSERT(dev->funs->flash_program, "No program function"); CYG_ASSERT(dev->funs->flash_hwr_map_error, "No hwr map error function"); - +#ifdef CYGDBG_USE_ASSERTS + { + int i; + cyg_flashaddr_t addr = dev->start; + for (i = 0; i < dev->num_block_infos; i++) { + addr += dev->block_info[i].block_size * dev->block_info[i].blocks; + } + CYG_ASSERT(dev->end == addr-1, "Invalid end address"); + } +#endif dev->init = true; dev->next = flash_head; flash_head = dev; Index: io/flash/current/src/legacy_dev.c =================================================================== RCS file: /cvs/ecos/ecos/packages/io/flash/current/src/Attic/legacy_dev.c,v retrieving revision 1.1.2.1 diff -u -r1.1.2.1 legacy_dev.c --- io/flash/current/src/legacy_dev.c 5 Aug 2004 13:50:02 -0000 1.1.2.1 +++ io/flash/current/src/legacy_dev.c 14 Sep 2004 15:59:40 -0000 @@ -92,7 +92,7 @@ if (!err) { dev->start = (cyg_flashaddr_t)flash_info.start; - dev->end = (cyg_flashaddr_t)flash_info.end; + dev->end = flash_info.block_size * flash_info.blocks - 1; dev->num_block_infos = 1; dev->block_info = block_info; block_info[0].block_size = flash_info.block_size;