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

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

?? jblaster.c

?? software for report builder
?? C
?? 第 1 頁 / 共 2 頁
字號:
	for(i=0;i<4;i++)
	{
		if(GetData(Info_name[i],buffer,data))
		{
			switch(i)
			{
			case 0:
				jb_strcpy(device_list[device_count-1].partname,data);
				CheckAltDev(device_count);
				break;
			case 1:
				jb_strcpy(device_list[device_count-1].path,data);
				break;
			case 2:
				jb_strcpy(device_list[device_count-1].file,data);
				break;
			case 3:
				device_list[device_count-1].inst_len= jb_atoi(data);
				fprintf(stderr,"parsed %s to %i\n",data, device_list[device_count-1].inst_len);
				ji_info[device_count-1]=device_list[device_count-1].inst_len;
				break;
			default:
				break;
			}
		}
	}
}

/******************************************************************/
/* Name:         CheckAltDev                                      */
/*                                                                */
/* Parameters:   dev_seq                                          */
/*               -dev_seq is the device sequence in JTAG chain.   */
/*                                                                */
/* Return Value: None.                                            */
/*               		                                          */
/* Descriptions: The function matches the partname specified in   */
/*               CDF with Altera devices list. If matches, the    */
/*               JTAG chain information will be updated in device */
/*               _list. The action code is updated by ActionCode. */
/*               If the partname is not recognized, the device    */
/*               will be bypassed.                                */
/*                                                                */
/******************************************************************/
void CheckAltDev(int dev_seq)
{
	int i,j,altera=0;
	dev_seq--;

	for(i=0;i<MAX_DEV_LIST;i++)
	{
		if(!jb_strcmp(device_list[dev_seq].partname,device_name[i]))
		{
			if(!(device_info[i][0] && device_info[i][1] && device_info[i][2]))
			{
				device_list[dev_seq].inst_len = device_info[i][3];
				ji_info[dev_seq]                    = device_list[dev_seq].inst_len;
				fprintf(stdout,"Warning: Device #%d not supported! Bypassed!\n",dev_seq+1);
			}
			else
			{
				device_list[dev_seq].idcode         = device_info[i][0];
				device_list[dev_seq].jseq_max       = device_info[i][1];
				device_list[dev_seq].jseq_conf_done = device_info[i][2];
				device_list[dev_seq].inst_len       = device_info[i][3];
				ji_info[dev_seq]                    = device_list[dev_seq].inst_len;
				altera = 1;
				break;
			}
		}
	}

	for(j=0;j<MAX_DEV_FAMILY;j++)
	{
		if(i<start_of_device_family[j])
		{
			device_family = j-1;
			fprintf(stdout,"family: %s(%d)\n",family_name[j-1],j);
			break;
		}
	}

	if(!altera)
	{
		device_list[dev_seq].idcode=0;
		device_list[dev_seq].jseq_max=0;
		device_list[dev_seq].jseq_conf_done=0;
		device_list[dev_seq].action='B';
	}
}

/******************************************************************/
/* Name:         VerifyChain                                      */
/*                                                                */
/* Parameters:   None.                                            */
/*                                                                */
/* Return Value: None.                                            */
/*               		                                          */
/* Descriptions: Putting all devices in BYPASS mode, a 8-bit      */
/*               vector is driven to TDI, the number of '0'       */
/*               detected indicates the number of devices in      */
/*               chain. The 8-bit vector must follows the zeroes. */
/*                                                                */
/******************************************************************/
int VerifyChain()
{
	unsigned int data=0,temp=0,test_vect=0x55;
	int i,num=0,error=0;
	
	Js_Reset();
	
	/* Load BYPASS instruction and test JTAG chain with a few vectors */
	if(Ji_Bypass(device_count,ji_info))
		return (1);
	Js_Shiftdr();

	/* Drive a 8-bit vector of "10101010" (right to left) to test */
	data = ReadTDO(8+device_count,test_vect,0);
	/* The number of leading '0' detected must equal to the number of devices specified */
	temp = data;
	
	for(i=0;i<device_count;i++)
	{
		temp = temp&1;
		if(temp)
			break;		
		else
			num++;
		temp = data>>(i+1);
	}

	if(temp==test_vect)	
		fprintf(stdout,"Info: Detected %d device(s) in chain...\n", num);
	else
	{
		fprintf(stderr,"Error: JTAG chain broken or #device in chain unmatch!\n");
		return (1);
	}

	Js_Updatedr();
	
	/* Read device IDCODE */
	Ji_Idcode(device_count,ji_info);
	Js_Shiftdr();

	for(i=device_count-1;i>=0;i--)
	{
		data = ReadTDO(CDF_IDCODE_LEN,0,0);

		if(device_list[i].idcode)
		{
			/* The partname specified in CDF must match with its ID Code */
			if((unsigned)device_list[i].idcode != data)
			{
				fprintf(stderr,"Error: Expected 0x%X but detected 0x%X!\n",device_list[i].idcode,data);
				error=1;
			}
			else
				fprintf(stdout,"Info: Dev%d: Altera: 0x%X\n",i+1,data);
		}
		else
		{
			fprintf(stdout,"Info: Dev%d: Non-Altera: 0x%X\n",i+1,data);
		}
	}

	Js_Updatedr();
	Js_Runidle();
	
	return error;
}

