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

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

?? flashloader_intel.c

?? intel flash控制器VHDL 源代碼
?? C
字號:
#include <stdio.h> 
#include <pc.h>   
#include <time.h> 
#define lpt_base1 0x3bc
#define lpt_base2 0x378
#define lpt_base3 0x278

//last up date
int data_y = 2001;//Year
int data_m =    1;//Month
int data_d =   12;//day
int ver_no =   11;//soft version

int lpt_base;
int tsu_delay = 1;
int cmd_delay = 10;
int up_delay = 1;
int comp = 16;

unsigned long flash_byte_number = 4194303;


/****Get pararell port data(ack)***************************************/
unsigned int input_value(void) 
{ static unsigned char last_value = 0xFF;	
  unsigned char new1, new2;   

  new1 = inportb(lpt_base + 1) & 0xF8;   	
  if (new1 != last_value) 
    { while (1) 
	{ new2 = inportb(lpt_base + 1) & 0xF8;
	  if (new2 == new1)			/* Wait for stable value */	    
	  break;	 
	  new1 = new2;	 //compare to see if a change in logic level has occured
	}
      	last_value = new1;      
     }
  return (last_value ^ 0x80) >> 3;   
}
/* Delay function*************************************************************/
void delay(int N)
{
  int i;
  for (i=0;i<N;i++)
  {}	
}
/*****Transmit an 8-bit byte value********************************************/
/* Function that is used to transmit the the LSB to the MSB of the 8 bit data
   that was parsed from the ttf file */
/*****************************************************************************/
void transmit_byte(unsigned int val,unsigned int mode) 
{ int i,a, out_data,w_cnt;  
  unsigned int tx_data;
  unsigned int tx_data_shift; 
  unsigned int tx_stb;

  tx_stb =0x00;
  val &= 0xFF;	
  w_cnt = 0; 
  for (i=0;i<=7;i++)				/*Sends LSB to MSB of the data*/
  {  tx_data = (val & 0x01);
	
     tx_data_shift = (tx_data<<1);		/*Need to shift tx_data to the right by 1*/
     tx_data_shift = (tx_data_shift & 0x02);	/*Need to mask only the second bit others=0*/
     outportb(lpt_base, tx_data_shift|tx_stb);		/*Shift out to the required position*/
    
     delay(tsu_delay);				/*Delay the data to meet reg Tsu*/
     out_data=(i & 0x01);	
     if (out_data==0)
     {   
	 tx_stb = 0x40;
	 outportb(lpt_base, tx_data_shift| tx_stb);     /* Set nibble flag */

/************************* wait for flash-rom erase is end. *************************/
	if (mode == 0) {                         /* mode is cnt_int in flash_memory_configuration */
  	 //printf("Wait for flash-rom erase is end.\n");
         while ((input_value() & 0x10) == 0); 	/* Await returned flag high */
	}
	else {
	  a = 0;
         while ((input_value() & 0x10) == 0){
		if( a > 20000){
    			printf("ACK signal is not changing.  Abnormal Exit\n");
			exit(1);
		}
		else {
			delay(1);
			a = a + 1;
		}
	  }
	}
     }
     if (out_data==1)
     {	
        tx_stb=0x00;
	outportb(lpt_base, tx_data_shift| tx_stb);     	/* Clear nibble flag */

	if (mode == 0) {
	     	while ((input_value() & 0x10) != 0){ 	/* Await returned flag low */
//Used to inform user that the Flashrom controller is currently erasing the Flashrom
		w_cnt = w_cnt + 1;
		if (w_cnt == 1500000) {
			printf("#");
			w_cnt = 0;
		}}
	}
	else {
	  a = 0;
         while ((input_value() & 0x10) != 0){
		if( a > 20000){
    			printf("ACK signal is not changing.  Abnormal Exit\n");
			exit(1);
		}
		else {
			delay(1);
			a = a + 1;
		}
	  }
	}

     }
    val=(val>>1);
    }
  return;
}

/****************************************************************************/
/*Functions to set the hardware on the MAX device to a specifed mode.       */
/****************************************************************************/

