# Script for TI/Luminary Stellaris LM4F232H (LM4F232H5BB)

if { [info exists CHIPNAME] } {
   set  _CHIPNAME $CHIPNAME
} else {
   set  _CHIPNAME lm4f232h
}

if { [info exists CPUTAPID ] } {
   set _CPUTAPID $CPUTAPID
} else {
   set _CPUTAPID 0x4ba00477
}

#jtag scan chain
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 1 -irmask 0xf -expected-id $_CPUTAPID

# the luminary variant causes a software reset rather than asserting SRST
# this stops the debug registers from being cleared
# this will be fixed in later revisions of silicon
set _TARGETNAME $_CHIPNAME.cpu
# TODO(rspangler): variant lm4x?
target create $_TARGETNAME cortex_m3 -chain-position $_CHIPNAME.cpu -variant lm3s

# 8k working area at base of ram, not backed up
#$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size 0x2000
# 12k working area at base of ram, not backed up
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size 0x3000

# Use system reset request, since LM4 doesn't support vectreset
cortex_m3 reset_config sysresetreq

# Ensure that the watchdog is properly disabled when doing flashing
$_TARGETNAME configure -event reset-init {
	# Unlock watchdog0
	mww 0x40000c00 0x1ACCE551
	# Disable Watchdog0
	mww 0x40000008 0
}

#flash configuration
flash bank internal stellaris 0 0 0 0 $_TARGETNAME

# useful command definitions for software loading
source [find lm4x_cmds.tcl]
