openocd/src
Tomas Vanek 26a65f4f13 flash: at91samd: flash write code cleaning
SAMD driver suffered from following problems:

1) Flash was erased as an integral part of flash write.
It was not documented so with usual workflow it resulted
in erasing flash twice (and reducing flash lifespan)
and in almost double flashing time.

2) Sector erase was silently skipped if "is_erased" flag was set.
"is_erased" logic was not reliable, e.g. when a row write
was aborted after successful write of some pages, sector was
still considered as erased. "is_erased" flag could not
cope with flash writes from a user program.

3) Writing of a block with start address unaligned to a flash page
resulted in failed assert and OpenOCD abort.

4) Disabling cache in bit 18 of 16-bit halfword never worked.
MCU implements cache invalidate in hardware so there is no need
to take care about. This bug was reported by Tony DiCola.

New code does not erase flash in write operation.
Instead it traditionally relies on erasing flash beforehand.
"is_erased" logic and cache disabling is completely removed.
It simplifies write procedure a lot and flash write is now faster.

The change partly solves ticket #109 SAMD/SAM4L driver doubles flash erase.

Change-Id: I582b497d01a351575533a1f8c9810a4413be0216
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/3045
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2015-11-20 18:26:58 +00:00
..
flash flash: at91samd: flash write code cleaning 2015-11-20 18:26:58 +00:00
helper helper/options: Use OPENOCD_SCRIPTS dir if set. 2015-11-03 22:19:36 +00:00
jtag jtag: cmsis-dap: Issue disconnect before reconnecting 2015-11-20 18:26:12 +00:00
pld cpld/virtex2: allow JSTART to be disabled 2015-08-06 13:14:01 +01:00
rtos rtos/mqx: Fix uninitialized parts of symbol table 2015-11-03 21:58:50 +00:00
server tcl_server: Support line buffers up to 4M (v3) 2015-09-30 22:01:00 +01:00
svf svf: fix segfaults exposed by some SVF 2015-09-30 22:01:47 +01:00
target target: cortex_a: add deinit_target handler to free memory 2015-11-13 06:55:26 +00:00
transport transport: make 'transport select' auto-select the first available transport if not set 2015-03-25 21:32:49 +00:00
xsvf update files to correct FSF address 2013-06-05 19:52:42 +00:00
hello.c update files to correct FSF address 2013-06-05 19:52:42 +00:00
hello.h update files to correct FSF address 2013-06-05 19:52:42 +00:00
main.c update files to correct FSF address 2013-06-05 19:52:42 +00:00
Makefile.am Makefile.am: link libusb-1.0 after libusb-0.1 to fix dependencies 2015-02-04 21:56:45 +00:00
openocd.c docs: update OpenOCD url's to openocd.org domain 2015-04-16 20:28:21 +01:00
openocd.h Fix some problems with the bin2char utility 2014-08-02 09:01:32 +00:00