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

📄 write_idblock.c

📁 用于Rabbit写Flash设备ID的程序
💻 C
📖 第 1 页 / 共 4 页
字号:
	#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 + -