board: added at91cap7a stk w/sdram config scripts
authorØyvind Harboe <oyvind.harboe@zylin.com>
Wed, 11 Aug 2010 15:09:44 +0000 (17:09 +0200)
committerØyvind Harboe <oyvind.harboe@zylin.com>
Wed, 11 Aug 2010 15:09:44 +0000 (17:09 +0200)
The strange thing here with this board is that 16MHz kinda
works, but only 2MHz is really stable.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
tcl/board/at91cap7a-stk-sdram.cfg [new file with mode: 0644]

diff --git a/tcl/board/at91cap7a-stk-sdram.cfg b/tcl/board/at91cap7a-stk-sdram.cfg
new file mode 100644 (file)
index 0000000..6a7e22b
--- /dev/null
@@ -0,0 +1,165 @@
+# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4394
+#
+# use combined on interfaces or targets that can't set TRST/SRST separately
+reset_config trst_and_srst srst_pulls_trst
+
+if { [info exists CHIPNAME] } {
+   set  _CHIPNAME $CHIPNAME
+} else {
+   set  _CHIPNAME cap7
+}
+
+if { [info exists ENDIAN] } {
+   set  _ENDIAN $ENDIAN
+} else {
+   set  _ENDIAN little
+}
+
+if { [info exists CPUTAPID ] } {
+   set _CPUTAPID $CPUTAPID
+} else {
+   set _CPUTAPID 0x40700f0f
+}
+
+jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
+
+set _TARGETNAME $_CHIPNAME.cpu
+target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm7tdmi
+
+$_TARGETNAME configure -event reset-start {
+       # start off real slow when we're running off internal RC oscillator
+       jtag_khz 10
+}
+
+proc peek32 {address} {
+       ocd_mem2array t 32 $address 1
+       return $t(0)
+}
+
+# Wait for an expression to be true with a timeout
+proc wait_state {expression} {
+       for {set i 0} {$i < 1000} {set i [expr $i + 1]} {
+               if {[uplevel 1 $expression] == 0} {
+                       return
+               }
+       }
+       return -code 1 "Timed out"      
+}
+
+# Use a global variable here to be able to tinker interactively with
+# post reset jtag frequency.
+global post_reset_khz
+# Danger!!!! Even 16MHz kinda works with this target, but 
+# it needs to be as low as 2000kHz to be stable.
+set post_reset_khz 2000
+
+$_TARGETNAME configure -event reset-init {
+       echo "Configuring master clock"
+       # disable watchdog
+       mww 0xfffffd44 0xff008000
+       # enable user reset
+       mww 0xfffffd08 0xa5000001
+       # Enable main oscillator
+       mww 0xFFFFFc20  0x00000f01
+       wait_state {expr {([peek32 0xFFFFFC68] & 0x1) == 0}}  
+
+       # Set PLLA to 96MHz
+       mww 0xFFFFFc28 0x20072801
+       wait_state {expr {([peek32 0xFFFFFC68] & 0x2) == 0}}  
+
+       # Select prescaler
+       mww 0xFFFFFC30 0x00000004
+       wait_state {expr {([peek32 0xFFFFFC68] & 0x8) == 0}}  
+
+       # Select master clock to 48MHz
+       mww 0xFFFFFC30 0x00000006
+       wait_state {expr {([peek32 0xFFFFFC68] & 0x8) == 0}}  
+
+       echo "Master clock ok."
+       echo "Configuring the SDRAM controller..."
+
+       # Configure EBI Chip select for SDRAM
+       mww 0xFFFFEF30 0x00000102
+
+       # Enable clock on EBI PIOs
+       mww 0xFFFFFC10 0x00000004
+
+       # Configure PIO for SDRAM
+       mww 0xFFFFF470 0xFFFF0000
+       mww 0xFFFFF474 0x00000000
+       mww 0xFFFFF404 0xFFFF0000
+
+       # Configure SDRAMC CR
+       mww 0xFFFFEA08 0xA63392F9
+       # NOP command
+       mww 0xFFFFEA00 0x1
+       mww 0x20000000 0
+
+       # Precharge All Banks command
+       mww 0xFFFFEA00 0x2
+       mww 0x20000000 0
+
+       # Set 1st CBR
+       mww 0xFFFFEA00 0x00000004
+       mww 0x20000010 0x00000001
+
+       # Set 2nd CBR
+       mww 0xFFFFEA00 0x00000004
+       mww 0x20000020 0x00000002
+
+       # Set 3rd CBR
+       mww 0xFFFFEA00 0x00000004
+       mww 0x20000030 0x00000003
+
+       # Set 4th CBR
+       mww 0xFFFFEA00 0x00000004
+       mww 0x20000040 0x00000004
+
+       # Set 5th CBR
+       mww 0xFFFFEA00 0x00000004
+       mww 0x20000050 0x00000005
+
+       # Set 6th CBR
+       mww 0xFFFFEA00 0x00000004
+       mww 0x20000060 0x00000006
+
+       # Set 7th CBR
+       mww 0xFFFFEA00 0x00000004
+       mww 0x20000070 0x00000007
+
+       # Set 8th CBR
+       mww 0xFFFFEA00 0x00000004
+       mww 0x20000080 0x00000008
+
+       # Set LMR operation
+       mww 0xFFFFEA00 0x00000003
+
+       # Perform LMR burst=1, lat=2
+       mww 0x20000020 0xCAFEDEDE
+
+       # Set Refresh Timer
+       mww 0xFFFFEA04 0x00000203
+
+       # Set Normal mode
+       mww 0xFFFFEA00 0x00000000
+       mww 0x20000000 0x00000000
+
+       #remap internal memory at address 0x0
+       mww 0xffffef00 0x3
+       
+       echo "SDRAM configuration ok."
+
+       # Now that we're up and running, crank up speed!
+       global post_reset_khz
+       jtag_khz $post_reset_khz
+}
+
+$_TARGETNAME configure -work-area-phys 0x00200000 -work-area-size 0x4000 -work-area-backup 0
+
+arm7_9 dcc_downloads enable
+arm7_9 fast_memory_access enable
+
+#set _FLASHNAME $_CHIPNAME.flash
+#flash bank $_FLASHNAME at91sam7 0 0 0 0 $_TARGETNAME 0 0 0 0 0 0 0 18432
+

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)