- added -c option that will execute an openocd command
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sun, 24 Feb 2008 20:10:48 +0000 (20:10 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sun, 24 Feb 2008 20:10:48 +0000 (20:10 +0000)
- added at91eb40a target library example.

git-svn-id: svn://svn.berlios.de/openocd/trunk@333 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/helper/Makefile.am
src/helper/configuration.c
src/target/Makefile.am
src/target/event/at91eb40a_reset.cfg [new file with mode: 0644]
src/target/target/at91eb40a.cfg [new file with mode: 0644]

index 1e82261ed7d65be5c39babf71baf3a917dae5934..f65a1d23460d492f087f35d524d5d1d97dd2a9f6 100644 (file)
@@ -1,8 +1,8 @@
-INCLUDES = $(all_includes)
-METASOURCES = AUTO
-AM_CPPFLAGS = -DPKGDATADIR=\"$(pkgdatadir)\" @CPPFLAGS@
-noinst_LIBRARIES = libhelper.a
-libhelper_a_SOURCES = binarybuffer.c configuration.c log.c interpreter.c command.c time_support.c \
-       replacements.c fileio.c
-noinst_HEADERS = binarybuffer.h configuration.h types.h log.h command.h \
-       interpreter.h time_support.h replacements.h fileio.h
+INCLUDES = $(all_includes)\r
+METASOURCES = AUTO\r
+AM_CPPFLAGS = -DPKGDATADIR=\"$(pkgdatadir)\" -DPKGLIBDIR=\"$(pkglibdir)\" @CPPFLAGS@\r
+noinst_LIBRARIES = libhelper.a\r
+libhelper_a_SOURCES = binarybuffer.c configuration.c log.c interpreter.c command.c time_support.c \\r
+       replacements.c fileio.c\r
+noinst_HEADERS = binarybuffer.h configuration.h types.h log.h command.h \\r
+       interpreter.h time_support.h replacements.h fileio.h\r
index 2fbed08bf01740032cdc677c4c995c47cdbf34af..d9300e9dcc54ccd2415d3fe4aa111bfa0db7a17f 100644 (file)
-/***************************************************************************
- *   Copyright (C) 2004, 2005 by Dominic Rath                              *
- *   Dominic.Rath@gmx.de                                                   *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
- ***************************************************************************/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "types.h"
-#include "command.h"
-#include "configuration.h"
-#include "log.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <getopt.h>
-#include <string.h>
-
-static size_t num_config_files;
-static char** config_file_names;
-
-static size_t num_script_dirs;
-static char** script_search_dirs;
-
-static int help_flag;
-
-static struct option long_options[] =
-{
-       {"help",                        no_argument,    &help_flag, 1},
-
-       {"debug",                       optional_argument,      0, 'd'},
-       {"file",                        required_argument,      0, 'f'},
-       {"search",                      required_argument,      0, 's'},
-       {"log_output",          required_argument,      0, 'l'},
-       
-       {0, 0, 0, 0}
-};
-
-int configuration_output_handler(struct command_context_s *context, char* line)
-{
-       INFO(line);
-       
-       return ERROR_OK;
-}
-
-void add_script_search_dir (const char *dir)
-{
-       num_script_dirs++;
-       script_search_dirs = (char **)realloc(script_search_dirs, (num_script_dirs+1) * sizeof (char *));
-
-       script_search_dirs[num_script_dirs-1] = strdup(dir);
-       script_search_dirs[num_script_dirs] = NULL;
-}
-
-void add_config_file_name (const char *cfg)
-{
-       num_config_files++;
-       config_file_names = (char **)realloc(config_file_names, (num_config_files+1) * sizeof (char *));
-
-       config_file_names[num_config_files-1] = strdup(cfg);
-       config_file_names[num_config_files] = NULL;
-}
-
-int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[])
-{
-       int c;
-       char command_buffer[128];
-
-       while (1)
-       {       
-               /* getopt_long stores the option index here. */
-               int option_index = 0;
-               
-               c = getopt_long(argc, argv, "hd::l:f:s:", long_options, &option_index);
-               
-               /* Detect the end of the options. */
-               if (c == -1)
-                       break;
-               
-               switch (c)
-               {
-                       case 0:
-                               break;
-                       case 'h':       /* --help | -h */
-                               help_flag = 1;
-                               break;
-                       case 'f':       /* --file | -f */
-                               add_config_file_name(optarg);
-                               break;
-                       case 's':       /* --search | -s */
-                               add_script_search_dir(optarg);
-                               break;
-                       case 'd':       /* --debug | -d */
-                               if (optarg)
-                                       snprintf(command_buffer, 128, "debug_level %s", optarg);
-                               else
-                                       snprintf(command_buffer, 128, "debug_level 3");
-                               command_run_line(cmd_ctx, command_buffer);
-                               break;
-                       case 'l':       /* --log_output | -l */
-                               if (optarg)
-                               {
-                                       snprintf(command_buffer, 128, "log_output %s", optarg);
-                                       command_run_line(cmd_ctx, command_buffer);
-                               }       
-                               break;
-               }
-       }
-
-       if (help_flag)
-       {
-               printf("Open On-Chip Debugger\n(c) 2005 by Dominic Rath\n\n");
-               printf("--help       | -h\tdisplay this help\n");
-               printf("--file       | -f\tuse configuration file <name>\n");
-               printf("--search     | -s\tdir to search for config files and scripts.\n");
-               printf("--debug      | -d\tset debug level <0-3>\n");
-               printf("--log_output | -l\tredirect log output to file <name>\n");
-               exit(-1);
-       }       
-
-       /* Add dir for openocd supplied scripts last so that user can over
-          ride those scripts if desired. */
-       add_script_search_dir(PKGDATADIR);
-
-       return ERROR_OK;
-}
-
-FILE *open_file_from_path (command_context_t *cmd_ctx, char *file, char *mode)
-{
-       FILE *fp = NULL;
-       char **search_dirs = script_search_dirs;
-       char *dir;
-       char full_path[1024];
-
-       /* Check absolute and relative to current working dir first.
-        * This keeps full_path reporting belowing working. */
-       snprintf(full_path, 1024, "%s", file);
-       fp = fopen(full_path, mode);
-
-       while (!fp)
-       {
-               dir = *search_dirs++;
-
-               if (!dir)
-                       break;
-
-               snprintf(full_path, 1024, "%s/%s", dir, file);
-               fp = fopen(full_path, mode);
-       }
-
-       if (fp)
-               command_print(cmd_ctx, "opened %s", full_path);
-
-       return fp;
-}
-
-int parse_config_file(struct command_context_s *cmd_ctx)
-{
-       char **cfg;
-       FILE *config_file;
-
-       if (!config_file_names)
-               add_config_file_name ("openocd.cfg");
-
-       cfg = config_file_names;
-
-       while (*cfg)
-       {
-               config_file = open_file_from_path(cmd_ctx, *cfg, "r");
-               if (!config_file)
-               {
-                       ERROR("couldn't open config file");
-                       return ERROR_NO_CONFIG_FILE;
-               }
-
-               command_run_file(cmd_ctx, config_file, COMMAND_CONFIG);
-
-               fclose(config_file);
-
-               cfg++;
-       }
-
-       return ERROR_OK;
-}
+/***************************************************************************\r
+ *   Copyright (C) 2004, 2005 by Dominic Rath                              *\r
+ *   Dominic.Rath@gmx.de                                                   *\r
+ *                                                                         *\r
+ *   This program is free software; you can redistribute it and/or modify  *\r
+ *   it under the terms of the GNU General Public License as published by  *\r
+ *   the Free Software Foundation; either version 2 of the License, or     *\r
+ *   (at your option) any later version.                                   *\r
+ *                                                                         *\r
+ *   This program is distributed in the hope that it will be useful,       *\r
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *\r
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *\r
+ *   GNU General Public License for more details.                          *\r
+ *                                                                         *\r
+ *   You should have received a copy of the GNU General Public License     *\r
+ *   along with this program; if not, write to the                         *\r
+ *   Free Software Foundation, Inc.,                                       *\r
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *\r
+ ***************************************************************************/\r
+#ifdef HAVE_CONFIG_H\r
+#include "config.h"\r
+#endif\r
+\r
+#include "types.h"\r
+#include "command.h"\r
+#include "configuration.h"\r
+#include "log.h"\r
+\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <getopt.h>\r
+#include <string.h>\r
+\r
+static size_t num_config_files;\r
+static char** config_file_names;\r
+\r
+static size_t num_script_dirs;\r
+static char** script_search_dirs;\r
+\r
+static int help_flag;\r
+\r
+static struct option long_options[] =\r
+{\r
+       {"help",                        no_argument,    &help_flag, 1},\r
+\r
+       {"debug",                       optional_argument,      0, 'd'},\r
+       {"file",                        required_argument,      0, 'f'},\r
+       {"search",                      required_argument,      0, 's'},\r
+       {"log_output",          required_argument,      0, 'l'},\r
+       {"command",                     required_argument,      0, 'c'},\r
+       \r
+       {0, 0, 0, 0}\r
+};\r
+\r
+int configuration_output_handler(struct command_context_s *context, char* line)\r
+{\r
+       INFO(line);\r
+       \r
+       return ERROR_OK;\r
+}\r
+\r
+void add_script_search_dir (const char *dir)\r
+{\r
+       num_script_dirs++;\r
+       script_search_dirs = (char **)realloc(script_search_dirs, (num_script_dirs+1) * sizeof (char *));\r
+\r
+       script_search_dirs[num_script_dirs-1] = strdup(dir);\r
+       script_search_dirs[num_script_dirs] = NULL;\r
+}\r
+\r
+void add_config_file_name (const char *cfg)\r
+{\r
+       num_config_files++;\r
+       config_file_names = (char **)realloc(config_file_names, (num_config_files+1) * sizeof (char *));\r
+\r
+       config_file_names[num_config_files-1] = strdup(cfg);\r
+       config_file_names[num_config_files] = NULL;\r
+}\r
+\r
+int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[])\r
+{\r
+       int c;\r
+       char command_buffer[128];\r
+\r
+       while (1)\r
+       {       \r
+               /* getopt_long stores the option index here. */\r
+               int option_index = 0;\r
+               \r
+               c = getopt_long(argc, argv, "hd::l:f:s:c:", long_options, &option_index);\r
+               \r
+               /* Detect the end of the options. */\r
+               if (c == -1)\r
+                       break;\r
+               \r
+               switch (c)\r
+               {\r
+                       case 0:\r
+                               break;\r
+                       case 'h':       /* --help | -h */\r
+                               help_flag = 1;\r
+                               break;\r
+                       case 'f':       /* --file | -f */\r
+                               snprintf(command_buffer, 128, "script %s", optarg);\r
+                               add_config_file_name(command_buffer);\r
+                               break;\r
+                       case 's':       /* --search | -s */\r
+                               add_script_search_dir(optarg);\r
+                               break;\r
+                       case 'd':       /* --debug | -d */\r
+                               if (optarg)\r
+                                       snprintf(command_buffer, 128, "debug_level %s", optarg);\r
+                               else\r
+                                       snprintf(command_buffer, 128, "debug_level 3");\r
+                               command_run_line(cmd_ctx, command_buffer);\r
+                               break;\r
+                       case 'l':       /* --log_output | -l */\r
+                               if (optarg)\r
+                               {\r
+                                       snprintf(command_buffer, 128, "log_output %s", optarg);\r
+                                       command_run_line(cmd_ctx, command_buffer);\r
+                               }       \r
+                               break;\r
+                       case 'c':       /* --command | -c */\r
+                               if (optarg)\r
+                               {\r
+                                       add_config_file_name(optarg);\r
+                               }       \r
+                               break;\r
+                               \r
+               }\r
+       }\r
+\r
+       if (help_flag)\r
+       {\r
+               printf("Open On-Chip Debugger\n(c) 2005 by Dominic Rath\n\n");\r
+               printf("--help       | -h\tdisplay this help\n");\r
+               printf("--file       | -f\tuse configuration file <name>\n");\r
+               printf("--search     | -s\tdir to search for config files and scripts.\n");\r
+               printf("--debug      | -d\tset debug level <0-3>\n");\r
+               printf("--log_output | -l\tredirect log output to file <name>\n");\r
+               printf("--command    | -c\trun <command>\n");\r
+               exit(-1);\r
+       }       \r
+\r
+       /* Add dir for openocd supplied scripts last so that user can over\r
+          ride those scripts if desired. */\r
+       add_script_search_dir(PKGDATADIR);\r
+       add_script_search_dir(PKGLIBDIR);\r
+\r
+       return ERROR_OK;\r
+}\r
+\r
+FILE *open_file_from_path (command_context_t *cmd_ctx, char *file, char *mode)\r
+{\r
+       FILE *fp = NULL;\r
+       char **search_dirs = script_search_dirs;\r
+       char *dir;\r
+       char full_path[1024];\r
+\r
+       /* Check absolute and relative to current working dir first.\r
+        * This keeps full_path reporting belowing working. */\r
+       snprintf(full_path, 1024, "%s", file);\r
+       fp = fopen(full_path, mode);\r
+\r
+       while (!fp)\r
+       {\r
+               dir = *search_dirs++;\r
+\r
+               if (!dir)\r
+                       break;\r
+\r
+               snprintf(full_path, 1024, "%s/%s", dir, file);\r
+               fp = fopen(full_path, mode);\r
+       }\r
+\r
+       if (fp)\r
+               command_print(cmd_ctx, "opened %s", full_path);\r
+\r
+       return fp;\r
+}\r
+\r
+int parse_config_file(struct command_context_s *cmd_ctx)\r
+{\r
+       char **cfg;\r
+       FILE *config_file;\r
+\r
+       if (!config_file_names)\r
+               add_config_file_name ("script openocd.cfg");\r
+\r
+       cfg = config_file_names;\r
+\r
+       while (*cfg)\r
+       {\r
+               command_run_line(cmd_ctx, *cfg);\r
+               cfg++;\r
+       }\r
+\r
+       return ERROR_OK;\r
+}\r
index 252928796a5445afe671e87ef2342b53a3ba9cb0..d2108f0a9512bd1cd29aff8c666bc303ce5de39c 100644 (file)
@@ -1,22 +1,23 @@
-
-if OOCD_TRACE
-OOCD_TRACE_FILES = oocd_trace.c
-else
-OOCD_TRACE_FILES =
-endif
-
-INCLUDES = -I$(top_srcdir)/src/gdb -I$(top_srcdir)/src/helper  -I$(top_srcdir)/src/jtag -I$(top_srcdir)/src/xsvf $(all_includes)
-METASOURCES = AUTO
-AM_CPPFLAGS = -DPKGLIBDIR=\"$(pkglibdir)\" @CPPFLAGS@
-noinst_LIBRARIES = libtarget.a
-libtarget_a_SOURCES = target.c register.c breakpoints.c armv4_5.c embeddedice.c etm.c arm7tdmi.c arm9tdmi.c \
-       arm_jtag.c arm7_9_common.c algorithm.c arm920t.c arm720t.c armv4_5_mmu.c armv4_5_cache.c arm_disassembler.c \
-       arm966e.c arm926ejs.c feroceon.c etb.c xscale.c arm_simulator.c image.c armv7m.c cortex_m3.c cortex_swjdp.c \
-       etm_dummy.c $(OOCD_TRACE_FILES) target_request.c trace.c
-noinst_HEADERS = target.h trace.h register.h armv4_5.h embeddedice.h etm.h arm7tdmi.h arm9tdmi.h \
-       arm_jtag.h arm7_9_common.h arm920t.h arm720t.h armv4_5_mmu.h armv4_5_cache.h breakpoints.h algorithm.h \
-       arm_disassembler.h arm966e.h arm926ejs.h etb.h xscale.h arm_simulator.h image.h armv7m.h cortex_m3.h cortex_swjdp.h \
-       etm_dummy.h oocd_trace.h target_request.h trace.h
-
-nobase_dist_pkglib_DATA = xscale/debug_handler.bin
-
+\r
+if OOCD_TRACE\r
+OOCD_TRACE_FILES = oocd_trace.c\r
+else\r
+OOCD_TRACE_FILES =\r
+endif\r
+\r
+INCLUDES = -I$(top_srcdir)/src/gdb -I$(top_srcdir)/src/helper  -I$(top_srcdir)/src/jtag -I$(top_srcdir)/src/xsvf $(all_includes)\r
+METASOURCES = AUTO\r
+AM_CPPFLAGS = -DPKGLIBDIR=\"$(pkglibdir)\" @CPPFLAGS@\r
+noinst_LIBRARIES = libtarget.a\r
+libtarget_a_SOURCES = target.c register.c breakpoints.c armv4_5.c embeddedice.c etm.c arm7tdmi.c arm9tdmi.c \\r
+       arm_jtag.c arm7_9_common.c algorithm.c arm920t.c arm720t.c armv4_5_mmu.c armv4_5_cache.c arm_disassembler.c \\r
+       arm966e.c arm926ejs.c feroceon.c etb.c xscale.c arm_simulator.c image.c armv7m.c cortex_m3.c cortex_swjdp.c \\r
+       etm_dummy.c $(OOCD_TRACE_FILES) target_request.c trace.c\r
+noinst_HEADERS = target.h trace.h register.h armv4_5.h embeddedice.h etm.h arm7tdmi.h arm9tdmi.h \\r
+       arm_jtag.h arm7_9_common.h arm920t.h arm720t.h armv4_5_mmu.h armv4_5_cache.h breakpoints.h algorithm.h \\r
+       arm_disassembler.h arm966e.h arm926ejs.h etb.h xscale.h arm_simulator.h image.h armv7m.h cortex_m3.h cortex_swjdp.h \\r
+       etm_dummy.h oocd_trace.h target_request.h trace.h\r
+\r
+nobase_dist_pkglib_DATA = xscale/debug_handler.bin event/at91eb40a_reset.cfg target/at91eb40a.cfg\r
+\r
+\r
diff --git a/src/target/event/at91eb40a_reset.cfg b/src/target/event/at91eb40a_reset.cfg
new file mode 100644 (file)
index 0000000..a2d29c6
--- /dev/null
@@ -0,0 +1,8 @@
+# Reset script for AT91EB40a\r
+reg cpsr 0x000000D3            \r
+mww 0xFFE00020 0x1         \r
+mww 0xFFE00024 0x00000000  \r
+mww 0xFFE00000 0x01002539  \r
+mww 0xFFFFF124 0xFFFFFFFF  \r
+mww 0xffff0010 0x100\r
+mww 0xffff0034 0x100\r
diff --git a/src/target/target/at91eb40a.cfg b/src/target/target/at91eb40a.cfg
new file mode 100644 (file)
index 0000000..0f08f71
--- /dev/null
@@ -0,0 +1,34 @@
+#Script for AT91EB40a\r
+\r
+#Atmel ties SRST & TRST together, at which point it makes\r
+#no sense to use TRST, but use TMS instead.\r
+#\r
+#The annoying thing with tying SRST & TRST together is that\r
+#there is no way to halt the CPU *before and during* the\r
+#SRST reset, which means that the CPU will run a number\r
+#of cycles before it can be halted(as much as milliseconds).\r
+reset_config srst_only srst_pulls_trst\r
\r
+#jtag scan chain\r
+#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)\r
+jtag_device 4 0x1 0xf 0xe\r
+\r
+#target configuration\r
+#target arm7tdmi <endianness> <reset mode> <chainpos> <variant>\r
+target arm7tdmi little reset_init 0 arm7tdmi-s_r4\r
+\r
+# speed up memory downloads\r
+arm7 fast_memory_access enable\r
+arm7_9 dcc_downloads enable\r
+\r
+# OpenOCD does not have a flash driver for for AT91FR40162S \r
+target_script 0 reset event/at91eb40a_reset.cfg\r
+\r
+# required for usable performance. Used for lots of\r
+# other things than flash programming.\r
+working_area 0 0x00000000 0x20000 nobackup\r
+\r
+#force hardware values - we're running out of flash more\r
+#often than not. The user can disable this in his\r
+#subsequent config script.\r
+arm7_9 force_hw_bkpts enable\r

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)