There is also a problem with error checking in the
swjdp_transaction_endcheck that creates a recusive loop with this type
of problem.
Try the following patch.
Index: src/target/cortex_swjdp.c
===================================================================
--- src/target/cortex_swjdp.c (revision 1453)
+++ src/target/cortex_swjdp.c (working copy)
@@ -246,9 +246,10 @@
else
{
u32 dcb_dhcsr,nvic_shcsr, nvic_bfar, nvic_cfsr;
+ u32 ahbap_csv;
/* Print information about last AHBAP access */
- LOG_ERROR("AHBAP: dp_select 0x%x, ap_csw 0x%x, ap_tar 0x%x", swjdp->dp_select_value, swjdp->ap_csw_value, swjdp->ap_tar_value);
+ LOG_ERROR("AHBAP Cached values: dp_select 0x%x, ap_csw 0x%x, ap_tar 0x%x", swjdp->dp_select_value, swjdp->ap_csw_value, swjdp->ap_tar_value);
if (ctrlstat & SSTICKYORUN)
LOG_ERROR("SWJ-DP OVERRUN - check clock or reduce jtag speed");
@@ -263,12 +264,19 @@
LOG_DEBUG("swjdp: status 0x%x", ctrlstat);
+ ahbap_read_reg_u32(swjdp, AHBAP_CSW, &ahbap_csv);
+ if ((retval=jtag_execute_queue())!=ERROR_OK)
+ return retval;
+ LOG_ERROR("Read AHBAP_CSW 0x%x", ahbap_csv);
+
+#if 0
/* Can we find out the reason for the error ?? */
ahbap_read_system_atomic_u32(swjdp, DCB_DHCSR, &dcb_dhcsr);
ahbap_read_system_atomic_u32(swjdp, NVIC_SHCSR, &nvic_shcsr);
ahbap_read_system_atomic_u32(swjdp, NVIC_CFSR, &nvic_cfsr);
ahbap_read_system_atomic_u32(swjdp, NVIC_BFAR, &nvic_bfar);
LOG_ERROR("dcb_dhcsr 0x%x, nvic_shcsr 0x%x, nvic_cfsr 0x%x, nvic_bfar 0x%x", dcb_dhcsr, nvic_shcsr, nvic_cfsr, nvic_bfar);
+#endif
}
if ((retval=jtag_execute_queue())!=ERROR_OK)
return retval;
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development