亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usb_jtag.patch

?? 網上流傳的usb_blaster原理圖里的CPLD源碼,主要是實現usb時序轉換成JATG時序輸出!
?? PATCH
?? 第 1 頁 / 共 2 頁
字號:
Index: configure.in===================================================================--- configure.in	(.../vendor/openocd)	(Revision 49)+++ configure.in	(.../branches/openocd-usb_jtag)	(Revision 49)@@ -32,6 +32,14 @@   AS_HELP_STRING([--enable-ft2232_ftd2xx], [Enable building support for FT2232 based devices using the FTD2XX driver]),    [build_ft2232_ftd2xx=$enableval], [build_ft2232_ftd2xx=no])  +AC_ARG_ENABLE(usb_blaster_libftdi,+  AS_HELP_STRING([--enable-usb_blaster_libftdi], [Enable building support for the Altera USB-Blaster using the libftdi driver]), +  [build_usb_blaster_libftdi=$enableval], [build_usb_blaster_libftdi=no])++AC_ARG_ENABLE(usb_blaster_ftd2xx,+  AS_HELP_STRING([--enable-usb_blaster_ftd2xx], [Enable building support for the Altera USB-Blaster using the FTD2XX driver]), +  [build_usb_blaster_ftd2xx=$enableval], [build_usb_blaster_ftd2xx=no])+ AC_ARG_ENABLE(amtjtagaccel,   AS_HELP_STRING([--enable-amtjtagaccel], [Enable building the Amontec JTAG-Accelerator driver]),    [build_amtjtagaccel=$enableval], [build_amtjtagaccel=no])@@ -141,6 +149,18 @@   AC_DEFINE(BUILD_FT2232_FTD2XX, 0, [0 if you don't want ftd2xx ft2232.]) fi +if test $build_usb_blaster_libftdi = yes; then+  AC_DEFINE(BUILD_USB_BLASTER_LIBFTDI, 1, [1 if you want libftdi usb_blaster.])+else+  AC_DEFINE(BUILD_USB_BLASTER_LIBFTDI, 0, [0 if you don't want libftdi usb_blaster.])+fi++if test $build_usb_blaster_ftd2xx = yes; then+  AC_DEFINE(BUILD_USB_BLASTER_FTD2XX, 1, [1 if you want ftd2xx usb_blaster.])+else+  AC_DEFINE(BUILD_USB_BLASTER_FTD2XX, 0, [0 if you don't want ftd2xx usb_blaster.])+fi+ if test $build_amtjtagaccel = yes; then   AC_DEFINE(BUILD_AMTJTAGACCEL, 1, [1 if you want the Amontec JTAG-Accelerator driver.]) else@@ -163,6 +183,8 @@ AM_CONDITIONAL(BITBANG, test $build_bitbang = yes) AM_CONDITIONAL(FT2232_LIBFTDI, test $build_ft2232_libftdi = yes) AM_CONDITIONAL(FT2232_FTD2XX, test $build_ft2232_ftd2xx = yes)+AM_CONDITIONAL(USB_BLASTER_LIBFTDI, test $build_usb_blaster_libftdi = yes)+AM_CONDITIONAL(USB_BLASTER_FTD2XX, test $build_usb_blaster_ftd2xx = yes) AM_CONDITIONAL(AMTJTAGACCEL, test $build_amtjtagaccel = yes) AM_CONDITIONAL(GW16012, test $build_gw16012 = yes) AM_CONDITIONAL(IS_CYGWIN, test $is_cygwin = yes)Index: src/jtag/jtag.c===================================================================--- src/jtag/jtag.c	(.../vendor/openocd)	(Revision 49)+++ src/jtag/jtag.c	(.../branches/openocd-usb_jtag)	(Revision 49)@@ -136,6 +136,14 @@ 	extern jtag_interface_t ft2232_interface; #endif +#if BUILD_USB_BLASTER_FTD2XX == 1+	extern jtag_interface_t usb_blaster_interface;+#endif++#if BUILD_USB_BLASTER_LIBFTDI == 1+	extern jtag_interface_t usb_blaster_interface;+#endif+ #if BUILD_AMTJTAGACCEL == 1 	extern jtag_interface_t amt_jtagaccel_interface; #endif@@ -162,6 +170,12 @@ #if BUILD_FT2232_LIBFTDI == 1 	&ft2232_interface, #endif+#if BUILD_USB_BLASTER_FTD2XX == 1+	&usb_blaster_interface,+#endif+#if BUILD_USB_BLASTER_LIBFTDI == 1+	&usb_blaster_interface,+#endif #if BUILD_AMTJTAGACCEL == 1 	&amt_jtagaccel_interface, #endifIndex: src/jtag/usb_blaster.c===================================================================--- src/jtag/usb_blaster.c	(.../vendor/openocd)	(Revision 0)+++ src/jtag/usb_blaster.c	(.../branches/openocd-usb_jtag)	(Revision 49)@@ -0,0 +1,706 @@+/***************************************************************************+ *                                                                         *+ *   Copyright (C) 2006 Kolja Waschk                                       *+ *   usbjtag@ixo.de                                                        *+ *                                                                         *+ *   Based on ft2232.c and bitbang.c,                                      *+ *   Copyright (C) 2004,2006 by Dominic Rath                               *+ *                                                                         *+ *   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++#if IS_CYGWIN == 1+#include "windows.h"+#undef ERROR+#endif++#include "replacements.h"++/* project specific includes */+#include "log.h"+#include "types.h"+#include "jtag.h"+#include "configuration.h"+#include "time_support.h"++/* system includes */+#include <string.h>+#include <stdlib.h>+#include <unistd.h>++/* USB_BLASTER access library includes */+#if BUILD_USB_BLASTER_FTD2XX == 1+#include <ftd2xx.h>+#elif BUILD_USB_BLASTER_LIBFTDI == 1+#include <ftdi.h>+#endif++#include <sys/time.h>+#include <time.h>++/* enable this to debug io latency+ */+#if 1+#define _DEBUG_USB_IO_+#endif++/* enable this to debug communication+ */+#if 1+#define _DEBUG_USB_COMMS_+#endif++int usb_blaster_execute_queue(void);++void usb_blaster_blink(void);+int usb_blaster_speed(int speed);+int usb_blaster_register_commands(struct command_context_s *cmd_ctx);+int usb_blaster_init(void);+int usb_blaster_quit(void);++int usb_blaster_handle_device_desc_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);+int usb_blaster_handle_layout_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);+int usb_blaster_handle_vid_pid_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);++char *usb_blaster_device_desc = NULL;+char *usb_blaster_layout = NULL;+u16 usb_blaster_vid = 0x09fb; // Altera+u16 usb_blaster_pid = 0x6001; // USB-Blaster++#if BUILD_USB_BLASTER_FTD2XX == 1+static FT_HANDLE ftdih = NULL;+#elif BUILD_USB_BLASTER_LIBFTDI == 1+static struct ftdi_context ftdic;+#endif++jtag_interface_t usb_blaster_interface = +{+	+	.name = "usb_blaster",+	+	.execute_queue = usb_blaster_execute_queue,+	+	.support_pathmove = 1,+	+	.speed = usb_blaster_speed,+	.register_commands = usb_blaster_register_commands,+	.init = usb_blaster_init,+	.quit = usb_blaster_quit,+};++int usb_blaster_buf_write(u8 *buf, int size, u32* bytes_written)+{+#if BUILD_USB_BLASTER_FTD2XX == 1+	FT_STATUS status;+	DWORD dw_bytes_written;+	+#ifdef _DEBUG_JTAG_IO_+	DEBUG("usb_blaster_buf_write %02X (%d)\n", buf[0], size);+#endif+	if ((status = FT_Write(ftdih, buf, size, &dw_bytes_written)) != FT_OK)+	{+		*bytes_written = dw_bytes_written;+		ERROR("FT_Write returned: %i", status);+		return ERROR_JTAG_DEVICE_ERROR;+	}+	else+	{+		*bytes_written = dw_bytes_written;+		return ERROR_OK;	+	}+#elif BUILD_USB_BLASTER_LIBFTDI == 1+	int retval;+#ifdef _DEBUG_JTAG_IO_+	DEBUG("usb_blaster_buf_write %02X (%d)\n", buf[0], size);+#endif+	if ((retval = ftdi_write_data(&ftdic, buf, size)) < 0)+	{+		*bytes_written = 0;+		ERROR("ftdi_write_data: %s", ftdi_get_error_string(&ftdic));+		return ERROR_JTAG_DEVICE_ERROR;+	}+	else+	{+		*bytes_written = retval;+		return ERROR_OK;	+	}+#endif+}++int usb_blaster_buf_read(u8* buf, int size, u32* bytes_read)+{+#if BUILD_USB_BLASTER_FTD2XX == 1+	DWORD dw_bytes_read;+	FT_STATUS status;+	if ((status = FT_Read(ftdih, buf, size, &dw_bytes_read)) != FT_OK)+	{+		*bytes_read = dw_bytes_read; +		ERROR("FT_Read returned: %i", status);+		return ERROR_JTAG_DEVICE_ERROR;+	}+#ifdef _DEBUG_JTAG_IO_+	DEBUG("usb_blaster_buf_read %02X (%d)\n", buf[0], dw_bytes_read);+#endif+	*bytes_read = dw_bytes_read; +	return ERROR_OK;	++#elif BUILD_USB_BLASTER_LIBFTDI == 1+	int retval;+	int timeout = 100;+	*bytes_read = 0;+	+	while ((*bytes_read < size) && timeout--)+	{+		if ((retval = ftdi_read_data(&ftdic, buf + *bytes_read, size - *bytes_read)) < 0)+		{+			*bytes_read = 0;+			ERROR("ftdi_read_data: %s", ftdi_get_error_string(&ftdic));+			return ERROR_JTAG_DEVICE_ERROR;+		}+		*bytes_read += retval;+	}+#ifdef _DEBUG_JTAG_IO_+	DEBUG("usb_blaster_buf_read %02X (%d)\n", buf[0], *bytes_read);+#endif+	return ERROR_OK;	+#endif+}++/* The following code doesn't fully utilize the possibilities of the USB-Blaster. It+ * writes one byte per JTAG pin state change at a time; it doesn't even try to buffer+ * data up to the maximum packet size of 64 bytes.+ *+ * Actually, the USB-Blaster offers a byte-shift mode to transmit up to 504 data bits+ * (bidirectional) in a single USB packet. A header byte has to be sent as the first+ * byte in a packet with the following meaning:+ *+ *   Bit 7 (0x80): Must be set to indicate byte-shift mode.+ *   Bit 6 (0x40): If set, the USB-Blaster will also read data, not just write.+ *   Bit 5..0:     Define the number N of following bytes+ *+ * All N following bytes will then be clocked out serially on TDI. If Bit 6 was set,+ * it will afterwards return N bytes with TDO data read while clocking out the TDI data.+ * LSB of the first byte after the header byte will appear first on TDI.+ */++/* Simple bit banging mode:+ *+ *   Bit 7 (0x80): Must be zero (see byte-shift mode above)+ *   Bit 6 (0x40): If set, you will receive a byte indicating the state of TDO in return.+ *   Bit 5 (0x20): Unknown; for now, set to one.+ *   Bit 4 (0x10): TDI Output.+ *   Bit 3 (0x08): Unknown; for now, set to one.+ *   Bit 2 (0x04): Unknown; for now, set to one.+ *   Bit 1 (0x02): TMS Output.+ *   Bit 0 (0x01): TCK Output.+ *+ * For transmitting a single data bit, you need to write two bytes. Up to 64 bytes can be+ * combined in a single USB packet (but this is not done in the code below). It isn't+ * possible to read a data without transmitting data.+ */++#define TCK    0+#define TMS    1+#define TDI    4+#define READ   6+#define SHMODE 7+#define OTHERS ((1<<2)|(1<<3)|(1<<5))++void usb_blaster_write(int tck, int tms, int tdi)+{+	u8 buf[1];+	u32 count;+#ifdef _DEBUG_JTAG_IO_+	DEBUG("---- usb_blaster_write(%d,%d,%d)\n", tck,tms,tdi);+#endif+	buf[0] = OTHERS | (tck?(1<<TCK):0) | (tms?(1<<TMS):0) | (tdi?(1<<TDI):0);+	usb_blaster_buf_write(buf, 1, &count);+}++int usb_blaster_write_read(int tck, int tms, int tdi)+{+	u8 buf[1];+	u32 count;+#ifdef _DEBUG_JTAG_IO_+	DEBUG("++++ usb_blaster_write_read(%d,%d,%d)\n", tck,tms,tdi);+#endif+	buf[0] = OTHERS | (tck?(1<<TCK):0) | (tms?(1<<TMS):0) | (tdi?(1<<TDI):0) | (1<<READ);+	usb_blaster_buf_write(buf, 1, &count);+	usb_blaster_buf_read(buf, 1, &count);+	return (buf[0]&1);+}++int usb_blaster_speed(int speed)+{+#if BUILD_USB_BLASTER_FTD2XX == 1+	DEBUG("TODO: usb_blaster_speed() isn't implemented for libftd2xx!");+#elif BUILD_USB_BLASTER_LIBFTDI == 1+	DEBUG("TODO: usb_blaster_speed() isn't optimally implemented!");+	/* TODO: libftdi's ftdi_set_baudrate chokes on high rates, use lowlevel+	 * usb function instead! And additionally allow user to throttle. */+	if(ftdi_set_baudrate(&ftdic, 3000000/4)<0)+	{+		ERROR("Can't set baud rate to max: %s", ftdi_get_error_string(&ftdic));+		return ERROR_JTAG_DEVICE_ERROR;+	};+#endif+	+	return ERROR_OK;+}++int usb_blaster_register_commands(struct command_context_s *cmd_ctx)+{+	register_command(cmd_ctx, NULL, "usb_blaster_device_desc", usb_blaster_handle_device_desc_command,+		COMMAND_CONFIG, NULL);+	register_command(cmd_ctx, NULL, "usb_blaster_vid_pid", usb_blaster_handle_vid_pid_command,+					 COMMAND_CONFIG, NULL);+	return ERROR_OK;+}++void usb_blaster_end_state(state)+{+	if (tap_move_map[state] != -1)+		end_state = state;+	else+	{+		ERROR("BUG: %i is not a valid end state", state);+		exit(-1);+	}+}++void usb_blaster_state_move(void) {+	+	int i=0, tms=0;+	u8 tms_scan = TAP_MOVE(cur_state, end_state);+	+	for (i = 0; i < 7; i++)+	{+		tms = (tms_scan >> i) & 1;+		usb_blaster_write(0, tms, 0);+		usb_blaster_write(1, tms, 0);+	}+	usb_blaster_write(0, tms, 0);+	+	cur_state = end_state;+}++void usb_blaster_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])+		{+			usb_blaster_write(0, 0, 0);+			usb_blaster_write(1, 0, 0);+		}+		else if (tap_transitions[cur_state].high == cmd->path[state_count])+		{+			usb_blaster_write(0, 1, 0);+			usb_blaster_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 usb_blaster_runtest(int num_cycles)+{+	int i;+	+	enum tap_state saved_end_state = end_state;+	+	/* only do a state_move when we're not already in RTI */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品999在线播放| 日本人妖一区二区| 久久久国产精品不卡| 51精品久久久久久久蜜臀| 欧美色网站导航| 91精选在线观看| 日韩一区二区三区四区五区六区| 欧美电影在线免费观看| 91精品国产综合久久久久久久| 精品视频999| 日韩一区二区在线观看视频| 日韩免费高清电影| 国产欧美一二三区| 国产精品久久国产精麻豆99网站| 中文字幕欧美一| 亚洲国产综合色| 久久精品国产77777蜜臀| 极品少妇xxxx精品少妇偷拍| 丁香婷婷综合激情五月色| 91香蕉视频mp4| 91麻豆精品国产91久久久更新时间| 日韩一区二区视频在线观看| 国产日韩一级二级三级| 亚洲男同性视频| 男女性色大片免费观看一区二区 | 高清久久久久久| 99久久精品国产毛片| 欧美日韩二区三区| 久久精品一级爱片| 亚洲动漫第一页| 国产福利电影一区二区三区| 91国产免费看| 久久久久久综合| 一区二区高清视频在线观看| 久久不见久久见免费视频7 | 亚洲视频在线一区二区| 亚洲va在线va天堂| 国产剧情av麻豆香蕉精品| 色狠狠色噜噜噜综合网| 精品少妇一区二区三区 | 欧美精品日韩综合在线| 久久九九国产精品| 午夜精品久久久久久久久久久 | 亚洲黄色免费电影| 精品在线观看视频| 欧美日韩综合色| 最新热久久免费视频| 六月丁香婷婷色狠狠久久| 91丨九色丨国产丨porny| 精品久久久久久久久久久院品网 | 三级久久三级久久久| 成人毛片老司机大片| 精品电影一区二区三区| 午夜视频一区二区三区| 不卡一区二区三区四区| 精品国产电影一区二区| 日韩国产精品久久久久久亚洲| 91在线免费视频观看| 亚洲国产岛国毛片在线| 国产一区视频导航| 日韩精品最新网址| 欧美aa在线视频| 7777精品伊人久久久大香线蕉最新版| 中文字幕一区二区三中文字幕| 国产成人丝袜美腿| 久久久久久久久蜜桃| 美女免费视频一区| 日韩一级二级三级| 青青草原综合久久大伊人精品 | 五月天婷婷综合| 欧美性受xxxx黑人xyx性爽| 国产精品久久久久久久久免费相片| 国产一区二区三区国产| 欧美不卡123| 国内精品第一页| 久久久影视传媒| 国产不卡在线一区| 国产精品无人区| 99国产精品国产精品毛片| 亚洲天堂精品在线观看| 99国产精品国产精品久久| 亚洲精品日韩专区silk| 欧美三级日本三级少妇99| 天天做天天摸天天爽国产一区| 欧美一区二区三区在线观看| 日韩不卡在线观看日韩不卡视频| 在线成人小视频| 精品一区二区成人精品| 国产农村妇女毛片精品久久麻豆| 丰满亚洲少妇av| 一区二区三区美女视频| 欧美精品日韩精品| 国产精品资源在线| 1024成人网| 亚洲私人影院在线观看| 欧美伦理电影网| 国产精品影音先锋| 亚洲精品中文字幕在线观看| 51午夜精品国产| 国产二区国产一区在线观看| 亚洲色图制服诱惑| 91精品麻豆日日躁夜夜躁| 国产一区二区福利视频| 亚洲日本va在线观看| 欧美美女直播网站| 国产aⅴ综合色| 亚洲成人精品在线观看| 久久久国产精品午夜一区ai换脸| 91丝袜高跟美女视频| 日韩高清欧美激情| 国产精品亲子乱子伦xxxx裸| 欧美日韩高清一区二区| 高清久久久久久| 日韩精品亚洲一区| 亚洲欧洲av在线| 欧美一区二区视频在线观看2020| 国产白丝精品91爽爽久久| 天堂蜜桃91精品| 中文字幕一区二区三区视频| 日韩一区二区三区视频| 色婷婷av一区二区三区之一色屋| 男女男精品网站| 亚洲自拍偷拍图区| 中文字幕的久久| 日韩一区二区三区电影在线观看| 国产成人免费视频网站| 麻豆成人av在线| 亚洲国产日韩综合久久精品| 欧美高清在线一区| 精品国产人成亚洲区| 欧美日韩国产在线观看| av不卡在线播放| 精品影院一区二区久久久| 亚洲一二三四久久| 亚洲欧美国产高清| 国产人成一区二区三区影院| 欧美乱妇15p| 欧美色图天堂网| 色综合色狠狠综合色| 成人毛片视频在线观看| 国产黄色91视频| 国产乱子伦一区二区三区国色天香 | 欧美日韩aaa| 色八戒一区二区三区| gogogo免费视频观看亚洲一| 国产一区二区在线看| 免费人成精品欧美精品| 三级在线观看一区二区| 日韩黄色一级片| 日韩综合一区二区| 91在线精品一区二区三区| 国产成人aaa| 成人免费不卡视频| 99国产精品久久久久| 91麻豆精品秘密| 色av综合在线| 欧美亚洲动漫制服丝袜| 欧美日韩一本到| 91精品啪在线观看国产60岁| 欧美男女性生活在线直播观看| 欧美绝品在线观看成人午夜影视| 欧美视频你懂的| 日韩亚洲欧美在线| 亚洲精品一区二区三区蜜桃下载| 久久久久97国产精华液好用吗| 国产偷国产偷亚洲高清人白洁| 国产日韩综合av| 亚洲女厕所小便bbb| 午夜精品久久一牛影视| 毛片av中文字幕一区二区| 国内精品第一页| 色综合久久中文综合久久97 | 久久爱www久久做| 国产美女久久久久| eeuss影院一区二区三区| 欧美性猛片aaaaaaa做受| 日韩欧美国产wwwww| 久久久精品tv| 夜夜嗨av一区二区三区中文字幕| 天堂va蜜桃一区二区三区漫画版| 久久精品72免费观看| 成人综合日日夜夜| 欧美喷潮久久久xxxxx| 久久亚区不卡日本| 亚洲欧美电影院| 美女mm1313爽爽久久久蜜臀| 成人短视频下载| 宅男在线国产精品| 亚洲欧美在线aaa| 日本亚洲一区二区| 不卡av电影在线播放| 4438x成人网最大色成网站| 欧美高清在线一区| 日本一区中文字幕| 色偷偷久久一区二区三区| 日韩免费看的电影| 亚洲一区二区在线免费观看视频| 国产毛片精品国产一区二区三区| 国产日产精品1区| 亚洲h在线观看|