This is an automated email from Gerrit.

Felipe Balbi (ba...@ti.com) just uploaded a new patch set to Gerrit, which you 
can find at http://openocd.zylin.com/2615

-- gerrit

commit 8e6abd4b1d4bc33426ce88aeab988d159097dde1
Author: Felipe Balbi <ba...@ti.com>
Date:   Sun Mar 15 23:15:15 2015 -0500

    tcl: am437x: disable watchdog on reset-end
    
    sometimes, watchdog might be left running and
    it could expire in the middle of a debug session,
    to prevent that, just make sure to disable watchdog
    on reset-end if current state is 'halted'.
    
    Change-Id: Ib4f2a2321cba17cd8c56ca3ae63114a563a6de90
    Tested-by: Tom Rini <tr...@konsulko.com>
    Signed-off-by: Felipe Balbi <ba...@ti.com>

diff --git a/tcl/target/am437x.cfg b/tcl/target/am437x.cfg
index d7d4753..ee62ef9 100644
--- a/tcl/target/am437x.cfg
+++ b/tcl/target/am437x.cfg
@@ -1,4 +1,5 @@
 source [find target/icepick.cfg]
+source [find mem_helper.tcl]
 
 ###############################################################################
 ##                             AM437x Registers                             ##
@@ -481,3 +482,31 @@ target create $_TARGETNAME cortex_a -chain-position 
$_CHIPNAME.dap -dbgbase 0x80
 
 # SRAM: 256K at 0x4030.0000
 $_TARGETNAME configure -work-area-phys 0x40300000 -work-area-size 0x40000
+
+# Disables watchdog timer after reset otherwise board won't stay in
+# halted state.
+proc disable_watchdog { } {
+       global WDT1_WSPR
+       global WDT1_W_PEND_WSPR
+       global _TARGETNAME
+
+       set curstate [$_TARGETNAME curstate]
+
+       if { [string compare $curstate halted] == 0 } {
+               set WDT_DISABLE_SEQ1    0xaaaa
+               set WDT_DISABLE_SEQ2    0x5555
+
+               mww phys $WDT1_WSPR $WDT_DISABLE_SEQ1
+
+               # Empty body to make sure this executes as fast as possible.
+               # We don't want any delays here otherwise romcode might start
+               # executing and end up changing state of certain IPs.
+               while { [expr [mrw $WDT1_W_PEND_WSPR] & 0x10] } { }
+
+               mww phys $WDT1_WSPR $WDT_DISABLE_SEQ2
+               while { [expr [mrw $WDT1_W_PEND_WSPR] & 0x10] } { }
+       }
+}
+
+$_TARGETNAME configure -event reset-start { adapter_khz 1000 }
+$_TARGETNAME configure -event reset-end { disable_watchdog }

-- 

------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to