From 20e4e77cdf366dedac21ff5670c54291feadfc05 Mon Sep 17 00:00:00 2001 From: drath Date: Fri, 10 Aug 2007 19:44:06 +0000 Subject: - renamed M5960 USB JTAG to "flyswatter" - make ep93xx and at91rm9200 bitbang JTAG interfaces dependant on ARM host (thanks to Vincent Palatin) - various whitespace fixes - removed various warnings - add support for Debian GNU/kFreeBSD (thanks to Uwe Hermann) - fix OpenOCD compilation for various platforms (thanks to Uwe Hermann and Vincent Palatin) - switched order of JTAG chain examination and validation (examine first, then multiple validation tries even if examination failed) - added target_request subsystem to handle requests from the target (debug messages and tracepoints implemented, future enhancements might include semihosting, all ARM7/9 only for now) - added support for GDB vFlashXXX packets (thanks to Pavel Chromy) - added support for receiving data via ARM7/9 DCC - reworked flash writing. the 'flash write' command is now deprecated and replaced by 'flash write_binary' (old syntax and behaviour) and 'flash write_image' (write image files (bin, hex, elf, s19) to a target). - added support for AMD/ST/SST 29F400B non-cfi flashes git-svn-id: svn://svn.berlios.de/openocd/trunk@190 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/jtag/at91rm9200.c | 2 - src/jtag/bitq.c | 2 - src/jtag/ep93xx.c | 5 +- src/jtag/ft2232.c | 14 +- src/jtag/gw16012.c | 18 ++- src/jtag/jtag.c | 12 +- src/jtag/parport.c | 20 +-- src/jtag/presto.c | 11 +- src/jtag/usbprog.c | 351 +++++++++++++++++++++++++------------------------- 9 files changed, 215 insertions(+), 220 deletions(-) (limited to 'src/jtag') diff --git a/src/jtag/at91rm9200.c b/src/jtag/at91rm9200.c index 5497b561..d532e3e7 100644 --- a/src/jtag/at91rm9200.c +++ b/src/jtag/at91rm9200.c @@ -26,7 +26,6 @@ #include "bitbang.h" /* system includes */ -#include #include #include #include @@ -217,7 +216,6 @@ int at91rm9200_register_commands(struct command_context_s *cmd_ctx) int at91rm9200_init(void) { - int ret; struct device_t *cur_device; cur_device = devices; diff --git a/src/jtag/bitq.c b/src/jtag/bitq.c index 05f4c925..9d1f43dc 100644 --- a/src/jtag/bitq.c +++ b/src/jtag/bitq.c @@ -61,8 +61,6 @@ void bitq_in_proc(void) scan_field_t *field; int tdo; - int result; - /* loop through the queue */ while (bitq_in_state.cmd) { /* only JTAG_SCAN command may return data */ diff --git a/src/jtag/ep93xx.c b/src/jtag/ep93xx.c index 38763d2e..88ed50c1 100644 --- a/src/jtag/ep93xx.c +++ b/src/jtag/ep93xx.c @@ -34,7 +34,6 @@ #define VCC_BIT 64 /* system includes */ -#include #include #include #include @@ -211,8 +210,8 @@ int ep93xx_init(void) gpio_data_register = gpio_controller + 0x08; gpio_data_direction_register = gpio_controller + 0x18; - printf("gpio_data_register = %08x\n", gpio_data_register); - printf("gpio_data_direction_reg = %08x\n", gpio_data_direction_register); + printf("gpio_data_register = %p\n", gpio_data_register); + printf("gpio_data_direction_reg = %p\n", gpio_data_direction_register); /* * Configure bit 0 (TDO) as an input, and bits 1-5 (TDI, TCK * TMS, TRST, SRST) as outputs. Drive TDI and TCK low, and diff --git a/src/jtag/ft2232.c b/src/jtag/ft2232.c index 44b0e6a8..339e77da 100644 --- a/src/jtag/ft2232.c +++ b/src/jtag/ft2232.c @@ -95,7 +95,7 @@ typedef struct ft2232_layout_s int usbjtag_init(void); int jtagkey_init(void); int olimex_jtag_init(void); -int m5960_init(void); +int flyswatter_init(void); int turtle_init(void); int comstick_init(void); @@ -103,7 +103,7 @@ int comstick_init(void); void usbjtag_reset(int trst, int srst); void jtagkey_reset(int trst, int srst); void olimex_jtag_reset(int trst, int srst); -void m5960_reset(int trst, int srst); +void flyswatter_reset(int trst, int srst); void turtle_reset(int trst, int srst); void comstick_reset(int trst, int srst); @@ -120,7 +120,7 @@ ft2232_layout_t ft2232_layouts[] = {"signalyzer", usbjtag_init, usbjtag_reset, NULL}, {"evb_lm3s811", usbjtag_init, usbjtag_reset, NULL}, {"olimex-jtag", olimex_jtag_init, olimex_jtag_reset, olimex_jtag_blink}, - {"m5960", m5960_init, m5960_reset, NULL}, + {"flyswatter", flyswatter_init, flyswatter_reset, NULL}, {"turtelizer2", turtle_init, turtle_reset, turtle_jtag_blink}, {"comstick", comstick_init, comstick_reset, NULL}, {NULL, NULL, NULL}, @@ -991,7 +991,7 @@ void olimex_jtag_reset(int trst, int srst) DEBUG("trst: %i, srst: %i, high_output: 0x%2.2x, high_direction: 0x%2.2x", trst, srst, high_output, high_direction); } -void m5960_reset(int trst, int srst) +void flyswatter_reset(int trst, int srst) { if (trst == 1) { @@ -1781,7 +1781,7 @@ int olimex_jtag_init(void) return ERROR_OK; } -int m5960_init(void) +int flyswatter_init(void) { u8 buf[3]; u32 bytes_written; @@ -1797,7 +1797,7 @@ int m5960_init(void) if (((ft2232_write(buf, 3, &bytes_written)) != ERROR_OK) || (bytes_written != 3)) { - ERROR("couldn't initialize FT2232 with 'm5960' layout"); + ERROR("couldn't initialize FT2232 with 'flyswatter' layout"); return ERROR_JTAG_INIT_FAILED; } @@ -1820,7 +1820,7 @@ int m5960_init(void) if (((ft2232_write(buf, 3, &bytes_written)) != ERROR_OK) || (bytes_written != 3)) { - ERROR("couldn't initialize FT2232 with 'm5960' layout"); + ERROR("couldn't initialize FT2232 with 'flyswatter' layout"); return ERROR_JTAG_INIT_FAILED; } diff --git a/src/jtag/gw16012.c b/src/jtag/gw16012.c index 8060d7d6..0d5c3f66 100644 --- a/src/jtag/gw16012.c +++ b/src/jtag/gw16012.c @@ -29,11 +29,9 @@ #define _DEBUG_GW16012_IO_ #endif -/* system includes */ - /* system includes */ // -ino: 060521-1036 -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #include #include @@ -47,7 +45,7 @@ #include "errno.h" #endif /* _WIN32 */ -#endif /* __FreeBSD__ */ +#endif /* __FreeBSD__, __FreeBSD_kernel__ */ #include #include @@ -56,7 +54,7 @@ #include #if PARPORT_USE_PPDEV == 1 -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #include #include #define PPRSTATUS PPIGSTATUS @@ -137,7 +135,7 @@ void gw16012_data(u8 value) #if PARPORT_USE_PPDEV == 1 ioctl(device_handle, PPWDATA, &value); #else - #ifdef __FreeBSD__ + #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) outb(gw16012_port, value); #else outb(value, gw16012_port); @@ -158,7 +156,7 @@ void gw16012_control(u8 value) #if PARPORT_USE_PPDEV == 1 ioctl(device_handle, PPWCONTROL, &gw16012_control_value); #else - #ifdef __FreeBSD__ + #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) outb(gw16012_port + 2, gw16012_control_value); #else outb(gw16012_control_value, gw16012_port + 2); @@ -485,7 +483,7 @@ int gw16012_init(void) return ERROR_JTAG_INIT_FAILED; } -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) DEBUG("opening /dev/ppi%d...", gw16012_port); snprintf(buffer, 256, "/dev/ppi%d", gw16012_port); @@ -504,7 +502,7 @@ int gw16012_init(void) DEBUG("...open"); -#ifndef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) i=ioctl(device_handle, PPCLAIM); if (i<0) { @@ -548,7 +546,7 @@ int gw16012_init(void) DEBUG("...privileges granted"); /* make sure parallel port is in right mode (clear tristate and interrupt */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) outb(gw16012_port + 2, 0x0); #else outb(0x0, gw16012_port + 2); diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c index c1c52fe4..bac1b39e 100644 --- a/src/jtag/jtag.c +++ b/src/jtag/jtag.c @@ -1251,7 +1251,7 @@ int jtag_examine_chain() if ((zero_check == 0x00) || (one_check == 0xff)) { ERROR("JTAG communication failure, check connection, JTAG interface, target power etc."); - exit(-1); + return ERROR_JTAG_INIT_FAILED; } for (bit_count = 0; bit_count < (JTAG_MAX_CHAIN_SIZE * 32) - 31;) @@ -1300,7 +1300,7 @@ int jtag_examine_chain() ERROR("number of discovered devices in JTAG chain (%i) doesn't match configuration (%i)", device_count, jtag_num_devices); ERROR("check the config file and ensure proper JTAG communication (connections, speed, ...)"); - exit(-1); + return ERROR_JTAG_INIT_FAILED; } return ERROR_OK; @@ -1434,6 +1434,12 @@ int jtag_init(struct command_context_s *cmd_ctx) jtag_add_statemove(TAP_TLR); jtag_execute_queue(); + /* examine chain first, as this could discover the real chain layout */ + if (jtag_examine_chain() != ERROR_OK) + { + ERROR("trying to validate configured JTAG chain anyway..."); + } + while (jtag_validate_chain() != ERROR_OK) { validate_tries++; @@ -1445,8 +1451,6 @@ int jtag_init(struct command_context_s *cmd_ctx) usleep(10000); } - jtag_examine_chain(); - return ERROR_OK; } } diff --git a/src/jtag/parport.c b/src/jtag/parport.c index bc95c3d0..b9087d9f 100644 --- a/src/jtag/parport.c +++ b/src/jtag/parport.c @@ -28,7 +28,7 @@ /* system includes */ // -ino: 060521-1036 -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #include #include @@ -49,7 +49,7 @@ #include #if PARPORT_USE_PPDEV == 1 -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #include #include #define PPRSTATUS PPIGSTATUS @@ -200,7 +200,7 @@ void parport_write(int tck, int tms, int tdi) #if PARPORT_USE_PPDEV == 1 ioctl(device_handle, PPWDATA, &output); #else -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) outb(dataport, output); #else outb(output, dataport); @@ -229,7 +229,7 @@ void parport_reset(int trst, int srst) #if PARPORT_USE_PPDEV == 1 ioctl(device_handle, PPWDATA, &output); #else -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) outb(dataport, output); #else outb(output, dataport); @@ -322,17 +322,17 @@ int parport_init(void) return ERROR_JTAG_INIT_FAILED; } -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) DEBUG("opening /dev/ppi%d...", parport_port); snprintf(buffer, 256, "/dev/ppi%d", parport_port); device_handle = open(buffer, O_WRONLY); -#else /* not __Free_BSD */ +#else /* not __FreeBSD__, __FreeBSD_kernel__ */ DEBUG("opening /dev/parport%d...", parport_port); snprintf(buffer, 256, "/dev/parport%d", parport_port); device_handle = open(buffer, O_WRONLY); -#endif /* __FreeBSD__ */ +#endif /* __FreeBSD__, __FreeBSD_kernel__ */ if (device_handle < 0) { @@ -342,7 +342,7 @@ int parport_init(void) DEBUG("...open"); -#ifndef __FreeBSD__ +#if !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) i=ioctl(device_handle, PPCLAIM); if (i<0) { @@ -365,7 +365,7 @@ int parport_init(void) ERROR("cannot set compatible 1284 mode to device"); return ERROR_JTAG_INIT_FAILED; } -#endif /* not __Free_BSD__ */ +#endif /* not __FreeBSD__, __FreeBSD_kernel__ */ #else /* not PARPORT_USE_PPDEV */ if (parport_port == 0) @@ -390,7 +390,7 @@ int parport_init(void) DEBUG("...privileges granted"); /* make sure parallel port is in right mode (clear tristate and interrupt */ - #ifdef __FreeBSD__ + #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) outb(parport_port + 2, 0x0); #else outb(0x0, parport_port + 2); diff --git a/src/jtag/presto.c b/src/jtag/presto.c index fe54b131..95c59303 100644 --- a/src/jtag/presto.c +++ b/src/jtag/presto.c @@ -135,7 +135,6 @@ BYTE presto_init_seq[] = int presto_open(char *req_serial) { int i; - int result; DWORD numdevs; DWORD vidpid; char devname[FT_DEVICE_NAME_LEN]; @@ -144,7 +143,7 @@ int presto_open(char *req_serial) BYTE presto_data; unsigned long ftbytes; - presto->handle=INVALID_HANDLE_VALUE; + presto->handle = (FT_HANDLE)INVALID_HANDLE_VALUE; presto->buff_out_pos=0; presto->buff_in_pos=0; @@ -169,10 +168,10 @@ int presto_open(char *req_serial) break; } FT_Close(presto->handle); - presto->handle=INVALID_HANDLE_VALUE; + presto->handle = (FT_HANDLE)INVALID_HANDLE_VALUE; } - if (presto->handle==INVALID_HANDLE_VALUE) return PRST_ERR; + if (presto->handle == (FT_HANDLE)INVALID_HANDLE_VALUE) return PRST_ERR; if ((presto->status=FT_SetLatencyTimer(presto->handle,1))!=FT_OK) return PRST_ERR; if ((presto->status=FT_SetTimeouts(presto->handle,100,0))!=FT_OK) return PRST_ERR; @@ -219,7 +218,7 @@ int presto_close(void) int result=PRST_OK; - if (presto->handle==INVALID_HANDLE_VALUE) return result; + if (presto->handle == (FT_HANDLE)INVALID_HANDLE_VALUE) return result; presto->status=FT_Write(presto->handle,&presto_init_seq,sizeof(presto_init_seq),&ftbytes); if (presto->status!=FT_OK) result=PRST_ERR; @@ -228,7 +227,7 @@ int presto_close(void) if ((presto->status=FT_SetLatencyTimer(presto->handle,16))!=FT_OK) result=PRST_ERR; if ((presto->status=FT_Close(presto->handle))!=FT_OK) result=PRST_ERR; - else presto->handle=INVALID_HANDLE_VALUE; + else presto->handle = (FT_HANDLE)INVALID_HANDLE_VALUE; return result; } diff --git a/src/jtag/usbprog.c b/src/jtag/usbprog.c index cdf32704..4c39a8ff 100644 --- a/src/jtag/usbprog.c +++ b/src/jtag/usbprog.c @@ -129,83 +129,83 @@ int usbprog_register_commands(struct command_context_s *cmd_ctx) int usbprog_execute_queue(void) { - jtag_command_t *cmd = jtag_command_queue; /* currently processed command */ - int scan_size; - enum scan_type type; - u8 *buffer; - - while (cmd) - { - switch (cmd->type) - { - case JTAG_END_STATE: + jtag_command_t *cmd = jtag_command_queue; /* currently processed command */ + int scan_size; + enum scan_type type; + u8 *buffer; + + while (cmd) + { + switch (cmd->type) + { + case JTAG_END_STATE: #ifdef _DEBUG_JTAG_IO_ - DEBUG("end_state: %i", cmd->cmd.end_state->end_state); +DEBUG("end_state: %i", cmd->cmd.end_state->end_state); #endif - if (cmd->cmd.end_state->end_state != -1) - usbprog_end_state(cmd->cmd.end_state->end_state); - break; - case JTAG_RESET: +if (cmd->cmd.end_state->end_state != -1) + usbprog_end_state(cmd->cmd.end_state->end_state); +break; + case JTAG_RESET: #ifdef _DEBUG_JTAG_IO_ - DEBUG("reset trst: %i srst %i", cmd->cmd.reset->trst, cmd->cmd.reset->srst); + DEBUG("reset trst: %i srst %i", cmd->cmd.reset->trst, cmd->cmd.reset->srst); #endif - if (cmd->cmd.reset->trst == 1) - { - cur_state = TAP_TLR; - } - usbprog_reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst); - break; - case JTAG_RUNTEST: + if (cmd->cmd.reset->trst == 1) + { + cur_state = TAP_TLR; + } + usbprog_reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst); + break; + case JTAG_RUNTEST: #ifdef _DEBUG_JTAG_IO_ - DEBUG("runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, cmd->cmd.runtest->end_state); + DEBUG("runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, cmd->cmd.runtest->end_state); #endif - if (cmd->cmd.runtest->end_state != -1) - usbprog_end_state(cmd->cmd.runtest->end_state); - usbprog_runtest(cmd->cmd.runtest->num_cycles); - break; - case JTAG_STATEMOVE: + if (cmd->cmd.runtest->end_state != -1) + usbprog_end_state(cmd->cmd.runtest->end_state); + usbprog_runtest(cmd->cmd.runtest->num_cycles); + break; + case JTAG_STATEMOVE: #ifdef _DEBUG_JTAG_IO_ - DEBUG("statemove end in %i", cmd->cmd.statemove->end_state); + DEBUG("statemove end in %i", cmd->cmd.statemove->end_state); #endif - if (cmd->cmd.statemove->end_state != -1) - usbprog_end_state(cmd->cmd.statemove->end_state); - usbprog_state_move(); - break; - case JTAG_PATHMOVE: + if (cmd->cmd.statemove->end_state != -1) + usbprog_end_state(cmd->cmd.statemove->end_state); + usbprog_state_move(); + break; + case JTAG_PATHMOVE: #ifdef _DEBUG_JTAG_IO_ - DEBUG("pathmove: %i states, end in %i", cmd->cmd.pathmove->num_states, - cmd->cmd.pathmove->path[cmd->cmd.pathmove->num_states - 1]); + DEBUG("pathmove: %i states, end in %i", cmd->cmd.pathmove->num_states, + cmd->cmd.pathmove->path[cmd->cmd.pathmove->num_states - 1]); #endif - usbprog_path_move(cmd->cmd.pathmove); - break; - case JTAG_SCAN: + usbprog_path_move(cmd->cmd.pathmove); + break; + case JTAG_SCAN: #ifdef _DEBUG_JTAG_IO_ - DEBUG("scan end in %i", cmd->cmd.scan->end_state); + DEBUG("scan end in %i", cmd->cmd.scan->end_state); #endif - if (cmd->cmd.scan->end_state != -1) - usbprog_end_state(cmd->cmd.scan->end_state); - scan_size = jtag_build_buffer(cmd->cmd.scan, &buffer); - type = jtag_scan_type(cmd->cmd.scan); - usbprog_scan(cmd->cmd.scan->ir_scan, type, buffer, scan_size); - if (jtag_read_buffer(buffer, cmd->cmd.scan) != ERROR_OK) - return ERROR_JTAG_QUEUE_FAILED; - if (buffer) - free(buffer); - break; - case JTAG_SLEEP: + if (cmd->cmd.scan->end_state != -1) + usbprog_end_state(cmd->cmd.scan->end_state); + scan_size = jtag_build_buffer(cmd->cmd.scan, &buffer); + type = jtag_scan_type(cmd->cmd.scan); + usbprog_scan(cmd->cmd.scan->ir_scan, type, buffer, scan_size); + if (jtag_read_buffer(buffer, cmd->cmd.scan) != ERROR_OK) + return ERROR_JTAG_QUEUE_FAILED; + if (buffer) + free(buffer); + break; + case JTAG_SLEEP: #ifdef _DEBUG_JTAG_IO_ - DEBUG("sleep %i", cmd->cmd.sleep->us); + DEBUG("sleep %i", cmd->cmd.sleep->us); #endif - jtag_sleep(cmd->cmd.sleep->us); - break; - default: - ERROR("BUG: unknown JTAG command type encountered"); - exit(-1); - } - cmd = cmd->next; - } - - return ERROR_OK; + jtag_sleep(cmd->cmd.sleep->us); + break; + default: + ERROR("BUG: unknown JTAG command type encountered"); + exit(-1); + } + cmd = cmd->next; + } + + return ERROR_OK; } @@ -218,9 +218,9 @@ int usbprog_init(void) ERROR("Can't find USB JTAG Interface! Please check connection and permissions."); return ERROR_JTAG_INIT_FAILED; } - + INFO("USB JTAG Interface ready!"); - + usbprog_jtag_init(usbprog_jtag_handle); usbprog_reset(0, 0); usbprog_write(0, 0, 0); @@ -230,7 +230,7 @@ int usbprog_init(void) int usbprog_quit(void) { - + return ERROR_OK; } @@ -249,69 +249,70 @@ void usbprog_end_state(enum tap_state state) void usbprog_state_move(void) { - int i=0, tms=0; - u8 tms_scan = TAP_MOVE(cur_state, end_state); + int i=0, tms=0; + u8 tms_scan = TAP_MOVE(cur_state, end_state); - usbprog_jtag_write_tms(usbprog_jtag_handle,(char)tms_scan); - for (i = 0; i < 7; i++) - { - tms = (tms_scan >> i) & 1; - } - - cur_state = end_state; + usbprog_jtag_write_tms(usbprog_jtag_handle,(char)tms_scan); + for (i = 0; i < 7; i++) + { + tms = (tms_scan >> i) & 1; + } + + cur_state = end_state; } void usbprog_path_move(pathmove_command_t *cmd) { - int num_states = cmd->num_states; - int state_count; - - state_count = 0; - while (num_states) - { - if (tap_transitions[cur_state].low == cmd->path[state_count]) - { + int num_states = cmd->num_states; + int state_count; + + state_count = 0; + while (num_states) + { + if (tap_transitions[cur_state].low == cmd->path[state_count]) + { INFO("1"); - usbprog_write(0, 0, 0); - usbprog_write(1, 0, 0); - } - else if (tap_transitions[cur_state].high == cmd->path[state_count]) - { + usbprog_write(0, 0, 0); + usbprog_write(1, 0, 0); + } + else if (tap_transitions[cur_state].high == cmd->path[state_count]) + { INFO("2"); - usbprog_write(0, 1, 0); - usbprog_write(1, 1, 0); - } - else - { - ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[cmd->path[state_count]]); - exit(-1); - } - - cur_state = cmd->path[state_count]; - state_count++; - num_states--; - } - - end_state = cur_state; + usbprog_write(0, 1, 0); + usbprog_write(1, 1, 0); + } + else + { + ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[cmd->path[state_count]]); + exit(-1); + } + + cur_state = cmd->path[state_count]; + state_count++; + num_states--; + } + + end_state = cur_state; } void usbprog_runtest(int num_cycles) { - int i; + int i; - enum tap_state saved_end_state = end_state; + /* + enum tap_state saved_end_state = end_state; + */ - /* only do a state_move when we're not already in RTI */ - if (cur_state != TAP_RTI) - { - usbprog_end_state(TAP_RTI); - usbprog_state_move(); - } + if (cur_state != TAP_RTI) + { + usbprog_end_state(TAP_RTI); + usbprog_state_move(); + } - /* execute num_cycles */ + /* execute num_cycles */ if(num_cycles>0) { usbprog_write(0, 0, 0); @@ -320,86 +321,85 @@ void usbprog_runtest(int num_cycles) usbprog_jtag_tms_send(usbprog_jtag_handle); } - for (i = 0; i < num_cycles; i++) - { - usbprog_write(1, 0, 0); - usbprog_write(0, 0, 0); - } + for (i = 0; i < num_cycles; i++) + { + usbprog_write(1, 0, 0); + usbprog_write(0, 0, 0); + } - /* finish in end_state */ + /* finish in end_state */ /* usbprog_end_state(saved_end_state); if (cur_state != end_state) usbprog_state_move(); - */ + */ } void usbprog_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size) { - enum tap_state saved_end_state = end_state; - int bit_cnt; + enum tap_state saved_end_state = end_state; - if (ir_scan) - usbprog_end_state(TAP_SI); - else - usbprog_end_state(TAP_SD); + if (ir_scan) + usbprog_end_state(TAP_SI); + else + usbprog_end_state(TAP_SD); - usbprog_state_move(); - usbprog_end_state(saved_end_state); + usbprog_state_move(); + usbprog_end_state(saved_end_state); usbprog_jtag_tms_send(usbprog_jtag_handle); - if (type == SCAN_OUT) { - usbprog_jtag_write_tdi(usbprog_jtag_handle,buffer, scan_size); - } - if (type == SCAN_IN) { - usbprog_jtag_read_tdo(usbprog_jtag_handle,buffer, scan_size); - } - if (type == SCAN_IO) { - usbprog_jtag_write_and_read(usbprog_jtag_handle,buffer, scan_size); - } - - if (ir_scan) - cur_state = TAP_PI; - else - cur_state = TAP_PD; + if (type == SCAN_OUT) { + usbprog_jtag_write_tdi(usbprog_jtag_handle, (char*)buffer, scan_size); + } + if (type == SCAN_IN) { + usbprog_jtag_read_tdo(usbprog_jtag_handle, (char*)buffer, scan_size); + } + if (type == SCAN_IO) { + usbprog_jtag_write_and_read(usbprog_jtag_handle, (char*)buffer, scan_size); + } + + if (ir_scan) + cur_state = TAP_PI; + else + cur_state = TAP_PD; - if (cur_state != end_state) - usbprog_state_move(); + if (cur_state != end_state) + usbprog_state_move(); } /*************** jtag wrapper functions *********************/ void usbprog_write(int tck, int tms, int tdi) { - unsigned char output_value=0x00; + unsigned char output_value=0x00; - if (tms) - output_value |= (1< 0) { if(size > 488) { send_bits = 488; @@ -501,9 +500,9 @@ void usbprog_jtag_write_and_read(struct usbprog_jtag *usbprog_jtag, char * buffe tmp[3+i]=buffer[bufindex]; bufindex++; } - + usb_bulk_write(usbprog_jtag->usb_handle,3,tmp,64,1000); - + while(usb_bulk_read(usbprog_jtag->usb_handle,0x82, tmp, 64, 1000) < 1); for(i=0;i 0) { if(size > 488) { send_bits = 488; @@ -536,9 +535,9 @@ void usbprog_jtag_read_tdo(struct usbprog_jtag *usbprog_jtag, char * buffer, int tmp[0] = WRITE_AND_READ; tmp[1] = (char)(send_bits>>8); // high tmp[2] = (char)(send_bits); // low - + usb_bulk_write(usbprog_jtag->usb_handle,3,tmp,3,1000); - + while(usb_bulk_read(usbprog_jtag->usb_handle,0x82, tmp, 64, 10) < 1); for(i=0;i 0) { if(size > 488) { send_bits = 488; @@ -562,13 +561,13 @@ void usbprog_jtag_write_tdi(struct usbprog_jtag *usbprog_jtag, char * buffer, in } else { send_bits = size; loops = size/8; - //if(loops==0) + /*if(loops==0)*/ loops++; size = 0; } tmp[0] = WRITE_TDI; - tmp[1] = (char)(send_bits>>8); // high - tmp[2] = (char)(send_bits); // low + tmp[1] = (char)(send_bits>>8); /* high */ + tmp[2] = (char)(send_bits); /* low */ i=0; for(i=0;i < loops ;i++) { -- cgit v1.2.3