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

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

?? jblaster.c

?? software for report builder
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************/
/*                                                                */
/* Module:       jblaster.c                                       */
/*                                                                */
/* Descriptions: Main source file that manages the configuration  */
/*               processes.                                       */
/*                                                                */
/* Revisions:    1.0 02/22/02                                     */
/*                                                                */
/******************************************************************/

/* $Id: jblaster.c,v 1.1.1.1 2002/12/03 23:49:16 x42 Exp $ */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "jb_io.h"
#include "jb_jtag.h"
#include "jb_const.h"
#include "jb_device.h"

//#if PORT==WINDOWS_NT
void SetPortMode      (int mode);
//#endif /* PORT==WINDOWS_NT */

/* JBlaster Controller Functions */
int  VerifyChain      ();
void DriveSignal      (int signal,int data,int clk,int test);
void Configure        (int file_id,int dev_seq,int action);
void ProcessFileInput (int finputid);
int  CheckStatus      (int dev_seq);
void Startup          (int dev_seq);
void Help             ();

/* CDF Parser Functions */
int  ReadCDF          (int file_id);
int  GetData          (char* charset,char* buffer,char* data);
void SearchKeyword    (char* buffer,char* data);
int  CheckActionCode  (char* data);
void CheckAltDev      (int dev_seq);

/* JTAG instruction lengths of all devices */
int  ji_info[MAX_DEVICE_ALLOW] = {0};

/* extern configuration */
#ifndef LINUX_PARPORT
extern unsigned short	 lpt_addr;
#else
extern char 	devicepath[256];
#endif


int main(int argc, char* argv[])
{
	int i=0;
	int file_id=0;
	int config_count=0;
		
	/**********Initialization**********/

	/* Introduction */
	fprintf(stdout,"\n======================================================\n");
	fprintf(stdout," JTAGBlaster (JBlaster) Version %s",VERSION);
	fprintf(stdout,"\n Altera Corporation ");
	fprintf(stdout,"\n Linux patch 11/02 by Robin Gareus <robin@gareus.org>");
	fprintf(stdout,"\n======================================================\n");

	/* set default values */
#ifdef LINUX_PARPORT
	snprintf(devicepath,255,"/dev/parport0");
#else
	lpt_addr = 0x378;
#endif

        if(argc > 1)
        {
          /* Parse Command Line Arguments */
          argc--;
          argv++;
          for (; argc-- > 0; argv++)
            {
              if (strcmp (*argv, "--help") == 0 || strcmp (*argv, "-h") == 0)
                {
			Help();
			exit(1);
                }
              else if ((strcmp (*argv, "-d") == 0 || strcmp (*argv, "--device") == 0) && argc > 0)
		{
                  argc--;
                  argv++;
#ifndef LINUX_PARPORT
		  { int x; sscanf(*argv,"%x",&x); lpt_addr= (unsigned short) x;}
		  printf("Info: using parport address 0x%x.\n",lpt_addr);
#else
		  snprintf(devicepath,255,"%s",*argv);
		  printf("Info: using parport device: '%s'.\n",devicepath);
#endif
                }
		else break;
            }
        }

	if (argc!=0) {
		Help();
		exit(1);
	}

	/* Open CDF file */
	file_id = jb_fopen(*argv,"rb");

	if(file_id)
		fprintf(stdout,"Info: Chain Description File: \"%s\" opened..\n", *argv);
	else
	{
		fprintf(stderr,"Error: Could not open Chain Description File (CDF): \"%s\"!\n",*argv);
		return(2);
	}

	/**********Hardware Setup**********/

#if PORT==WINDOWS_NT
	InitNtDriver();
	/* Check if hardware is properly installed */
	if(VerifyHardware())
	{
		jb_fclose(file_id);
		return(2);
	}
#elif PORT == LINUX
        InitLinuxDriver();
	/* Check if hardware is properly installed */
	if(VerifyHardware())
	{
		jb_fclose(file_id);
		return(2);
	}
#endif 

	/**********CDF Parsing**********/

	fprintf( stdout, "\nInfo: Parsing CDF...\n" );

	if(!ReadCDF(file_id))
	{
		jb_fclose(file_id);
		return(2);
	}

	jb_fclose(file_id);
	fprintf( stdout, "Debug: Parsing done.\n" );

	if(!device_count)
		return(2);

	for(i=0;i<device_count;i++)
	{
		if(!ji_info[i])
		{
			fprintf(stderr,"Error: JTAG instruction length of device #%d NOT specified!\n",i);
			return(2);
		}
	}

	/**********Device Chain Verification**********/

	fprintf( stdout, "\nInfo: Verifying device chain...\n" );

/*#if PORT==WINDOWS_NT */ /* why only in Windows? disabled  */
	SetPortMode(PM_RESET);
/* #endif */ /* PORT==WINDOWS_NT */
	/* Verify the JTAG-compatible devices chain */
	if(VerifyChain())
		return(2);

	/**********Show Info***********/
	fprintf(stdout,"Debug: (1)jseq_max (2)jseq_conf_done (3)action (4)partname (5)path (6)file (7)inst_len\n");
	for(i=0;i<device_count;i++)
	{
		fprintf(stdout,"Debug: (1)%d (2)%d (3)%c (4)%s (5)%s (6)%s (7)%d\n",
			device_list[i].jseq_max,device_list[i].jseq_conf_done,device_list[i].action,device_list[i].partname,
			device_list[i].path,device_list[i].file,device_list[i].inst_len);
	}

	/**********Configuration**********/
	file_id=0;

	for(i=1;i<device_count+1;i++)
	{
		char fullpath[CDF_PATH_LEN+CDF_FILE_LEN];

		config_count=0;

		if(device_list[i-1].action != 'P')
			continue;

		while(config_count<MAX_CONFIG_COUNT)
		{
			if(!config_count)
				fprintf( stdout, "\nInfo: Configuration setup device #%d\n",i);
			else
				fprintf( stdout, "\nInfo: Configuration setup device #%d (Retry)\n",i);

			config_count++;
			
			/* Open programming file as READ and in BINARY */
			jb_strcpy(fullpath,device_list[i-1].path);
			jb_strcat(fullpath,device_list[i-1].file);

			file_id = jb_fopen( fullpath, "rb" );
		
			if ( file_id )
				fprintf( stdout, "Info: Programming file #%d: \"%s\" opened...\n", i,fullpath );
			else
			{
				fprintf( stderr, "Error: Could not open programming file #%d: \"%s\"\n", i,fullpath );
				return(2);
			}

			/* Start configuration */
			Configure(file_id,i,(device_list[i-1].idcode? JI_PROGRAM:JI_BYPASS));

// #if PORT==WINDOWS_NT
			flush_ports();
// #endif /* PORT==WINDOWS_NT */
			jb_fclose(file_id);
		
			if(CheckStatus(i))
			{
				fprintf( stdout, "\nWarning: Configuration of device #%d NOT successful!\n",i );
			}
			else
			{
				Startup(i);
				config_count=MAX_CONFIG_COUNT;
				fprintf( stdout, "\nInfo: Configuration of device #%d successful...\n",i );
			}
		}
	}

// #if PORT==WINDOWS_NT
	SetPortMode(PM_USER);
// #endif /* PORT==WINDOWS_NT */

	return(0);
}

