summaryrefslogtreecommitdiff
path: root/bsp/hpmicro/hpm6750evkmini/board/debug_scripts/openocd/boards/hpm6750evkmini.cfg
blob: bd37e9283533774f678d3034ca42828882f4f4f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# Copyright (c) 2021 HPMicro
# SPDX-License-Identifier: BSD-3-Clause
#
# openocd flash driver argument:
#   - ARG7:
#       [31:28] Flash probe type
#         0 - SFDP SDR / 1 - SFDP DDR
#         2 - 1-4-4 Read (0xEB, 24-bit address) / 3 - 1-2-2 Read(0xBB, 24-bit address)
#         4 - HyperFLASH 1.8V / 5 - HyperFLASH 3V
#         6 - OctaBus DDR (SPI -> OPI DDR)
#         8 - Xccela DDR (SPI -> OPI DDR)
#         10 - EcoXiP DDR (SPI -> OPI DDR)
#       [27:24] Command Pads after Power-on Reset
#         0 - SPI / 1 - DPI / 2 - QPI / 3 - OPI
#       [23:20] Command Pads after Configuring FLASH
#         0 - SPI / 1 - DPI / 2 - QPI / 3 - OPI
#       [19:16] Quad Enable Sequence (for the device support SFDP 1.0 only)
#         0 - Not needed
#         1 - QE bit is at bit6 in Status Register 1
#         2 - QE bit is at bit1 in Status Register 2
#         3 - QE bit is at bit7 in Status Register 2
#         4 - QE bit is at bit1 in Status Register 2 and should be programmed by 0x31
#       [15:8] Dummy cycles
#         0 - Auto-probed / detected / default value
#         Others - User specified value, for DDR read, the dummy cycles should be 2 * cycles on FLASH datasheet
#       [7:4] Misc.
#         0 - Not used
#         1 - SPI mode
#         2 - Internal loopback
#         3 - External DQS
#       [3:0] Frequency option
#         1 - 30MHz / 2 - 50MHz / 3 - 66MHz / 4 - 80MHz / 5 - 100MHz / 6 - 120MHz / 7 - 133MHz / 8 - 166MHz
#   - ARG8:
#       [31:20]  Reserved
#       [19:16] IO voltage
#         0 - 3V / 1 - 1.8V
#       [15:12] Pin group
#         0 - 1st group / 1 - 2nd group
#       [11:8] Connection selection
#         0 - CA_CS0 / 1 - CB_CS0 / 2 - CA_CS0 + CB_CS0 (Two FLASH connected to CA and CB respectively)
#       [7:0] Drive Strength
#         0 - Default value

# xpi0 configs
#   - flash driver:     hpm_xpi
#   - flash ctrl index: 0xF3040000
#   - base address:     0x80000000
#   - flash size:       0x1000000
#   - flash option0:    0x7
flash bank xpi0 hpm_xpi 0x80000000 0x1000000 1 1 $_TARGET0 0xF3040000 0x7

proc init_clock {} {
    mww 0xF4000800 0xFFFFFFFF
    mww 0xF4000810 0xFFFFFFFF
    mww 0xF4000820 0xFFFFFFFF
    mww 0xF4000830 0xFFFFFFFF
    echo "clocks has been enabled!"
}

proc init_sdram { } {
# configure femc frequency
# 133Mhz pll1_clk0: 266Mhz divide by 2
    #mww 0xF4001820 0x201
# 166Mhz pll2_clk0: 333Mhz divide by 2
    mww 0xF4001820 0x401

    # PD13
    mww 0xF4040368 0xC
    # PD12
    mww 0xF4040360 0xC
    # PD10
    mww 0xF4040350 0xC
    # PD09
    mww 0xF4040348 0xC
    # PD08
    mww 0xF4040340 0xC
    # PD07
    mww 0xF4040338 0xC
    # PD06
    mww 0xF4040330 0xC
    # PD05
    mww 0xF4040328 0xC
    # PD04
    mww 0xF4040320 0xC
    # PD03
    mww 0xF4040318 0xC
    # PD02
    mww 0xF4040310 0xC
    # PD01
    mww 0xF4040308 0xC
    # PD00
    mww 0xF4040300 0xC
    # PC29
    mww 0xF40402E8 0xC
    # PC28
    mww 0xF40402E0 0xC
    # PC27
    mww 0xF40402D8 0xC

    # PC22
    mww 0xF40402B0 0xC
    # PC21
    mww 0xF40402A8 0xC
    # PC17
    mww 0xF4040288 0xC
    # PC15
    mww 0xF4040278 0xC
    # PC12
    mww 0xF4040260 0xC
    # PC11
    mww 0xF4040258 0xC
    # PC10
    mww 0xF4040250 0xC
    # PC09
    mww 0xF4040248 0xC
    # PC08
    mww 0xF4040240 0xC
    # PC07
    mww 0xF4040238 0xC
    # PC06
    mww 0xF4040230 0xC
    # PC05
    mww 0xF4040228 0xC
    # PC04
    mww 0xF4040220 0xC

    # PC14
    mww 0xF4040270 0xC
    # PC13
    mww 0xF4040268 0xC
    # PC16
    # mww 0xF4040280 0x1000C
    # PC26
    mww 0xF40402D0 0xC
    # PC25
    mww 0xF40402C8 0xC
    # PC19
    mww 0xF4040298 0xC
    # PC18
    mww 0xF4040290 0xC
    # PC23
    mww 0xF40402B8 0xC
    # PC24
    mww 0xF40402C0 0xC
    # PC30
    mww 0xF40402F0 0xC
    # PC31
    mww 0xF40402F8 0xC
    # PC02
    mww 0xF4040210 0xC
    # PC03
    mww 0xF4040218 0xC

    # femc configuration
    mww 0xF3050000 0x1
    sleep 10
    mww 0xF3050000 0x2
    mww 0xF3050008 0x30524
    mww 0xF305000C 0x6030524
    mww 0xF3050000 0x10000000

    # 16MB
    mww 0xF3050010 0x40000019
    mww 0xF3050014 0
    # 16-bit
    mww 0xF3050040 0xf31

    # 133Mhz configuration
    #mww 0xF3050044 0x884e22
    # 166Mhz configuration
    mww 0xF3050044 0x884e33

    mww 0xF3050048 0x1020d0d
    mww 0xF3050048 0x1020d0d
    mww 0xF305004C 0x2020300

    # config delay cell
    mww 0xF3050150 0x3b
    mww 0xF3050150 0x203b

    mww 0xF3050094 0
    mww 0xF3050098 0

    # precharge all
    mww 0xF3050090 0x40000000
    mww 0xF305009C 0xA55A000F
    sleep 500
    mww 0xF305003C 0x3
    # auto refresh
    mww 0xF305009C 0xA55A000C
    sleep 500
    mww 0xF305003C 0x3
    mww 0xF305009C 0xA55A000C
    sleep 500
    mww 0xF305003C 0x3

    # set mode
    mww 0xF30500A0 0x33
    mww 0xF305009C 0xA55A000A
    sleep 500
    mww 0xF305003C 0x3

    mww 0xF305004C 0x2020301
    echo "SDRAM has been initialized"
}

$_TARGET0 configure -event reset-init {
    init_clock
    init_sdram
}

$_TARGET0 configure -event gdb-attach {
    reset halt
}