📄 intel.cpp
字号:
#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 + -