This is an automated email from Gerrit.

Andrey Smirnov ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/2111

-- gerrit

commit c99e88a0a1350bb8c630e6d63ddee3b4304798d2
Author: Andrey Smirnov <[email protected]>
Date:   Sun Apr 13 17:27:30 2014 -0700

    BDM: Integrate BDM support into build system
    
    Integrate all of the bits and pieces pertaining to BDM support(adapter
    driver, HCS12 target, flash driver) into build system.
    
    Change-Id: Ie9cd70df030ef8ad8ea6de550f5a56c8acff2ee5
    Signed-off-by: Andrey Smirnov <[email protected]>

diff --git a/configure.ac b/configure.ac
index b967e93..eab4000 100644
--- a/configure.ac
+++ b/configure.ac
@@ -201,6 +201,7 @@ m4_define([USB1_ADAPTERS],
 m4_define([USB_ADAPTERS],
        [[[jlink], [Segger J-Link JTAG Programmer], [JLINK]],
        [[osbdm], [OSBDM (JTAG only) Programmer], [OSBDM]],
+       [[usbdm], [USBDM Programmer], [USBDM]],
        [[opendous], [eStick/opendous JTAG Programmer], [OPENDOUS]],
        [[aice], [Andes JTAG Programmer], [AICE]]])
 
@@ -457,6 +458,10 @@ case "${host_cpu}" in
     ;;
 esac
 
+AC_ARG_ENABLE([usbdm],
+  AS_HELP_STRING([--enable-usbdm], [Enable building support for USBDM based 
BDM dongles]),
+  [build_usbdm=$enableval], [build_usbdm=no])
+
 AC_ARG_ENABLE([gw16012],
   AS_HELP_STRING([--enable-gw16012], [Enable building support for the 
Gateworks GW16012 JTAG Programmer]),
   [build_gw16012=$enableval], [build_gw16012=no])
@@ -662,6 +667,12 @@ else
   AC_DEFINE([BUILD_BCM2835GPIO], [0], [0 if you don't want bcm2835gpio.])
 fi
 
+if test $build_usbdm = yes; then
+  AC_DEFINE([BUILD_USBDM], [1], [1 if you want usbdm.])
+else
+  AC_DEFINE([BUILD_USBDM], [0], [0 if you don't want usbdm.])
+fi
+
 if test x$parport_use_ppdev = xyes; then
   AC_DEFINE([PARPORT_USE_PPDEV], [1], [1 if you want parport to use ppdev.])
 else
@@ -1168,6 +1179,7 @@ AM_CONDITIONAL([ZY1000_MASTER], [test 
$build_zy1000_master = yes])
 AM_CONDITIONAL([IOUTIL], [test $build_ioutil = yes])
 AM_CONDITIONAL([AT91RM9200], [test $build_at91rm9200 = yes])
 AM_CONDITIONAL([BCM2835GPIO], [test $build_bcm2835gpio = yes])
+AM_CONDITIONAL([USBDM], [test $build_usbdm = yes])
 AM_CONDITIONAL([BITBANG], [test $build_bitbang = yes])
 AM_CONDITIONAL([FT2232_LIBFTDI], [test $build_ft2232_libftdi = yes])
 AM_CONDITIONAL([FT2232_DRIVER], [test $build_ft2232_ftd2xx = yes -o 
$build_ft2232_libftdi = yes])
diff --git a/src/flash/nor/Makefile.am b/src/flash/nor/Makefile.am
index 3168147..dfe5be8 100644
--- a/src/flash/nor/Makefile.am
+++ b/src/flash/nor/Makefile.am
@@ -43,7 +43,8 @@ NOR_DRIVERS = \
        kinetis.c \
        mini51.c \
        nuc1x.c \
-       nrf51.c
+       nrf51.c \
+       s12xftm.c
 
 noinst_HEADERS = \
        core.h \
diff --git a/src/flash/nor/drivers.c b/src/flash/nor/drivers.c
index ed631a3..de680a6 100644
--- a/src/flash/nor/drivers.c
+++ b/src/flash/nor/drivers.c
@@ -56,6 +56,7 @@ extern struct flash_driver mdr_flash;
 extern struct flash_driver mini51_flash;
 extern struct flash_driver nuc1x_flash;
 extern struct flash_driver nrf51_flash;
+extern struct flash_driver s12xftm_flash;
 
 /**
  * The list of built-in flash drivers.
@@ -96,6 +97,7 @@ static struct flash_driver *flash_drivers[] = {
        &mini51_flash,
        &nuc1x_flash,
        &nrf51_flash,
+       &s12xftm_flash,
        NULL,
 };
 
diff --git a/src/jtag/core.c b/src/jtag/core.c
index 24f6a51..e4a5189 100644
--- a/src/jtag/core.c
+++ b/src/jtag/core.c
@@ -58,6 +58,8 @@ static void jtag_add_scan_check(struct jtag_tap *active,
                tap_state_t state),
                int in_num_fields, struct scan_field *in_fields, tap_state_t 
state);
 
+bool transport_is_bdm(void);
+
 /**
  * The jtag_error variable is set when an error occurs while executing
  * the queue.  Application code may set this using jtag_set_error(),
@@ -166,6 +168,9 @@ bool is_jtag_poll_safe(void)
         * It is also implicitly disabled while TRST is active and
         * while SRST is gating the JTAG clock.
         */
+       if (transport_is_bdm())
+               return jtag_poll;
+
        if (!jtag_poll || jtag_trst != 0)
                return false;
        return jtag_srst == 0 || (jtag_reset_config & RESET_SRST_NO_GATING);
@@ -605,6 +610,37 @@ void jtag_add_clocks(int num_cycles)
        }
 }
 
+void bdm_add_reset(int req_srst)
+{
+       /* Maybe change SRST signal state */
+       if (jtag_srst != req_srst) {
+               int retval;
+
+               retval = interface_jtag_add_reset(0, req_srst);
+               if (retval != ERROR_OK)
+                       jtag_set_error(retval);
+               else
+                       retval = jtag_execute_queue();
+
+               if (retval != ERROR_OK) {
+                       LOG_ERROR("TRST/SRST error");
+                       return;
+               }
+
+               /* SRST resets everything hooked up to that signal */
+               jtag_srst = req_srst;
+               if (jtag_srst) {
+                       LOG_DEBUG("SRST line asserted");
+                       if (adapter_nsrst_assert_width)
+                               jtag_add_sleep(adapter_nsrst_assert_width * 
1000);
+               } else {
+                       LOG_DEBUG("SRST line released");
+                       if (adapter_nsrst_delay)
+                               jtag_add_sleep(adapter_nsrst_delay * 1000);
+               }
+       }
+}
+
 void swd_add_reset(int req_srst)
 {
        if (req_srst) {
@@ -1497,6 +1533,20 @@ int adapter_quit(void)
        return ERROR_OK;
 }
 
+int bdm_init_reset(struct command_context *cmd_ctx)
+{
+       int ret = adapter_init(cmd_ctx);
+       if (ret != ERROR_OK)
+               return ret;
+
+       LOG_DEBUG("Initializing with hard reset");
+
+       bdm_add_reset(1);
+       bdm_add_reset(0);
+       ret = jtag_execute_queue();
+       return ret;
+}
+
 int swd_init_reset(struct command_context *cmd_ctx)
 {
        int retval = adapter_init(cmd_ctx);
@@ -1822,6 +1872,8 @@ void adapter_assert_reset(void)
                        jtag_add_reset(0, 1);
        } else if (transport_is_swd())
                swd_add_reset(1);
+       else if (transport_is_bdm())
+               bdm_add_reset(1);
        else if (transport_is_cmsis_dap())
                swd_add_reset(1);  /* FIXME */
        else if (get_current_transport() != NULL)
@@ -1837,6 +1889,8 @@ void adapter_deassert_reset(void)
                jtag_add_reset(0, 0);
        else if (transport_is_swd())
                swd_add_reset(0);
+       else if (transport_is_bdm())
+               bdm_add_reset(0);
        else if (transport_is_cmsis_dap())
                swd_add_reset(0);  /* FIXME */
        else if (get_current_transport() != NULL)
diff --git a/src/jtag/drivers/Makefile.am b/src/jtag/drivers/Makefile.am
index c2aac76..96a0561 100644
--- a/src/jtag/drivers/Makefile.am
+++ b/src/jtag/drivers/Makefile.am
@@ -131,6 +131,12 @@ if CMSIS_DAP
 DRIVERFILES += cmsis_dap_usb.c
 endif
 
+if USBDM
+DRIVERFILES += usbdm/interface.c
+DRIVERFILES += usbdm/io.c
+endif
+
+
 noinst_HEADERS = \
        bitbang.h \
        bitq.h \
diff --git a/src/jtag/interfaces.c b/src/jtag/interfaces.c
index 62c5d45..1fd81e7 100644
--- a/src/jtag/interfaces.c
+++ b/src/jtag/interfaces.c
@@ -131,6 +131,9 @@ extern struct jtag_interface bcm2835gpio_interface;
 #if BUILD_CMSIS_DAP == 1
 extern struct jtag_interface cmsis_dap_interface;
 #endif
+#if BUILD_USBDM == 1
+extern struct jtag_interface usbdm_interface;
+#endif
 #endif /* standard drivers */
 
 /**
@@ -230,6 +233,9 @@ struct jtag_interface *jtag_interfaces[] = {
 #if BUILD_CMSIS_DAP == 1
                &cmsis_dap_interface,
 #endif
+#if BUILD_USBDM == 1
+               &usbdm_interface,
+#endif
 #endif /* standard drivers */
                NULL,
        };
diff --git a/src/target/Makefile.am b/src/target/Makefile.am
index 08d0db4..ee78b44 100644
--- a/src/target/Makefile.am
+++ b/src/target/Makefile.am
@@ -36,6 +36,7 @@ libtarget_la_SOURCES = \
        $(MIPS32_SRC) \
        $(NDS32_SRC) \
        $(INTEL_IA32_SRC) \
+       $(HCS12_SRC) \
        avrt.c \
        dsp563xx.c \
        dsp563xx_once.c \
@@ -130,6 +131,10 @@ INTEL_IA32_SRC = \
        lakemont.c \
        x86_32_common.c
 
+HCS12_SRC = \
+       bdm.c \
+       hcs12.c
+
 noinst_HEADERS = \
        algorithm.h \
        arm.h \
diff --git a/src/target/target.c b/src/target/target.c
index 32ab117..e8024e0 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -103,6 +103,7 @@ extern struct target_type nds32_v3_target;
 extern struct target_type nds32_v3m_target;
 extern struct target_type or1k_target;
 extern struct target_type quark_x10xx_target;
+extern struct target_type hcs12_target;
 
 static struct target_type *target_types[] = {
        &arm7tdmi_target,
@@ -132,6 +133,7 @@ static struct target_type *target_types[] = {
        &nds32_v3m_target,
        &or1k_target,
        &quark_x10xx_target,
+       &hcs12_target,
        NULL,
 };
 

-- 

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to