cfg: allow stellaris device class override
[openocd.git] / tcl / target / stellaris.cfg
index 6ba5f14a208425a8a74dc4fd2fed467378b27bbe..b985de0561cb5c0614bf2e94f2ec64d3d9de1143 100644 (file)
@@ -1,5 +1,24 @@
 # TI/Luminary Stellaris LM3S chip family
 
+# Some devices have errata in returning their device class.
+# DEVICECLASS is provided as a manual override
+# Manual setting of a device class of 0xff is not allowed
+
+global _DEVICECLASS
+
+if { [info exists DEVICECLASS ] } {
+   set _DEVICECLASS $DEVICECLASS
+} else {
+   set _DEVICECLASS 0xff
+}
+
+# Luminary chips support both JTAG and SWD transports.
+# Adapt based on what transport is active.
+source [find target/swj-dp.tcl]
+
+# For now we ignore the SPI and UART options, which
+# are usable only for ISP style initial flash programming.
+
 if { [info exists CHIPNAME] } {
    set  _CHIPNAME $CHIPNAME
 } else {
@@ -18,6 +37,12 @@ if { [info exists CPUTAPID ] } {
    set _CPUTAPID 0x0ba00477
 }
 
+# SWD DAP, and JTAG TAP, take same params for now;
+# ... even though SWD ignores all except TAPID, and
+# JTAG shouldn't need anything more then irlen. (and TAPID).
+swj_newdap $_CHIPNAME cpu -irlen 4 -irmask 0xf \
+       -expected-id $_CPUTAPID -ignore-version
+
 if { [info exists WORKAREASIZE ] } {
    set _WORKAREASIZE $WORKAREASIZE
 } else {
@@ -25,9 +50,6 @@ if { [info exists WORKAREASIZE ] } {
    set _WORKAREASIZE 0x2000
 }
 
-jtag newtap $_CHIPNAME cpu -irlen 4 -irmask 0xf \
-       -expected-id $_CPUTAPID -ignore-version
-
 set _TARGETNAME $_CHIPNAME.cpu
 target create $_TARGETNAME cortex_m3 -chain-position $_CHIPNAME.cpu
 
@@ -46,12 +68,7 @@ $_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE
 # this, if you're using a slower clock.
 adapter_khz 500
 
-# mrw: "memory read word", returns value of $reg
-proc mrw {reg} {
-       set value ""
-       mem2array value 32 $reg 1
-       return $value(0)
-}
+source [find mem_helper.tcl]
 
 $_TARGETNAME configure -event reset-start {
        adapter_khz 500
@@ -69,10 +86,17 @@ $_TARGETNAME configure -event reset-start {
        #       /openocd-development/2008-August/003065.html
        #
 
-       set device_class [expr (([mrw 0x400fe000] >> 16) & 0xff)]
+       global _DEVICECLASS
+
+       if {$_DEVICECLASS != 0xff} {
+          set device_class $_DEVICECLASS
+       } else {
+          set device_class [expr (([mrw 0x400fe000] >> 16) & 0xff)]
+       }
+
        if {$device_class == 0 || $device_class == 1 || $device_class == 3} {
                # Sandstorm, Fury and DustDevil are able to use NVIC SYSRESETREQ
-               cortex_m3 reset_config systesetreq
+               cortex_m3 reset_config sysresetreq
        } else {
                # Tempest and newer default to using NVIC VECTRESET
                # this does mean a reset-init event handler is required to reset

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)