aboutsummaryrefslogtreecommitdiff
path: root/tcl/target
diff options
context:
space:
mode:
Diffstat (limited to 'tcl/target')
-rw-r--r--tcl/target/kl25.cfg48
-rw-r--r--tcl/target/lpc11uxx.cfg48
-rw-r--r--tcl/target/lpc17xx.cfg10
-rw-r--r--tcl/target/swj-dp.tcl11
4 files changed, 110 insertions, 7 deletions
diff --git a/tcl/target/kl25.cfg b/tcl/target/kl25.cfg
new file mode 100644
index 00000000..c5dda151
--- /dev/null
+++ b/tcl/target/kl25.cfg
@@ -0,0 +1,48 @@
+#
+# Freescale Kinetis KL25 devices
+#
+
+#
+# KL25 devices support both JTAG and SWD transports.
+#
+source [find target/swj-dp.tcl]
+
+if { [info exists CHIPNAME] } {
+ set _CHIPNAME $CHIPNAME
+} else {
+ set _CHIPNAME kl25
+}
+
+if { [info exists ENDIAN] } {
+ set _ENDIAN $ENDIAN
+} else {
+ set _ENDIAN little
+}
+
+# Work-area is a space in RAM used for flash programming
+# By default use 4kB
+if { [info exists WORKAREASIZE] } {
+ set _WORKAREASIZE $WORKAREASIZE
+} else {
+ set _WORKAREASIZE 0x1000
+}
+
+if { [info exists CPUTAPID] } {
+ set _CPUTAPID $CPUTAPID
+} else {
+ set _CPUTAPID 0x0bc11477
+}
+
+swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID
+
+set _TARGETNAME $_CHIPNAME.cpu
+target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_CHIPNAME.cpu
+
+$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
+
+set _FLASHNAME $_CHIPNAME.flash
+flash bank $_FLASHNAME kinetis 0 0 0 0 $_TARGETNAME
+
+# if srst is not fitted use SYSRESETREQ to
+# perform a soft reset
+cortex_m reset_config sysresetreq
diff --git a/tcl/target/lpc11uxx.cfg b/tcl/target/lpc11uxx.cfg
new file mode 100644
index 00000000..6968fcd8
--- /dev/null
+++ b/tcl/target/lpc11uxx.cfg
@@ -0,0 +1,48 @@
+#
+# NXP lpc11uxx family
+
+source [find target/swj-dp.tcl]
+
+if { [info exists CHIPNAME] } {
+ set _CHIPNAME $CHIPNAME
+} else {
+ set _CHIPNAME lpc11uxx
+}
+
+if { [info exists ENDIAN] } {
+ set _ENDIAN $ENDIAN
+} else {
+ set _ENDIAN little
+}
+
+# Work-area is a space in RAM used for flash programming
+# By default use 6kB
+if { [info exists WORKAREASIZE] } {
+ set _WORKAREASIZE $WORKAREASIZE
+} else {
+ set _WORKAREASIZE 0x1800
+}
+
+if { [info exists CPUTAPID] } {
+ set _CPUTAPID $CPUTAPID
+} else {
+ set _CPUTAPID 0x00000000
+}
+
+# delays on reset lines
+adapter_nsrst_delay 100
+#jtag_ntrst_delay 100
+
+swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID
+
+set _TARGETNAME $_CHIPNAME.cpu
+target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_TARGETNAME
+
+$_TARGETNAME configure -work-area-phys 0x10000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
+
+#set _FLASHNAME $_CHIPNAME.flash
+#flash bank $_FLASHNAME lpc2000 0 0 0 0 $_TARGETNAME
+
+# if srst is not fitted use SYSRESETREQ to
+# perform a soft reset
+cortex_m reset_config sysresetreq
diff --git a/tcl/target/lpc17xx.cfg b/tcl/target/lpc17xx.cfg
index 01a8cd37..c81971f9 100644
--- a/tcl/target/lpc17xx.cfg
+++ b/tcl/target/lpc17xx.cfg
@@ -49,10 +49,6 @@ if { [info exists CPUROMSIZE] } {
error "_CPUROMSIZE not set. Please do not include lpc17xx.cfg directly, but the specific chip configuration file (lpc1751.cfg, lpc1764.cfg, etc)."
}
-#delays on reset lines
-adapter_nsrst_delay 200
-jtag_ntrst_delay 200
-
#jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID
swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID
@@ -74,6 +70,12 @@ flash bank $_FLASHNAME lpc2000 0x0 $_CPUROMSIZE 0 0 $_TARGETNAME \
# we have no idea what clock the target is running at.
adapter_khz 10
+# delays on reset lines
+adapter_nsrst_delay 200
+if {$using_jtag} {
+ jtag_ntrst_delay 200
+}
+
$_TARGETNAME configure -event reset-init {
# Do not remap 0x0000-0x0020 to anything but the flash (i.e. select
# "User Flash Mode" where interrupt vectors are _not_ remapped,
diff --git a/tcl/target/swj-dp.tcl b/tcl/target/swj-dp.tcl
index 377b7b5f..fa44583a 100644
--- a/tcl/target/swj-dp.tcl
+++ b/tcl/target/swj-dp.tcl
@@ -18,8 +18,13 @@
# split out "chip" and "tag" so we can someday handle
# them more uniformly irlen too...)
+global using_jtag
+set using_jtag 1
+
proc swj_newdap {chip tag args} {
-set tran [transport select]
-if [string equal $tran "jtag"] { eval jtag newtap $chip $tag $args}
-if [string equal $tran "swd"] { eval swd newdap $chip $tag $args }
+ global using_jtag
+ set tran [transport select]
+ if [string equal $tran "jtag"] { eval jtag newtap $chip $tag $args; set using_jtag 1 }
+ if [string equal $tran "swd"] { eval swd newdap $chip $tag $args; set using_jtag 0 }
+ if [string equal $tran "cmsis-dap"] { eval cmsis-dap newdap $chip $tag $args; set using_jtag 0 }
}