⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intel.cpp

📁 PC燒錄BIOS的源程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "intel.h"
#include <string.h>

void IntelSecEraseU( LONGINT SAddr )
{
//	Unprotect( SAddr );
//  	IntelSecErase( SAddr );
//	Protect( SAddr );
}

void IntelSecProgU( LONGINT Pos, LONGINT Data )
{
//	Unprotect( Pos );
//	IntelSecProg( Pos, Data );
//	Protect( Pos );
}

BOOL IntelIdChip( BYTE DevId, PFLASHCHIPINFO pInfo )
{
	BOOL bRet = FALSE;
	switch ( DevId )
	{
/*		case 0xB9:
			pInfo->Flags  = 6;   //{bulk erase, need blanking}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->F_Program = AMDFlashWrite;
			pInfo->F_Erase   = AMDFlashErase;
			pInfo->Size   = 32;
			strcpy( pInfo->Name, "28F256(A)/12V" );
			break;
		case 0xB8:
			pInfo->Flags  = 6;   //{bulk erase, need blanking}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->F_Program = AMDFlashWrite;
			pInfo->F_Erase   = AMDFlashErase;
			pInfo->Size   = 64;
			strcpy( pInfo->Name, "28F512/12V" );
			break;
		case 0xB4:
			pInfo->Flags  = 6;   //{bulk erase, need blanking}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->F_Program = AMDFlashWrite;
			pInfo->F_Erase   = AMDFlashErase;
			pInfo->Size   = 128;
			strcpy( pInfo->Name, "28F010/12V" );
			break;
		case 0xBD:
			pInfo->Flags  = 6;   //{bulk erase, need blanking}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->F_Program = AMDFlashWrite;
			pInfo->F_Erase = AMDFlashErase;
			pInfo->Size = 256;
			strcpy( pInfo->Name, "28F020/12V" );
			break;
		case 0x94:
			pInfo->Flags  = 0;   //{sector mode}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->Program  = IntelSecProg;
			pInfo->F_Erase = IntelSecErase;
			pInfo->Sectors[ 0, 0 ] = 1;  //{1 x 112k}
			pInfo->Sectors[ 0, 1 ] = 896;
			pInfo->Sectors[ 1, 0 ] = 2;  //{2 x 4k}
			pInfo->Sectors[ 1, 1 ] = 32;
			pInfo->Sectors[ 2, 0 ] = 1;  //{1 x 8k}
			pInfo->Sectors[ 2, 1 ] = 64;
			pInfo->Size = 128;
			strcpy( pInfo->Name, "28F001BX/BN-T/12V" );
			break;
		case 0x95:
			pInfo->Flags  = 0;   //{sector mode}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->Program  = IntelSecProg;
			pInfo->F_Erase = IntelSecErase;
			pInfo->Sectors[ 0, 0 ] = 1;  //{1 x 8k}
			pInfo->Sectors[ 0, 1 ] = 64;
			pInfo->Sectors[ 1, 0 ] = 2;  //{2 x 4k}
			pInfo->Sectors[ 1, 1 ] = 32;
			pInfo->Sectors[ 2, 0 ] = 1;  //{1 x 112k}
			pInfo->Sectors[ 2, 1 ] = 896;
			pInfo->Size = 128;
			strcpy( pInfo->Name, "28F001BX/BN-B/12V" );
			break;
		case 0x7C:
			pInfo->Flags  = 0;   //{sector mode}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->Program  = IntelSecProg;
			pInfo->F_Erase = IntelSecErase;
			pInfo->Sectors[ 0, 0 ] = 1;  //{1 x 128k}
			pInfo->Sectors[ 0, 1 ] = 1024;
			pInfo->Sectors[ 1, 0 ] = 1;  //{1 x 96k}
			pInfo->Sectors[ 1, 1 ] = 768;
			pInfo->Sectors[ 2, 0 ] = 2;  //{2 x 8k}
			pInfo->Sectors[ 2, 1 ] = 64;
			pInfo->Sectors[ 3, 0 ] = 1;  //{1 x 16k}
			pInfo->Sectors[ 3, 1 ] = 128;
			pInfo->Size = 256;
			strcpy( pInfo->Name, "28F002-T series (12V/5V)" );
			break;
		case 0x7D:
			pInfo->Flags  = 0;   //{sector mode}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->Program  = IntelSecProg;
			pInfo->F_Erase = IntelSecErase;
			pInfo->Sectors[ 0, 0 ] = 1;  //{1 x 16k}
			pInfo->Sectors[ 0, 1 ] = 128;
			pInfo->Sectors[ 1, 0 ] = 2;  //{2 x 8k}
			pInfo->Sectors[ 1, 1 ] = 64;
			pInfo->Sectors[ 2, 0 ] = 1;  //{1 x 96k}
			pInfo->Sectors[ 2, 1 ] = 768;
			pInfo->Sectors[ 3, 0 ] = 1;  //{1 x 128k}
			pInfo->Sectors[ 3, 1 ] = 1024;
			pInfo->Size = 256;
			strcpy( pInfo->Name, "28F002-B series (12V/5V)" );
			break;
	0x74 : Begin {v1.24 16-bit removed}
		   pInfo->Flags  = 0;   {sector mode}
		   pInfo->PgSize = 256; {'page' size, program 128 words at a time}
		   pInfo->Program  = IntelSecProgW;
		   pInfo->F_Erase = IntelSecEraseW;
		   pInfo->Sectors[ 0, 0 ] = 1;  {1 x 128k}
		   pInfo->Sectors[ 0, 1 ] = 1024;
		   pInfo->Sectors[ 1, 0 ] = 1;  {1 x 96k}
		   pInfo->Sectors[ 1, 1 ] = 768;
		   pInfo->Sectors[ 2, 0 ] = 2;  {2 x 8k}
		   pInfo->Sectors[ 2, 1 ] = 64;
		   pInfo->Sectors[ 3, 0 ] = 1;  {1 x 16k}
		   pInfo->Sectors[ 3, 1 ] = 128;
		   pInfo->Size = 256;
		   Name = ConstPtr( '28F200-T series (12V/5V)' );
		  End;
	0x75 : Begin
		   pInfo->Flags  = 0;   {sector mode}
		   pInfo->PgSize = 256; {'page' size, program 128 words at a time}
		   pInfo->Program  = IntelSecProgW;
		   pInfo->F_Erase = IntelSecEraseW;
		   pInfo->Sectors[ 0, 0 ] = 1;  {1 x 16k}
		   pInfo->Sectors[ 0, 1 ] = 128;
		   pInfo->Sectors[ 1, 0 ] = 2;  {2 x 8k}
		   pInfo->Sectors[ 1, 1 ] = 64;
		   pInfo->Sectors[ 2, 0 ] = 1;  {1 x 96k}
		   pInfo->Sectors[ 2, 1 ] = 768;
		   pInfo->Sectors[ 3, 0 ] = 1;  {1 x 128k}
		   pInfo->Sectors[ 3, 1 ] = 1024;
		   pInfo->Size = 256;
		   Name = ConstPtr( '28F200-B series (12V/5V)' );
		  End;
		case 0x78:
			pInfo->Flags  = 0;   //{sector mode}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->Program  = IntelSecProg;
			pInfo->F_Erase = IntelSecErase;
			pInfo->Sectors[ 0, 0 ] = 3;  //{3 x 128k}
			pInfo->Sectors[ 0, 1 ] = 1024;
			pInfo->Sectors[ 1, 0 ] = 1;  //{1 x 96k}
			pInfo->Sectors[ 1, 1 ] = 768;
			pInfo->Sectors[ 2, 0 ] = 2;  //{2 x 8k}
			pInfo->Sectors[ 2, 1 ] = 64;
			pInfo->Sectors[ 3, 0 ] = 1;  //{1 x 16k}
			pInfo->Sectors[ 3, 1 ] = 128;
			pInfo->Size = 512;
			strcpy( pInfo->Name, "28F004-T series (12V/5V)" );
			break;
		case 0x79:
			pInfo->Flags  = 0;   //{sector mode}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->Program  = IntelSecProg;
			pInfo->F_Erase = IntelSecErase;
			pInfo->Sectors[ 0, 0 ] = 1;  //{1 x 16k}
			pInfo->Sectors[ 0, 1 ] = 128;
			pInfo->Sectors[ 1, 0 ] = 2;  //{2 x 8k}
			pInfo->Sectors[ 1, 1 ] = 64;
			pInfo->Sectors[ 2, 0 ] = 1;  //{1 x 96k}
			pInfo->Sectors[ 2, 1 ] = 768;
			pInfo->Sectors[ 3, 0 ] = 3;  //{3 x 128k}
			pInfo->Sectors[ 3, 1 ] = 1024;
			pInfo->Size = 512;
			strcpy( pInfo->Name, "28F004-B series (12V/5V)" );
			break;
		case 0xD4:
			pInfo->Flags  = 0;   //{sector mode}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->Program  = IntelSecProg;
			pInfo->F_Erase = IntelSecErase;
			pInfo->Sectors[ 0, 0 ] = 7;  //{7 x 64k}
			pInfo->Sectors[ 0, 1 ] = 512;
			pInfo->Sectors[ 1, 0 ] = 8;  //{8 x 8k}
			pInfo->Sectors[ 1, 1 ] = 64;
			pInfo->Size = 512;
			strcpy( pInfo->Name, "28F004B3-T/3V" );
			break;
		case 0xD5 :
			pInfo->Flags  = 0;   //{sector mode}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->Program  = IntelSecProg;
			pInfo->F_Erase = IntelSecErase;
			pInfo->Sectors[ 0, 0 ] = 8;  //{8 x 8k}
			pInfo->Sectors[ 0, 1 ] = 64;
			pInfo->Sectors[ 1, 0 ] = 7;  //{7 x 64k}
			pInfo->Sectors[ 1, 1 ] = 512;
			pInfo->Size = 512;
			strcpy( pInfo->Name, "28F004B3-B/3V" );
			break;
	0x70 : Begin {v1.24 16-bit removed}
		   pInfo->Flags  = 0;   {sector mode}
		   pInfo->PgSize = 256; {'page' size, program 128 words at a time}
		   pInfo->Program  = IntelSecProgW;
		   pInfo->F_Erase = IntelSecEraseW;
		   pInfo->Sectors[ 0, 0 ] = 3;  {3 x 128k}
		   pInfo->Sectors[ 0, 1 ] = 1024;
		   pInfo->Sectors[ 1, 0 ] = 1;  {1 x 96k}
		   pInfo->Sectors[ 1, 1 ] = 768;
		   pInfo->Sectors[ 2, 0 ] = 2;  {2 x 8k}
		   pInfo->Sectors[ 2, 1 ] = 64;
		   pInfo->Sectors[ 3, 0 ] = 1;  {1 x 16k}
		   pInfo->Sectors[ 3, 1 ] = 128;
		   pInfo->Size = 512;
		   Name = ConstPtr( '28F400-T series (12V/5V)' );
		  End;
	0x71 : Begin
		   pInfo->Flags  = 0;   {sector mode}
		   pInfo->PgSize = 256; {'page' size, program 128 words at a time}
		   pInfo->Program  = IntelSecProgW;
		   pInfo->F_Erase = IntelSecEraseW;
		   pInfo->Sectors[ 0, 0 ] = 1;  {1 x 16k}
		   pInfo->Sectors[ 0, 1 ] = 128;
		   pInfo->Sectors[ 1, 0 ] = 2;  {2 x 8k}
		   pInfo->Sectors[ 1, 1 ] = 64;
		   pInfo->Sectors[ 2, 0 ] = 1;  {1 x 96k}
		   pInfo->Sectors[ 2, 1 ] = 768;
		   pInfo->Sectors[ 3, 0 ] = 3;  {3 x 128k}
		   pInfo->Sectors[ 3, 1 ] = 1024;
		   pInfo->Size = 512;
		   Name = ConstPtr( '28F400-B series (12V/5V)' );
		  End;
		case 0xD2:
			pInfo->Flags  = 0;   //{sector mode}
			pInfo->PgSize = 128; //{'page' size, program 128 bytes at a time}
			pInfo->Program  = IntelSecProg;
			pInfo->F_Erase = IntelSecErase;
			pInfo->Sectors[ 0, 0 ] = 15; //{15 x 64k}
			pInfo->Sectors[ 0, 1 ] = 512;
			pInfo->Sectors[ 1, 0 ] = 8;  //{8 x 8k}
			pInfo->Sectors[ 1, 1 ] = 64;
			pInfo->Size = 1024;
			strcpy( pInfo->Name, "28F008B3-T/3V" );
			break;
		case 0xD3:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -