hpm6300evk.cfg 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. # Copyright 2021 hpmicro
  2. # SPDX-License-Identifier: BSD-3-Clause
  3. flash bank xpi0 hpm_xpi 0x80000000 0x1000000 1 1 $_TARGET0 0xF3040000
  4. proc init_clock {} {
  5. $::_TARGET0 riscv dmi_write 0x39 0xF4002000
  6. $::_TARGET0 riscv dmi_write 0x3C 0x1
  7. $::_TARGET0 riscv dmi_write 0x39 0xF4002000
  8. $::_TARGET0 riscv dmi_write 0x3C 0x2
  9. $::_TARGET0 riscv dmi_write 0x39 0xF4000800
  10. $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
  11. $::_TARGET0 riscv dmi_write 0x39 0xF4000810
  12. $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
  13. $::_TARGET0 riscv dmi_write 0x39 0xF4000820
  14. $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
  15. $::_TARGET0 riscv dmi_write 0x39 0xF4000830
  16. $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
  17. echo "clocks has been enabled!"
  18. }
  19. proc init_sdram { } {
  20. # configure dram frequency
  21. # 133Mhz pll1_clk0: 266Mhz divide by 2
  22. #$::_TARGET0 riscv dmi_write 0x39 0xF4001820
  23. $::_TARGET0 riscv dmi_write 0x3C 0x201
  24. # 166Mhz pll2_clk0: 333Mhz divide by 2
  25. $::_TARGET0 riscv dmi_write 0x39 0xF4001820
  26. $::_TARGET0 riscv dmi_write 0x3C 0x401
  27. # PD13
  28. $::_TARGET0 riscv dmi_write 0x39 0xF4040368
  29. $::_TARGET0 riscv dmi_write 0x3C 0xC
  30. # PD12
  31. $::_TARGET0 riscv dmi_write 0x39 0xF4040360
  32. $::_TARGET0 riscv dmi_write 0x3C 0xC
  33. # PD10
  34. $::_TARGET0 riscv dmi_write 0x39 0xF4040350
  35. $::_TARGET0 riscv dmi_write 0x3C 0xC
  36. # PD09
  37. $::_TARGET0 riscv dmi_write 0x39 0xF4040348
  38. $::_TARGET0 riscv dmi_write 0x3C 0xC
  39. # PD08
  40. $::_TARGET0 riscv dmi_write 0x39 0xF4040340
  41. $::_TARGET0 riscv dmi_write 0x3C 0xC
  42. # PD07
  43. $::_TARGET0 riscv dmi_write 0x39 0xF4040338
  44. $::_TARGET0 riscv dmi_write 0x3C 0xC
  45. # PD06
  46. $::_TARGET0 riscv dmi_write 0x39 0xF4040330
  47. $::_TARGET0 riscv dmi_write 0x3C 0xC
  48. # PD05
  49. $::_TARGET0 riscv dmi_write 0x39 0xF4040328
  50. $::_TARGET0 riscv dmi_write 0x3C 0xC
  51. # PD04
  52. $::_TARGET0 riscv dmi_write 0x39 0xF4040320
  53. $::_TARGET0 riscv dmi_write 0x3C 0xC
  54. # PD03
  55. $::_TARGET0 riscv dmi_write 0x39 0xF4040318
  56. $::_TARGET0 riscv dmi_write 0x3C 0xC
  57. # PD02
  58. $::_TARGET0 riscv dmi_write 0x39 0xF4040310
  59. $::_TARGET0 riscv dmi_write 0x3C 0xC
  60. # PD01
  61. $::_TARGET0 riscv dmi_write 0x39 0xF4040308
  62. $::_TARGET0 riscv dmi_write 0x3C 0xC
  63. # PD00
  64. $::_TARGET0 riscv dmi_write 0x39 0xF4040300
  65. $::_TARGET0 riscv dmi_write 0x3C 0xC
  66. # PC29
  67. $::_TARGET0 riscv dmi_write 0x39 0xF40402E8
  68. $::_TARGET0 riscv dmi_write 0x3C 0xC
  69. # PC28
  70. $::_TARGET0 riscv dmi_write 0x39 0xF40402E0
  71. $::_TARGET0 riscv dmi_write 0x3C 0xC
  72. # PC27
  73. $::_TARGET0 riscv dmi_write 0x39 0xF40402D8
  74. $::_TARGET0 riscv dmi_write 0x3C 0xC
  75. # PC22
  76. $::_TARGET0 riscv dmi_write 0x39 0xF40402B0
  77. $::_TARGET0 riscv dmi_write 0x3C 0xC
  78. # PC21
  79. $::_TARGET0 riscv dmi_write 0x39 0xF40402A8
  80. $::_TARGET0 riscv dmi_write 0x3C 0xC
  81. # PC17
  82. $::_TARGET0 riscv dmi_write 0x39 0xF4040288
  83. $::_TARGET0 riscv dmi_write 0x3C 0xC
  84. # PC15
  85. $::_TARGET0 riscv dmi_write 0x39 0xF4040278
  86. $::_TARGET0 riscv dmi_write 0x3C 0xC
  87. # PC12
  88. $::_TARGET0 riscv dmi_write 0x39 0xF4040260
  89. $::_TARGET0 riscv dmi_write 0x3C 0xC
  90. # PC11
  91. $::_TARGET0 riscv dmi_write 0x39 0xF4040258
  92. $::_TARGET0 riscv dmi_write 0x3C 0xC
  93. # PC10
  94. $::_TARGET0 riscv dmi_write 0x39 0xF4040250
  95. $::_TARGET0 riscv dmi_write 0x3C 0xC
  96. # PC09
  97. $::_TARGET0 riscv dmi_write 0x39 0xF4040248
  98. $::_TARGET0 riscv dmi_write 0x3C 0xC
  99. # PC08
  100. $::_TARGET0 riscv dmi_write 0x39 0xF4040240
  101. $::_TARGET0 riscv dmi_write 0x3C 0xC
  102. # PC07
  103. $::_TARGET0 riscv dmi_write 0x39 0xF4040238
  104. $::_TARGET0 riscv dmi_write 0x3C 0xC
  105. # PC06
  106. $::_TARGET0 riscv dmi_write 0x39 0xF4040230
  107. $::_TARGET0 riscv dmi_write 0x3C 0xC
  108. # PC05
  109. $::_TARGET0 riscv dmi_write 0x39 0xF4040228
  110. $::_TARGET0 riscv dmi_write 0x3C 0xC
  111. # PC04
  112. $::_TARGET0 riscv dmi_write 0x39 0xF4040220
  113. $::_TARGET0 riscv dmi_write 0x3C 0xC
  114. # PC14
  115. $::_TARGET0 riscv dmi_write 0x39 0xF4040270
  116. $::_TARGET0 riscv dmi_write 0x3C 0xC
  117. # PC13
  118. $::_TARGET0 riscv dmi_write 0x39 0xF4040268
  119. $::_TARGET0 riscv dmi_write 0x3C 0xC
  120. # PC16
  121. # $::_TARGET0 riscv dmi_write 0x39 0xF4040280
  122. $::_TARGET0 riscv dmi_write 0x3C 0x1000C
  123. # PC26
  124. $::_TARGET0 riscv dmi_write 0x39 0xF40402D0
  125. $::_TARGET0 riscv dmi_write 0x3C 0xC
  126. # PC25
  127. $::_TARGET0 riscv dmi_write 0x39 0xF40402C8
  128. $::_TARGET0 riscv dmi_write 0x3C 0xC
  129. # PC19
  130. $::_TARGET0 riscv dmi_write 0x39 0xF4040298
  131. $::_TARGET0 riscv dmi_write 0x3C 0xC
  132. # PC18
  133. $::_TARGET0 riscv dmi_write 0x39 0xF4040290
  134. $::_TARGET0 riscv dmi_write 0x3C 0xC
  135. # PC23
  136. $::_TARGET0 riscv dmi_write 0x39 0xF40402B8
  137. $::_TARGET0 riscv dmi_write 0x3C 0xC
  138. # PC24
  139. $::_TARGET0 riscv dmi_write 0x39 0xF40402C0
  140. $::_TARGET0 riscv dmi_write 0x3C 0xC
  141. # PC30
  142. $::_TARGET0 riscv dmi_write 0x39 0xF40402F0
  143. $::_TARGET0 riscv dmi_write 0x3C 0xC
  144. # PC31
  145. $::_TARGET0 riscv dmi_write 0x39 0xF40402F8
  146. $::_TARGET0 riscv dmi_write 0x3C 0xC
  147. # PC02
  148. $::_TARGET0 riscv dmi_write 0x39 0xF4040210
  149. $::_TARGET0 riscv dmi_write 0x3C 0xC
  150. # PC03
  151. $::_TARGET0 riscv dmi_write 0x39 0xF4040218
  152. $::_TARGET0 riscv dmi_write 0x3C 0xC
  153. # dramc configuration
  154. $::_TARGET0 riscv dmi_write 0x39 0xF3050000
  155. $::_TARGET0 riscv dmi_write 0x3C 0x1
  156. sleep 10
  157. $::_TARGET0 riscv dmi_write 0x39 0xF3050000
  158. $::_TARGET0 riscv dmi_write 0x3C 0x2
  159. $::_TARGET0 riscv dmi_write 0x39 0xF3050008
  160. $::_TARGET0 riscv dmi_write 0x3C 0x30524
  161. $::_TARGET0 riscv dmi_write 0x39 0xF305000C
  162. $::_TARGET0 riscv dmi_write 0x3C 0x6030524
  163. $::_TARGET0 riscv dmi_write 0x39 0xF3050000
  164. $::_TARGET0 riscv dmi_write 0x3C 0x10000000
  165. # 32MB
  166. $::_TARGET0 riscv dmi_write 0x39 0xF3050010
  167. $::_TARGET0 riscv dmi_write 0x3C 0x4000001b
  168. $::_TARGET0 riscv dmi_write 0x39 0xF3050014
  169. $::_TARGET0 riscv dmi_write 0x3C 0
  170. # 16-bit
  171. $::_TARGET0 riscv dmi_write 0x39 0xF3050040
  172. $::_TARGET0 riscv dmi_write 0x3C 0xf31
  173. # 133Mhz configuration
  174. #$::_TARGET0 riscv dmi_write 0x39 0xF3050044
  175. $::_TARGET0 riscv dmi_write 0x3C 0x884e22
  176. # 166Mhz configuration
  177. $::_TARGET0 riscv dmi_write 0x39 0xF3050044
  178. $::_TARGET0 riscv dmi_write 0x3C 0x884e33
  179. $::_TARGET0 riscv dmi_write 0x39 0xF3050048
  180. $::_TARGET0 riscv dmi_write 0x3C 0x1020d0d
  181. $::_TARGET0 riscv dmi_write 0x39 0xF3050048
  182. $::_TARGET0 riscv dmi_write 0x3C 0x1020d0d
  183. $::_TARGET0 riscv dmi_write 0x39 0xF305004C
  184. $::_TARGET0 riscv dmi_write 0x3C 0x2020300
  185. # config delay cell
  186. $::_TARGET0 riscv dmi_write 0x39 0xF3050150
  187. $::_TARGET0 riscv dmi_write 0x3C 0x3b
  188. $::_TARGET0 riscv dmi_write 0x39 0xF3050150
  189. $::_TARGET0 riscv dmi_write 0x3C 0x203b
  190. $::_TARGET0 riscv dmi_write 0x39 0xF3050094
  191. $::_TARGET0 riscv dmi_write 0x3C 0
  192. $::_TARGET0 riscv dmi_write 0x39 0xF3050098
  193. $::_TARGET0 riscv dmi_write 0x3C 0
  194. # precharge all
  195. $::_TARGET0 riscv dmi_write 0x39 0xF3050090
  196. $::_TARGET0 riscv dmi_write 0x3C 0x40000000
  197. $::_TARGET0 riscv dmi_write 0x39 0xF305009C
  198. $::_TARGET0 riscv dmi_write 0x3C 0xA55A000F
  199. sleep 500
  200. $::_TARGET0 riscv dmi_write 0x39 0xF305003C
  201. $::_TARGET0 riscv dmi_write 0x3C 0x3
  202. # auto refresh
  203. $::_TARGET0 riscv dmi_write 0x39 0xF305009C
  204. $::_TARGET0 riscv dmi_write 0x3C 0xA55A000C
  205. sleep 500
  206. $::_TARGET0 riscv dmi_write 0x39 0xF305003C
  207. $::_TARGET0 riscv dmi_write 0x3C 0x3
  208. $::_TARGET0 riscv dmi_write 0x39 0xF305009C
  209. $::_TARGET0 riscv dmi_write 0x3C 0xA55A000C
  210. sleep 500
  211. $::_TARGET0 riscv dmi_write 0x39 0xF305003C
  212. $::_TARGET0 riscv dmi_write 0x3C 0x3
  213. # set mode
  214. $::_TARGET0 riscv dmi_write 0x39 0xF30500A0
  215. $::_TARGET0 riscv dmi_write 0x3C 0x33
  216. $::_TARGET0 riscv dmi_write 0x39 0xF305009C
  217. $::_TARGET0 riscv dmi_write 0x3C 0xA55A000A
  218. sleep 500
  219. $::_TARGET0 riscv dmi_write 0x39 0xF305003C
  220. $::_TARGET0 riscv dmi_write 0x3C 0x3
  221. $::_TARGET0 riscv dmi_write 0x39 0xF305004C
  222. $::_TARGET0 riscv dmi_write 0x3C 0x2020301
  223. echo "SDRAM has been initialized"
  224. }
  225. $_TARGET0 configure -event reset-init {
  226. init_clock
  227. init_sdram
  228. }
  229. $_TARGET0 configure -event gdb-attach {
  230. reset halt
  231. }