📄 write_idblock.c
字号:
#error "NUMUSER4KBLOCKS must be set from 0 to 6 (0K to 24K), inclusive."
#endif
#else
#if ((NUMUSER4KBLOCKS < 0) || (NUMUSER4KBLOCKS > 16))
#error "NUMUSER4KBLOCKS must be set from 0 to 16 (0K to 64K), inclusive."
#endif
#endif
#ifdef IDBLOCK_VERSION
#if ((IDBLOCK_VERSION < 1) || (IDBLOCK_VERSION > 4))
#error "If used, IDBLOCK_VERSION must be set from 1 to 4, inclusive."
#endif
#endif
// check for undefined board types
#ifndef BL1800
#define BL1800 0x0101
#endif
#ifndef BL1805
#define BL1805 0x0103
#endif
#ifndef BL1810
#define BL1810 0x0100
#endif
#ifndef BL1820
#define BL1820 0x0102
#endif
#ifndef BL2000
#define BL2000 0x0800
#endif
#ifndef BL2000B
#define BL2000B 0x0806
#endif
#ifndef BL2010
#define BL2010 0x0801
#endif
#ifndef BL2010B
#define BL2010B 0x0805
#endif
#ifndef BL2020
#define BL2020 0x0802
#endif
#ifndef BL2030
#define BL2030 0x0803
#endif
#ifndef BL2040
#define BL2040 0x0804
#endif
#ifndef BL2100
#define BL2100 0x0B00
#endif
#ifndef BL2101
#define BL2101 0x0B06
#endif
#ifndef BL2105
#define BL2105 0x0B04
#endif
#ifndef BL2110
#define BL2110 0x0B01
#endif
#ifndef BL2111
#define BL2111 0x0B08
#endif
#ifndef BL2115
#define BL2115 0x0B05
#endif
#ifndef BL2120
#define BL2120 0x0B02
#endif
#ifndef BL2121
#define BL2121 0x0B07
#endif
#ifndef BL2130
#define BL2130 0x0B03
#endif
#ifndef BL2500A
#define BL2500A 0x1500
#endif
#ifndef BL2500B
#define BL2500B 0x1502
#endif
#ifndef BL2500C
#define BL2500C 0x1504
#endif
#ifndef BL2510A
#define BL2510A 0x1501
#endif
#ifndef BL2510B
#define BL2510B 0x1503
#endif
#ifndef BL2600A
#define BL2600A 0x1700
#endif
#ifndef BL2600B
#define BL2600B 0x1701
#endif
#ifndef BL2600C
#define BL2600C 0x1704
#endif
#ifndef BL2610A
#define BL2610A 0x1702
#endif
#ifndef BL2610B
#define BL2610B 0x1705
#endif
#ifndef EG2110A
#define EG2110A 0x0603
#endif
#ifndef EM1500A
#define EM1500A 0x1800
#endif
#ifndef LP3500
#define LP3500 0x1200
#endif
#ifndef LP3510
#define LP3510 0x1201
#endif
#ifndef OP6600
#define OP6600 0x0300
#endif
#ifndef OP6700
#define OP6700 0x0302
#endif
#ifndef OP6800
#define OP6800 0x0D00
#endif
#ifndef OP6805
#define OP6805 0x0D02
#endif
#ifndef OP6810
#define OP6810 0x0D01
#endif
#ifndef OP7200
#define OP7200 0x1100
#endif
#ifndef OP7200B
#define OP7200B 0x1102
#endif
#ifndef OP7210
#define OP7210 0x1101
#endif
#ifndef OP7210B
#define OP7210B 0x1103
#endif
#ifndef RABLINK
#define RABLINK 0x0601
#endif
#ifndef RCM2000
#define RCM2000 0x0200
#endif
#ifndef RCM2010
#define RCM2010 0x0201
#endif
#ifndef RCM2020
#define RCM2020 0x0202
#endif
#ifndef RCM2100
#define RCM2100 0x0700
#endif
#ifndef RCM2110
#define RCM2110 0x0701
#endif
#ifndef RCM2115
#define RCM2115 0x0704
#endif
#ifndef RCM2120
#define RCM2120 0x0702
#endif
#ifndef RCM2130
#define RCM2130 0x0703
#endif
#ifndef RCM2200
#define RCM2200 0x0900
#endif
#ifndef RCM2210
#define RCM2210 RCM2200
#endif
#ifndef RCM2250
#define RCM2250 0x0E00
#endif
#ifndef RCM2300
#define RCM2300 0x0A00
#endif
#ifndef RCM3000
#define RCM3000 0x0F00
#endif
#ifndef RCM3010
#define RCM3010 0x0F01
#endif
#ifndef RCM3100
#define RCM3100 0x1000
#endif
#ifndef RCM3110
#define RCM3110 0x1001
#endif
#ifndef RCM3200
#define RCM3200 0x1300
#endif
#ifndef RCM3210A
#define RCM3210A 0x1301
#endif
#ifndef RCM3220A
#define RCM3220A 0x1302
#endif
#ifndef RCM3300A
#define RCM3300A 0x1400
#endif
#ifndef RCM3310A
#define RCM3310A 0x1402
#endif
#ifndef RCM3350A
#define RCM3350A 0x1401
#endif
#ifndef RCM3400A
#define RCM3400A 0x1600
#endif
#ifndef RCM3410A
#define RCM3410A 0x1610
#endif
#ifndef RCM3600A
#define RCM3600A 0x1E00
#endif
#ifndef RCM3600H
#define RCM3600H 0x1E20
#endif
#ifndef RCM3610A
#define RCM3610A 0x1E01
#endif
#ifndef RCM3610H
#define RCM3610H 0x1E21
#endif
#ifndef RCM3700A
#define RCM3700A 0x1F00
#endif
#ifndef RCM3700H
#define RCM3700H 0x1F20
#endif
#ifndef RCM3710A
#define RCM3710A 0x1F01
#endif
#ifndef RCM3710H
#define RCM3710H 0x1F21
#endif
#ifndef RTDK
#define RTDK 0x0301
#endif
#ifndef SR9100
#define SR9100 0x0502
#endif
#ifndef SR9150
#define SR9150 0x0C00
#endif
#ifndef SR9160
#define SR9160 0x0C01
#endif
// some useful macros
#if ((MYBOARD == BL2105) || (MYBOARD == BL2111) || (MYBOARD == BL2115))
#define HAS2FLASHES 1
#elif ((MYBOARD == BL2500B) || (MYBOARD == BL2510B))
#define HAS2FLASHES 1
#elif ((MYBOARD == BL2600B) || (MYBOARD == BL2610A))
#define HAS2FLASHES 1
#elif (MYBOARD == EG2110A)
#define HAS2FLASHES 1
#elif (MYBOARD == LP3500)
#define HAS2FLASHES 1
#elif (MYBOARD == OP6600)
#define HAS2FLASHES 1
#elif (MYBOARD == OP6700)
#define HAS2FLASHES 1
#elif (MYBOARD == OP6805)
#define HAS2FLASHES 1
#elif ((MYBOARD == OP7200B) || (MYBOARD == OP7210B))
#define HAS2FLASHES 1
#elif (MYBOARD == RABLINK)
#define HAS2FLASHES 1
#elif ((MYBOARD == RCM2100) || (MYBOARD == RCM2120))
#define HAS2FLASHES 1
#elif (MYBOARD == RCM2250)
#define HAS2FLASHES 1
#elif (MYBOARD == RCM3000)
#define HAS2FLASHES 1
#elif (MYBOARD == RCM3100)
#define HAS2FLASHES 1
#elif (MYBOARD == RTDK)
#define HAS2FLASHES 1
#elif ((MYBOARD == SR9100) || (MYBOARD == SR9150) || (MYBOARD == SR9160))
#define HAS2FLASHES 1
#else
#define HAS2FLASHES 0
#endif
#if (MYBOARD == OP6700)
#define HASEEPROM 1
#elif (MYBOARD == RTDK)
#define HASEEPROM 1
#else
#define HASEEPROM 0
#endif
#if ((MYBOARD == BL2000) || (MYBOARD == BL2000B))
#define HASETHERNET 1
#elif ((MYBOARD == BL2010) || (MYBOARD == BL2010B))
#define HASETHERNET 1
#elif ((MYBOARD == BL2100) || (MYBOARD == BL2101) || (MYBOARD == BL2105))
#define HASETHERNET 1
#elif ((MYBOARD == BL2110) || (MYBOARD == BL2111) || (MYBOARD == BL2115))
#define HASETHERNET 1
#elif ((MYBOARD == BL2500A) || (MYBOARD == BL2500B) || (MYBOARD == BL2500C))
#define HASETHERNET 1
#elif ((MYBOARD == BL2600A) || (MYBOARD == BL2600B) || (MYBOARD == BL2600C))
#define HASETHERNET 1
#elif (MYBOARD == EG2110A)
#define HASETHERNET 1
#elif (MYBOARD == EM1500A)
#define HASETHERNET 1
#elif (MYBOARD == OP6700)
#define HASETHERNET 1
#elif ((MYBOARD == OP6800) || (MYBOARD == OP6805))
#define HASETHERNET 1
#elif ((MYBOARD == OP7200) || (MYBOARD == OP7200B))
#define HASETHERNET 1
#elif (MYBOARD == RABLINK)
#define HASETHERNET 1
#elif ((MYBOARD == RCM2100) || (MYBOARD == RCM2110) || (MYBOARD == RCM2115))
#define HASETHERNET 1
#elif ((MYBOARD == RCM2200) || (MYBOARD == RCM2210) || (MYBOARD == RCM2250))
#define HASETHERNET 1
#elif ((MYBOARD == RCM3000) || (MYBOARD == RCM3010))
#define HASETHERNET 1
#elif ((MYBOARD == RCM3200) || (MYBOARD == RCM3210A))
#define HASETHERNET 1
#elif ((MYBOARD == RCM3300A) || (MYBOARD == RCM3310A) || (MYBOARD == RCM3350A))
#define HASETHERNET 1
#elif ((MYBOARD == RCM3400A) || (MYBOARD == RCM3410A))
#define HASETHERNET 1
#elif ((MYBOARD == RCM3700A) || (MYBOARD == RCM3700H))
#define HASETHERNET 1
#elif ((MYBOARD == RCM3710A) || (MYBOARD == RCM3710H))
#define HASETHERNET 1
#elif (MYBOARD == RTDK)
#define HASETHERNET 1
#elif (MYBOARD == SR9150)
#define HASETHERNET 1
#else
#define HASETHERNET 0
#endif
// use xmem as much as possible
#memmap xmem
// function prototypes
int calcCRC(int, void *, int);
int GetFlashID(void);
void PrintFlashDescription(char *, int, int);
void PrintProductDescription(int);
void PrintSysIDBlockInfo(void);
void setTimeStamp(unsigned long);
int writeIDBlock(void);
/********************************************************************/
main()
{
static int i, crc;
int saveMB1or3CR;
char ch, div19200val, tempMAC[6];
if (SysIDBlock.tableVersion > 2 && CC_VER < 0x0726) {
printf("\n\n");
printf("Detected a version %d SystemID block\n", SysIDBlock.tableVersion);
printf("Recommend the %s utility for proper Userblock data recovery.\n",
RECOVERY_PROGRAM_NAME);
printf("(i.e. Z-World calibration constants or User application code data)\n\n");
printf("Do you still want to overwrite your SystemID block (Y/N)? ") ;
ch = toupper(getchar());
if (ch == 'N') {
printf("\n\n");
printf("Exiting without making any changes...\n\n");
exit(0);
}
printf("\n\n");
}
printf("%s, version %s.\n", MY_PROGRAM_NAME, VERSION);
#if (HASETHERNET && !HASEEPROM)
memcpy(tempMAC, MAC, sizeof(tempMAC));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -