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

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

?? pcicfg_ver1.0.0.c

?? 產生產品信息文件, 寫入EEPROM, 讀取PCI 設備配置空間信息, 重寫PCI 設備配置空間, 根據vendor id 搜索PCI卡
?? C
字號:
#include "stdio.h"
#include "conio.h"
#include "char_int.c"

#define BYTE unsigned char
#define WORD unsigned int
#define DWORD unsigned long int

//Ver1.0.0
//write a byte to pci configuration space
//portid : pci configruation space index
//pci_addr: pci device address, bus#dev#func#
//val : the byte will be wroten to pci configuration space
void byte_wr_pcicfg(int portid, WORD pci_addr, BYTE val)
{
asm{
	mov ax, 0xb10b;
	mov bx, pci_addr;
	mov di, portid;//pci configuration space index
	mov cl, val;
	int 0x1a;
    }
}

//write a word to pci configuration space
//portid : pci configruation space index
//pci_addr: pci device address, bus#dev#func#
//val : the word will be wroten to pci configuration space
void word_wr_pcicfg(int portid, WORD pci_addr, WORD val)
{
asm{
	mov ax, 0xb10c;
	mov bx, pci_addr;
	mov di, portid;//pci configuration space index
	mov cx, val;
	int 0x1a;
    }
}

//read a byte from pci configuration space
//portid : pci configruation space index
//pci_addr: pci device address, bus#dev#func#
BYTE byte_rd_pcicfg(int portid, WORD pci_addr)
{
	BYTE valret;
	asm mov ax, 0xb108;
	asm mov bx, pci_addr;
	asm mov di, portid;//pci configuration space index
	asm int 0x1a;
	asm mov valret, cl;
	return valret;
}

//read a word from pci configuration space
//portid : pci configruation space index
//pci_addr: pci device address, bus#dev#func#
WORD word_rd_pcicfg(int portid, WORD pci_addr)
{
	WORD valret;
	asm mov ax, 0xb109;
	asm mov bx, pci_addr;
	asm mov di, portid;//pci configuration space index
	asm int 0x1a;
	asm mov valret, cx;
	return valret;
}
/*
DWORD dword_rd_pcicfg(int portid, WORD pci_addr)
{
	DWORD valret;
	asm mov ax, 0xb10a;
	asm mov bx, pci_addr;
	asm mov di, portid;
	asm int 0x1a;
	asm lea bx, valret;
	//asm mov valret, cx;
	__emit__(
		     //mov [bx], ecx;
		);
	return valret;
}*/

//search pci information
void search_pci()
{
	WORD pci_addr, vendorid;
	BYTE bus, dev, func, irq, intpin;
	WORD deviceid, temp;
	DWORD classcode;
	int i=0;
	printf("bus#\tdev#\tfunc#\tVendor\tDevice\tClass\tIRQ\tIntpin\n");
	for(pci_addr=0; pci_addr<0xffff; pci_addr++)
	{
	    vendorid=word_rd_pcicfg(0x0, pci_addr);
	    if(vendorid!=0xffff)
	    {
		bus=(BYTE)(pci_addr>>8);
		dev=(BYTE)((pci_addr>>3)&0x1f);
		func=(BYTE)(pci_addr&0x7);
		deviceid=word_rd_pcicfg(0x2, pci_addr);
		classcode=(DWORD)word_rd_pcicfg(0xa, pci_addr)<<8;
		temp=word_rd_pcicfg(0x8, pci_addr)>>8;
		classcode=classcode | temp;
		irq=byte_rd_pcicfg(0x3c, pci_addr);
		intpin=byte_rd_pcicfg(0x3d, pci_addr);
		printf("\%2.2x\t\%2.2x\t\%2.2x\t", bus, dev, func);
		printf("\%4.4x\t\%4.4x\t\%6.6x\t", vendorid, deviceid, classcode);
		printf("\%2.2x\t\%2.2x\n", irq, intpin);
		i++;
		if(i%20==19)
		{
		    printf("please press any key to continue\n");
		    getch();
		    printf("bus#\tdev#\tfunc#\tVendor\tDevice\tClass\tIRQ\tIntpin\n");
		}
	    }
	}
}

//generate firmware file
int gen_fw(WORD devid)
{
    FILE *fp;
    unsigned char fw[19];

    switch(devid)
    {
	case 0x4056 : {fw[0]=0x9;fw[1]=0x14;fw[2]=0x68;fw[3]=0x71;
			fw[4]=0x2;fw[5]=0x0;fw[6]=0x7;fw[7]=0x9;
			fw[8]=0x14;fw[9]=0x56;fw[10]=0x40;fw[11]=0x0;
			fw[12]=0x0;fw[13]=0x0;fw[14]=0x0;fw[15]=0x0;
			fw[16]=0x0;fw[17]=0x0;fw[18]=0x3; break;}
	default : break;
    }
    fp=fopen("pcicfg.ini", "w");
    fwrite(fw, 19, 1, fp);
    fclose(fp);
    return 0;
}

void wr_fw_eeprom(BYTE bus, BYTE dev, BYTE fun)
{
    FILE *fp;
    BYTE i, fw[19];
    WORD pci_addr;
    //GET pci address
    pci_addr = (WORD)bus<<8 | dev<<3 | fun;
    //read the fw, and send to fw[]
    fp=fopen("pcicfg.ini", "r");
    fread(fw, 19, 1, fp);
    fclose(fp);
    //write to EEPROM
    for(i=0;i<19;i++)
    {
	byte_wr_pcicfg(0x8d, pci_addr, i);//address
	byte_wr_pcicfg(0x8e, pci_addr, fw[i]);//data
	byte_wr_pcicfg(0x8c, pci_addr, 0x05);//control-write
	delay(100);
    }
//      val=inpd(0x8c, pci_addr);
//      printf("%x\n", val);

}

void rd_fw_eeprom(BYTE bus, BYTE dev, BYTE fun)
{
	int i=0, j=0;
	BYTE val;
	WORD pci_addr;
	//get pci address
	pci_addr =(WORD)bus<<8 | dev<<3 | fun;
	//print
	for(j=0;j<16;j++)
	{
	    printf("%2.2x ", j);
	}
	printf("\n");
	for(j=0;j<48;j++)
	    printf("-");
	printf("\n");
	//read from EEPROM
	byte_wr_pcicfg(0x8d, pci_addr, 0x00);//set the base address for current read
	byte_wr_pcicfg(0x8c, pci_addr, 0x07);//control-random_read
	val=byte_rd_pcicfg(0x8e, pci_addr);
	delay(200);
//	printf("%2.2x ",val);
	for(i=0;i<32;i++)
	{
	    byte_wr_pcicfg(0x8c, pci_addr, 0x03);//control-current_read
	    val=byte_rd_pcicfg(0x8e, pci_addr);
	    delay(100);
	    printf("%2.2x ", val);
	    if(i%16==15) printf("\n");
	}
	printf("\n");
}

void show_pcicfg(BYTE bus, BYTE dev, BYTE func)
{
	unsigned char i=0;
	BYTE valret;
	WORD pci_addr;
	pci_addr= (((WORD)bus)<<8) | (dev<<3) | func;
	for(i=0;i<16;i++)
	    printf("%2.2x ", i);
	printf("\n");
	for(i=0;i<48;i++)
	    printf("-");
	printf("\n");
	for(i=0;i<128;i++)
	{
	    valret=byte_rd_pcicfg(i,pci_addr);
	    printf("%2.2x ", valret);
	    if(i%16==15) printf("\n");
	}
}

void help()
{
	printf("pcicfg g xxxx:\tgenerate the firmware file in pcicfg.ini.\n");
	printf("       w bus dev func:\tdownload the firmware to eeprom from pcicfg.ini.\n");
	printf("       r bus dev func:\tread from eeprom, and display.\n");
	printf("       d bus dev func:\tdisplay pci configuration space.\n");
	printf("       s :\tsearch the pci device, and display\n");
	printf("         xxxx:\t product model name.\n");
	printf("	 bus:\t pci bus number.\n");
	printf("	 dev:\t pci dev number.\n");
	printf("	 func:\t pci func number. \n");
	printf("\t\t\t\t\tFisher Pan\n");
	printf("\t\t\t\t\t2007-09-11\n");
	printf("\t\t\t\t\tmail:fishing_cat@sohu.com\n");
}

