aboutsummaryrefslogtreecommitdiff
path: root/tcl/target
diff options
context:
space:
mode:
Diffstat (limited to 'tcl/target')
-rw-r--r--tcl/target/bluenrg-x.cfg40
1 files changed, 23 insertions, 17 deletions
diff --git a/tcl/target/bluenrg-x.cfg b/tcl/target/bluenrg-x.cfg
index 109db170..691bbbf8 100644
--- a/tcl/target/bluenrg-x.cfg
+++ b/tcl/target/bluenrg-x.cfg
@@ -1,8 +1,9 @@
#
-# bluenrg-1/2 devices support only SWD transports.
+# bluenrg-1/2 and bluenrg-lp devices support only SWD transports.
#
source [find target/swj-dp.tcl]
+source [find mem_helper.tcl]
if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
@@ -53,22 +54,27 @@ if {![using_hla]} {
}
$_TARGETNAME configure -event halted {
- global WDOG_VALUE
- global WDOG_VALUE_SET
- # Stop watchdog during halt, if enabled
- mem2array value 32 0x40700008 1
- set WDOG_VALUE [expr ($value(0))]
- if [expr ($value(0) & (1 << 1))] {
- set WDOG_VALUE_SET 1
- mww 0x40700008 [expr ($value(0) & 0xFFFFFFFD)]
- }
+ global WDOG_VALUE
+ global WDOG_VALUE_SET
+ set _JTAG_IDCODE [mrw 0x40000004]
+ if {$_JTAG_IDCODE != 0x0201E041} {
+ # Stop watchdog during halt, if enabled. Only Bluenrg-1/2
+ set WDOG_VALUE [mrw 0x40700008]
+ if [expr ($WDOG_VALUE & (1 << 1))] {
+ set WDOG_VALUE_SET 1
+ mww 0x40700008 [expr ($WDOG_VALUE & 0xFFFFFFFD)]
+ }
+ }
}
$_TARGETNAME configure -event resumed {
- global WDOG_VALUE
- global WDOG_VALUE_SET
- if [expr $WDOG_VALUE_SET] {
- # Restore watchdog enable value after resume
- mww 0x40700008 $WDOG_VALUE
- set WDOG_VALUE_SET 0
- }
+ global WDOG_VALUE
+ global WDOG_VALUE_SET
+ set _JTAG_IDCODE [mrw 0x40000004]
+ if {$_JTAG_IDCODE != 0x0201E041} {
+ if [expr $WDOG_VALUE_SET] {
+ # Restore watchdog enable value after resume. Only Bluenrg-1/2
+ mww 0x40700008 $WDOG_VALUE
+ set WDOG_VALUE_SET 0
+ }
+ }
}