coding style: tcl: remove empty lines at end of text files
[openocd.git] / tcl / board / glyn_tonga2.cfg
1 #
2 # Glyn Tonga2 SO-DIMM CPU module (Toshiba TMPA900CMXBG, ARM9)
3 #
4 # http://toshiba-mikrocontroller.de/sites/TMPA900CPUBOARDStarter.htm
5 #
6 # Hardware on the S0-DIMM module:
7 # - Toshiba TMPA900CMXBG (ARM9, ARM926EJ-S, max. 200MHz)
8 # - DDR SDRAM: Hynix H5MS5162DFR-J3M (64Mbyte, x16, 1.8V, 166/83MHz at CL3/2)
9 # - NAND flash: Samsung K9F2G08U0B-PIB0 (256M x 8 Bit, 3.3V)
10 # - Ethernet: SMSC LAN9221I-ABZJ (10/100Mbit, Non-PCI, 16 bit interface)
11 #
12
13 source [find target/tmpa900.cfg]
14
15 ########################
16 # Target configuration #
17 ########################
18
19 # Initial JTAG speed should not exceed 1/6 of the initial CPU clock
20 # frequency (24MHz). Be conservative and use 1/8 of the frequency.
21 # (24MHz / 8 = 3MHz)
22 adapter speed 3000
23
24 $_TARGETNAME configure -event reset-start {
25 # Upon reset, set the JTAG frequency to 3MHz again, see above.
26 echo "Setting JTAG speed to 3MHz until clocks are initialized."
27 adapter speed 3000
28
29 # Halt the CPU.
30 halt
31
32 # Disable faster memory access for now.
33 arm7_9 fast_memory_access disable
34 }
35
36 $_TARGETNAME configure -event reset-init {
37 # Setup clocks, and initialize SRAM and DDR SDRAM.
38 tonga2_init
39
40 # At this point the CPU is running at 192MHz, increase JTAG speed.
41 # Tests showed that 15MHz works OK, higher speeds can cause problems,
42 # though. Not sure if this is a CPU issue or JTAG adapter issue.
43 echo "Increasing JTAG speed to 15MHz."
44 adapter speed 15000
45
46 # Enable faster memory access.
47 arm7_9 fast_memory_access enable
48 }
49
50 proc tonga2_init { } {
51 ######################
52 # PLL initialization #
53 ######################
54
55 # Clock overview (see datasheet chapter 3.5.2, page 57):
56 # - fs: Low-frequency oscillator
57 # - fOSCH: High-frequency oscillator (24MHz on this board)
58 # - fPLL = fOSCH * multiplier (where multiplier can be 6 or 8)
59 # - fFCLK = fPLL / gear (where gear can be 1/2/4/8)
60 # - fHCLK is always fFCLK/2. fPCLK is also fFCLK/2.
61 #
62 # We select multiplier = 8 and gear = 1, so
63 # fFCLK = fOSCH * 8 / 1 = 192MHz.
64
65 # SYSCR3 (System Control Register 3): Disable and configure PLL.
66 # - PLL operation control: off
67 # - PLL constant value setting 1: always 0, as per datasheet
68 # - PLL constant value setting 2: x8 (multiplier = 8)
69 mww 0xf005000c 0x00000007
70
71 # SYSCR4 (System Control Register 4): Configure PLL.
72 # - PLL constant value setting 3: 140MHz or more
73 # - PLL constant value setting 4: always 1, as per datasheet
74 # - PLL constant value setting 5: 140MHz or more
75 mww 0xf0050010 0x00000065
76
77 # SYSCR3 (System Control Register 3): Enable PLL.
78 # - PLL operation control: on
79 # - All other bits remain set as above.
80 mww 0xf005000c 0x00000087
81
82 # Wait for PLL to stabilize.
83 sleep 10
84
85 # SYSCR2 (System Control Register 2): Switch from fOSCH to fPLL.
86 # - Selection of the PLL output clock: fPLL
87 mww 0xf0050008 0x00000002
88
89 # SYSCR1 (System Control Register 1):
90 # - Clock gear programming: fc/1 (i.e., gear = 1, don't divide).
91 mww 0xf0050004 0x00000000
92
93 # CLKCR5 (Clock Control Register 5): Set bits 3 and 6. The datasheet
94 # says the bits are reserved, but also recommends "Write as one".
95 mww 0xf0050054 0x00000048
96
97
98 ##############################################################
99 # Dynamic Memory Controller (DMC) / DDR SDRAM initialization #
100 ##############################################################
101
102 # PMC (Power Management Controller):
103 # PMCDRV (External Port "Driverbility" control register):
104 # Bits DRV_MEM0/DRV_MEM1 (memory relation port drive power):
105 mww 0xf0020260 0x00000003 ;# Select 1.8V +/- 0.1V
106
107 # Setup DDR SDRAM timing parameters for our specific chip.
108 mww 0xf4310014 0x00000004 ;# cas_latency = 2
109 mww 0xf4310018 0x00000001 ;# t_dqss = 1
110 mww 0xf431001c 0x00000002 ;# t_mrd = 2
111 mww 0xf4310020 0x0000000a ;# t_ras = 10
112 mww 0xf4310024 0x0000000a ;# t_rc = 10
113 mww 0xf4310028 0x00000013 ;# t_rcd = 3, schedule_rcd = 2
114 mww 0xf431002c 0x0000010a ;# t_rfc = 10, schedule_rfc = 8
115 mww 0xf4310030 0x00000013 ;# t_rp = 3, schedule_rp = 2
116 mww 0xf4310034 0x00000002 ;# t_rrd = 2
117 mww 0xf4310038 0x00000002 ;# t_wr = 2
118 mww 0xf431003c 0x00000001 ;# t_wtr = 1
119 mww 0xf4310040 0x0000000a ;# t_xp = 10
120 mww 0xf4310044 0x0000000c ;# t_xsr = 12
121 mww 0xf4310048 0x00000014 ;# t_esr = 20
122
123 # dmc_memory_cfg_5 (DMC Memory Configuration register):
124 # Set memory configuration:
125 # column_bits = 10, row_bits = 13, ap-bit = 10, power_down_prd = 0,
126 # auto_power_down = disable, stop_mem_clock = disable, memory_burst = 4
127 mww 0xf431000c 0x00010012
128
129 # dmc_user_config_5 (DMC user_config register):
130 # Data bus width of DDR SDRAM: 16 bit
131 mww 0xf4310304 0x00000058
132
133 # dmc_refresh_prd_5 (DMC Refresh Period register):
134 # Auto refresh: every 2656 (0xa60) DMCSCLK periods.
135 mww 0xf4310010 0x00000a60
136
137 # dmc_chip_0_cfg_5 (DMC chip_0_cfg registers):
138 # - SDRAM address structure: bank, row, column
139 # - address_match = 01000000 (start address [31:24])
140 # - address_mask = 11111100 (start address [31:24] mask value)
141 mww 0xf4310200 0x000140fc
142
143 # Initialize the DDR SDRAM chip.
144 # dmc_direct_cmd_5 (DMC Direct Command register).
145 # See datasheet chapter 3.10.5.1, page 268.
146 mww 0xf4310008 0x000c0000 ;# RAM init: NOP
147 mww 0xf4310008 0x00000000 ;# RAM init: Precharge all
148 mww 0xf4310008 0x00040000 ;# RAM init: Autorefresh
149 mww 0xf4310008 0x00040000 ;# RAM init: Autorefresh
150 mww 0xf4310008 0x00080032 ;# RAM init: addr_13_to_0 = 0x32
151 mww 0xf4310008 0x000c0000 ;# RAM init: NOP
152 mww 0xf4310008 0x000a0000 ;# RAM init: bank_addr = bank 2
153
154 # dmc_id_<0-5>_cfg_5 (DMC id_<0-5>_cfg registers):
155 # Set min./max. QoS values.
156 # - 0x5: Enable QoS, max. QoS = 1
157 # - 0xb: Enable QoS, min. QoS = 2
158 mww 0xf4310100 0x00000005 ;# AHB0: CPU Data
159 mww 0xf4310104 0x00000005 ;# AHB1: CPU Inst
160 mww 0xf4310108 0x0000000b ;# AHB2: LCDC
161 mww 0xf431010c 0x00000005 ;# AHB3: LCDDA, USB
162 mww 0xf4310110 0x00000005 ;# AHB4: DMA1
163 mww 0xf4310114 0x00000005 ;# AHB5: DMA2
164
165 # dmc_memc_cmd_5 (DMC Memory Controller Command register):
166 # Change DMC state to ready.
167 mww 0xf4310004 0x00000000 ;# memc_cmd = "Go"
168
169 # EBI: SMC Timeout register
170 mww 0xf00a0050 0x00000001 ;# smc_timeout = 1
171
172
173 ########################################################
174 # Static Memory Controller (SMC) / SRAM initialization #
175 ########################################################
176
177 # smc_set_cycles_5 (SMC Set Cycles register):
178 # tRC = 10, tWC = 10, tCEOE = 7, tWP = 5, tPC=2, tTR=2
179 mww 0xf4311014 0x0004afaa
180
181 # smc_set_opmode_5 (SMC Set Opmode register):
182 # Memory data bus width = 16 bits, async read mode, read burst
183 # length = 1 beat, async write mode, write burst length = 1 beat,
184 # byte enable (SMCBE0-1) timing = SMCCSn timing, memory burst boundary
185 # split setting = burst can cross any address boundary
186 mww 0xf4311018 0x00000001
187
188 # smc_direct_cmd_5 (SMC Direct Command register):
189 # cmd_type = UpdateRegs, chip_select = CS1
190 mww 0xf4311010 0x00c00000
191
192 echo "Clocks, SRAM, and DDR SDRAM are now initialized."
193 }
194
195 #######################
196 # Flash configuration #
197 #######################
198
199 # TODO: Implement NAND support.

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)