void main(int argc, char *argv[])
{
	char fw[19];
	FILE *fp;
	BYTE val, num, bus, dev, func;
	WORD cmd;

	if(argc==3) cmd=(WORD)Hex_Dec(argv[2]);//for product number
	else if(argc==5)//for pci bus#/dev#/func#
	{
		bus=(BYTE)Hex_Dec(argv[2]);
		dev=(BYTE)Hex_Dec(argv[3]);
		func=(BYTE)Hex_Dec(argv[4]);
	}
	switch(argv[1][0])//for command para
	{
	    case 'g' :
	    {
		if(argc==3)
		switch(cmd)
		{
		    case 0x4056: gen_fw(0x4056);break;
		    case 0x4037: gen_fw(0x4037);break;
		    default: help(); break;
		}
		else help();
	    }
	    case 'w' :
	    {
		if (argc==5)
		    wr_fw_eeprom(bus, dev, func);
		else help();
		break;
	    }
	    case 'r' :
	    {
		if(argc==5)
		    rd_fw_eeprom(bus, dev, func);
		else help();
		break;
	    }
	    case 'd' :
	    {
		if(argc==5)
		    show_pcicfg(bus, dev, func);
		else help();
		break;
	    }
	    case 's' :
	    {
		if(argc==2)
		    search_pci();
		else help();
		break;
	    }
	    default : help();break;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区三区在线看蜜臀 | 亚洲欧美视频在线观看视频| 亚洲精品视频自拍| 精品一区二区三区欧美| 欧美日韩中文字幕一区| 中文子幕无线码一区tr| 日韩—二三区免费观看av| 91丨九色丨黑人外教| 久久久精品国产免大香伊| 免费在线观看视频一区| 欧美日韩黄色一区二区| 一区二区三区四区蜜桃| 成人妖精视频yjsp地址| 久久先锋影音av鲁色资源网| 日韩精品一级二级| 欧美三级中文字幕| 一二三四社区欧美黄| 91亚洲资源网| 国产精品成人一区二区艾草 | 国产精品18久久久久久久久 | 日韩一区二区不卡| 亚洲va欧美va天堂v国产综合| av电影一区二区| 亚洲欧美影音先锋| 9i看片成人免费高清| 国产精品美女久久久久aⅴ| 国产91精品久久久久久久网曝门| 久久日一线二线三线suv| 男女激情视频一区| 欧美mv日韩mv| 国产专区综合网| 国产日产欧美一区| 成人av电影在线播放| 国产片一区二区| 99视频在线精品| 亚洲四区在线观看| 欧美色精品天天在线观看视频| 亚洲精品国久久99热| 欧美探花视频资源| 日韩精品91亚洲二区在线观看| 3atv一区二区三区| 久久精品久久99精品久久| 精品久久久三级丝袜| 国产99精品在线观看| 亚洲欧洲日本在线| 欧美中文字幕一区二区三区| 视频在线观看91| 精品动漫一区二区三区在线观看| 久久超碰97中文字幕| 中文字幕第一区综合| 日本大香伊一区二区三区| 亚洲超碰97人人做人人爱| 日韩午夜激情av| 国产盗摄一区二区三区| 亚洲三级在线免费观看| 在线不卡一区二区| 激情综合一区二区三区| 国产精品伦一区二区三级视频| 色老汉一区二区三区| 蜜臀av性久久久久蜜臀av麻豆 | 欧美一二三区在线观看| 国产精品69毛片高清亚洲| 亚洲精品免费在线| 精品国产人成亚洲区| av中文一区二区三区| 蜜臀久久99精品久久久久久9| 国产日韩欧美一区二区三区乱码 | 久久精品亚洲精品国产欧美kt∨| youjizz国产精品| 日日夜夜免费精品| 国产精品入口麻豆原神| 欧美色图免费看| 国产精品一二三| 亚洲va欧美va国产va天堂影院| 久久综合一区二区| 色吊一区二区三区| 国产精品一品二品| 午夜成人免费视频| 亚洲欧洲无码一区二区三区| 欧美成人精品高清在线播放| 色婷婷久久久久swag精品| 久久不见久久见中文字幕免费| 一区二区三区 在线观看视频| 久久久久成人黄色影片| 日韩一区二区三区电影在线观看 | 久久―日本道色综合久久| 欧美视频一区二区在线观看| 高清在线观看日韩| 美女精品一区二区| 三级在线观看一区二区 | 国产片一区二区三区| 日韩欧美亚洲国产另类| av在线一区二区三区| 国产成人超碰人人澡人人澡| 麻豆传媒一区二区三区| 午夜精品久久久久久久99水蜜桃 | 国产一区二区伦理片| 日韩精品国产精品| 午夜私人影院久久久久| 最近中文字幕一区二区三区| 国产网站一区二区三区| wwwwww.欧美系列| 精品久久久久久久久久久久久久久久久 | 国产乱码精品一区二区三区av| 午夜激情综合网| 香蕉影视欧美成人| 午夜国产不卡在线观看视频| 亚洲一卡二卡三卡四卡无卡久久| 日韩美女视频一区二区| 国产精品美女视频| 中文字幕在线观看不卡视频| 日本一区二区视频在线| 国产拍欧美日韩视频二区| 久久久高清一区二区三区| 精品国产伦一区二区三区免费| 日韩免费电影一区| 久久午夜电影网| 中文字幕av一区二区三区免费看 | 国产精品成人在线观看 | 欧美高清在线精品一区| 国产目拍亚洲精品99久久精品| 国产欧美日韩另类一区| 国产精品视频九色porn| 中文字幕亚洲欧美在线不卡| 亚洲精品中文在线观看| 亚洲一区二区三区四区五区黄 | 91精品婷婷国产综合久久| 欧美一区二区免费| 久久久精品黄色| 综合网在线视频| 亚洲第一福利一区| 日本大胆欧美人术艺术动态| 激情综合五月婷婷| av高清久久久| 91麻豆精品国产91久久久久久久久| 7777女厕盗摄久久久| 久久九九全国免费| 一区二区三区在线免费| 日韩电影在线免费看| 国产一区二区三区免费在线观看| 99麻豆久久久国产精品免费优播| 欧美在线观看视频一区二区 | 亚洲免费在线看| 污片在线观看一区二区| 国产精品自拍一区| 91麻豆精东视频| 久久理论电影网| **欧美大码日韩| 裸体健美xxxx欧美裸体表演| 成人黄色av电影| 欧美日韩国产在线播放网站| 国产亚洲欧美日韩俺去了| 亚洲综合一区二区精品导航| 国产在线精品视频| 91国在线观看| 国产三级一区二区| 亚洲高清中文字幕| 国产成人免费视频| 日韩一级高清毛片| 亚洲美女精品一区| 国产精品一区免费视频| 欧美老年两性高潮| 亚洲专区一二三| 精品一区二区三区av| 欧美在线一区二区| 中文在线资源观看网站视频免费不卡 | 国内久久精品视频| 67194成人在线观看| 综合av第一页| 国产成人久久精品77777最新版本| 欧美精选午夜久久久乱码6080| 中文字幕欧美区| 国产一区久久久| 欧美精品粉嫩高潮一区二区| 亚洲天堂成人网| 成人av资源网站| 国产欧美日本一区视频| 美国十次了思思久久精品导航| 欧洲精品在线观看| 日韩美女啊v在线免费观看| 精品一二三四在线| 欧美一区二区三区爱爱| 亚洲sss视频在线视频| 91麻豆成人久久精品二区三区| 欧美国产一区二区在线观看| 精油按摩中文字幕久久| 欧美一区二区三区免费在线看| 亚洲第一福利一区| 欧美一a一片一级一片| 一区二区三区视频在线看| kk眼镜猥琐国模调教系列一区二区| 久久精品亚洲国产奇米99| 国产乱子伦视频一区二区三区| 日韩欧美在线123| 久久国产精品72免费观看| 欧美成人女星排名| 韩国av一区二区三区在线观看| 欧美电影免费观看高清完整版在线观看| 亚洲韩国一区二区三区| 欧美视频你懂的|