/*****Sends the APEX configuration CMD***************************************/
void APEX_configuration()
{  outportb(lpt_base, 0x03);   			//03 cmd_mode=1 and stb=0 and data=1
   delay(cmd_delay);
   outportb(lpt_base, 0x43);			//cmd_mode=1 and stb=1 and data=1
   delay(cmd_delay);
   outportb(lpt_base, 0x41);			//cmd_mode=1 and stb=1 and data=0
   delay(cmd_delay);
   outportb(lpt_base, 0x01);			//cmd_mode=1 and stb=0 and data=1
   delay(cmd_delay);
   outportb(lpt_base, 0x00);			//signals are set to low
}
/*****Sends the Verify configuration CMD*************************************/
void verify_configuration()
{  outportb(lpt_base, 0x03);   			//cmd_mode=1 and stb=0 and data=1
   delay(cmd_delay);
   outportb(lpt_base, 0x43);			//cmd_mode=1 and stb=1 and data=1
   delay(cmd_delay);
   outportb(lpt_base, 0x43);			//cmd_mode=1 and stb=1 and data=1
   delay(cmd_delay);
   outportb(lpt_base, 0x03);			//cmd_mode=1 and stb=0 and data=1
   delay(cmd_delay);
   outportb(lpt_base, 0x00);			//signals are set to low
}
/*****Sends the Idle configuration CMD***************************************/
void idle_state_configuration()
{  outportb(lpt_base, 0x01);   			//cmd_mode=1 and stb=0 and data=0
   delay(cmd_delay);
   outportb(lpt_base, 0x41);			//cmd_mode=1 and stb=1 and data=0
   delay(cmd_delay);
   outportb(lpt_base, 0x41);			//cmd_mode=1 and stb=1 and data=0
   delay(cmd_delay);
   outportb(lpt_base, 0x01);			//cmd_mode=1 and stb=0 and data=0
   delay(cmd_delay);
   outportb(lpt_base, 0x00);			//signals are set to low
}
/*****Sends the FLASH configuration CMD***************************************/
void flash_configuration()
{  
   delay(cmd_delay);                            // ADD MISAWA 2000.11.08
   outportb(lpt_base, 0x00);			// ADD MISAWA 2000.11.08
   delay(cmd_delay);                            // ADD MISAWA 2000.11.08

//DATA IS 01(FLASH WRITE)
   outportb(lpt_base, 0x01);   			//02 cmd_mode=1
   delay(cmd_delay);
   //printf("Setting back to 1\n");
   outportb(lpt_base, 0x41);			//42cmd_mode=1 and stb=1 and data=0
   delay(cmd_delay);
   outportb(lpt_base, 0x43);			//cmd_mode=1 and stb=1 and data=1
   delay(cmd_delay);
   outportb(lpt_base, 0x03);			//cmd_mode=1 and stb=0 and data=1
   //printf("Setting back to 0\n");	
   delay(cmd_delay);
   outportb(lpt_base, 0x00);			//signals are set to low
}
/*****Function to configure the FLASH MEM************************************/
void flash_memory_configuration(int argc, char *argv[])	
{
    FILE *f;        
    char one_byte[3];
    int cnt_int, i, char_cnt, byte_val,d_cnt;  
    char c;
    
    printf("Start FLASH-ROM Erasing...\n");
    flash_configuration(); // FLASH ERASE COMMAND TO MAX3000
    cnt_int = 0;
    //initialize the char buffer
    for (i=0; i<3; i++)
       one_byte[i]=' ';
    char_cnt = 0;
    d_cnt = 0;
      
    f=fopen(argv[1],"r");    
    while (( c =(char) fgetc(f)) != EOF)//For processing .ttf files
    {
        if (c != ',')
        {  
           if (char_cnt == 0)
           {
              one_byte[2] = c; 
              char_cnt++;
           }
           else if (char_cnt == 1)
           {
              one_byte[1] = one_byte[2];
              one_byte[2] = c;
              char_cnt++;        
           }
           else
           {
              one_byte[0] = one_byte[1];
              one_byte[1] = one_byte[2];
              one_byte[2] = c;
           }
        }
        else
        {
	  sscanf(one_byte, "%d",  &byte_val);
	  transmit_byte(byte_val, cnt_int);//sending a byte to Max3000 after it erased of Flashrom

//used to inform user that the PC is sending data to the Max3000 device
          d_cnt = d_cnt + 1;
	  if ( d_cnt == 40000) {
		printf("*");
		d_cnt = 0;
	  }
//-----------------------------------------
          if (cnt_int == 0 )
          {
              printf("\nStart Programming Flash ROM...\n");
              cnt_int = 1;
          }
	  //initialize the char buffer
                    for (i=0; i<3; i++)
                       one_byte[i]=' ';
                    char_cnt = 0;
        }		
    }
    fclose(f);
}
/****** Get pararell port data(conf_status)***********************************/
unsigned int input_value2(void) 
{ static unsigned char last_value = 0xFF;	
  unsigned char new1, new2;   

  new1 = inportb(lpt_base + 1) & 0xF8;   	
  if (new1 != last_value) 
    { while (1) 
	{ new2 = inportb(lpt_base + 1) & 0xF8;
	  if (new2 == new1)			/* Wait for stable value */	    
	  break;	 
	  new1 = new2;	 //Look for a change in logic state
	}
      	last_value = new1;      
     }
//  printf("last_value : %x \n",last_value);   
  return (last_value & 0x10) ;   
}
/*****Function to FLASH MEM偐傜偺data偺庢摼************************************/
void verify_getdata()
//void verify_getdata(int argc, char *argv[])	
{
    FILE *f;        
    char one_byte[8],port_data;
	int a,flg,total_byte,data_cnt,i;
	int port_datab,u_cnt;
    char byte_datac;
	char byte_data[8];

//initialization
	flg = 0;
	total_byte = 0;
	data_cnt = 0;
	u_cnt = 0;
    for (i=0; i<8; i++){//initialization
		 one_byte[i]=' ';
	}
	port_data = ' ';

//TMP-file open
    f=fopen("tmpdata.txt","w");    
//STB偐傜Low傪弌椡
	outportb(lpt_base, 0x00);			//signals are set to low
	delay(cmd_delay);

a = 0;
while ((input_value() & 0x10) != 16) {
		if( a > 20000){
    			printf("Verify:ACK signal is not changing.  Abnormal Exit\n");
			exit(1);
		}
		else {
			delay(1);
			a = a + 1;
		}
}
	delay(cmd_delay);

printf("Start uploading from Flashrom

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产一区在线观看| 精品国产伦一区二区三区观看体验 | 久久久亚洲国产美女国产盗摄 | 国产盗摄女厕一区二区三区| 亚洲国产美国国产综合一区二区| 国产精品每日更新在线播放网址| 日韩精品中午字幕| 日韩欧美中文字幕制服| 欧美日韩一区高清| 91豆麻精品91久久久久久| www.视频一区| 成a人片亚洲日本久久| 视频精品一区二区| 天天影视色香欲综合网老头| 亚洲在线一区二区三区| 亚洲另类在线视频| 久久久另类综合| 国产亚洲一二三区| 国产精品污网站| 国产精品久久久久aaaa| 国产精品萝li| 亚洲丝袜精品丝袜在线| 18涩涩午夜精品.www| 亚洲男同性恋视频| 亚洲国产精品一区二区久久| 偷拍一区二区三区四区| 美日韩一级片在线观看| 一区二区三区在线视频播放| 亚洲一区二区av在线| 蜜桃久久久久久| 天天操天天色综合| 韩国三级中文字幕hd久久精品| 国产高清在线精品| 日本大香伊一区二区三区| 欧美日韩国产区一| 99re这里都是精品| 欧美在线一二三| 国产欧美一区二区精品性色| 伊人婷婷欧美激情| 久草热8精品视频在线观看| 99久久婷婷国产综合精品| 欧美老肥妇做.爰bbww| 国产精品超碰97尤物18| 麻豆精品一二三| aaa亚洲精品一二三区| 精品国产露脸精彩对白| 亚洲乱码国产乱码精品精的特点| 日本不卡1234视频| 色偷偷成人一区二区三区91 | 国产精一区二区三区| 欧美日韩免费电影| 中文字幕乱码日本亚洲一区二区| 爽爽淫人综合网网站| 色噜噜夜夜夜综合网| 中文字幕欧美区| 国产在线不卡一区| 日韩精品一区二区三区三区免费| 亚洲一区免费在线观看| 91麻豆免费在线观看| 日本一区二区视频在线观看| 天天av天天翘天天综合网色鬼国产 | 亚洲一二三区在线观看| 99视频精品全部免费在线| 久久久五月婷婷| 国产美女精品在线| 日韩精品专区在线影院重磅| 日本不卡不码高清免费观看| 欧美日韩一区二区三区在线 | 成人免费一区二区三区在线观看| 国产老妇另类xxxxx| 久久久www免费人成精品| 国产自产视频一区二区三区| 欧美大胆人体bbbb| 精品一区二区三区香蕉蜜桃| 日韩免费性生活视频播放| 欧美aaa在线| 日韩欧美成人一区二区| 国产资源精品在线观看| 久久久综合视频| 国产成人精品三级麻豆| 国产欧美一二三区| 91一区一区三区| 一区二区三区电影在线播| 欧美午夜片在线观看| 天堂av在线一区| 日韩欧美123| 国产99精品国产| 亚洲色图清纯唯美| 欧美午夜精品电影| 日韩中文字幕亚洲一区二区va在线 | 国产欧美一区二区精品性色| 成人国产一区二区三区精品| 亚洲丝袜自拍清纯另类| 欧美日韩国产美| 奇米影视一区二区三区| 国产丝袜在线精品| 在线亚洲精品福利网址导航| 午夜电影一区二区三区| 精品国产一区二区三区不卡| 不卡一区在线观看| 亚洲成人av一区| 精品电影一区二区| 色偷偷成人一区二区三区91| 免费日本视频一区| 国产精品女主播av| 欧美一区二区三区在线观看| 国产成人精品网址| 首页国产欧美日韩丝袜| 国产欧美一区二区精品性| 91官网在线免费观看| 久草热8精品视频在线观看| 亚洲人成7777| 久久中文娱乐网| 欧美亚洲精品一区| 国产成人在线视频播放| 日韩中文字幕不卡| 亚洲女性喷水在线观看一区| 日韩三级在线观看| 在线观看精品一区| 国产成人欧美日韩在线电影| 亚洲第一主播视频| 亚洲欧美偷拍三级| 久久人人97超碰com| 在线不卡中文字幕| 日本福利一区二区| 不卡的av电影在线观看| 精品亚洲国内自在自线福利| 亚洲一级二级三级| 日韩理论片中文av| 国产精品情趣视频| 久久一区二区视频| 日韩欧美成人一区二区| 欧美日本高清视频在线观看| 色综合中文综合网| 精品视频在线看| 成人激情校园春色| 国产精品亚洲一区二区三区妖精| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲精品亚洲人成人网| 18涩涩午夜精品.www| 中文字幕第一区二区| 久久久久久久久蜜桃| 日韩精品一区二区三区在线观看| 69av一区二区三区| 欧美美女bb生活片| 7777精品久久久大香线蕉| 在线视频一区二区免费| 欧美在线观看一区二区| 欧美在线短视频| 欧洲另类一二三四区| 欧美四级电影网| 欧美三级日韩三级国产三级| 91国内精品野花午夜精品| 欧洲生活片亚洲生活在线观看| 在线欧美一区二区| 欧美午夜免费电影| 欧美一区二区不卡视频| 精品久久久久久最新网址| 精品国产sm最大网站免费看| 久久久久久久综合狠狠综合| 久久精品日韩一区二区三区| 国产亚洲va综合人人澡精品| 亚洲国产精品成人久久综合一区| 国产精品天天摸av网| 亚洲欧美激情一区二区| 亚洲国产精品久久艾草纯爱| 日本最新不卡在线| 国产精品99精品久久免费| 成人精品免费看| 欧洲亚洲精品在线| 日韩欧美美女一区二区三区| 久久亚区不卡日本| 综合久久综合久久| 欧美aaa在线| 成人精品视频网站| 精品视频免费看| 久久蜜桃av一区精品变态类天堂| 国产精品久久久久久久午夜片 | 国产精品久久久久婷婷| 亚洲国产毛片aaaaa无费看| 精品一二三四区| 不卡av在线免费观看| 欧美剧在线免费观看网站| 欧美精品一区二区三区一线天视频| 国产欧美日韩精品a在线观看| 亚洲精品日日夜夜| 久久激五月天综合精品| 色琪琪一区二区三区亚洲区| 日韩欧美国产成人一区二区| 综合在线观看色| 久久99精品国产麻豆婷婷| 色老汉一区二区三区| 久久久精品免费网站| 五月综合激情婷婷六月色窝| 粉嫩av一区二区三区| 日韩欧美区一区二| 亚洲在线视频一区| 成人av电影在线观看| 精品国产免费人成在线观看| 亚洲一二三四久久|