/******************************************************************/
/* Name:         Configure                                        */
/*                                                                */
/* Parameters:   file_id,dev_seq,action                           */
/*               -file_id is the ID of the file.                  */
/*               -dev_seq is the device sequence in chains.       */
/*               -action is the action to take:BYPASS or PROGRAM  */
/*                                                                */
/* Return Value: None.                                            */
/*               		                                          */
/* Descriptions: Issue PROGRAM instruction to the device to be    */
/*               configured and BYPASS for the rest of the devices*/
/*               Call function that processes the source file.    */
/*                                                                */
/******************************************************************/
void Configure(int file_id,int dev_seq,int action)
{
	int i;

	/* Load PROGRAM instruction */
	SetupChain(device_count,dev_seq,ji_info,action);

	if(action==JI_PROGRAM)
	{
		/* Drive TDI HIGH while moving JSM to SHIFTDR */
		DriveSignal(SIG_TDI,1,0,1);
		Js_Shiftdr();
		/* Issue MAX_JTAG_INIT_CLOCK clocks in SHIFTDR state */
		for(i=0;i<MAX_JTAG_INIT_CLOCK[device_family];i++)
		{
			DriveSignal(SIG_TDI,1,1,0);
		}
		/* Start dumping configuration bits into TDI and clock with TCK */
		ProcessFileInput(file_id);

		/* Move JSM to RUNIDLE */
		Js_Updatedr();
		Js_Runidle();
	}
}

/******************************************************************/
/* Name:         CheckStatus                                      */
/*                                                                */
/* Parameters:   dev_seq                                          */
/*               -dev_seq is the device sequence in chains.       */
/*                                                                */
/* Return Value: '0' if CONF_DONE is HIGH;'1' if it is LOW.       */
/*               		                                          */
/* Descriptions: Issue CHECK_STATUS instruction to the device to  */
/*               be configured and BYPASS for the rest of the     */
/*               devices.                                         */
/*                                                                */
/*               <conf_done_bit> =                                */
/*                  ((<Maximum JTAG sequence> -                   */
/*                    <JTAG sequence for CONF_DONE pin>)*3) + 1   */
/*                                                                */
/*               The formula calculates the number of bits        */
/*               to be shifted out from the device, excluding the */
/*               1-bit register for each device in BYPASS mode.   */
/*                                                                */
/******************************************************************/
int CheckStatus(int dev_seq)
{
	int bit,data=0,error=0;
	int jseq_max=0,jseq_conf_done=0,conf_done_bit=0;

	fprintf( stdout, "Info: Checking Status\n" );

	/* Load CHECK_STATUS instruction */
	SetupChain(device_count,dev_seq,ji_info,JI_CHECK_STATUS);

	Js_Shiftdr();

	/* Maximum JTAG sequence of the device in chain */
	jseq_max= device_list[dev_seq-1].jseq_max;

	jseq_conf_done= device_list[dev_seq-1].jseq_conf_done;

	conf_done_bit = ((jseq_max-jseq_conf_done)*3)+1;

	/* Compensate for 1 bit unloaded from every Bypass register */
	conf_done_bit+= (device_count-dev_seq);
	
	for(bit=0;bit<conf_done_bit;bit++)
	{
		DriveSignal(SIG_TDI,0,1,1);
	}

	data = ReadTDO(1,0,0);

	if(!data)
		error++;

	/* Move JSM to RUNIDLE */
	Js_Updatedr();
	Js_Runidle();

	return (error);	
}

