reverse order of Jim stack trace output
[openocd.git] / tcl / board / at91sam9g20-ek.cfg
1 #################################################################################################
2 # #
3 # Author: Gary Carlson (gcarlson@carlson-minot.com) #
4 # Generated for Atmel AT91SAM9G20-EK evaluation board using Atmel SAM-ICE (J-Link) version 8. #
5 # #
6 #################################################################################################
7
8 # FIXME use some standard target config, maybe create one from this
9 #
10 # source [find target/...cfg]
11
12 # Define basic characteristics for the CPU. The AT91SAM9G20 processor is a subtle variant of
13 # the AT91SAM9260 and shares the same tap ID as it.
14
15 set _CHIPNAME at91sam9g20
16 set _FLASHTYPE nandflash_cs3
17 set _ENDIAN little
18 set _CPUTAPID 0x0792603f
19
20 # Set reset type. Note that the AT91SAM9G20-EK board has the trst signal disconnected. Therefore
21 # the reset needs to be configured for "srst_only". If for some reason, a zero-ohm jumper is
22 # added to the board to connect the trst signal, then this parameter may need to be changed.
23
24 reset_config srst_only
25
26 # Set up the CPU and generate a new jtag tap for AT91SAM9G20.
27
28 jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
29
30 # Use caution changing the delays listed below. These seem to be
31 # affected by the board and type of JTAG adapter. A value of 200 ms seems
32 # to work reliably for the configuration listed in the file header above.
33
34 adapter_nsrst_delay 200
35 jtag_ntrst_delay 200
36
37 # Set fallback clock to 1/6 of worst-case clock speed (which would be the 32.768 kHz slow clock).
38
39 jtag_rclk 5
40
41 set _TARGETNAME $_CHIPNAME.cpu
42 target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME
43
44 # Establish internal SRAM memory work areas that are important to pre-bootstrap loaders, etc. The
45 # AT91SAM9G20 has two SRAM areas, one starting at 0x00200000 and the other starting at 0x00300000.
46 # Both areas are 16 kB long.
47
48 #$_TARGETNAME configure -work-area-phys 0x00200000 -work-area-size 0x4000 -work-area-backup 1
49 $_TARGETNAME configure -work-area-phys 0x00300000 -work-area-size 0x4000 -work-area-backup 1
50
51 # If you don't want to execute built-in boot rom code (and there are good reasons at times not to do that) in the
52 # AT91SAM9 family, the microcontroller is a lump on a log without initialization. Because this family has
53 # some powerful features, we want to have a special function that handles "reset init". To do this we declare
54 # an event handler where these special activities can take place.
55
56 scan_chain
57 $_TARGETNAME configure -event reset-init {at91sam9g20_reset_init}
58 $_TARGETNAME configure -event reset-start {at91sam9g20_reset_start}
59
60 # NandFlash configuration and definition
61
62 nand device nandflash_cs3 at91sam9 $_TARGETNAME 0x40000000 0xfffffe800
63 at91sam9 cle 0 22
64 at91sam9 ale 0 21
65 at91sam9 rdy_busy 0 0xfffff800 13
66 at91sam9 ce 0 0xfffff800 14
67
68 proc read_register {register} {
69 set result ""
70 ocd_mem2array result 32 $register 1
71 return $result(0)
72 }
73
74 proc at91sam9g20_reset_start { } {
75
76 # Make sure that the the jtag is running slow, since there are a number of different ways the board
77 # can be configured coming into this state that can cause communication problems with the jtag
78 # adapter. Also since this call can be made following a "reset init" where fast memory accesses
79 # are enabled, need to temporarily shut this down so that the RSTC_MR register can be written at slower
80 # jtag speed without causing GDB keep alive problem.
81
82 arm7_9 fast_memory_access disable
83 adapter_khz 2 # Slow-speed oscillator enabled at reset, so run jtag speed slow.
84 halt # Make sure processor is halted, or error will result in following steps.
85 wait_halt 10000
86 mww 0xfffffd08 0xa5000501 # RSTC_MR : enable user reset.
87 }
88
89 proc at91sam9g20_reset_init { } {
90
91 # At reset AT91SAM9G20 chip runs on slow clock (32.768 kHz). To shift over to a normal clock requires
92 # a number of steps that must be carefully performed. The process outline below follows the
93 # recommended procedure outlined in the AT91SAM9G20 technical manual.
94 #
95 # Several key and very important things to keep in mind:
96 # The SDRAM parts used currently on the Atmel evaluation board are -75 grade parts. This
97 # means the master clock (MCLK) must be at or below 133 MHz or timing errors will occur. The processor
98 # core can operate up to 400 MHz and therefore PCLK must be at or below this to function properly.
99
100 mww 0xfffffd44 0x00008000 # WDT_MR : disable watchdog.
101
102 # Enable the main 18.432 MHz oscillator in CKGR_MOR register.
103 # Wait for MOSCS in PMC_SR to assert indicating oscillator is again stable after change to CKGR_MOR.
104
105 mww 0xfffffc20 0x00004001
106 while { [expr [read_register 0xfffffc68] & 0x01] != 1 } { sleep 1 }
107
108 # Set PLLA Register for 792.576 MHz (divider: bypass, multiplier: 43).
109 # Wait for LOCKA signal in PMC_SR to assert indicating PLLA is stable.
110
111 mww 0xfffffc28 0x202a3f01
112 while { [expr [read_register 0xfffffc68] & 0x02] != 2 } { sleep 1 }
113
114 # Set master system clock prescaler divide by 6 and processor clock divide by 2 in PMC_MCKR.
115 # Wait for MCKRDY signal from PMC_SR to assert.
116
117 mww 0xfffffc30 0x00000101
118 while { [expr [read_register 0xfffffc68] & 0x08] != 8 } { sleep 1 }
119
120 # Now change PMC_MCKR register to select PLLA.
121 # Wait for MCKRDY signal from PMC_SR to assert.
122
123 mww 0xfffffc30 0x00001302
124 while { [expr [read_register 0xfffffc68] & 0x08] != 8 } { sleep 1 }
125
126 # Processor and master clocks are now operating and stable at maximum frequency possible:
127 # -> MCLK = 132.096 MHz
128 # -> PCLK = 396.288 MHz
129
130 # Switch over to adaptive clocking.
131
132 adapter_khz 0
133
134 # Enable faster DCC downloads and memory accesses.
135
136 arm7_9 dcc_downloads enable
137 arm7_9 fast_memory_access enable
138
139 # To be able to use external SDRAM, several peripheral configuration registers must
140 # be modified. The first change is made to PIO_ASR to select peripheral functions
141 # for D15 through D31. The second change is made to the PIO_PDR register to disable
142 # this for D15 through D31.
143
144 mww 0xfffff870 0xffff0000
145 mww 0xfffff804 0xffff0000
146
147 # The EBI chip select register EBI_CS must be specifically configured to enable the internal SDRAM controller
148 # using CS1. Additionally we want CS3 assigned to NandFlash. Also VDDIO is connected physically on
149 # the board to the 3.3 VDC power supply so set the appropriate register bit to notify the micrcontroller.
150
151 mww 0xffffef1c 0x000100a
152
153 # The AT91SAM9G20-EK evaluation board has built-in NandFlash. The exact physical timing characteristics
154 # for the memory type used on the current board (MT29F2G08AACWP) can be established by setting
155 # a number of registers. The first step involves setting up the general I/O pins on the processor
156 # to be able to interface and support the external memory.
157
158 mww 0xfffffc10 0x00000010 # PMC_PCER : enable PIOC clock
159 mww 0xfffff800 0x00006000 # PIOC_PER : enable PIO function for 13(RDY/~BSY) and 14(~CS)
160 mww 0xfffff810 0x00004000 # PIOC_OER : enable output on 14
161 mww 0xfffff814 0x00002000 # PIOC_ODR : disable output on 13
162 mww 0xfffff830 0x00004000 # PIOC_SODR : set 14 to disable NAND
163
164 # The exact physical timing characteristics for the memory type used on the current board
165 # (MT29F2G08AACWP) can be established by setting four registers in order: SMC_SETUP3,
166 # SMC_PULSE3, SMC_CYCLE3, and SMC_MODE3. Computing the exact values of these registers
167 # is a little tedious to do here. If you have questions about how to do this, Atmel has
168 # a decent application note #6255B that covers this process.
169
170 mww 0xffffec30 0x00020002 # SMC_SETUP3 : 2 clock cycle setup for NRD and NWE
171 mww 0xffffec34 0x04040404 # SMC_PULSE3 : 4 clock cycle pulse for all signals
172 mww 0xffffec38 0x00070006 # SMC_CYCLE3 : 7 clock cycle NRD and 6 NWE cycle
173 mww 0xffffec3C 0x00020003 # SMC_MODE3 : NRD and NWE control, no NWAIT, 8-bit DBW,
174
175 mww 0xffffe800 0x00000001 # ECC_CR : reset the ECC parity registers
176 mww 0xffffe804 0x00000002 # ECC_MR : page size is 2112 words (word is 8 bits)
177
178 # Identify NandFlash bank 0.
179
180 nand probe nandflash_cs3
181
182 # The AT91SAM9G20-EK evaluation board has build-in serial data flash also.
183
184 # Now setup SDRAM. This is tricky and configuration is very important for reliability! The current calculations
185 # are based on 2 x Micron MT48LC16M16A2-75 memory (4 M x 16 bit x 4 banks). If you use this file as a reference
186 # for a new board that uses different SDRAM devices or clock rates, you need to recalculate the value inserted
187 # into the SDRAM_CR register. Using the memory datasheet for the -75 grade part and assuming a master clock
188 # of 132.096 MHz then the SDCLK period is equal to 7.6 ns. This means the device requires:
189 #
190 # CAS latency = 3 cycles
191 # TXSR = 10 cycles
192 # TRAS = 6 cycles
193 # TRCD = 3 cycles
194 # TRP = 3 cycles
195 # TRC = 9 cycles
196 # TWR = 2 cycles
197 # 9 column, 13 row, 4 banks
198 # refresh equal to or less then 7.8 us for commerical/industrial rated devices
199 #
200 # Thus SDRAM_CR = 0xa6339279
201
202 mww 0xffffea08 0xa6339279
203
204 # Next issue a 'NOP' command through the SDRAMC_MR register followed by writing a zero value into
205 # the starting memory location for the SDRAM.
206
207 mww 0xffffea00 0x00000001
208 mww 0x20000000 0
209
210 # Issue an 'All Banks Precharge' command through the SDRAMC_MR register followed by writing a zero
211 # value into the starting memory location for the SDRAM.
212
213 mww 0xffffea00 0x00000002
214 mww 0x20000000 0
215
216 # Now issue an 'Auto-Refresh' command through the SDRAMC_MR register. Follow this operation by writing
217 # zero values eight times into the starting memory location for the SDRAM.
218
219 mww 0xffffea00 0x4
220 mww 0x20000000 0
221 mww 0x20000000 0
222 mww 0x20000000 0
223 mww 0x20000000 0
224 mww 0x20000000 0
225 mww 0x20000000 0
226 mww 0x20000000 0
227 mww 0x20000000 0
228
229 # Almost done, so next issue a 'Load Mode Register' command followed by a zero value write to the
230 # the starting memory location for the SDRAM.
231
232 mww 0xffffea00 0x3
233 mww 0x20000000 0
234
235 # Signal normal mode using the SDRAMC_MR register and follow with a zero value write the the starting
236 # memory location for the SDRAM.
237
238 mww 0xffffea00 0x0
239 mww 0x20000000 0
240
241 # Finally set the refresh rate to about every 7 us (7.5 ns x 924 cycles).
242
243 mww 0xffffea04 0x0000039c
244 }
245

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)