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

Reply via email to