flash: add stm32lx loader Hard Fault workaround
[openocd/jflash.git] / tcl / target / ti_dm365.cfg
bloba260278601155a8693f38baf4178b30e4e1747a5
2 # Texas Instruments DaVinci family: TMS320DM365
4 if { [info exists CHIPNAME] } {
5    set _CHIPNAME $CHIPNAME
6 } else {
7    set _CHIPNAME dm365
10 # TI boards default to EMU0/EMU1 *high* -- ARM and ETB are *disabled*
11 # after JTAG reset until ICEpick is used to route them in.
12 set EMU01 "-disable"
14 # With EMU0/EMU1 jumpered *low* ARM and ETB are *enabled* without
15 # needing any ICEpick interaction.
16 #set EMU01 "-enable"
18 source [find target/icepick.cfg]
20 # Subsidiary TAP: ARM ETB11, with scan chain for 4K of ETM trace buffer
21 if { [info exists ETB_TAPID] } {
22    set _ETB_TAPID $ETB_TAPID
23 } else {
24    set _ETB_TAPID 0x2b900f0f
26 jtag newtap $_CHIPNAME etb -irlen 4 -irmask 0xf -expected-id $_ETB_TAPID $EMU01
27 jtag configure $_CHIPNAME.etb -event tap-enable \
28         "icepick_c_tapenable $_CHIPNAME.jrc 1"
30 # Subsidiary TAP: ARM926ejs with scan chains for ARM Debug, EmbeddedICE-RT, ETM.
31 if { [info exists CPU_TAPID] } {
32    set _CPU_TAPID $CPU_TAPID
33 } else {
34    set _CPU_TAPID 0x0792602f
36 jtag newtap $_CHIPNAME arm -irlen 4 -irmask 0xf -expected-id $_CPU_TAPID $EMU01
37 jtag configure $_CHIPNAME.arm -event tap-enable \
38         "icepick_c_tapenable $_CHIPNAME.jrc 0"
40 # Primary TAP: ICEpick (JTAG route controller) and boundary scan
41 if { [info exists JRC_TAPID] } {
42    set _JRC_TAPID $JRC_TAPID
43 } else {
44    set _JRC_TAPID 0x0b83e02f
46 jtag newtap $_CHIPNAME jrc -irlen 6 -irmask 0x3f -expected-id $_JRC_TAPID
48 jtag configure $_CHIPNAME.jrc -event setup \
49         "jtag tapenable $_CHIPNAME.etb; jtag tapenable $_CHIPNAME.arm"
51 ################
53 # various symbol definitions, to avoid hard-wiring addresses
54 # and enable some sharing of DaVinci-family utility code
55 global dm365
56 set dm365 [ dict create ]
58 # Physical addresses for controllers and memory
59 # (Some of these are valid for many DaVinci family chips)
60 dict set dm365 sram0            0x00010000
61 dict set dm365 sram1            0x00014000
62 dict set dm365 sysbase          0x01c40000
63 dict set dm365 pllc1            0x01c40800
64 dict set dm365 pllc2            0x01c40c00
65 dict set dm365 psc              0x01c41000
66 dict set dm365 gpio             0x01c67000
67 dict set dm365 a_emif           0x01d10000
68 dict set dm365 a_emif_cs0       0x02000000
69 dict set dm365 a_emif_cs1       0x04000000
70 dict set dm365 ddr_emif         0x20000000
71 dict set dm365 ddr              0x80000000
73 source [find target/davinci.cfg]
75 ################
76 # GDB target: the ARM, using SRAM1 for scratch.  SRAM0 (also 16K)
77 # and the ETB memory (4K) are other options, while trace is unused.
78 set _TARGETNAME $_CHIPNAME.arm
80 target create $_TARGETNAME arm926ejs -chain-position $_TARGETNAME
82 # NOTE that work-area-virt presumes a Linux 2.6.30-rc2+ kernel,
83 # and that the work area is used only with a kernel mmu context ...
84 $_TARGETNAME configure \
85         -work-area-virt [expr 0xfffe0000 + 0x4000] \
86         -work-area-phys [dict get $dm365 sram1] \
87         -work-area-size 0x4000 \
88         -work-area-backup 0
90 # be absolutely certain the JTAG clock will work with the worst-case
91 # CLKIN = 19.2 MHz (best case: 36 MHz) even when no bootloader turns
92 # on the PLL and starts using it.  OK to speed up after clock setup.
93 jtag_rclk 1500
94 $_TARGETNAME configure -event "reset-start" { jtag_rclk 1500 }
96 arm7_9 fast_memory_access enable
97 arm7_9 dcc_downloads enable
99 # trace setup
100 etm config $_TARGETNAME 16 normal full etb
101 etb config $_TARGETNAME $_CHIPNAME.etb