Edgar Grimberg wrote: > The default state of the flash after a reset init is unlocked. > The information in the flash driver reflects this. > > The information about the lock status cannot be read from the > flash chip, so the user is informed that flash info might not > contain accurate information. > > Signed-off-by: Edgar Grimberg <[email protected]> > --- > src/flash/nor/str7x.c | 10 ++++++++-- > tcl/target/str710.cfg | 10 +++++++++- > 2 files changed, 17 insertions(+), 3 deletions(-) > > diff --git a/src/flash/nor/str7x.c b/src/flash/nor/str7x.c > index 040097a..67aa7a1 100644 > --- a/src/flash/nor/str7x.c > +++ b/src/flash/nor/str7x.c > @@ -93,7 +93,8 @@ static int str7x_build_block_list(struct flash_bank *bank) > bank->sectors[num_sectors].offset = > mem_layout_str7bank0[i].sector_start; > bank->sectors[num_sectors].size = > mem_layout_str7bank0[i].sector_size; > bank->sectors[num_sectors].is_erased = -1; > - bank->sectors[num_sectors].is_protected = 1; > + /*reset init will unprotect all the sectors, keep the driver in > sync*/ > + bank->sectors[num_sectors].is_protected = 0; > str7x_info->sector_bits[num_sectors++] = > mem_layout_str7bank0[i].sector_bit; > } > > @@ -102,7 +103,8 @@ static int str7x_build_block_list(struct flash_bank *bank) > bank->sectors[num_sectors].offset = > mem_layout_str7bank1[i].sector_start; > bank->sectors[num_sectors].size = > mem_layout_str7bank1[i].sector_size; > bank->sectors[num_sectors].is_erased = -1; > - bank->sectors[num_sectors].is_protected = 1; > + /*reset init will unprotect all the sectors, keep the driver in > sync*/ > + bank->sectors[num_sectors].is_protected = 0; > str7x_info->sector_bits[num_sectors++] = > mem_layout_str7bank1[i].sector_bit; > } > > @@ -600,6 +602,10 @@ COMMAND_HANDLER(str7x_handle_part_id_command) > static int str7x_info(struct flash_bank *bank, char *buf, int buf_size) > { > snprintf(buf, buf_size, "str7x flash driver info"); > + /*STR7x flash doesn't support sector protection interrogation. > + FLASH_NVWPAR acts as a write only register, the value read from it > + doesn't reflect the actual protection state of the sectors.*/ > + LOG_WARNING("STR7x flash lock information might not be correct due to > hardware limitations."); > return ERROR_OK; > } > > diff --git a/tcl/target/str710.cfg b/tcl/target/str710.cfg > index 9da69ac..fdc13d6 100644 > --- a/tcl/target/str710.cfg > +++ b/tcl/target/str710.cfg > @@ -30,7 +30,15 @@ set _TARGETNAME $_CHIPNAME.cpu > target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position > $_TARGETNAME -variant arm7tdmi > > $_TARGETNAME configure -event reset-start { jtag_khz 10 } > -$_TARGETNAME configure -event reset-init { jtag_khz 6000 } > +$_TARGETNAME configure -event reset-init { > + jtag_khz 6000 > + > +# Because the hardware cannot be interrogated for the protection state of > sectors, > +# initialize all the sectors to be unprotected. The initial state is > reflected by > +# the driver, too. > + flash protect 0 0 last off > + flash protect 1 0 last off > +} > $_TARGETNAME configure -event gdb-flash-erase-start { > flash protect 0 0 7 off > flash protect 1 0 1 off
Just for info the str73 and str75 cfg's would also need updating. Cheers Spen _______________________________________________ Openocd-development mailing list [email protected] https://lists.berlios.de/mailman/listinfo/openocd-development