/******************************************************************/
/* Name:         Startup                                          */
/*                                                                */
/* Parameters:   dev_seq                                          */
/*               -the device sequence in the chain.               */
/*                                                                */
/* Return Value: None.                                            */
/*               		                                          */
/* Descriptions: Issue STARTUP instruction to the device to       */
/*               be configured and BYPASS for the rest of the     */
/*               devices.                                         */
/*                                                                */
/******************************************************************/
void Startup(int dev_seq)
{
	int i;

	/* Load STARTUP instruction to move the device to USER mode */
	SetupChain(device_count,dev_seq,ji_info,JI_STARTUP);

	Js_Runidle();

	for(i=0;i<INIT_COUNT;i++)
	{
		DriveSignal(SIG_TCK,0,0,0);
		DriveSignal(SIG_TCK,1,0,0);
	}

	/* Reset JSM after the device is in USER mode */
	Js_Reset();
}

/******************************************************************/
/* Name:         ProcessFileInput                                 */
/*                                                                */
/* Parameters:   finputid                                         */           
/*               -programming file pointer.                       */
/*                                                                */
/* Return Value: None.                                            */
/*                                                                */
/* Descriptions: Get programming file size, parse through every   */
/*               single byte and dump to parallel port.           */
/*                                                                */
/******************************************************************/
void ProcessFileInput(int finputid)
{
	int seek_position=0,one_byte=0;
	long int file_size=0,i=0;

	/* Get file size */
	seek_position = jb_fseek(finputid,0,S_END);

	if(seek_position)
	{
		fprintf( stderr, "Error: End of file could not be located!" );
		return;
	}

	file_size = jb_ftell(finputid);
		
	/* Start configuration */
	/* Reset file pointer */
	jb_fseek(finputid,0,S_SET);

	fprintf(stdout,"Info: Start configuration process.\n  Please wait...");

	/* Loop through every single byte */
	for(i=0;i<file_size;i++)
	{
		int	bit = 0,j;

		one_byte = jb_fgetc(finputid);

		/* Progaram a byte,from LSb to MSb */
		for (j=0;j<8;j++ )
		{
			bit = one_byte >> j;
			bit = bit & 0x1;
			
			/* Dump to TDI and drive a positive edge pulse at the same time */
			DriveSignal(SIG_TDI,bit,1,0);
		}
	}
#if PORT==WINDOWS_NT
	/* Flush out the remaining data in Port0 */
	flush_ports();
#endif /* PORT==WINDOWS_NT */

	fprintf(stdout," done\n");
}

/******************************************************************/
/* Name:         DriveSignal                                      */
/*                                                                */
/* Parameters:   signal,data,clk,test                             */
/*               -the name of the signal (SIG_*).                 */
/*               -the value to be dumped to the signal,'1' or '0' */
/*               -driving a LOW to HIGH transition to SIG_TCK     */
/*                together with signal.                           */
/*               -test is used by WritePort function.             */
/*                                                                */
/* Return Value: None.                                            */
/*                                                                */
/* Descriptions: Dump data to signal. If clk is '1', a clock pulse*/
/*               is driven after the data is dumped to signal.    */
/*                                                                */
/******************************************************************/
void DriveSignal(int signal,int data,int clk,int test)
{
	/* Get signal port number */
	int port = sig_port_maskbit[signal][0];

	/* Get signal mask bit*/
	int mask;
	
	/* If clk == 1, drive signal with [data] and drive SIG_DCLK with '0' together. Then drive SIG_DCLK with '1' */
	/* That is to create a positive edge pulse */
	if(clk)
		mask = sig_port_maskbit[signal][1] | sig_port_maskbit[SIG_TCK][1];
	else
		mask = sig_port_maskbit[signal][1];
	
	/* AND signal bit with '0', then OR with [data] */
	mask = ~mask;
	port_data[port] = (port_data[port]&mask) | (data*sig_port_maskbit[signal][1]);
	
	WritePort(port,port_data[port],test);

	if(clk)
	{
		WritePort(port,(port_data[port] | sig_port_maskbit[SIG_TCK][1]),test);
		WritePort(port,port_data[port],test);
	}
}

