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 <edgar.grimb...@zylin.com>
> ---
>  src/flash/nor/str7x.c |    5 +++--
>  tcl/target/str710.cfg |    6 +++++-
>  2 files changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/src/flash/nor/str7x.c b/src/flash/nor/str7x.c
> index 040097a..0745496 100644
> --- a/src/flash/nor/str7x.c
> +++ b/src/flash/nor/str7x.c
> @@ -93,7 +93,7 @@ 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;
> +             bank->sectors[num_sectors].is_protected = 0;
>               str7x_info->sector_bits[num_sectors++] = 
> mem_layout_str7bank0[i].sector_bit;
>       }
>  
> @@ -102,7 +102,7 @@ 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;
> +             bank->sectors[num_sectors].is_protected = 0;
>               str7x_info->sector_bits[num_sectors++] = 
> mem_layout_str7bank1[i].sector_bit;
>       }
>  
> @@ -600,6 +600,7 @@ 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");
> +     LOG_WARNING("STR7x protect information is not reliable.");
>       return ERROR_OK;
>  }
>  
> diff --git a/tcl/target/str710.cfg b/tcl/target/str710.cfg
> index 9da69ac..10307e8 100644
> --- a/tcl/target/str710.cfg
> +++ b/tcl/target/str710.cfg
> @@ -30,7 +30,11 @@ 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 
> +     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

The protection state will never be known until a protection check is 
done anyway.
The default state is more likely to be unprotected (factory default), as 
few users set the write protection anyway.

Issuing a warning about the str7 protection status is a bit misleading.
It is 'valid' after a reset, but any changes after the reset are not 
reflected in the flash info cmd.

The gdb-flash-erase-start can be removed as you are already removing the 
protection in the reset init script.

Cheers
Spen
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to