bitbang: add jtag_add_tms_seq support
authorØyvind Harboe <oyvind.harboe@zylin.com>
Mon, 1 Mar 2010 07:25:18 +0000 (08:25 +0100)
committerØyvind Harboe <oyvind.harboe@zylin.com>
Tue, 16 Mar 2010 20:44:38 +0000 (21:44 +0100)
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
src/jtag/drivers/at91rm9200.c
src/jtag/drivers/bitbang.c
src/jtag/drivers/dummy.c
src/jtag/drivers/ep93xx.c
src/jtag/drivers/parport.c
src/jtag/drivers/usb_blaster.c

index abaf3adb7eea31415a0d4e045e896e59416656ed..89d7000ca71e78cf8b90780130aa295dc0764c82 100644 (file)
@@ -126,6 +126,7 @@ struct jtag_interface at91rm9200_interface =
 {
        .name = "at91rm9200",
 
+       .supported = DEBUG_CAP_TMS_SEQ,
        .execute_queue = bitbang_execute_queue,
 
        .speed = at91rm9200_speed,
index 83c2d29ecf6b8e896c536bdd816677ee6b006ca8..6159ef7a59aaa8094ee14961b3058b0b6aa18089 100644 (file)
@@ -91,6 +91,31 @@ static void bitbang_state_move(int skip)
        tap_set_state(tap_get_end_state());
 }
 
+
+/**
+ * Clock a bunch of TMS (or SWDIO) transitions, to change the JTAG
+ * (or SWD) state machine.
+ */
+static int bitbang_execute_tms(struct jtag_command *cmd)
+{
+       unsigned        num_bits = cmd->cmd.tms->num_bits;
+       const uint8_t   *bits = cmd->cmd.tms->bits;
+
+       DEBUG_JTAG_IO("TMS: %d bits", num_bits);
+
+       int tms = 0;
+       for (unsigned i = 0; i < num_bits; i++)
+       {
+               tms = ((bits[i/8] >> (i % 8)) & 1);
+               bitbang_interface->write(0, tms, 0);
+               bitbang_interface->write(1, tms, 0);
+       }
+       bitbang_interface->write(CLOCK_IDLE(), tms, 0);
+
+       return ERROR_OK;
+}
+
+
 static void bitbang_path_move(struct pathmove_command *cmd)
 {
        int num_states = cmd->num_states;
@@ -312,6 +337,9 @@ int bitbang_execute_queue(void)
 #endif
                                jtag_sleep(cmd->cmd.sleep->us);
                                break;
+                       case JTAG_TMS:
+                               retval = bitbang_execute_tms(cmd);
+                               break;
                        default:
                                LOG_ERROR("BUG: unknown JTAG command type encountered");
                                exit(-1);
index 1880712a82c439469f770b33d15269eafeacdff0..7cb0e33c5e1406cdf7bcf8254107a915e7a0fc2f 100644 (file)
@@ -164,6 +164,7 @@ static const struct command_registration dummy_command_handlers[] = {
 struct jtag_interface dummy_interface = {
                .name = "dummy",
 
+               .supported = DEBUG_CAP_TMS_SEQ,
                .commands = dummy_command_handlers,
 
                .execute_queue = &bitbang_execute_queue,
index 61dc76ede4bdc86dfb4308f1486c6e5ca7477577..0959a5692246138374939adf04e0be3def934a74 100644 (file)
@@ -57,6 +57,7 @@ struct jtag_interface ep93xx_interface =
 {
        .name = "ep93xx",
 
+       .supported = DEBUG_CAP_TMS_SEQ,
        .execute_queue = bitbang_execute_queue,
 
        .speed = ep93xx_speed,
index fa3373b0cd32e4b7802154d0cfdeefda007a4773..2323ec56a95fa1b2736aff941a4eb0e5f4eb869c 100644 (file)
@@ -524,6 +524,7 @@ static const struct command_registration parport_command_handlers[] = {
 
 struct jtag_interface parport_interface = {
        .name = "parport",
+       .supported = DEBUG_CAP_TMS_SEQ,
        .commands = parport_command_handlers,
 
        .init = parport_init,
index 3703323bfb76aacd6d910fe1a05bf57f8cde72cc..59c5715bdf401ee281ff01deaba0bfaaa9a768d0 100644 (file)
@@ -580,6 +580,7 @@ static const struct command_registration usb_blaster_command_handlers[] = {
 struct jtag_interface usb_blaster_interface = {
        .name = "usb_blaster",
        .commands = usb_blaster_command_handlers,
+       .supported = DEBUG_CAP_TMS_SEQ,
 
        .execute_queue = bitbang_execute_queue,
 

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)