From 0c1b53f3d4d27ebb17bc1568f83226ccaea06a99 Mon Sep 17 00:00:00 2001 From: andy <1414772332@qq.com> Date: Tue, 15 Oct 2024 17:38:58 +0800 Subject: [PATCH] =?UTF-8?q?ram.bin=20=E6=B7=BB=E5=8A=A0=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E7=9A=84=E8=8A=AF=E7=89=87=E6=94=AF=E6=8C=81?= =?UTF-8?q?=20gen=5Fimg.sh=20=E8=BE=93=E5=87=BA=E6=89=93=E5=8C=85=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 ++- inc/driver/iot_system.h | 10 ++++++ mfgtool/ram/inc/ram.h | 2 ++ mfgtool/ram/src/ram.c | 68 ++++++++++++++++++++++++++++++++++++---- tools/gen_img/gen_img.sh | 14 ++++++++- 5 files changed, 90 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index ce73ed7..eb5a2a3 100644 --- a/.gitignore +++ b/.gitignore @@ -30,12 +30,14 @@ tools/gen_img/customer/ tools/gen_img/ah tools/gen_img/elzma tools/gen_img/oem_tool +tools/gen_img/lib_sdk_source/ tools/gen_img/*.map tools/gen_img/*.out tools/gen_img/*.bin tools/gen_img/*.bin.fw -tools/gen_img/lib_sdk_source/ +tools/gen_img/cfg_log.txt tools/ram/ +tools/oem/*.bin mfgtool/ah/ah mfgtool/lzma/elzma mfgtool/oem_tool/oem_tool diff --git a/inc/driver/iot_system.h b/inc/driver/iot_system.h index a79cd1d..cd9d82f 100644 --- a/inc/driver/iot_system.h +++ b/inc/driver/iot_system.h @@ -31,6 +31,8 @@ extern "C" { #define IOT_CHIP_ID_GX 6 #define IOT_CHIP_ID_DT 7 #define IOT_CHIP_ID_YP 8 +#define IOT_CHIP_ID_WTZ 9 +#define IOT_CHIP_ID_TCE 10 /*************************** kunlun1 chip id **********************************/ /* HZ k48 */ @@ -118,6 +120,14 @@ extern "C" { #define CHIP_ID_YP8801_V1A 0x1073 //YP8801 /* YP8811, k76, QFN9*9 */ #define CHIP_ID_YP8811_V1A 0x1071 //YP8811 +/* WTZ31C, k76, QFN9*9 */ +#define CHIP_ID_WTZ31C_V1A 0x1083 //WTZ31C +/* WTZ31S, k76, QFN9*9 */ +#define CHIP_ID_WTZ31S_V1A 0x1081 //WTZ31S +/* TCE3202, k76, QFN9*9 */ +#define CHIP_ID_TCE3202_V1A 0x1093 //TCE3202 +/* TCE3201, k76, QFN9*9 */ +#define CHIP_ID_TCE3201_V1A 0x1091 //TCE3201 /* control transfer instuction */ #define RISCV32_INST_SET_JAL 0x6f diff --git a/mfgtool/ram/inc/ram.h b/mfgtool/ram/inc/ram.h index 24cc3e9..a5e0c35 100644 --- a/mfgtool/ram/inc/ram.h +++ b/mfgtool/ram/inc/ram.h @@ -76,6 +76,8 @@ typedef unsigned short UINT16; #define MANUFACTURER_GX "gx" #define MANUFACTURER_DT "dt" #define MANUFACTURER_YP "yp" +#define MANUFACTURER_WTZ "wtz" +#define MANUFACTURER_TCE "tce" typedef struct { diff --git a/mfgtool/ram/src/ram.c b/mfgtool/ram/src/ram.c index ebc8f49..f9817dc 100644 --- a/mfgtool/ram/src/ram.c +++ b/mfgtool/ram/src/ram.c @@ -123,6 +123,8 @@ ram_encrypt_t encrypt_array[] = { {3, 0x33, 18264, MANUFACTURER_GX}, {3, 0xdd, 17492, MANUFACTURER_DT}, {3, 0xa9, 22864, MANUFACTURER_YP}, + {3, 0xc6, 21335, MANUFACTURER_WTZ}, + {3, 0x93, 20803, MANUFACTURER_TCE}, }; typedef struct ram_config_param_t { @@ -152,7 +154,7 @@ typedef struct ram_config_param_t { /* default ram config param for die burn */ ram_config_param_t ram_param = { - .u_baud = 1, /* 0:115200; 1:460800; 2:1500000 */ + .u_baud = 2, /* 0:115200; 1:460800; 2:1500000 */ .c_psram = 0, .f_test = 0, .e_chip = 0, @@ -646,7 +648,7 @@ static int ramUartRecieve(rbuf *buf) return 0; /* Recieve from uart */ - // 这里每一个数据包都会发送字符 'C' + // 这里每一个数据包都会发送字符 'C' size = xModemReciveframe(buf->write, curPkg&0xFF, newStart); if(xmRT_Finish == size ||xmRT_Error == size) @@ -1083,6 +1085,8 @@ static int ramMatchEnctypeAndPattern(uint8_t enctype, uint8_t pattern) * 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: @@ -1208,6 +1212,26 @@ static int ramMatchEnctypeAndPattern(uint8_t enctype, uint8_t pattern) 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; @@ -1929,7 +1953,9 @@ static int ram_chip_subid_check(uint32_t chip_id, uint32_t subid) subid == CHIP_ID_SPE7303_V1A || subid == CHIP_ID_GX2001_V1A || subid == CHIP_ID_DT0530_V1A || - subid == CHIP_ID_YP8801_V1A) { + subid == CHIP_ID_YP8801_V1A || + subid == CHIP_ID_WTZ31C_V1A || + subid == CHIP_ID_TCE3202_V1A) { /* subid满足上述规则可烧录,检查通过 */ ret = 0; } @@ -1941,7 +1967,9 @@ static int ram_chip_subid_check(uint32_t chip_id, uint32_t subid) subid == CHIP_ID_SPE7301_V1A || subid == CHIP_ID_GX2011_V1A || subid == CHIP_ID_DT0531_V1A || - subid == CHIP_ID_YP8811_V1A) { + subid == CHIP_ID_YP8811_V1A || + subid == CHIP_ID_WTZ31S_V1A || + subid == CHIP_ID_TCE3201_V1A) { /* subid满足上述规则可烧录,检查通过 */ ret = 0; } @@ -1953,7 +1981,9 @@ static int ram_chip_subid_check(uint32_t chip_id, uint32_t subid) subid == CHIP_ID_SPE7303_V1A || subid == CHIP_ID_GX2001_V1A || subid == CHIP_ID_DT0530_V1A || - subid == CHIP_ID_YP8801_V1A) { + subid == CHIP_ID_YP8801_V1A || + subid == CHIP_ID_WTZ31C_V1A || + subid == CHIP_ID_TCE3202_V1A) { /* subid满足上述规则可烧录,检查通过 */ ret = 0; } @@ -1965,7 +1995,9 @@ static int ram_chip_subid_check(uint32_t chip_id, uint32_t subid) subid == CHIP_ID_SPE7301_V1A || subid == CHIP_ID_GX2011_V1A || subid == CHIP_ID_DT0531_V1A || - subid == CHIP_ID_YP8811_V1A) { + subid == CHIP_ID_YP8811_V1A || + subid == CHIP_ID_WTZ31S_V1A || + subid == CHIP_ID_TCE3201_V1A) { /* subid满足上述规则可烧录,检查通过 */ ret = 0; } @@ -2048,6 +2080,30 @@ static int ram_chip_subid_check(uint32_t chip_id, uint32_t subid) ret = 0; } break; + case CHIP_ID_WTZ31C_V1A: + if (subid == CHIP_ID_WTZ31C_V1A) { + /* subid满足上述规则可烧录,检查通过 */ + ret = 0; + } + break; + case CHIP_ID_WTZ31S_V1A: + if (subid == CHIP_ID_WTZ31S_V1A) { + /* subid满足上述规则可烧录,检查通过 */ + ret = 0; + } + break; + case CHIP_ID_TCE3202_V1A: + if (subid == CHIP_ID_TCE3202_V1A) { + /* subid满足上述规则可烧录,检查通过 */ + ret = 0; + } + break; + case CHIP_ID_TCE3201_V1A: + if (subid == CHIP_ID_TCE3201_V1A) { + /* subid满足上述规则可烧录,检查通过 */ + ret = 0; + } + break; default: break; } diff --git a/tools/gen_img/gen_img.sh b/tools/gen_img/gen_img.sh index d3417f3..7f5fc5b 100755 --- a/tools/gen_img/gen_img.sh +++ b/tools/gen_img/gen_img.sh @@ -161,6 +161,7 @@ rm -f $CUR_DIR/oem.bin rm -f $CUR_DIR/ht.bin rm -f $CUR_DIR/ht_1p.bin rm -f $CUR_DIR/ht*.fw +# rm -f $CUR_DIR/cfg_log.txt if [ "x${CHIP_VER_UPPER}" == "x3" ]; then # clear files and generate folders @@ -359,17 +360,23 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then if [ "${IMG_UPPER}" == "CCO" ] && [ ${IOT_SMART_BUILD} == 1 ]; then sed -i "s/ht.bin/ht_1p.bin/g" ${TMP_CFG_NAME} # add header + cat ${TMP_CFG_NAME} >> cfg_log.txt + echo -e "\n-----------\n" >> cfg_log.txt ./ah -a ${TMP_CFG_NAME} sed -i "s/ht_1p.bin/ht.bin/g" ${TMP_CFG_NAME} if [ "${chip_ver}" == "3201" ]; then #avoid ht_cus.bin add head twice sed -i "s/ht_cus.bin/ht_cus_tmp.bin/g" ${TMP_CFG_NAME} # add header + cat ${TMP_CFG_NAME} >> cfg_log.txt + echo -e "\n-----------\n" >> cfg_log.txt ./ah -a ${TMP_CFG_NAME} sed -i "s/ht_cus_tmp.bin/ht_cus.bin/g" ${TMP_CFG_NAME} fi else # add header + cat ${TMP_CFG_NAME} >> cfg_log.txt + echo -e "\n-----------\n" >> cfg_log.txt ./ah -a ${TMP_CFG_NAME} fi else @@ -387,14 +394,20 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then if [ "${IMG_UPPER}" == "CCO" ] && [ ${IOT_SMART_BUILD} == 1 ]; then sed -i "s/ht.bin/ht_1p.bin/g" ${TMP_CFG_NAME} # add header + cat ${TMP_CFG_NAME} >> cfg_log.txt + echo -e "\n-----------\n" >> cfg_log.txt ./ah -a ${TMP_CFG_NAME} sed -i "s/ht_1p.bin/ht.bin/g" ${TMP_CFG_NAME} if [ "${chip_ver}" == "3201" ]; then # add header + cat ${TMP_CFG_NAME} >> cfg_log.txt + echo -e "\n-----------\n" >> cfg_log.txt ./ah -a ${TMP_CFG_NAME} fi else # add header + cat ${TMP_CFG_NAME} >> cfg_log.txt + echo -e "\n-----------\n" >> cfg_log.txt ./ah -a ${TMP_CFG_NAME} fi fi @@ -757,7 +770,6 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then fi fi fi - rm ./tmp.cfg done