diff options
-rw-r--r-- | src/openocd.c | 4 | ||||
-rw-r--r-- | src/target/Makefile.am | 2 | ||||
-rw-r--r-- | src/target/target/at91eb40a.tcl | 52 |
3 files changed, 56 insertions, 2 deletions
diff --git a/src/openocd.c b/src/openocd.c index c17e149c..e24eb9a7 100644 --- a/src/openocd.c +++ b/src/openocd.c @@ -182,9 +182,11 @@ static void tcl_output(void *privData, const char *file, int line, int jim_command(command_context_t *context, char *line) { int retval=ERROR_OK; + /* FIX!!!! in reality there is only one cmd_ctx handler, but consider + what might happen here if there are multiple handlers w/reentrant callback + fn's... shudder! */ active_cmd_ctx=context; int retcode=Jim_Eval(interp, line); - active_cmd_ctx=NULL; const char *result; int reslen; diff --git a/src/target/Makefile.am b/src/target/Makefile.am index 959b34d3..28d5862b 100644 --- a/src/target/Makefile.am +++ b/src/target/Makefile.am @@ -34,5 +34,5 @@ nobase_dist_pkglib_DATA = xscale/debug_handler.bin event/at91eb40a_reset.script interface/calao-usb-a9260.cfg target/at91sam9260minimal.cfg event/lpc2148_reset.script \ interface/chameleon.cfg interface/at91rm9200.cfg interface/jlink.cfg interface/arm-usb-ocd.cfg \ interface/signalyzer.cfg event/eir-sam7se512_reset.script target/eir-sam7se512.cfg \ - event/hammer_reset.script interface/flyswatter.cfg target/hammer.cfg target/mx31.cfg + event/hammer_reset.script interface/flyswatter.cfg target/hammer.cfg target/mx31.cfg target/at91eb40a.tcl diff --git a/src/target/target/at91eb40a.tcl b/src/target/target/at91eb40a.tcl new file mode 100644 index 00000000..6c396227 --- /dev/null +++ b/src/target/target/at91eb40a.tcl @@ -0,0 +1,52 @@ +#Script for AT91EB40a
+
+#Atmel ties SRST & TRST together, at which point it makes
+#no sense to use TRST, but use TMS instead.
+#
+#The annoying thing with tying SRST & TRST together is that
+#there is no way to halt the CPU *before and during* the
+#SRST reset, which means that the CPU will run a number
+#of cycles before it can be halted(as much as milliseconds).
+openocd {reset_config srst_only srst_pulls_trst}
+
+#jtag scan chain
+#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
+openocd {jtag_device 4 0x1 0xf 0xe}
+
+#target configuration
+openocd {target arm7tdmi little 0 arm7tdmi-s_r4}
+
+# speed up memory downloads
+openocd {arm7 fast_memory_access enable}
+openocd {arm7_9 dcc_downloads enable}
+
+# OpenOCD does not have a flash driver for for AT91FR40162S
+openocd {target_script 0 reset event/at91eb40a_reset.script}
+
+#flash driver
+openocd {flash bank ecosflash 0x01000000 0x200000 2 2 0 ecos/at91eb40a.elf}
+
+# required for usable performance. Used for lots of
+# other things than flash programming.
+openocd {working_area 0 0x00000000 0x20000 nobackup}
+
+#force hardware values - we're running out of flash more
+#often than not. The user can disable this in his
+#subsequent config script.
+openocd {arm7_9 force_hw_bkpts enable}
+
+set reset_count 0
+
+proc target_reset_0 {} {
+ global reset_count
+ # Reset script for AT91EB40a
+ openocd {reg cpsr 0x000000D3}
+ openocd {mww 0xFFE00020 0x1}
+ openocd {mww 0xFFE00024 0x00000000}
+ openocd {mww 0xFFE00000 0x01002539}
+ openocd {mww 0xFFFFF124 0xFFFFFFFF}
+ openocd {mww 0xffff0010 0x100}
+ openocd {mww 0xffff0034 0x100}
+ set reset_count [expr $reset_count+1]
+ puts "Testing reset $reset_count !"
+}
|