You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

321 lines
11 KiB

  1. #-------------------------------------------------------------------------
  2. # Mini2440 Samsung s3c2440A Processor with 64MB DRAM, 64MB NAND, 2 MB N0R
  3. # NOTE: Configured for NAND boot (switch S2 in NANDBOOT)
  4. # 64 MB NAND (Samsung K9D1208V0M)
  5. # B Findlay 08/09
  6. #
  7. # ----------- Important notes to help you on your way ----------
  8. # README:
  9. # NOR/NAND Boot Switch - I have not read the vivi source, but from
  10. # what I could tell from reading the registers it appears that vivi
  11. # loads itself into DRAM and then flips NFCONT (0x4E000004) bits
  12. # Mode (bit 0 = 1), and REG_nCE (bit 1 = 0) which maps the NAND
  13. # FLASH at the bottom 64MB of memory. This essentially takes the
  14. # NOR Flash out of the circuit so you can't trash it.
  15. #
  16. # I adapted the samsung_s3c2440.cfg file which is why I did not
  17. # include "source [find target/samsung_s3c2440.cfg]". I believe
  18. # the -work-area-phys 0x200000 is incorrect, but also had to pad
  19. # some additional resets. I didn't modify it as if it is working
  20. # for someone, the work-area-phys is not used by most.
  21. #
  22. # JTAG ADAPTER SPECIFIC
  23. # IMPORTANT! Any JTAG device that uses ADAPTIVE CLOCKING will likely
  24. # FAIL as the pin RTCK on the mini2440 10 pin JTAG Conn doesn't exist.
  25. # This is Pin 11 (RTCK) on 20 pin JTAG connector. Therefore it is
  26. # necessary to FORCE setting the clock. Normally this should be configured
  27. # in the openocd.cfg file, but was placed here as it can be a tough
  28. # problem to figure out. THIS MAY NOT FIX YOUR PROBLEM.. I modified
  29. # the openOCD driver jlink.c and posted it here. It may eventually end
  30. # up changed in openOCD, but its a hack in the driver and really should
  31. # be in the jtag layer (core.c me thinks), but haven't done it yet. My
  32. # hack for jlink.c may be found here.
  33. #
  34. # http://forum.sparkfun.com/viewtopic.php?t=16763&sid=946e65abdd3bab39cc7d90dee33ff135
  35. #
  36. # Note: Also if you have a USB JTAG, you will need the USB library installed
  37. # on your system "libusb-dev" or the make of openocd will fail. I *think*
  38. # it's apt-get install libusb-dev. When I made my config I only included
  39. # --enable-jlink and --enable-usbdevs
  40. #
  41. # I HAVE NOT Tested this throughly, so there could still be problems.
  42. # But it should get you way ahead of the game from where I started.
  43. # If you find problems (and fixes) please post them to
  44. # openocd-development@lists.berlios.de and join the developers and
  45. # check in fixes to this and anything else you find. I do not
  46. # provide support, but if you ask really nice and I see anything
  47. # obvious I will tell you.. mostly just dig, fix, and submit to openocd.
  48. #
  49. # best! brfindla@yahoo.com Nashua, NH USA
  50. #
  51. # Recommended resources:
  52. # - first two are the best Mini2440 resources anywhere
  53. # - maintained by buserror... thanks guy!
  54. #
  55. # http://bliterness.blogspot.com/
  56. # http://code.google.com/p/mini2440/
  57. #
  58. # others....
  59. #
  60. # http://forum.sparkfun.com/viewforum.php?f=18
  61. # http://labs.kernelconcepts.de/Publications/Micro24401/
  62. # http://www.friendlyarm.net/home
  63. # http://www.amontec.com/jtag_pinout.shtml
  64. #
  65. #-------------------------------------------------------------------------
  66. #
  67. #
  68. # Your openocd.cfg file should contain:
  69. # source [find interface/<yourjtag>.cfg]
  70. # source [find board/mini2440.cfg]
  71. #
  72. #
  73. #
  74. # FIXME use some standard target config, maybe create one from this
  75. #
  76. # source [find target/...cfg]
  77. #-------------------------------------------------------------------------
  78. # Target configuration for the Samsung 2440 system on chip
  79. # Tested on a S3C2440 Evaluation board by keesj
  80. # Processor : ARM920Tid(wb) rev 0 (v4l)
  81. # Info: JTAG tap: s3c2440.cpu tap/device found: 0x0032409d
  82. # (Manufacturer: 0x04e, Part: 0x0324, Version: 0x0)
  83. #-------------------------------------------------------------------------
  84. if { [info exists CHIPNAME] } {
  85. set _CHIPNAME $CHIPNAME
  86. } else {
  87. set _CHIPNAME s3c2440
  88. }
  89. if { [info exists ENDIAN] } {
  90. set _ENDIAN $ENDIAN
  91. } else {
  92. # this defaults to a bigendian
  93. set _ENDIAN little
  94. }
  95. if { [info exists CPUTAPID ] } {
  96. set _CPUTAPID $CPUTAPID
  97. } else {
  98. set _CPUTAPID 0x0032409d
  99. }
  100. #jtag scan chain
  101. jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0x0f -expected-id $_CPUTAPID
  102. set _TARGETNAME $_CHIPNAME.cpu
  103. target create $_TARGETNAME arm920t -endian $_ENDIAN -chain-position $_TARGETNAME
  104. $_TARGETNAME configure -work-area-phys 0x40000000 -work-area-size 0x4000 -work-area-backup 1
  105. #reset configuration
  106. adapter_nsrst_delay 100
  107. jtag_ntrst_delay 100
  108. reset_config trst_and_srst
  109. #-------------------------------------------------------------------------
  110. # JTAG ADAPTER SPECIFIC
  111. # IMPORTANT! See README at top of this file.
  112. #-------------------------------------------------------------------------
  113. adapter_khz 12000
  114. jtag interface
  115. #-------------------------------------------------------------------------
  116. # GDB Setup
  117. #-------------------------------------------------------------------------
  118. gdb_breakpoint_override hard
  119. #------------------------------------------------
  120. # ARM SPECIFIC
  121. #------------------------------------------------
  122. targets
  123. # arm7_9 dcc_downloads enable
  124. # arm7_9 fast_memory_access enable
  125. nand device s3c2440 0
  126. adapter_nsrst_delay 100
  127. jtag_ntrst_delay 100
  128. reset_config trst_and_srst
  129. init
  130. echo " "
  131. echo "-------------------------------------------"
  132. echo "--- login with - telnet localhost 4444 ---"
  133. echo "--- then type help_2440 ---"
  134. echo "-------------------------------------------"
  135. echo " "
  136. #------------------------------------------------
  137. # Processor Initialialization
  138. # Note: Processor writes can only occur when
  139. # the state is in SYSTEM. When you call init_2440
  140. # one of the first lines will tell you what state
  141. # you are in. If a linux image is booting
  142. # when you run this, it will not work
  143. # a vivi boot loader will run with this just
  144. # fine. The reg values were obtained by a combination
  145. # of figuring them out fromt the manual, and looking
  146. # at post vivi values with the debugger. Don't
  147. # place too much faith in them, but seem to work.
  148. #------------------------------------------------
  149. proc init_2440 { } {
  150. halt
  151. s3c2440.cpu curstate
  152. #-----------------------------------------------
  153. # Set Processor Clocks - mini2440 xtal=12mHz
  154. # we set main clock for 405mHZ
  155. # we set the USB Clock for 48mHz
  156. # OM2 OM3 pulled to ground so main clock and
  157. # usb clock are off 12mHz xtal
  158. #-----------------------------------------------
  159. mww phys 0x4C000014 0x00000005 ;# Clock Divider control Reg
  160. mww phys 0x4C000000 0xFFFFFFFF ;# LOCKTIME count register
  161. mww phys 0x4C000008 0x00038022 ;# UPPLCON USB clock config Reg
  162. mww phys 0x4C000004 0x0007F021 ;# MPPLCON Proc clock config Reg
  163. #-----------------------------------------------
  164. # Configure Memory controller
  165. # BWSCON configures all banks, NAND, NOR, DRAM
  166. # DRAM - 64MB - 32 bit bus, uses BANKCON6 BANKCON7
  167. #-----------------------------------------------
  168. mww phys 0x48000000 0x22111112 ;# BWSCON - Bank and Bus Width
  169. mww phys 0x48000010 0x00001112 ;# BANKCON4 - ?
  170. mww phys 0x4800001c 0x00018009 ;# BANKCON6 - DRAM
  171. mww phys 0x48000020 0x00018009 ;# BANKCON7 - DRAM
  172. mww phys 0x48000024 0x008E04EB ;# REFRESH - DRAM
  173. mww phys 0x48000028 0x000000B2 ;# BANKSIZE - DRAM
  174. mww phys 0x4800002C 0x00000030 ;# MRSRB6 - DRAM
  175. mww phys 0x48000030 0x00000030 ;# MRSRB7 - DRAM
  176. #-----------------------------------------------
  177. # Now port configuration for enables for memory
  178. # and other stuff.
  179. #-----------------------------------------------
  180. mww phys 0x56000000 0x007FFFFF ;# GPACON
  181. mww phys 0x56000010 0x00295559 ;# GPBCON
  182. mww phys 0x56000018 0x000003FF ;# GPBUP (PULLUP ENABLE)
  183. mww phys 0x56000014 0x000007C2 ;# GPBDAT
  184. mww phys 0x56000020 0xAAAAA6AA ;# GPCCON
  185. mww phys 0x56000028 0x0000FFFF ;# GPCUP
  186. mww phys 0x56000024 0x00000020 ;# GPCDAT
  187. mww phys 0x56000030 0xAAAAAAAA ;# GPDCON
  188. mww phys 0x56000038 0x0000FFFF ;# GPDUP
  189. mww phys 0x56000040 0xAAAAAAAA ;# GPECON
  190. mww phys 0x56000048 0x0000FFFF ;# GPEUP
  191. mww phys 0x56000050 0x00001555 ;# GPFCON
  192. mww phys 0x56000058 0x0000007F ;# GPFUP
  193. mww phys 0x56000054 0x00000000 ;# GPFDAT
  194. mww phys 0x56000060 0x00150114 ;# GPGCON
  195. mww phys 0x56000068 0x0000007F ;# GPGUP
  196. mww phys 0x56000070 0x0015AAAA ;# GPHCON
  197. mww phys 0x56000078 0x000003FF ;# GPGUP
  198. }
  199. proc flash_config { } {
  200. #-----------------------------------------
  201. # Finish Flash Configuration
  202. #-----------------------------------------
  203. halt
  204. #flash configuration (K9D1208V0M: 512Mbit, x8, 3.3V, Mode: Normal, 1st gen)
  205. nand probe 0
  206. nand list
  207. }
  208. proc flash_uboot { } {
  209. # flash the u-Boot binary and reboot into it
  210. init_2440
  211. flash_config
  212. nand erase 0 0x0 0x40000
  213. nand write 0 /tftpboot/u-boot-nand512.bin 0 oob_softecc_kw
  214. resume
  215. }
  216. proc load_uboot { } {
  217. echo " "
  218. echo " "
  219. echo "----------------------------------------------------------"
  220. echo "---- Load U-Boot into RAM and execute it. ---"
  221. echo "---- NOTE: loads, partially runs, and hangs ---"
  222. echo "---- U-Boot is fine, this image runs from vivi. ---"
  223. echo "---- I burned u-boot into NAND so I didn't finish ---"
  224. echo "---- debugging it. I am leaving this here as it is ---"
  225. echo "---- part of the way there if you want to fix it. ---"
  226. echo "---- ---"
  227. echo "---- mini2440 U-boot here: ---"
  228. echo "---- http://repo.or.cz/w/u-boot-openmoko/mini2440.git ---"
  229. echo "---- Also this: ---"
  230. echo "---- http://code.google.com/p/mini2440/wiki/MiniBringup --"
  231. echo "----------------------------------------------------------"
  232. init_2440
  233. echo "Loading /tftpboot/u-boot-nand512.bin"
  234. load_image /tftpboot/u-boot-nand512.bin 0x33f80000 bin
  235. echo "Verifying image...."
  236. verify_image /tftpboot/u-boot-nand512.bin 0x33f80000 bin
  237. echo "jumping to u-boot"
  238. #bp 0x33f80068 4 hw
  239. reg 0 0
  240. reg 1 0
  241. reg 2 0
  242. reg 3 0
  243. reg 4 0x33f80000
  244. resume 0x33f80000
  245. }
  246. # this may help a little bit debugging the load_uboot
  247. proc s {} {
  248. step
  249. reg
  250. arm disassemble 0x33F80068 0x10
  251. }
  252. proc help_2440 {} {
  253. echo " "
  254. echo " "
  255. echo "-----------------------------------------------------------"
  256. echo "---- The following mini2440 funcs are supported ----"
  257. echo "---- init_2440 - initialize clocks, DRAM, IO ----"
  258. echo "---- flash_config - configures nand flash ----"
  259. echo "---- load_uboot - loads uboot into ram ----"
  260. echo "---- flash_uboot - flashes uboot to nand (untested) ----"
  261. echo "---- help_2440 - this help display ----"
  262. echo "-----------------------------------------------------------"
  263. echo " "
  264. echo " "
  265. }
  266. #----------------------------------------------------------------------------
  267. #----------------------------------- END ------------------------------------
  268. #----------------------------------------------------------------------------