hpm6750evkmini.cfg 10.0 KB

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