/* 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);
}
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);