ram.bin 去除扰码校验

This commit is contained in:
2025-03-12 17:34:55 +08:00
parent 7a47d6f36e
commit 80cc752148

View File

@@ -1065,186 +1065,6 @@ static int ramCalDumpAfterBurn(void)
return 0; return 0;
} }
static int ramMatchEnctypeAndPattern(uint8_t enctype, uint8_t pattern)
{
/*
*ret 0: The match is successful
*ret not 0: The match is failure
*/
int ret = 0;
/*
* enctype 0 : FW not encrypted.
* enctype 3 : FW encrypted with xor.
* pattern : value for encrypting.
* HTZD FW : enctype = 0, pattern = 0x55.(default)
* JSMT FW : enctype = 3, pattern = 0xaa.
* FLX FW : enctype = 3, pattern = 0x99.
* QJ FW : enctype = 3, pattern = 0x66.
* SPE FW : enctype = 3, pattern = 0xcc.
* GX FW : enctype = 3, pattern = 0x33.
* DT FW : enctype = 3, pattern = 0xdd.
* YP FW : enctype = 3, pattern = 0xa9.
* WTZ FW : enctype = 3, pattern = 0xc6.
* TCE FW : enctype = 3, pattern = 0x93.
*/
switch (enctype) {
case 0:
switch (pattern) {
case 0x55:
/* plain image */
if (
/* HT */
(g_chip_subid != CHIP_ID_HZ3201_V1A) &&
(g_chip_subid != CHIP_ID_HZ3211_V1A) &&
(g_chip_subid != CHIP_ID_HZ3201_RF_V1A) &&
(g_chip_subid != CHIP_ID_HZ3211_RF_V1A) &&
(g_chip_subid != CHIP_ID_HZ5202_V1A) &&
(g_chip_subid != CHIP_ID_HZ_K48V1A) &&
(g_chip_subid != CHIP_ID_HZ_K48V2A) &&
(g_chip_subid != CHIP_ID_HZ_K48V3A) &&
(g_chip_subid != CHIP_ID_HZ_K68V1A) &&
(g_chip_subid != CHIP_ID_HZ_K68V2A) &&
(g_chip_subid != CHIP_ID_HZ_K68V3A) &&
/* WQ */
(g_chip_subid != CHIP_ID_WQ3021_REVA) &&
(g_chip_subid != CHIP_ID_WQ3021_REVB) &&
(g_chip_subid != CHIP_ID_WQ3021_REVC) &&
(g_chip_subid != CHIP_ID_WQ3021_REVD) &&
(g_chip_subid != CHIP_ID_WQ3031_V1A) &&
(g_chip_subid != CHIP_ID_WQ5007_REVA) &&
(g_chip_subid != CHIP_ID_WQ5007_REVB) &&
(g_chip_subid != CHIP_ID_WQ5106_REVB) &&
(g_chip_subid != CHIP_ID_WQ_K48V2A) &&
(g_chip_subid != CHIP_ID_WQ_K48V2A2) &&
(g_chip_subid != CHIP_ID_WQ_K48V3A) &&
(g_chip_subid != CHIP_ID_WQ_K48V3A2) &&
(g_chip_subid != CHIP_ID_WQ_K48V3A3) &&
(g_chip_subid != CHIP_ID_WQ_K68V3A) &&
(g_chip_subid != CHIP_ID_WQ_K68V3A2) &&
/* FLX */
(g_chip_subid != CHIP_ID_FLX_K48) &&
(g_chip_subid != CHIP_ID_FLX_K68)) {
/*
* HTZD FW (no xor) can be burn on FLX6610/FLX6611.
*/
ret = 3;
}
break;
default:
ret = 2;
break;
}
break;
case 3:
switch (pattern) {
case 0xaa:
/* scramble image */
if ((g_chip_subid != CHIP_ID_MT_K68V1B) &&
(g_chip_subid != CHIP_ID_MT_K68V1BB) &&
(g_chip_subid != CHIP_ID_MT_K68V2B) &&
(g_chip_subid != CHIP_ID_MT_K68V2BB) &&
(g_chip_subid != CHIP_ID_MT_K68V3B) &&
(g_chip_subid != CHIP_ID_MT_K68V3BB) &&
(g_chip_subid != CHIP_ID_MT_K68V3A)) {
ret = 3;
}
break;
case 0x99:
/* scramble image */
if ((g_chip_subid != CHIP_ID_FLX_K68) &&
(g_chip_subid != CHIP_ID_FLX_K48) &&
(g_chip_subid != CHIP_ID_FLX6710_V1A) &&
(g_chip_subid != CHIP_ID_FLX6711_V1A)) {
/*
* FLX FW (xor) can be burn on FLX chip
*/
ret = 3;
}
break;
case 0x66:
/* scramble image */
if ((g_chip_subid != CHIP_ID_QJ5580D_V1A) &&
(g_chip_subid != CHIP_ID_QJ5582D_V1A)) {
/*
* QJ FW (xor) can only be burn on QJ5580D/QJ5582D.
*/
ret = 3;
}
break;
case 0xcc:
/* scramble image */
if ((g_chip_subid != CHIP_ID_SPE7303_V1A) &&
(g_chip_subid != CHIP_ID_SPE7301_V1A)) {
/*
* SPE FW (xor) can only be burn on SPE7303/SPE7301.
*/
ret = 3;
}
break;
case 0x33:
/* scramble image */
if ((g_chip_subid != CHIP_ID_GX2001_V1A) &&
(g_chip_subid != CHIP_ID_GX2011_V1A)) {
/*
* GX FW (xor) can only be burn on GX2001/GX2011.
*/
ret = 3;
}
break;
case 0xdd:
/* scramble image */
if ((g_chip_subid != CHIP_ID_DT0530_V1A) &&
(g_chip_subid != CHIP_ID_DT0531_V1A)) {
/*
* DT FW (xor) can only be burn on DT0530/DT0531.
*/
ret = 3;
}
break;
case 0xa9:
/* scramble image */
if ((g_chip_subid != CHIP_ID_YP8801_V1A) &&
(g_chip_subid != CHIP_ID_YP8811_V1A)) {
/*
* YP FW (xor) can only be burn on YP8801/YP8811.
*/
ret = 3;
}
break;
case 0xc6:
/* scramble image */
if ((g_chip_subid != CHIP_ID_WTZ31C_V1A) &&
(g_chip_subid != CHIP_ID_WTZ31S_V1A)) {
/*
* WTZ FW (xor) can only be burn on WTZ31C/WTZ31S.
*/
ret = 3;
}
break;
case 0x93:
/* scramble image */
if ((g_chip_subid != CHIP_ID_TCE3202_V1A) &&
(g_chip_subid != CHIP_ID_TCE3201_V1A)) {
/*
* TCE FW (xor) can only be burn on TCE3202/TCE3201.
*/
ret = 3;
}
break;
default:
ret = 2;
break;
}
break;
default:
ret = 1;
break;
}
return ret;
}
static int ramDownloadPackage(void) static int ramDownloadPackage(void)
{ {
rbuf xbuf; rbuf xbuf;
@@ -1443,10 +1263,6 @@ static int ramDownloadPackage(void)
pkg_hdr_ver_micro = (pkg_hdr_version >> 16) & 0x0F; pkg_hdr_ver_micro = (pkg_hdr_version >> 16) & 0x0F;
pkg_hdr_ver_build = (pkg_hdr_version >> 0) & 0xFFFF; pkg_hdr_ver_build = (pkg_hdr_version >> 0) & 0xFFFF;
if (ramMatchEnctypeAndPattern(pkg_hdr->enctype, pkg_hdr->pattern) != 0) {
ram_error_no |= RAM_IMAGE_MISMATCH_ERR;
goto ERROR_OUT;
}
// 接收了3个imgheader长度,是pkgheader // 接收了3个imgheader长度,是pkgheader
} else if (toltalRecieved == 3 * IMAGE_ALIGNED_SIZE) { } else if (toltalRecieved == 3 * IMAGE_ALIGNED_SIZE) {
pkg_hdr_fw_type = pkg_hdr->img_type; pkg_hdr_fw_type = pkg_hdr->img_type;