/******************************************************************/
/* Name:         ReadCDF                                          */
/*                                                                */
/* Parameters:   file_id                                          */
/*               -file handler                                    */
/*                                                                */
/* Return Value: The number of devices in chain found in CDF      */
/*                                                                */
/* Descriptions: ReadCDF parses through the CDF and keeps the     */
/*               device records. It looks for 'P' or 'N' when     */
/*               mark=0. Once found, it searches for "ActionCode" */
/*               when mark=1 and once mark=2, it starts to        */
/*               retrieve the data in device record declarations. */
/*                                                                */
/******************************************************************/
int ReadCDF(int file_id)
{
	char  buffer[160];    /* line buffer */
	char  data[50];       /* device record data between '(' and ')' */
	int   mark= 0;
	
	while(jb_fgets(buffer,file_id))
	{
		if (mark==1)
		{
			mark =2;

			if(GetData("ACTIONCODE",buffer,data))
			{
				if(!CheckActionCode(data))
					return 0;
			}

			device_count++;

			SearchKeyword(buffer,data);

			/* End of device record and reset flag */
			if(jb_str_cmp(";",buffer))
				mark=0;
		}
		else if (mark==2)
		{
			SearchKeyword(buffer,data);

			/* End of device record and reset flag */
			if(jb_str_cmp(";",buffer))
				mark=0;
		}
		else if(jb_str_cmp("P ",buffer) || jb_str_cmp("N ",buffer))
		{
			mark++;
			
			if(GetData("ACTIONCODE",buffer,data))
			{
				if(!CheckActionCode(data))
					return 0;

				/* End of device record and reset flag */
				if(jb_str_cmp(";",buffer))
				{
					device_count++;

					SearchKeyword(buffer,data);
				
					mark=0;
				}
			}
		}
		else
		{
			continue;
		}
	}

	fprintf( stdout, "Debug: Parsed %i Entrys.\n",device_count);
	return device_count;
}

/******************************************************************/
/* Name:         GetData                                          */
/*                                                                */
/* Parameters:   charset, buffer, data                            */
/*               -charset is the character string or keyword to   */
/*                look for.                                       */
/*               -buffer is the line buffer stored when reading   */
/*                the CDF.                                        */
/*               -data is the string between brackets, '(' and ')'*/
/*                                                                */
/* Return Value: The position of the first character of charset   */
/*               found in buffer.                                 */
/*             		                                          */
/* Descriptions: The function copies the string between brackets  */
/*               right after charset into data. If charset is not */
/*               found in buffer, '0' is returned.                */
/*                                                                */
/******************************************************************/
int GetData(char* charset,char* buffer,char* data)
{
	int   char_count=0,i;
	char* buff_pointer;
	char* data_pointer;
	int   mark=0;
	char * tmpbuf = malloc(sizeof(char)*jb_strlen(buffer));
	strncpy (tmpbuf,buffer,jb_strlen(buffer));

	jb_toupper(charset);
	jb_toupper(tmpbuf);
	
	/* looking for charset in buffer */
	char_count= jb_str_cmp(charset,tmpbuf);

	/* charset not found in buffer */
	if(!char_count)
		return 0;

	data_pointer= data;
	buff_pointer= buffer;
	buff_pointer+= char_count-1+jb_strlen(charset);

	for(i=0;i<jb_strlen(buffer)-1;i++)
	{
		if(*buff_pointer=='(')
		{
			mark++;
		}
		else if(*buff_pointer==')')
		{
			if(mark==1)
			{
				fprintf(stderr,"Error: Invalid Action Code!\n");
				return 0;
			}

			/* put a null-zero to indicate the end of string to data */
			*data_pointer= '\0';
			break;
		}
		else if(mark)
		{
			mark=2;
			/* ignore '"' character */
			if(*buff_pointer!='"')
			{
				*data_pointer = *buff_pointer;
				data_pointer++;
			}
		}
		else
			return 0;

		buff_pointer++;
	}

//	jb_toupper(data);

	return char_count;
}

