openocd/src/target
Tomas Vanek eb8912ec38 target, flash: prepare infrastructure for multi-block blank check
'flash erase_check' command runs a check algorithm on a target
if possible. The algorithm is run repeatedly for each flash sector.
Unfortunately every start and stop of the algorithm impose not negligible
overhead.
In practice it means checking is faster than plain read only for
sectors of size approx 4 kByte or bigger. And checking sectors
as short as 512 bytes runs approx 4 times slower than plain read.

The patch changes API call target_blank_check_memory() and related
to take an array of sectors (or arbitrary memory blocks).

Changes in target-specific checking routines are kept minimal.
They use only the first block from the array and process it by
the unchanged algorithm.

default_flash_blank_check() routine repeats target_blank_check_memory()
until all blocks are checked, so it works with both multi-block
and single-block based checkers.

Change-Id: I0e6c60f2d71364c9c07c09416b04de9268807f5e
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4297
Tested-by: jenkins
Reviewed-by: Andreas Bolsch <hyphen0break@gmail.com>
2018-04-10 06:16:40 +01:00
..
openrisc server: free strduped port numbers 2018-03-15 17:08:53 +00:00
aarch64.c target: restructure dap support 2018-03-30 09:58:21 +01:00
aarch64.h aarch64: add 'maskisr' command 2018-01-16 09:05:41 +00:00
adi_v5_jtag.c arm_adi_v5: Add ability to ignore the CSYSPWRUPACK bit 2018-04-07 20:30:12 +01:00
adi_v5_swd.c target: restructure dap support 2018-03-30 09:58:21 +01:00
algorithm.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
algorithm.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
arm_adi_v5.c target/arm_adi_v5: extend apcsw command to accept arbitrary bits 2018-04-07 20:31:37 +01:00
arm_adi_v5.h target/arm_adi_v5: extend apcsw command to accept arbitrary bits 2018-04-07 20:31:37 +01:00
arm_cti.c target: restructure dap support 2018-03-30 09:58:21 +01:00
arm_cti.h arm_cti: add cti command group 2018-03-30 09:48:03 +01:00
arm_dap.c target/arm_adi_v5: extend apcsw command to accept arbitrary bits 2018-04-07 20:31:37 +01:00
arm_disassembler.c target: arm: disassembler: fix Thumb2 BLX decoding address 2018-03-13 08:41:54 +00:00
arm_disassembler.h target: arm: disassembler: decode v6T2 ARM ISB instruction 2018-01-13 08:36:29 +00:00
arm_dpm.c Support for Arm VFP v3 registers read/write 2018-03-10 14:25:10 +00:00
arm_dpm.h aarch64: register access rewrite 2017-02-10 14:18:34 +01:00
arm_jtag.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
arm_jtag.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
arm_opcodes.h Support for Arm VFP v3 registers read/write 2018-03-10 14:25:10 +00:00
arm_semihosting.c arm: semihosting: set command line arguments 2017-10-22 23:06:09 +01:00
arm_semihosting.h semihosting: support fileio operation 2016-12-08 12:32:58 +00:00
arm_simulator.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
arm_simulator.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
arm.h target, flash: prepare infrastructure for multi-block blank check 2018-04-10 06:16:40 +01:00
arm7_9_common.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
arm7_9_common.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
arm7tdmi.c semihosting: support fileio operation 2016-12-08 12:32:58 +00:00
arm7tdmi.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
arm9tdmi.c semihosting: support fileio operation 2016-12-08 12:32:58 +00:00
arm9tdmi.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
arm11_dbgtap.c Fix usage of timeval_ms() 2016-07-19 10:45:16 +01:00
arm11_dbgtap.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
arm11.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
arm11.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
arm720t.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
arm720t.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
arm920t.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
arm920t.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
arm926ejs.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
arm926ejs.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
arm946e.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
arm946e.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
arm966e.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
arm966e.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
armv4_5_cache.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
armv4_5_cache.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
armv4_5_mmu.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
armv4_5_mmu.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
armv4_5.c target, flash: prepare infrastructure for multi-block blank check 2018-04-10 06:16:40 +01:00
armv4_5.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
armv7a_cache_l2x.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
armv7a_cache_l2x.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
armv7a_cache.c armv7a: forward error value in armv7a_cache_auto_flush_all_data 2018-02-21 08:19:19 +00:00
armv7a_cache.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
armv7a.c target: restructure dap support 2018-03-30 09:58:21 +01:00
armv7a.h armv7a: cache ttbcr and ttb0/1 on debug state entry 2018-03-11 12:08:39 +00:00
armv7m_trace.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
armv7m_trace.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
armv7m.c target, flash: prepare infrastructure for multi-block blank check 2018-04-10 06:16:40 +01:00
armv7m.h target, flash: prepare infrastructure for multi-block blank check 2018-04-10 06:16:40 +01:00
armv8_cache.c aarch64: fix debug entry from EL0 2018-03-16 08:58:06 +00:00
armv8_cache.h aarch64: add cache handling functions 2017-02-10 14:01:39 +01:00
armv8_dpm.c aarch64: fix debug entry from EL0 2018-03-16 08:58:06 +00:00
armv8_dpm.h aarch64: fix debug entry from EL0 2018-03-16 08:58:06 +00:00
armv8_opcodes.c target aarch64: rework memory read/write to use 8/16/32 bit operations 2018-01-04 09:09:46 +00:00
armv8_opcodes.h Support AArch64 SIMD/FP registers read/write 2018-03-10 13:23:48 +00:00
armv8.c target: restructure dap support 2018-03-30 09:58:21 +01:00
armv8.h Support AArch64 SIMD/FP registers read/write 2018-03-10 13:23:48 +00:00
avr32_ap7k.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
avr32_ap7k.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
avr32_jtag.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
avr32_jtag.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
avr32_mem.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
avr32_mem.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
avr32_regs.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
avr32_regs.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
avrt.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
avrt.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
breakpoints.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
breakpoints.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
cortex_a.c target: restructure dap support 2018-03-30 09:58:21 +01:00
cortex_a.h cortex_a: remove partnum magic from arp_examine and dbginit 2016-12-08 12:25:35 +00:00
cortex_m.c target/cortex_m: avoid dwt comparator overflow 2018-04-04 21:24:53 +01:00
cortex_m.h hla_target: allow non-intrusive profiling on cortex-m 2018-01-13 09:31:36 +00:00
dsp563xx_once.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
dsp563xx_once.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
dsp563xx.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
dsp563xx.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
dsp5680xx.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
dsp5680xx.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
embeddedice.c Use timeval helpers 2018-01-25 16:43:49 +00:00
embeddedice.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
etb.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
etb.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
etm_dummy.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
etm_dummy.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
etm.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
etm.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
fa526.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
feroceon.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
hla_target.c target: restructure dap support 2018-03-30 09:58:21 +01:00
image.c Handle improperly build image files gracefully 2018-02-14 08:27:01 +00:00
image.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
lakemont.c target: lakemon: implement assert_reset and deassert_reset 2018-01-13 09:25:34 +00:00
lakemont.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
ls1_sap.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
Makefile.am target: restructure dap support 2018-03-30 09:58:21 +01:00
mips_ejtag.c mips32, use scan32 function for reading impcode/idcode. 2017-05-08 18:05:58 +01:00
mips_ejtag.h ejtag: added missing instructions. 2018-01-13 09:46:00 +00:00
mips_m4k.c mips32, use scan32 function for reading impcode/idcode. 2017-05-08 18:05:58 +01:00
mips_m4k.h mips32: add micromips isa handling 2017-05-08 18:04:56 +01:00
mips32_dmaacc.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
mips32_dmaacc.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
mips32_pracc.c mips32, add support for micromips in debug mode 2017-05-08 18:03:28 +01:00
mips32_pracc.h mips32: inline functions in headers must be static 2017-07-07 09:54:35 +01:00
mips32.c target, flash: prepare infrastructure for multi-block blank check 2018-04-10 06:16:40 +01:00
mips32.h target, flash: prepare infrastructure for multi-block blank check 2018-04-10 06:16:40 +01:00
nds32_aice.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
nds32_aice.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
nds32_cmd.c Fix GCC7 warnings about string truncation 2017-10-23 10:54:24 +01:00
nds32_cmd.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
nds32_disassembler.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
nds32_disassembler.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
nds32_edm.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
nds32_insn.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
nds32_reg.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
nds32_reg.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
nds32_tlb.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
nds32_tlb.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
nds32_v2.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
nds32_v2.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
nds32_v3_common.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
nds32_v3_common.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
nds32_v3.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
nds32_v3.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
nds32_v3m.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
nds32_v3m.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
nds32.c target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
nds32.h target: Add 64-bit target address support 2017-02-10 13:50:17 +01:00
oocd_trace.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
oocd_trace.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
quark_d20xx.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
quark_x10xx.c target: quark_x10xx: miscellaneous cleanups 2018-01-13 09:25:12 +00:00
register.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
register.h tdesc: bitfields may carry a type 2018-03-27 09:15:27 +01:00
smp.c helper: Code cleanup for hexify() 2016-12-08 12:34:53 +00:00
smp.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
startup.tcl gdb_server: run control fixes for vCont 2018-02-27 11:19:10 +00:00
stm8.c target, flash: prepare infrastructure for multi-block blank check 2018-04-10 06:16:40 +01:00
stm8.h stm8 : new target 2017-12-07 07:53:13 +00:00
target_request.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
target_request.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
target_type.h target, flash: prepare infrastructure for multi-block blank check 2018-04-10 06:16:40 +01:00
target.c target, flash: prepare infrastructure for multi-block blank check 2018-04-10 06:16:40 +01:00
target.h target, flash: prepare infrastructure for multi-block blank check 2018-04-10 06:16:40 +01:00
testee.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
trace.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
trace.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
x86_32_common.c x86_32_common: fix some warnings 2018-01-30 07:34:32 +00:00
x86_32_common.h target: lakemon: implement assert_reset and deassert_reset 2018-01-13 09:25:34 +00:00
xscale.c Use timeval helpers 2018-01-25 16:43:49 +00:00
xscale.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00