From 0c379744e9585eb41739dc45d45be34f83f5b713 Mon Sep 17 00:00:00 2001 From: Gareth McMullin Date: Thu, 5 Jul 2012 20:12:18 +1200 Subject: cortexm: Poll for S_RESET_ST in DHCSR to detect release from reset. --- src/cortexm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/cortexm.c') diff --git a/src/cortexm.c b/src/cortexm.c index e6f2a99..5ec89dd 100644 --- a/src/cortexm.c +++ b/src/cortexm.c @@ -515,6 +515,9 @@ cortexm_reset(struct target_s *target) jtagtap_srst(); + /* Read DHCSR here to clear S_RESET_ST bit before reset */ + adiv5_ap_mem_read(ap, CORTEXM_DHCSR); + /* Request system reset from NVIC: SRST doesn't work correctly */ /* This could be VECTRESET: 0x05FA0001 (reset only core) * or SYSRESETREQ: 0x05FA0004 (system reset) @@ -523,10 +526,7 @@ cortexm_reset(struct target_s *target) CORTEXM_AIRCR_VECTKEY | CORTEXM_AIRCR_SYSRESETREQ); /* Poll for release from reset */ - while(adiv5_ap_mem_read(ap, CORTEXM_AIRCR) & - (CORTEXM_AIRCR_VECTRESET | CORTEXM_AIRCR_SYSRESETREQ)); - - platform_delay(2); + while(adiv5_ap_mem_read(ap, CORTEXM_DHCSR) & CORTEXM_DHCSR_S_RESET_ST); /* Reset DFSR flags */ adiv5_ap_mem_write(ap, CORTEXM_DFSR, CORTEXM_DFSR_RESETALL); -- cgit v1.2.3