hpm6750evk2.cfg 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. # Copyright (c) 2022 HPMicro
  2. # SPDX-License-Identifier: BSD-3-Clause
  3. # openocd flash driver argument:
  4. # - option0:
  5. # [31:28] Flash probe type
  6. # 0 - SFDP SDR / 1 - SFDP DDR
  7. # 2 - 1-4-4 Read (0xEB, 24-bit address) / 3 - 1-2-2 Read(0xBB, 24-bit address)
  8. # 4 - HyperFLASH 1.8V / 5 - HyperFLASH 3V
  9. # 6 - OctaBus DDR (SPI -> OPI DDR)
  10. # 8 - Xccela DDR (SPI -> OPI DDR)
  11. # 10 - EcoXiP DDR (SPI -> OPI DDR)
  12. # [27:24] Command Pads after Power-on Reset
  13. # 0 - SPI / 1 - DPI / 2 - QPI / 3 - OPI
  14. # [23:20] Command Pads after Configuring FLASH
  15. # 0 - SPI / 1 - DPI / 2 - QPI / 3 - OPI
  16. # [19:16] Quad Enable Sequence (for the device support SFDP 1.0 only)
  17. # 0 - Not needed
  18. # 1 - QE bit is at bit 6 in Status Register 1
  19. # 2 - QE bit is at bit1 in Status Register 2
  20. # 3 - QE bit is at bit7 in Status Register 2
  21. # 4 - QE bit is at bit1 in Status Register 2 and should be programmed by 0x31
  22. # [15:8] Dummy cycles
  23. # 0 - Auto-probed / detected / default value
  24. # Others - User specified value, for DDR read, the dummy cycles should be 2 * cycles on FLASH datasheet
  25. # [7:4] Misc.
  26. # 0 - Not used
  27. # 1 - SPI mode
  28. # 2 - Internal loopback
  29. # 3 - External DQS
  30. # [3:0] Frequency option
  31. # 1 - 30MHz / 2 - 50MHz / 3 - 66MHz / 4 - 80MHz / 5 - 100MHz / 6 - 120MHz / 7 - 133MHz / 8 - 166MHz
  32. # - option1:
  33. # [31:20] Reserved
  34. # [19:16] IO voltage
  35. # 0 - 3V / 1 - 1.8V
  36. # [15:12] Pin group
  37. # 0 - 1st group / 1 - 2nd group
  38. # [11:8] Connection selection
  39. # 0 - CA_CS0 / 1 - CB_CS0 / 2 - CA_CS0 + CB_CS0 (Two FLASH connected to CA and CB respectively)
  40. # [7:0] Drive Strength
  41. # 0 - Default value
  42. # xpi0 configs
  43. # - flash driver: hpm_xpi
  44. # - flash ctrl index: 0xF3040000
  45. # - base address: 0x80000000
  46. # - flash size: 0x2000000
  47. # - flash option0: 0x7
  48. flash bank xpi0 hpm_xpi 0x80000000 0x2000000 1 1 $_TARGET0 0xF3040000 0x7
  49. proc init_clock {} {
  50. $::_TARGET0 riscv dmi_write 0x39 0xF4002000
  51. $::_TARGET0 riscv dmi_write 0x3C 0x1
  52. $::_TARGET0 riscv dmi_write 0x39 0xF4002000
  53. $::_TARGET0 riscv dmi_write 0x3C 0x2
  54. $::_TARGET0 riscv dmi_write 0x39 0xF4000800
  55. $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
  56. $::_TARGET0 riscv dmi_write 0x39 0xF4000810
  57. $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
  58. $::_TARGET0 riscv dmi_write 0x39 0xF4000820
  59. $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
  60. $::_TARGET0 riscv dmi_write 0x39 0xF4000830
  61. $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
  62. echo "clocks has been enabled!"
  63. }
  64. proc init_sdram { } {
  65. # configure femc frequency
  66. # 133Mhz pll1_clk0: 266Mhz divide by 2
  67. #$::_TARGET0 riscv dmi_write 0x39 0xF4001820
  68. #$::_TARGET0 riscv dmi_write 0x3C 0x201
  69. # 166Mhz pll2_clk0: 333Mhz divide by 2
  70. $::_TARGET0 riscv dmi_write 0x39 0xF4001820
  71. $::_TARGET0 riscv dmi_write 0x3C 0x401
  72. # PC01
  73. $::_TARGET0 riscv dmi_write 0x39 0xF4040208
  74. $::_TARGET0 riscv dmi_write 0x3C 0xC
  75. # PC00
  76. $::_TARGET0 riscv dmi_write 0x39 0xF4040200
  77. $::_TARGET0 riscv dmi_write 0x3C 0xC
  78. # PB31
  79. $::_TARGET0 riscv dmi_write 0x39 0xF40401F8
  80. $::_TARGET0 riscv dmi_write 0x3C 0xC
  81. # PB30
  82. $::_TARGET0 riscv dmi_write 0x39 0xF40401F0
  83. $::_TARGET0 riscv dmi_write 0x3C 0xC
  84. # PB29
  85. $::_TARGET0 riscv dmi_write 0x39 0xF40401E8
  86. $::_TARGET0 riscv dmi_write 0x3C 0xC
  87. # PB28
  88. $::_TARGET0 riscv dmi_write 0x39 0xF40401E0
  89. $::_TARGET0 riscv dmi_write 0x3C 0xC
  90. # PB27
  91. $::_TARGET0 riscv dmi_write 0x39 0xF40401D8
  92. $::_TARGET0 riscv dmi_write 0x3C 0xC
  93. # PB26
  94. $::_TARGET0 riscv dmi_write 0x39 0xF40401D0
  95. $::_TARGET0 riscv dmi_write 0x3C 0xC
  96. # PB25
  97. $::_TARGET0 riscv dmi_write 0x39 0xF40401C8
  98. $::_TARGET0 riscv dmi_write 0x3C 0xC
  99. # PB24
  100. $::_TARGET0 riscv dmi_write 0x39 0xF40401C0
  101. $::_TARGET0 riscv dmi_write 0x3C 0xC
  102. # PB23
  103. $::_TARGET0 riscv dmi_write 0x39 0xF40401B8
  104. $::_TARGET0 riscv dmi_write 0x3C 0xC
  105. # PB22
  106. $::_TARGET0 riscv dmi_write 0x39 0xF40401B0
  107. $::_TARGET0 riscv dmi_write 0x3C 0xC
  108. # PB21
  109. $::_TARGET0 riscv dmi_write 0x39 0xF40401A8
  110. $::_TARGET0 riscv dmi_write 0x3C 0xC
  111. # PB20
  112. $::_TARGET0 riscv dmi_write 0x39 0xF40401A0
  113. $::_TARGET0 riscv dmi_write 0x3C 0xC
  114. # PB19
  115. $::_TARGET0 riscv dmi_write 0x39 0xF4040198
  116. $::_TARGET0 riscv dmi_write 0x3C 0xC
  117. # PB18
  118. $::_TARGET0 riscv dmi_write 0x39 0xF4040190
  119. $::_TARGET0 riscv dmi_write 0x3C 0xC
  120. # PD13
  121. $::_TARGET0 riscv dmi_write 0x39 0xF4040368
  122. $::_TARGET0 riscv dmi_write 0x3C 0xC
  123. # PD12
  124. $::_TARGET0 riscv dmi_write 0x39 0xF4040360
  125. $::_TARGET0 riscv dmi_write 0x3C 0xC
  126. # PD10
  127. $::_TARGET0 riscv dmi_write 0x39 0xF4040350
  128. $::_TARGET0 riscv dmi_write 0x3C 0xC
  129. # PD09
  130. $::_TARGET0 riscv dmi_write 0x39 0xF4040348
  131. $::_TARGET0 riscv dmi_write 0x3C 0xC
  132. # PD08
  133. $::_TARGET0 riscv dmi_write 0x39 0xF4040340
  134. $::_TARGET0 riscv dmi_write 0x3C 0xC
  135. # PD07
  136. $::_TARGET0 riscv dmi_write 0x39 0xF4040338
  137. $::_TARGET0 riscv dmi_write 0x3C 0xC
  138. # PD06
  139. $::_TARGET0 riscv dmi_write 0x39 0xF4040330
  140. $::_TARGET0 riscv dmi_write 0x3C 0xC
  141. # PD05
  142. $::_TARGET0 riscv dmi_write 0x39 0xF4040328
  143. $::_TARGET0 riscv dmi_write 0x3C 0xC
  144. # PD04
  145. $::_TARGET0 riscv dmi_write 0x39 0xF4040320
  146. $::_TARGET0 riscv dmi_write 0x3C 0xC
  147. # PD03
  148. $::_TARGET0 riscv dmi_write 0x39 0xF4040318
  149. $::_TARGET0 riscv dmi_write 0x3C 0xC
  150. # PD02
  151. $::_TARGET0 riscv dmi_write 0x39 0xF4040310
  152. $::_TARGET0 riscv dmi_write 0x3C 0xC
  153. # PD01
  154. $::_TARGET0 riscv dmi_write 0x39 0xF4040308
  155. $::_TARGET0 riscv dmi_write 0x3C 0xC
  156. # PD00
  157. $::_TARGET0 riscv dmi_write 0x39 0xF4040300
  158. $::_TARGET0 riscv dmi_write 0x3C 0xC
  159. # PC29
  160. $::_TARGET0 riscv dmi_write 0x39 0xF40402E8
  161. $::_TARGET0 riscv dmi_write 0x3C 0xC
  162. # PC28
  163. $::_TARGET0 riscv dmi_write 0x39 0xF40402E0
  164. $::_TARGET0 riscv dmi_write 0x3C 0xC
  165. # PC27
  166. $::_TARGET0 riscv dmi_write 0x39 0xF40402D8
  167. $::_TARGET0 riscv dmi_write 0x3C 0xC
  168. # PC22
  169. $::_TARGET0 riscv dmi_write 0x39 0xF40402B0
  170. $::_TARGET0 riscv dmi_write 0x3C 0xC
  171. # PC21
  172. $::_TARGET0 riscv dmi_write 0x39 0xF40402A8
  173. $::_TARGET0 riscv dmi_write 0x3C 0xC
  174. # PC17
  175. $::_TARGET0 riscv dmi_write 0x39 0xF4040288
  176. $::_TARGET0 riscv dmi_write 0x3C 0xC
  177. # PC15
  178. $::_TARGET0 riscv dmi_write 0x39 0xF4040278
  179. $::_TARGET0 riscv dmi_write 0x3C 0xC
  180. # PC12
  181. $::_TARGET0 riscv dmi_write 0x39 0xF4040260
  182. $::_TARGET0 riscv dmi_write 0x3C 0xC
  183. # PC11
  184. $::_TARGET0 riscv dmi_write 0x39 0xF4040258
  185. $::_TARGET0 riscv dmi_write 0x3C 0xC
  186. # PC10
  187. $::_TARGET0 riscv dmi_write 0x39 0xF4040250
  188. $::_TARGET0 riscv dmi_write 0x3C 0xC
  189. # PC09
  190. $::_TARGET0 riscv dmi_write 0x39 0xF4040248
  191. $::_TARGET0 riscv dmi_write 0x3C 0xC
  192. # PC08
  193. $::_TARGET0 riscv dmi_write 0x39 0xF4040240
  194. $::_TARGET0 riscv dmi_write 0x3C 0xC
  195. # PC07
  196. $::_TARGET0 riscv dmi_write 0x39 0xF4040238
  197. $::_TARGET0 riscv dmi_write 0x3C 0xC
  198. # PC06
  199. $::_TARGET0 riscv dmi_write 0x39 0xF4040230
  200. $::_TARGET0 riscv dmi_write 0x3C 0xC
  201. # PC05
  202. $::_TARGET0 riscv dmi_write 0x39 0xF4040228
  203. $::_TARGET0 riscv dmi_write 0x3C 0xC
  204. # PC04
  205. $::_TARGET0 riscv dmi_write 0x39 0xF4040220
  206. $::_TARGET0 riscv dmi_write 0x3C 0xC
  207. # PC14
  208. $::_TARGET0 riscv dmi_write 0x39 0xF4040270
  209. $::_TARGET0 riscv dmi_write 0x3C 0xC
  210. # PC13
  211. $::_TARGET0 riscv dmi_write 0x39 0xF4040268
  212. $::_TARGET0 riscv dmi_write 0x3C 0xC
  213. # PC16
  214. # $::_TARGET0 riscv dmi_write 0x39 0xF4040280
  215. #$::_TARGET0 riscv dmi_write 0x3C 0x1000C
  216. # PC26
  217. $::_TARGET0 riscv dmi_write 0x39 0xF40402D0
  218. $::_TARGET0 riscv dmi_write 0x3C 0xC
  219. # PC25
  220. $::_TARGET0 riscv dmi_write 0x39 0xF40402C8
  221. $::_TARGET0 riscv dmi_write 0x3C 0xC
  222. # PC19
  223. $::_TARGET0 riscv dmi_write 0x39 0xF4040298
  224. $::_TARGET0 riscv dmi_write 0x3C 0xC
  225. # PC18
  226. $::_TARGET0 riscv dmi_write 0x39 0xF4040290
  227. $::_TARGET0 riscv dmi_write 0x3C 0xC
  228. # PC23
  229. $::_TARGET0 riscv dmi_write 0x39 0xF40402B8
  230. $::_TARGET0 riscv dmi_write 0x3C 0xC
  231. # PC24
  232. $::_TARGET0 riscv dmi_write 0x39 0xF40402C0
  233. $::_TARGET0 riscv dmi_write 0x3C 0xC
  234. # PC30
  235. $::_TARGET0 riscv dmi_write 0x39 0xF40402F0
  236. $::_TARGET0 riscv dmi_write 0x3C 0xC
  237. # PC31
  238. $::_TARGET0 riscv dmi_write 0x39 0xF40402F8
  239. $::_TARGET0 riscv dmi_write 0x3C 0xC
  240. # PC02
  241. $::_TARGET0 riscv dmi_write 0x39 0xF4040210
  242. $::_TARGET0 riscv dmi_write 0x3C 0xC
  243. # PC03
  244. $::_TARGET0 riscv dmi_write 0x39 0xF4040218
  245. $::_TARGET0 riscv dmi_write 0x3C 0xC
  246. # femc configuration
  247. $::_TARGET0 riscv dmi_write 0x39 0xF3050000
  248. $::_TARGET0 riscv dmi_write 0x3C 0x1
  249. sleep 10
  250. $::_TARGET0 riscv dmi_write 0x39 0xF3050000
  251. $::_TARGET0 riscv dmi_write 0x3C 0x2
  252. $::_TARGET0 riscv dmi_write 0x39 0xF3050008
  253. $::_TARGET0 riscv dmi_write 0x3C 0x30524
  254. $::_TARGET0 riscv dmi_write 0x39 0xF305000C
  255. $::_TARGET0 riscv dmi_write 0x3C 0x6030524
  256. $::_TARGET0 riscv dmi_write 0x39 0xF3050000
  257. $::_TARGET0 riscv dmi_write 0x3C 0x10000000
  258. $::_TARGET0 riscv dmi_write 0x39 0xF3050010
  259. $::_TARGET0 riscv dmi_write 0x3C 0x4000001b
  260. $::_TARGET0 riscv dmi_write 0x39 0xF3050014
  261. $::_TARGET0 riscv dmi_write 0x3C 0
  262. $::_TARGET0 riscv dmi_write 0x39 0xF3050040
  263. $::_TARGET0 riscv dmi_write 0x3C 0xf32
  264. # 133Mhz configuration
  265. #$::_TARGET0 riscv dmi_write 0x39 0xF3050044
  266. #$::_TARGET0 riscv dmi_write 0x3C 0x884e22
  267. # 166Mhz configuration
  268. $::_TARGET0 riscv dmi_write 0x39 0xF3050044
  269. $::_TARGET0 riscv dmi_write 0x3C 0x884e33
  270. $::_TARGET0 riscv dmi_write 0x39 0xF3050048
  271. $::_TARGET0 riscv dmi_write 0x3C 0x1020d0d
  272. $::_TARGET0 riscv dmi_write 0x39 0xF3050048
  273. $::_TARGET0 riscv dmi_write 0x3C 0x1020d0d
  274. $::_TARGET0 riscv dmi_write 0x39 0xF305004C
  275. $::_TARGET0 riscv dmi_write 0x3C 0x2020300
  276. # config delay cell
  277. $::_TARGET0 riscv dmi_write 0x39 0xF3050150
  278. $::_TARGET0 riscv dmi_write 0x3C 0x3b
  279. $::_TARGET0 riscv dmi_write 0x39 0xF3050150
  280. $::_TARGET0 riscv dmi_write 0x3C 0x203b
  281. $::_TARGET0 riscv dmi_write 0x39 0xF3050094
  282. $::_TARGET0 riscv dmi_write 0x3C 0
  283. $::_TARGET0 riscv dmi_write 0x39 0xF3050098
  284. $::_TARGET0 riscv dmi_write 0x3C 0
  285. # precharge all
  286. $::_TARGET0 riscv dmi_write 0x39 0xF3050090
  287. $::_TARGET0 riscv dmi_write 0x3C 0x40000000
  288. $::_TARGET0 riscv dmi_write 0x39 0xF305009C
  289. $::_TARGET0 riscv dmi_write 0x3C 0xA55A000F
  290. sleep 500
  291. $::_TARGET0 riscv dmi_write 0x39 0xF305003C
  292. $::_TARGET0 riscv dmi_write 0x3C 0x3
  293. # auto refresh
  294. $::_TARGET0 riscv dmi_write 0x39 0xF305009C
  295. $::_TARGET0 riscv dmi_write 0x3C 0xA55A000C
  296. sleep 500
  297. $::_TARGET0 riscv dmi_write 0x39 0xF305003C
  298. $::_TARGET0 riscv dmi_write 0x3C 0x3
  299. $::_TARGET0 riscv dmi_write 0x39 0xF305009C
  300. $::_TARGET0 riscv dmi_write 0x3C 0xA55A000C
  301. sleep 500
  302. $::_TARGET0 riscv dmi_write 0x39 0xF305003C
  303. $::_TARGET0 riscv dmi_write 0x3C 0x3
  304. # set mode
  305. $::_TARGET0 riscv dmi_write 0x39 0xF30500A0
  306. $::_TARGET0 riscv dmi_write 0x3C 0x33
  307. $::_TARGET0 riscv dmi_write 0x39 0xF305009C
  308. $::_TARGET0 riscv dmi_write 0x3C 0xA55A000A
  309. sleep 500
  310. $::_TARGET0 riscv dmi_write 0x39 0xF305003C
  311. $::_TARGET0 riscv dmi_write 0x3C 0x3
  312. $::_TARGET0 riscv dmi_write 0x39 0xF305004C
  313. $::_TARGET0 riscv dmi_write 0x3C 0x2020301
  314. echo "SDRAM has been initialized"
  315. }
  316. $_TARGET0 configure -event reset-init {
  317. init_clock
  318. init_sdram
  319. }
  320. $_TARGET0 configure -event gdb-attach {
  321. reset halt
  322. }