/******************************************************************/
/* Name:         SetPortMode                                      */
/*                                                                */
/* Parameters:	 mode                                             */
/*				 - The mode of the port (PM_*)                    */
/*                                                                */
/* Return Value: None.                                            */
/*                                                                */
/* Descriptions: Set the parallel port registers to a particular  */
/*               values.                                          */
/*                                                                */
/******************************************************************/
void SetPortMode(int mode)
{
	/* write to Port 0 and Port 2 with predefined values */
	port_data[0] = port_mode_data[mode][0];
	port_data[2] = port_mode_data[mode][2];
	WritePort( 0, port_data[0], 1 );
	WritePort( 2, port_data[2], 1 );
}

/******************************************************************/
/* Name:         Help                                             */
/*                                                                */
/* Parameters:	 None.                                            */
/*                                                                */
/* Return Value: None.                                            */
/*                                                                */
/* Descriptions: Print help to standard output.                   */
/*                                                                */
/******************************************************************/
void Help()
{
#ifdef LINUX_PARPORT
	fprintf(stderr,"Error: Invalid number of argument! \nSyntax: \"jblaster [-d <device>] <Chain Description File(.cdf)>\"\n");
	fprintf(stderr,"Example: \"jblaster samples/chain1.cdf\"\n");
	fprintf(stderr,"Example: \"jblaster -d /dev/parport1 project.cdf\"\n");
#else
	fprintf(stderr,"Error: Invalid number of argument! \nSyntax: \"jblaster [-d <parport io address>] <Chain Description File(.cdf)>\"\n");
	fprintf(stderr,"Example: \"jblaster samples/chain1.cdf\"\n");
	fprintf(stderr,"Example: \"jblaster -d 378 project.cdf\"\n");
#endif
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲已满18点击进入久久| 99视频热这里只有精品免费| 国产91丝袜在线观看| 91麻豆精品视频| 日韩欧美国产三级电影视频| 亚洲三级电影网站| 狠狠色2019综合网| 欧美疯狂做受xxxx富婆| 亚洲免费观看高清在线观看| 国产精品中文有码| 日韩欧美一级二级三级| 亚洲成人777| 欧美性色综合网| 国产精品国产馆在线真实露脸 | 欧美日韩国产首页在线观看| 久久se精品一区精品二区| 欧美精品亚洲一区二区在线播放| 色欧美乱欧美15图片| 亚洲成a人片在线不卡一二三区| 91精品在线免费观看| 国产精品综合视频| ㊣最新国产の精品bt伙计久久| 欧美在线免费视屏| 美女mm1313爽爽久久久蜜臀| 国产日韩欧美a| 欧美日韩精品福利| 国产成人精品www牛牛影视| 亚洲乱码中文字幕| 欧美mv日韩mv| 色婷婷综合久久久久中文一区二区| 日韩高清在线观看| 亚洲国产精品成人综合 | 亚洲国产wwwccc36天堂| 欧美不卡一区二区三区四区| 91蝌蚪porny成人天涯| 老汉av免费一区二区三区| 亚洲欧洲成人自拍| 欧美精品一区二区三区很污很色的 | 在线综合+亚洲+欧美中文字幕| 国产乱子伦一区二区三区国色天香| 亚洲天天做日日做天天谢日日欢| 日韩欧美二区三区| 在线观看三级视频欧美| 国产激情视频一区二区在线观看 | 国产一区二区三区四| 亚洲小说春色综合另类电影| 久久久精品国产免大香伊| 欧美高清视频不卡网| jizz一区二区| 国产乱妇无码大片在线观看| 视频在线观看一区二区三区| 亚洲精品国产一区二区三区四区在线| 精品动漫一区二区三区在线观看| 91啪亚洲精品| 99久久精品国产精品久久| 国产一区不卡在线| 精品一区二区三区视频在线观看| 亚洲一区在线视频观看| 亚洲人午夜精品天堂一二香蕉| 欧美r级在线观看| 91精品国产综合久久蜜臀| 在线精品视频免费观看| 国产一本一道久久香蕉| 美女视频一区在线观看| 偷拍自拍另类欧美| 午夜精品久久久久久久久久 | 亚洲一区二区三区免费视频| 国产精品成人免费在线| 国产精品嫩草久久久久| 久久久久久久久久看片| 久久久亚洲精品石原莉奈| 26uuu国产一区二区三区| 日韩视频免费直播| 欧美一区二区三区日韩| 91精品国产综合久久精品 | 欧美日韩成人一区二区| 欧美在线观看视频一区二区三区| 91女人视频在线观看| 北条麻妃国产九九精品视频| 成人丝袜18视频在线观看| 成人综合日日夜夜| a在线播放不卡| 色香色香欲天天天影视综合网| 成人午夜激情视频| 成人夜色视频网站在线观看| 成人免费va视频| 91热门视频在线观看| 在线一区二区三区做爰视频网站| 欧美主播一区二区三区| 欧美在线免费播放| 欧美一区二区人人喊爽| 精品成人免费观看| 中文幕一区二区三区久久蜜桃| 亚洲国产精品激情在线观看| 亚洲欧美在线视频观看| 亚洲宅男天堂在线观看无病毒| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲午夜影视影院在线观看| 蜜桃视频第一区免费观看| 国产一区二区三区香蕉| 97久久精品人人做人人爽| 欧美调教femdomvk| 欧美电影免费观看完整版| 久久久亚洲精品石原莉奈| 日韩一区欧美小说| 视频在线观看91| 国产精品123区| 欧美亚洲综合另类| 久久伊人中文字幕| 亚洲精品久久久久久国产精华液| 日韩高清一级片| 国产成人福利片| 在线观看日韩电影| 精品国产乱码久久久久久蜜臀| 国产精品麻豆久久久| 五月天一区二区三区| 国产激情精品久久久第一区二区| 日本精品视频一区二区三区| 欧美高清性hdvideosex| 中文一区二区在线观看| 亚洲成人资源网| 国产成人在线视频播放| 欧美精品日韩一本| 国产精品麻豆欧美日韩ww| 免费高清不卡av| 一本大道久久a久久精品综合| 欧美一区二区成人6969| 亚洲欧美一区二区三区久本道91 | 高清国产一区二区| 欧美精品在线一区二区| 国产精品久久免费看| 日韩电影在线观看一区| av一二三不卡影片| 欧美mv和日韩mv国产网站| 一区二区欧美在线观看| 国产美女主播视频一区| 欧美一区二区视频在线观看2022| 国产精品乱人伦中文| 久久精品免费看| 欧美裸体bbwbbwbbw| 国产精品欧美一区二区三区| 久久99精品视频| 91麻豆精品国产| 一区二区三区成人| 国产成人福利片| 精品欧美黑人一区二区三区| 亚洲国产你懂的| 在线精品国精品国产尤物884a| 久久精品一区二区三区不卡| 另类综合日韩欧美亚洲| 欧美精品vⅰdeose4hd| 亚洲激情自拍偷拍| 色一情一乱一乱一91av| 亚洲欧美综合色| 不卡视频免费播放| 国产日韩欧美激情| 国产盗摄女厕一区二区三区| 欧美tickling网站挠脚心| 美国毛片一区二区三区| 欧美一区二区三区四区久久| 亚洲第一久久影院| 欧美日韩一二三| 天堂影院一区二区| 欧美情侣在线播放| 秋霞午夜鲁丝一区二区老狼| 337p亚洲精品色噜噜噜| 天天影视网天天综合色在线播放| 欧美日韩大陆一区二区| 日韩成人伦理电影在线观看| 在线不卡a资源高清| 日韩制服丝袜av| 欧美大片在线观看| 韩国三级在线一区| 亚洲国产精品t66y| 99精品视频在线免费观看| 亚洲狠狠丁香婷婷综合久久久| 91久久精品国产91性色tv| 香蕉久久夜色精品国产使用方法| 欧美日韩精品一区二区在线播放| 亚洲18色成人| 日韩视频在线一区二区| 国产一区二区在线免费观看| 欧美激情一区二区三区四区| 不卡一区在线观看| 亚洲成人黄色影院| 欧美v日韩v国产v| 高清不卡一二三区| 亚洲精选一二三| 欧美精品久久久久久久多人混战| 免费不卡在线视频| 国产婷婷色一区二区三区四区| 99精品一区二区| 石原莉奈一区二区三区在线观看 | 欧美色网一区二区| 日韩激情一区二区| 国产亚洲欧美一区在线观看| 国产91高潮流白浆在线麻豆| 亚洲精品视频自拍| 91精品国产色综合久久久蜜香臀| 激情成人综合网|