diff options
author | Spencer Oliver <ntfreak@users.sourceforge.net> | 2010-01-06 20:24:31 +0000 |
---|---|---|
committer | Spencer Oliver <ntfreak@users.sourceforge.net> | 2010-01-06 20:24:31 +0000 |
commit | 2d450b90333b01fbd85570e5d881c3a795038744 (patch) | |
tree | 19a617f3a56249c42a6d0003119a8e5c673bd53d | |
parent | 2bc7446bb8caf751f7d6900af26384f6c64cc791 (diff) | |
download | openocd_libswd-2d450b90333b01fbd85570e5d881c3a795038744.tar.gz openocd_libswd-2d450b90333b01fbd85570e5d881c3a795038744.tar.bz2 openocd_libswd-2d450b90333b01fbd85570e5d881c3a795038744.tar.xz openocd_libswd-2d450b90333b01fbd85570e5d881c3a795038744.zip |
MIPS: fastdata bulk write fallback
If fastdata access fails, then fallback to default mips_m4k_write_memory
Remove unnecessary fastdata loader verify check
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
-rw-r--r-- | src/target/mips32_pracc.c | 10 | ||||
-rw-r--r-- | src/target/mips_m4k.c | 6 |
2 files changed, 7 insertions, 9 deletions
diff --git a/src/target/mips32_pracc.c b/src/target/mips32_pracc.c index 26d5a6b7..ac1d1b39 100644 --- a/src/target/mips32_pracc.c +++ b/src/target/mips32_pracc.c @@ -968,15 +968,7 @@ int mips32_pracc_fastdata_xfer(struct mips_ejtag *ejtag_info, struct working_are /* write program into RAM */ mips32_pracc_write_mem32(ejtag_info, source->address, ARRAY_SIZE(handler_code), handler_code); - /* quick verify RAM is working */ - mips32_pracc_read_u32(ejtag_info, source->address, &val); - if (val != handler_code[0]) - { - LOG_ERROR("fastdata handler verify failed\n"); - return ERROR_TARGET_RESOURCE_NOT_AVAILABLE; - } - - LOG_INFO("%s using 0x%.8x for write handler\n", __func__, source->address); + LOG_DEBUG("%s using 0x%.8x for write handler\n", __func__, source->address); jmp_code[1] |= UPPER16(source->address); jmp_code[2] |= LOWER16(source->address); diff --git a/src/target/mips_m4k.c b/src/target/mips_m4k.c index 4adc1f19..312fc09c 100644 --- a/src/target/mips_m4k.c +++ b/src/target/mips_m4k.c @@ -1001,6 +1001,12 @@ int mips_m4k_bulk_write_memory(struct target *target, uint32_t address, uint32_t } retval = mips32_pracc_fastdata_xfer(ejtag_info, source, write, address, count, (uint32_t*) buffer); + if (retval != ERROR_OK) + { + /* FASTDATA access failed, try normal memory write */ + LOG_WARNING("Fastdata access Failed, falling back to non-bulk write"); + retval = mips_m4k_write_memory(target, address, 4, count, buffer); + } if (source) target_free_working_area(target, source); |