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.
 
 
 
 
 
 

101 lines
3.1 KiB

  1. #
  2. # Texas Instruments DaVinci family: TMS320DM355
  3. #
  4. if { [info exists CHIPNAME] } {
  5. set _CHIPNAME $CHIPNAME
  6. } else {
  7. set _CHIPNAME dm355
  8. }
  9. if { [info exists ENDIAN] } {
  10. set _ENDIAN $ENDIAN
  11. } else {
  12. set _ENDIAN little
  13. }
  14. #
  15. # For now, expect EMU0/EMU1 jumpered LOW (not TI's default) so ARM and ETB
  16. # are enabled without making ICEpick route ARM and ETB into the JTAG chain.
  17. #
  18. # Also note: when running without RTCK before the PLLs are set up, you
  19. # may need to slow the JTAG clock down quite a lot (under 2 MHz).
  20. #
  21. # Subsidiary TAP: ARM ETB11, with scan chain for 4K of ETM trace buffer
  22. if { [info exists ETB_TAPID ] } {
  23. set _ETB_TAPID $ETB_TAPID
  24. } else {
  25. set _ETB_TAPID 0x2b900f0f
  26. }
  27. jtag newtap $_CHIPNAME etb -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_ETB_TAPID
  28. # Subsidiary TAP: ARM926ejs with scan chains for ARM Debug, EmbeddedICE-RT, ETM.
  29. if { [info exists CPU_TAPID ] } {
  30. set _CPU_TAPID $CPU_TAPID
  31. } else {
  32. set _CPU_TAPID 0x07926001
  33. }
  34. jtag newtap $_CHIPNAME arm -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPU_TAPID
  35. # Primary TAP: ICEpick (JTAG route controller) and boundary scan
  36. if { [info exists JRC_TAPID ] } {
  37. set _JRC_TAPID $JRC_TAPID
  38. } else {
  39. set _JRC_TAPID 0x0b73b02f
  40. }
  41. jtag newtap $_CHIPNAME jrc -irlen 6 -ircapture 0x1 -irmask 0x3f -expected-id $_JRC_TAPID
  42. ################
  43. # various symbol definitions, to avoid hard-wiring addresses
  44. # and enable some sharing of DaVinci-family utility code
  45. global dm355
  46. set dm355 [ dict create ]
  47. # Physical addresses for controllers and memory
  48. # (Some of these are valid for many DaVinci family chips)
  49. dict set dm355 sram0 0x00010000
  50. dict set dm355 sram1 0x00014000
  51. dict set dm355 sysbase 0x01c40000
  52. dict set dm355 pllc1 0x01c40800
  53. dict set dm355 pllc2 0x01c40c00
  54. dict set dm355 psc 0x01c41000
  55. dict set dm355 gpio 0x01c67000
  56. dict set dm355 a_emif 0x01e10000
  57. dict set dm355 a_emif_cs0 0x02000000
  58. dict set dm355 a_emif_cs1 0x04000000
  59. dict set dm355 ddr_emif 0x20000000
  60. dict set dm355 ddr 0x80000000
  61. dict set dm355 uart0 0x01c20000
  62. dict set dm355 uart1 0x01c20400
  63. dict set dm355 uart2 0x01e06000
  64. source [find target/davinci.cfg]
  65. ################
  66. # GDB target: the ARM, using SRAM1 for scratch. SRAM0 (also 16K)
  67. # and the ETB memory (4K) are other options, while trace is unused.
  68. set _TARGETNAME $_CHIPNAME.arm
  69. target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME
  70. # NOTE that work-area-virt presumes a Linux 2.6.30-rc2+ kernel,
  71. # and that the work area is used only with a kernel mmu context ...
  72. $_TARGETNAME configure \
  73. -work-area-virt [expr 0xfffe0000 + 0x4000] \
  74. -work-area-phys [dict get $dm355 sram1] \
  75. -work-area-size 0x4000 \
  76. -work-area-backup 0
  77. # be absolutely certain the JTAG clock will work with the worst-case
  78. # CLKIN = 24 MHz (best case: 36 MHz) even when no bootloader turns
  79. # on the PLL and starts using it. OK to speed up after clock setup.
  80. jtag_rclk 1500
  81. $_TARGETNAME configure -event "reset-start" { jtag_rclk 1500 }
  82. arm7_9 fast_memory_access enable
  83. arm7_9 dcc_downloads enable
  84. # trace setup
  85. etm config $_TARGETNAME 16 normal full etb
  86. etb config $_TARGETNAME $_CHIPNAME.etb