/******************************************************************/
/* Name:         CheckActionCode                                  */
/*                                                                */
/* Parameters:   data                                             */
/*               -The 3 character string indicating the action    */
/*                                                                */
/* Return Value: '0' if valid action code is detected, '1' if not */
/*                                                                */
/* Descriptions: Update the action to take in device list.        */
/*               A 'B' or a 'P' is stored for BYPASS and PORGRAM/ */
/*               CONFIGURE respectively.                          */
/*                                                                */
/******************************************************************/
int CheckActionCode(char* data)
{
	if(!jb_strcmp(data,"IGN"))
		device_list[device_count].action= 'B';
	else if(!jb_strcmp(data,"CFG"))
		device_list[device_count].action= 'P';
	else
	{
		fprintf(stderr,"\nError: Invalid ActionCode: %s\n",data);
		return 0;
	}

	return 1;
}

/******************************************************************/
/* Name:         SearchKeyword                                    */
/*                                                                */
/* Parameters:   buffer, data                                     */
/*               -buffer is the line buffer stored when reading   */
/*                the CDF.                                        */
/*               -data is the string between brackets, '(' and ')'*/
/*                found in buffer.                                */
/*                                                                */
/* Return Value: None.                                            */
/*               		                                          */
/* Descriptions: The function search for device records corres-   */
/*               pond to part name, path, file name and           */
/*               instruction length.                              */
/*                                                                */
/******************************************************************/
void SearchKeyword(char* buffer,char* data)
{
	char  Info_name[4][20] = { "PARTNAME","PATH","FILE","INSTRUCTIONREG" };
	int   i;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区在| 国产经典欧美精品| 亚洲女同ⅹxx女同tv| 国产精品欧美一区二区三区| 国产午夜精品一区二区三区嫩草 | 亚洲在线中文字幕| 综合分类小说区另类春色亚洲小说欧美| 久久九九影视网| 亚洲欧美日韩在线| 欧美精品色综合| 日本韩国欧美一区二区三区| 972aa.com艺术欧美| 99国产精品国产精品毛片| 99久久久精品| 欧美视频三区在线播放| 91精品国产乱码| 26uuu国产日韩综合| 国产精品久久久久久久久搜平片 | 成人avav在线| 91网站在线播放| 欧美日韩在线精品一区二区三区激情| 欧美乱妇20p| 久久久精品免费免费| 欧美亚洲禁片免费| 成人免费高清视频在线观看| 欧美成人一级视频| 欧美精品一区二区三区高清aⅴ| 国产欧美一区二区三区网站| 亚洲色欲色欲www| 蜜桃精品视频在线| 国产二区国产一区在线观看| 欧美午夜影院一区| 中文字幕第一区第二区| 亚洲线精品一区二区三区八戒| 久久se精品一区二区| 91看片淫黄大片一级在线观看| 91精品欧美一区二区三区综合在| 国产欧美日韩精品a在线观看| 亚洲综合另类小说| 成人精品小蝌蚪| 日韩午夜精品电影| 一区二区三区.www| 国产成人午夜99999| 欧美一区二区三区人| 一区二区三区免费看视频| 欧美一级精品大片| 国产精品丝袜在线| 成人午夜免费av| 884aa四虎影成人精品一区| 337p日本欧洲亚洲大胆精品| 一区二区三区成人| 国产99精品在线观看| 这里只有精品免费| 亚洲大片精品永久免费| www.欧美.com| 中文字幕成人在线观看| 国产一区日韩二区欧美三区| 91精品国产福利| 午夜不卡在线视频| 色综合久久中文字幕综合网| 国产精品色一区二区三区| 国产自产视频一区二区三区| 日韩免费视频线观看| 亚洲欧美一区二区三区孕妇| 欧美体内she精高潮| 中文字幕五月欧美| 国产美女久久久久| 亚洲精品一区二区三区福利| 免费观看日韩电影| 欧美va亚洲va在线观看蝴蝶网| 日韩av中文在线观看| 欧美日韩国产成人在线91| 麻豆成人av在线| 日韩欧美国产系列| 久久99精品久久久久婷婷| 欧美videofree性高清杂交| 青青草国产精品97视觉盛宴| 91精品视频网| 国产真实精品久久二三区| 2023国产精品| 成人性视频免费网站| 亚洲视频免费在线观看| 在线影院国内精品| 爽好久久久欧美精品| 日韩视频免费观看高清完整版| 日韩黄色片在线观看| 日韩精品一区二区三区视频 | 麻豆国产一区二区| 欧美精品一区二区三区视频 | 亚洲欧美电影一区二区| 色8久久人人97超碰香蕉987| 亚洲国产成人高清精品| 91.成人天堂一区| 国产美女娇喘av呻吟久久 | 色综合网站在线| 亚洲大片免费看| 亚洲精品一区二区三区福利| av一区二区三区四区| 亚洲mv在线观看| 久久久www成人免费毛片麻豆| 97久久精品人人做人人爽| 亚洲成人中文在线| 国产日韩精品久久久| 91久久国产综合久久| 另类欧美日韩国产在线| 最新中文字幕一区二区三区| 欧美久久一区二区| 不卡视频一二三| 日韩电影在线观看一区| 国产精品久久毛片a| 91精品国产综合久久久久久久| 国产精品自拍三区| 亚洲国产人成综合网站| 国产欧美日韩一区二区三区在线观看| 色噜噜夜夜夜综合网| 狠狠色丁香婷综合久久| 一区二区三区资源| 国产蜜臀97一区二区三区| 91麻豆精品国产91久久久| 99久久精品免费| 国内精品在线播放| 五月天网站亚洲| 亚洲色图色小说| 国产色产综合色产在线视频| 欧美一区二区三区免费视频| 91在线观看污| 国产·精品毛片| 久久er精品视频| 日本三级韩国三级欧美三级| 亚洲精品第1页| 亚洲视频在线观看三级| 久久精品日韩一区二区三区| 欧美高清hd18日本| 欧美三级韩国三级日本三斤| 97久久精品人人做人人爽50路| 国产不卡一区视频| 国产自产v一区二区三区c| 免费美女久久99| 免费一级片91| 日本成人在线看| 视频一区中文字幕国产| 亚洲一区二区三区四区在线免费观看 | 久久久久久久久一| 日韩一区二区三区观看| 51精品秘密在线观看| 在线成人免费视频| 欧美一区二区三区影视| 欧美一区二区三区影视| 欧美一区二区三区不卡| 正在播放一区二区| 欧美裸体一区二区三区| 在线不卡中文字幕播放| 欧美一激情一区二区三区| 91麻豆精品91久久久久久清纯| 欧美精品日日鲁夜夜添| 欧美老年两性高潮| 91精品国产欧美一区二区| 日韩视频一区二区| 久久综合九色综合欧美亚洲| 日韩精品中文字幕在线一区| 精品免费视频.| 欧美视频在线一区| 日韩高清不卡一区二区三区| 日韩电影一二三区| 精品影院一区二区久久久| 日本不卡1234视频| 国产一区二区三区四区五区入口| 国内久久精品视频| aaa亚洲精品一二三区| 欧美最新大片在线看 | 亚洲国产欧美在线| 日韩影视精彩在线| 国产一区二区三区最好精华液| 岛国一区二区在线观看| 日本韩国一区二区| 欧美不卡激情三级在线观看| 国产亚洲一区二区三区四区| 亚洲色图欧美激情| 日本aⅴ免费视频一区二区三区 | 99国产精品视频免费观看| 日本韩国精品在线| 日韩欧美在线123| 自拍偷拍亚洲欧美日韩| 视频在线观看一区| 成人黄色综合网站| 欧美日韩电影一区| 国产欧美一区二区三区沐欲| 亚洲精品视频观看| 国产又黄又大久久| 日本乱码高清不卡字幕| 欧美成人在线直播| 悠悠色在线精品| 久久99精品一区二区三区三区| 不卡的电影网站| 91精品国模一区二区三区| 亚洲少妇最新在线视频| 极品少妇xxxx精品少妇偷拍| 在线免费观看日本欧美| 中文字幕第一区第二区| 免费在线视频一区|