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

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

?? wiggler.c

?? UrJTAG package is free software, covered by the GNU General Public License, and you are welcome to
?? C
字號:
/* * $Id: wiggler.c 1348 2008-09-03 17:24:07Z vapier $ * * Macraigor Wiggler JTAG Cable Driver * Copyright (C) 2002, 2003 ETC s.r.o. * * 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. * * Written by Marcel Telka <marcel@telka.sk>, 2002, 2003. * * Documentation: * [1] http://www.ocdemon.net/ * [2] http://jtag-arm9.sourceforge.net/hardware.html * */#include "sysdep.h"#include <stdlib.h>#include <string.h>#include <ctype.h>#include "cable.h"#include "parport.h"#include "chain.h"#include "generic.h"#include "generic_parport.h"#include <cmd.h>/* * Bit <-> pin mapping of an original Wiggler * This is the default when no mapping is specified for wiggler_connect( ) * * data D[7:0] (pins 9:2) */#define	nTRST	4	/* nTRST is not inverted in the cable */#define	TDI	3#define	TCK	2#define	TMS	1#define	nSRESET 0	/* sRESET is inverted in the cable *//* * 7 - BUSY (pin 11) * 6 - ACK (pin 10) * 5 - PE (pin 12) * 4 - SEL (pin 13) * 3 - ERROR (pin 15) */#define	TDO 	7	/* macros used to stringify the defines above */#define xstr(s) str(s)#define str(s) #sstatic constchar *std_wgl_map = xstr(TDO)   ","                    xstr(nTRST) ","                    xstr(TDI)   ","                    xstr(TCK)   ","                    xstr(TMS)   ","                    "#" xstr(nSRESET);/* private parameters of this cable driver */typedef struct {	int trst_lvl;	int srst_act, srst_inact;	int tms_act, tms_inact;	int tck_act, tck_inact;	int tdi_act, tdi_inact;	int tdo_act, tdo_inact;	int trst_act, trst_inact;	int unused_bits;} wiggler_params_t;/* access macros for the parameters */#define	PRM_TRST_LVL(cable)    ((wiggler_params_t *) cable->params)->trst_lvl#define	PRM_SRST_ACT(cable)    ((wiggler_params_t *) cable->params)->srst_act#define	PRM_SRST_INACT(cable)  ((wiggler_params_t *) cable->params)->srst_inact#define	PRM_TMS_ACT(cable)     ((wiggler_params_t *) cable->params)->tms_act#define	PRM_TMS_INACT(cable)   ((wiggler_params_t *) cable->params)->tms_inact#define	PRM_TCK_ACT(cable)     ((wiggler_params_t *) cable->params)->tck_act#define	PRM_TCK_INACT(cable)   ((wiggler_params_t *) cable->params)->tck_inact#define	PRM_TDI_ACT(cable)     ((wiggler_params_t *) cable->params)->tdi_act#define	PRM_TDI_INACT(cable)   ((wiggler_params_t *) cable->params)->tdi_inact#define	PRM_TDO_ACT(cable)     ((wiggler_params_t *) cable->params)->tdo_act#define	PRM_TDO_INACT(cable)   ((wiggler_params_t *) cable->params)->tdo_inact#define	PRM_TRST_ACT(cable)    ((wiggler_params_t *) cable->params)->trst_act#define	PRM_TRST_INACT(cable)  ((wiggler_params_t *) cable->params)->trst_inact#define	PRM_UNUSED_BITS(cable) ((wiggler_params_t *) cable->params)->unused_bitsstatic intmap_pin( char *pin, int *act, int *inact ){	int bitnum;	int inverted = 0;	if ( *pin == '#' ) {		inverted = 1;		pin++;	}	if ( !isdigit( *pin ) )		return -1;	bitnum = atoi( pin ) % 8;	bitnum = 1 << bitnum;	*act   = inverted ? 0 : bitnum;	*inact = inverted ? bitnum : 0;	return 0;}static intset_mapping( char *bitmap, cable_t *cable ){	const char delim = ',';	int syntax = 0;	char *tdo, *trst, *tdi, *tck, *tms, *srst;	/* assign mappings for each pin */	if ( ( tdo = bitmap ) )		if ( ( trst = strchr( tdo,  delim ) ) ) {			trst++;			if ( ( tdi = strchr( trst, delim ) ) ) {				tdi++;				if ( ( tck = strchr( tdi,  delim ) ) ) {					tck++;					if ( ( tms = strchr( tck,  delim ) ) ) {						tms++;						if ( ( srst = strchr( tms,  delim ) ) ) {							srst++;							syntax = 1;						} } } } }	if ( !syntax )		return -1;	if ( map_pin( tdo,  &(PRM_TDO_ACT(cable)),  &(PRM_TDO_INACT(cable))  ) != 0 ) return -1;	if ( map_pin( trst, &(PRM_TRST_ACT(cable)), &(PRM_TRST_INACT(cable)) ) != 0 ) return -1;	if ( map_pin( tdi,  &(PRM_TDI_ACT(cable)),  &(PRM_TDI_INACT(cable))  ) != 0 ) return -1;	if ( map_pin( tck,  &(PRM_TCK_ACT(cable)),  &(PRM_TCK_INACT(cable))  ) != 0 ) return -1;	if ( map_pin( tms,  &(PRM_TMS_ACT(cable)),  &(PRM_TMS_INACT(cable))  ) != 0 ) return -1;	if ( map_pin( srst, &(PRM_SRST_ACT(cable)), &(PRM_SRST_INACT(cable)) ) != 0 ) return -1;	return 0;}static intwiggler_connect( char *params[], cable_t *cable ){	int result;	char *param_bitmap = NULL;	wiggler_params_t *wiggler_params;	if ( cmd_params ( params ) == 4 ) {		/* acquire optional parameter for bit<->pin mapping */		param_bitmap = params[3];		/* generic_parport_connect() shouldn't see this parameter */		params[3] = NULL;	}	if ( ( result = generic_parport_connect( params, cable ) ) != 0)		return result;	if ( param_bitmap )		params[3] = param_bitmap;	wiggler_params = malloc( sizeof *wiggler_params );	if (!wiggler_params) {		printf( _("%s(%d) malloc failed!\n"), __FILE__, __LINE__);		/* NOTE:		 * Call the underlying parport driver (*free) routine directly		 * not generic_parconn_free() since it also free's cable->params		 * (which is not established) and cable (which the caller will do)		 */		cable->link.port->driver->parport_free( cable->link.port );		return 4;	}	/* set new wiggler-specific params */	free(cable->params);	cable->params = wiggler_params;	if ( ! param_bitmap )		param_bitmap = (char *)std_wgl_map;	if ( ( result = set_mapping( param_bitmap, cable ) ) != 0 ) {		printf( _("Pin mapping failed\n") );		/* NOTE:		 * Call the underlying parport driver (*free) routine directly		 * not generic_parconn_free() since it also free'scable (which		 * the caller will do)		 */		cable->link.port->driver->parport_free( cable->link.port );		free( cable->params );		return result;	}	/* Certain Macraigor Wigglers appear to use one of the unused data lines as a	   power line so set all unused bits high. */	PRM_UNUSED_BITS(cable) = ~( PRM_SRST_ACT(cable) | PRM_SRST_INACT(cable) |				 PRM_TMS_ACT(cable)  | PRM_TMS_INACT(cable) |				 PRM_TCK_ACT(cable)  | PRM_TCK_INACT(cable) |				 PRM_TDI_ACT(cable)  | PRM_TDI_INACT(cable) |				 PRM_TRST_ACT(cable) | PRM_TRST_INACT(cable) ) & 0xff;	return 0;}static intwiggler_init( cable_t *cable ){	int data;	if (parport_open( cable->link.port ))		return -1;	if ((data = parport_get_data( cable->link.port )) < 0) {		if (parport_set_data( cable->link.port, (PRM_TRST_ACT(cable) | PRM_TRST_INACT(cable)) | PRM_UNUSED_BITS(cable)))			return -1;		PRM_TRST_LVL(cable) = PRM_TRST_ACT(cable) | PRM_TRST_INACT(cable);	} else		PRM_TRST_LVL(cable) = data & (PRM_TRST_ACT(cable) | PRM_TRST_INACT(cable));	return 0;}static voidwiggler_clock( cable_t *cable, int tms, int tdi, int n ){	int i;	tms = tms ? 1 : 0;	tdi = tdi ? 1 : 0;	for (i = 0; i < n; i++) {		parport_set_data( cable->link.port, PRM_TRST_LVL(cable) |				PRM_TCK_INACT(cable) |				(tms ? PRM_TMS_ACT(cable) : PRM_TMS_INACT(cable)) |				(tdi ? PRM_TDI_ACT(cable) : PRM_TDI_INACT(cable)) |				PRM_UNUSED_BITS(cable) );		cable_wait( cable );		parport_set_data( cable->link.port, PRM_TRST_LVL(cable) |				PRM_TCK_ACT(cable) |				(tms ? PRM_TMS_ACT(cable) : PRM_TMS_INACT(cable)) |				(tdi ? PRM_TDI_ACT(cable) : PRM_TDI_INACT(cable)) |				PRM_UNUSED_BITS(cable) );		cable_wait( cable );	}}static intwiggler_get_tdo( cable_t *cable ){	parport_set_data( cable->link.port, PRM_TRST_LVL(cable) |			PRM_TCK_INACT(cable) |			PRM_UNUSED_BITS(cable) );	cable_wait( cable );	return (parport_get_status( cable->link.port ) & (PRM_TDO_ACT(cable) | PRM_TDO_INACT(cable))) ^	PRM_TDO_ACT(cable) ? 0 : 1;}static intwiggler_set_trst( cable_t *cable, int trst ){	PRM_TRST_LVL(cable) = trst ? PRM_TRST_ACT(cable) : PRM_TRST_INACT(cable);	parport_set_data( cable->link.port, PRM_TRST_LVL(cable) |			PRM_UNUSED_BITS(cable) );	return PRM_TRST_LVL(cable) ^ PRM_TRST_ACT(cable) ? 0 : 1;}static intwiggler_get_trst( cable_t *cable ){	return PRM_TRST_LVL(cable) ^ PRM_TRST_ACT(cable) ? 0 : 1;}static voidwiggler_help( const char *cablename ){	printf( _(		"Usage: cable %s parallel PORTADDR [TDO,TRST,TDI,TCK,TMS,SRESET]\n"#if ENABLE_LOWLEVEL_PPDEV		"   or: cable %s ppdev PPDEV [TDO,TRST,TDI,TCK,TMS,SRESET]\n"#endif#if HAVE_DEV_PPBUS_PPI_H		"   or: cable %s ppi PPIDEV [TDO,TRST,TDI,TCK,TMS,SRESET]\n"#endif		"\n"		"PORTADDR   parallel port address (e.g. 0x378)\n"#if ENABLE_LOWLEVEL_PPDEV		"PPDEV      ppdev device (e.g. /dev/parport0)\n"#endif#if HAVE_DEV_PPBUS_PPI_H		"PPIDEF     ppi device (e.g. /dev/ppi0)\n"#endif		"TDO, ...   parallel port bit number, prepend '#' for inversion\n"		"           default is '%s'\n"		"\n"	),#if ENABLE_LOWLEVEL_PPDEV    cablename,#endif#if HAVE_DEV_PPBUS_PPI_H    cablename,#endif    cablename,    std_wgl_map    );}cable_driver_t wiggler_cable_driver = {	"WIGGLER",	N_("Macraigor Wiggler JTAG Cable"),	wiggler_connect,	generic_disconnect,	generic_parport_free,	wiggler_init,	generic_parport_done,	generic_set_frequency,	wiggler_clock,	wiggler_get_tdo,	generic_transfer,	wiggler_set_trst,	wiggler_get_trst,	generic_flush_one_by_one,	wiggler_help};cable_driver_t igloo_cable_driver = {	"IGLOO",	N_("Excelpoint IGLOO JTAG Cable"),	wiggler_connect,	generic_disconnect,	generic_parport_free,	wiggler_init,	generic_parport_done,	generic_set_frequency,	wiggler_clock,	wiggler_get_tdo,	generic_transfer,	wiggler_set_trst,	wiggler_get_trst,	generic_flush_one_by_one,	wiggler_help};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美韩国日本一区| 在线一区二区三区四区| 亚洲综合视频在线| 亚洲欧洲综合另类| 久久久久97国产精华液好用吗| 欧美一区二区视频在线观看2020 | 成人一区二区三区在线观看| 国产在线精品不卡| 国产成人高清视频| 成人精品免费看| av中文字幕一区| 色婷婷综合久色| 欧美日本一道本| 日韩午夜在线观看视频| 久久免费午夜影院| 中文字幕不卡在线观看| 亚洲精品成人悠悠色影视| 亚洲一区二区黄色| 日本va欧美va欧美va精品| 男人的天堂亚洲一区| 国产精品综合一区二区| 99这里只有久久精品视频| 96av麻豆蜜桃一区二区| 欧美欧美午夜aⅴ在线观看| 欧美一区二区精美| 国产精品视频一二三| 亚洲欧美日本韩国| 热久久久久久久| 成人综合婷婷国产精品久久蜜臀 | 一本到不卡免费一区二区| 在线观看一区日韩| 欧美成人高清电影在线| 国产色产综合产在线视频| 亚洲欧美成aⅴ人在线观看| 日韩一区精品视频| 不卡视频在线看| 欧美日韩色一区| 欧美国产视频在线| 亚洲成av人影院在线观看网| 国产大陆亚洲精品国产| 欧美日韩精品综合在线| 国产亚洲综合性久久久影院| 亚洲电影在线免费观看| 国产成人免费在线观看不卡| 欧美三级电影精品| 久久久久久免费毛片精品| 亚洲一区二区三区在线看| 国产美女精品一区二区三区| 欧美三级日韩三级| 国产精品大尺度| 免费成人性网站| 在线亚洲高清视频| 国产精品三级电影| 国模娜娜一区二区三区| 欧美精品日日鲁夜夜添| 最新热久久免费视频| 黄色小说综合网站| 欧美一区二区三区小说| 亚洲午夜视频在线观看| 不卡av电影在线播放| 久久久另类综合| 美女久久久精品| 7777精品伊人久久久大香线蕉超级流畅 | 精品视频123区在线观看| 中文子幕无线码一区tr| 青椒成人免费视频| 欧美精品123区| 亚洲黄色小视频| www.日韩av| 国产婷婷色一区二区三区四区| 免费成人深夜小野草| 这里只有精品视频在线观看| 亚洲精品videosex极品| 99在线精品视频| 国产精品萝li| eeuss鲁片一区二区三区在线看| 国产免费久久精品| 国产成人综合在线| 久久久久久久久久久久电影 | 亚洲精品一线二线三线无人区| 亚洲国产欧美日韩另类综合| 波多野结衣在线一区| 久久久精品蜜桃| 国产一区二区三区四区五区美女| 欧美成人综合网站| 国产在线播放一区| 中文字幕乱码久久午夜不卡| 国产一区二区三区综合| 欧美激情综合五月色丁香| 国产.欧美.日韩| 中文字幕一区日韩精品欧美| 91美女精品福利| 亚洲国产你懂的| 欧美大胆一级视频| 国产成人av电影| 中文字幕亚洲一区二区va在线| 不卡在线视频中文字幕| 一区二区三区免费在线观看| 欧美日韩一卡二卡三卡 | 成人国产精品免费观看动漫| 日韩理论片中文av| 欧美男女性生活在线直播观看| 五月婷婷欧美视频| 欧美xxxxxxxxx| 成人激情小说乱人伦| 亚洲精品视频在线观看网站| 这里只有精品视频在线观看| 国产精品一区二区久久精品爱涩| 国产精品毛片大码女人| 欧美色手机在线观看| 免费国产亚洲视频| 亚洲欧美自拍偷拍| 91精品国产综合久久久久久| 国产.欧美.日韩| 视频一区视频二区在线观看| 欧美高清在线一区| 在线观看一区二区精品视频| 成人一级片网址| 亚洲视频在线观看一区| 6080午夜不卡| 99免费精品在线| 久久精品免费观看| 一区二区三区色| 精品日韩一区二区三区免费视频| 91色在线porny| 国产精品一区二区在线播放| 午夜精品久久久久久久99水蜜桃| 国产清纯白嫩初高生在线观看91| 欧美日韩国产综合视频在线观看| 国产专区综合网| 五月天视频一区| 亚洲天堂2014| 久久精品一区二区三区不卡| 欧美精品日韩综合在线| 色婷婷综合久久久中文一区二区| 国产剧情一区二区| 毛片av一区二区| 午夜精品视频一区| 亚洲午夜影视影院在线观看| 国产精品视频在线看| 精品成人a区在线观看| 在线综合+亚洲+欧美中文字幕| 色噜噜久久综合| 99精品视频一区二区三区| 豆国产96在线|亚洲| 国产乱淫av一区二区三区| 毛片av一区二区| 日本亚洲三级在线| 日韩av网站在线观看| 视频一区免费在线观看| 午夜欧美一区二区三区在线播放| 一区二区三区 在线观看视频 | 粉嫩欧美一区二区三区高清影视 | 国产成人午夜精品影院观看视频| 免费成人在线影院| 欧美a级一区二区| 久久精品国产免费| 美女网站视频久久| 精品综合久久久久久8888| 另类小说欧美激情| 国产一区二区在线视频| 韩国午夜理伦三级不卡影院| 国产又黄又大久久| 国产激情偷乱视频一区二区三区| 国产成人av电影在线| 成人久久久精品乱码一区二区三区| 国产激情视频一区二区三区欧美| 国产激情一区二区三区四区 | 欧美三级视频在线| 欧美一级久久久| 久久综合久久鬼色中文字| 久久久久国产免费免费| 国产日韩欧美电影| 亚洲视频香蕉人妖| 日韩综合一区二区| 激情综合一区二区三区| 国产91综合一区在线观看| 成人精品一区二区三区四区| 91色九色蝌蚪| 制服丝袜国产精品| 久久伊99综合婷婷久久伊| 国产精品白丝在线| 亚洲成在线观看| 韩国av一区二区三区四区| 不卡区在线中文字幕| 欧美日韩国产经典色站一区二区三区| 欧美片网站yy| 亚洲国产精品传媒在线观看| 亚洲一区二区五区| 黄页视频在线91| 色综合中文字幕国产 | 亚洲精品在线三区| 亚洲同性gay激情无套| 亚洲国产精品视频| 精品在线免费视频| 91高清视频在线| 精品成人a区在线观看| 亚洲香肠在线观看| 盗摄精品av一区二区三区| 在线亚洲欧美专区二区|