From 3a98f707e03c9454dfadc000744930ebec4f4eec Mon Sep 17 00:00:00 2001 From: kicer Date: Tue, 9 Dec 2025 20:55:32 +0800 Subject: [PATCH] update to XHSC ISP V2.21 --- hc32flash.py | 791 ++++++++++++++++-- hdsc/HDSC.m_flash.hc010 | Bin 3328 -> 0 bytes hdsc/HDSC.m_flash.hc020 | Bin 4096 -> 0 bytes ...{HDSC.m_flash.hc001 => XHSC.m_flash.hc001} | Bin ...{HDSC.m_flash.hc005 => XHSC.m_flash.hc005} | Bin ...{HDSC.m_flash.hc006 => XHSC.m_flash.hc006} | Bin ...{HDSC.m_flash.hc008 => XHSC.m_flash.hc008} | Bin hdsc/XHSC.m_flash.hc010 | Bin 0 -> 3328 bytes ...{HDSC.m_flash.hc012 => XHSC.m_flash.hc012} | Bin 2896 -> 2896 bytes ...{HDSC.m_flash.hc013 => XHSC.m_flash.hc013} | Bin 2816 -> 2816 bytes ...{HDSC.m_flash.hc015 => XHSC.m_flash.hc015} | Bin hdsc/XHSC.m_flash.hc017 | Bin 0 -> 2766 bytes hdsc/XHSC.m_flash.hc020 | Bin 0 -> 4096 bytes hdsc/XHSC.m_flash.hc021 | Bin 0 -> 4096 bytes hdsc/XHSC.m_flash.hc023 | Bin 0 -> 2654 bytes hdsc/XHSC.m_flash.hc032 | Bin 0 -> 3806 bytes hdsc/XHSC.m_flash.hc037 | Bin 0 -> 4096 bytes hdsc/XHSC.m_flash.hc039 | Bin 0 -> 5298 bytes hdsc/XHSC.m_flash.hc041 | Bin 0 -> 2896 bytes hdsc/XHSC.m_flash.hc042 | Bin 0 -> 2800 bytes hdsc/XHSC.m_flash.hc048 | Bin 0 -> 1337 bytes hdsc/XHSC.m_flash.hc050 | Bin 0 -> 1400 bytes hdsc/XHSC.m_flash.hc467 | Bin 0 -> 4096 bytes hdsc/XHSC.m_flash1.hc050 | Bin 0 -> 1356 bytes ...h_upper.hc006 => XHSC.m_flash_upper.hc006} | Bin 25 files changed, 715 insertions(+), 76 deletions(-) delete mode 100644 hdsc/HDSC.m_flash.hc010 delete mode 100644 hdsc/HDSC.m_flash.hc020 rename hdsc/{HDSC.m_flash.hc001 => XHSC.m_flash.hc001} (100%) rename hdsc/{HDSC.m_flash.hc005 => XHSC.m_flash.hc005} (100%) rename hdsc/{HDSC.m_flash.hc006 => XHSC.m_flash.hc006} (100%) rename hdsc/{HDSC.m_flash.hc008 => XHSC.m_flash.hc008} (100%) create mode 100644 hdsc/XHSC.m_flash.hc010 rename hdsc/{HDSC.m_flash.hc012 => XHSC.m_flash.hc012} (66%) rename hdsc/{HDSC.m_flash.hc013 => XHSC.m_flash.hc013} (64%) rename hdsc/{HDSC.m_flash.hc015 => XHSC.m_flash.hc015} (100%) create mode 100644 hdsc/XHSC.m_flash.hc017 create mode 100644 hdsc/XHSC.m_flash.hc020 create mode 100644 hdsc/XHSC.m_flash.hc021 create mode 100644 hdsc/XHSC.m_flash.hc023 create mode 100644 hdsc/XHSC.m_flash.hc032 create mode 100644 hdsc/XHSC.m_flash.hc037 create mode 100644 hdsc/XHSC.m_flash.hc039 create mode 100644 hdsc/XHSC.m_flash.hc041 create mode 100644 hdsc/XHSC.m_flash.hc042 create mode 100644 hdsc/XHSC.m_flash.hc048 create mode 100644 hdsc/XHSC.m_flash.hc050 create mode 100644 hdsc/XHSC.m_flash.hc467 create mode 100644 hdsc/XHSC.m_flash1.hc050 rename hdsc/{HDSC.m_flash_upper.hc006 => XHSC.m_flash_upper.hc006} (100%) diff --git a/hc32flash.py b/hc32flash.py index 4edcd92..2965122 100755 --- a/hc32flash.py +++ b/hc32flash.py @@ -5,9 +5,114 @@ import serial import serial.tools.list_ports import argparse -version = "0.1.2" +# XHSC ISP V2.21 +version = "2.21" HDSC = { + 'HC32A136': { + 'MCUName': "HC32A136", + 'FrequecyList': ["1000000", "256000", "128000", "115200", "76800", "38400", "19200", "9600"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "128", + 'FlashSize': "64K", + 'BootloaderBaudrate': 9600, + 'RamCodeBinFile': "m_flash.hc006", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA09/PA14)<---> Serial.RXD +MCU.RXD(PA10/PA13)<---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32A448': { + 'MCUName': "HC32A448", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "32", + 'FlashSize': "256K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc032", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA13) <---> Serial.RXD +MCU.RXD(PA14) <---> Serial.TXD +MCU.RESET <---> Serial.RTS/DTR +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32A460': { + 'MCUName': "HC32A460", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "64", + 'FlashSize': "512K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc010", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA13) <---> Serial.RXD +MCU.RXD(PA14) <---> Serial.TXD +MCU.RESET <---> Serial.RTS/DTR +MCU.MODE <---> MCU.GND +""", + }, + 'HC32A472xExx': { + 'MCUName': "HC32A472xExx", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "64", + 'FlashSize': "512K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc021", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA2,PA9 ,PA13) <---> Serial.RXD +MCU.RXD(PA3,PA10,PA14) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32A4A0': { + 'MCUName': "HC32A4A0", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "256", + 'FlashSize': "2M", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc020", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA13,PB10) <---> Serial.RXD +MCU.RXD(PA14,PB11) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32A4A8': { + 'MCUName': "HC32A4A8", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "256", + 'FlashSize': "2M", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc037", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA13,PB10) <---> Serial.RXD +MCU.RXD(PA14,PB11) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", + }, 'HC32D391': { 'MCUName': "HC32D391", 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], @@ -18,23 +123,93 @@ HDSC = { 'BootloaderBaudrate': 115200, 'RamCodeBinFile': "m_flash.hc010", 'WritePacketSize': 512, - 'IspConnection': "MCU.VCC <---> Serial.VCC\nMCU.GND <---> Serial.GND\nMCU.TXD(PA13) <---> Serial.RXD\nMCU.RXD(PA14) <---> Serial.TXD\nMCU.MODE <---> MCU.GND\n", + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA13) <---> Serial.RXD +MCU.RXD(PA14) <---> Serial.TXD +MCU.MODE <---> MCU.GND +""", }, - 'HC32F4A0': { - 'MCUName': "HC32F4A0", - 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'HC32F002x4xx': { + 'MCUName': "HC32F002x4xx", + 'FrequecyList': ["1000000", "256000", "128000", "115200", "76800", "38400"], 'StartAddress': "00000000", - 'PageSize': "8192", - 'PageCount': "256", - 'FlashSize': "2M", + 'PageSize': "512", + 'PageCount': "36", + 'FlashSize': "18K", 'BootloaderBaudrate': 115200, - 'RamCodeBinFile': "m_flash.hc020", + 'RamCodeBinFile': "m_flash.hc008", + 'WritePacketSize': 240, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PD01) <---> Serial.RXD +MCU.RXD(PC07) <---> Serial.TXD +MCU.RSTB <---> Serial.RTS/DTR +""", + }, + 'HC32F052/HC32A052': { + 'MCUName': "HC32F052/HC32A052", + 'FrequecyList': ["500000", "250000", "115200", "76800", "38400", "19200"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "256", + 'FlashSize': "128K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc008", + 'WritePacketSize': 240, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA14) <---> Serial.RXD +MCU.RXD(PA13) <---> Serial.TXD +MCU.BOOT0 <---> MCU.VCC +""", + }, + 'HC32F115': { + 'MCUName': "HC32F115", + 'FrequecyList': ["500000"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "128", + 'FlashSize': "64K", + 'BootloaderBaudrate': 500000, + 'RamCodeBinFile': "m_flash.hc041", 'WritePacketSize': 512, - 'IspConnection': "MCU.VCC <---> Serial.VCC\nMCU.GND <---> Serial.GND\nMCU.TXD(PA13,PB10) <---> Serial.RXD\nMCU.RXD(PA14,PB11) <---> Serial.TXD\nMCU.MODE <---> MCU.VCC\n", + 'IspConnection': """请确认XHLink的连接: +J6.ISP <---> J6.GND +J6.3V3 <---> J6.VCC +请确认目标芯片与XHLink的连接: +半双工: +MCU.VCC <---> XHLink.3V3 +MCU.GND <---> XHLink.GND +MCU.RST <---> XHLink.RST +MCU.TOOL0(P40) <---> XHLink.DIO +全双工: +MCU.VCC <---> XHLink.3V3 +MCU.GND <---> XHLink.GND +MCU.RST <---> XHLink.RST +MCU.TOOL0(P40) <---> XHLink.DIO +MCU.TOOLTxD(P12) <---> XHLink.RX +MCU.TOOLRxD(P11) <---> XHLink.TX +""", + }, + 'HC32F120': { + 'MCUName': "HC32F120", + 'FrequecyList': ["1000000"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "128", + 'FlashSize': "64K", + 'BootloaderBaudrate': 1000000, + 'RamCodeBinFile': "m_flash.hc012", + 'WritePacketSize': 512, + 'IspConnection': """请确认目标芯片与转接板的连接: +半双工:VCC,GND,TOOL0,NRST +全双工:VCC,GND,TXD,RXD,TOOL0,NRST +""", }, 'HC32F146x8/HC32M140x8': { 'MCUName': "HC32F146x8/HC32M140x8", - 'FrequecyList': ["Internal CR", "4MHz", "6MHz", "8MHz", "10MHz", "12MHz", "16MHz", "18MHz", "20MHz", "24MHz", "32MHz"], + 'FrequecyList': ["{", "Internal CR", "4MHz", "6MHz", "8MHz", "10MHz", "12MHz", "16MHz", "18MHz", "20MHz", "24MHz", "32MHz"], 'StartAddress': "00000000", 'PageSize': "512", 'PageCount': "128", @@ -42,11 +217,16 @@ HDSC = { 'BootloaderBaudrate': 9600, 'RamCodeBinFile': "m_flash.hc001", 'WritePacketSize': 512, - 'IspConnection': "MCU.VCC <---> Serial.VCC\nMCU.GND <---> Serial.GND\nMCU.TXD(P11) <---> Serial.RXD\nMCU.RXD(P12) <---> Serial.TXD\nMCU.MODE <---> MCU.VCC\n", + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(P11) <---> Serial.RXD +MCU.RXD(P12) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", }, 'HC32F146xA/HC32M140xA': { 'MCUName': "HC32F146xA/HC32M140xA", - 'FrequecyList': ["Internal CR", "4MHz", "6MHz", "8MHz", "10MHz", "12MHz", "16MHz", "18MHz", "20MHz", "24MHz", "32MHz"], + 'FrequecyList': ["{", "Internal CR", "4MHz", "6MHz", "8MHz", "10MHz", "12MHz", "16MHz", "18MHz", "20MHz", "24MHz", "32MHz"], 'StartAddress': "00000000", 'PageSize': "512", 'PageCount': "256", @@ -54,22 +234,188 @@ HDSC = { 'BootloaderBaudrate': 9600, 'RamCodeBinFile': "m_flash.hc001", 'WritePacketSize': 512, - 'IspConnection': "MCU.VCC <---> Serial.VCC\nMCU.GND <---> Serial.GND\nMCU.TXD(P11) <---> Serial.RXD\nMCU.RXD(P12) <---> Serial.TXD\nMCU.MODE <---> MCU.VCC\n", + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(P11) <---> Serial.RXD +MCU.RXD(P12) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", }, - 'HC32F120': { - 'MCUName': "HC32F120", - 'FrequecyList': ["1000000"], + 'HC32F155': { + 'MCUName': "HC32F155", + 'FrequecyList': ["500000"], 'StartAddress': "00000000", 'PageSize': "512", - 'PageCount': "64", - 'FlashSize': "32K", - 'BootloaderBaudrate': 1000000, - 'RamCodeBinFile': "m_flash.hc012", + 'PageCount': "512", + 'FlashSize': "256K", + 'BootloaderBaudrate': 500000, + 'RamCodeBinFile': "m_flash.hc042", 'WritePacketSize': 512, - 'IspConnection': "Half-duplex: VCC,GND,TOOL0,NRST\nFull-duplex: VCC,GND,TXD,RXD,TOOL0,NRST\n", + 'IspConnection': """请确认XHLink的连接: +J6.ISP <---> J6.GND +J6.3V3 <---> J6.VCC +请确认目标芯片与XHLink的连接: +半双工: +MCU.VCC <---> XHLink.3V3 +MCU.GND <---> XHLink.GND +MCU.RST <---> XHLink.RST +MCU.TOOL0(P40) <---> XHLink.DIO +全双工: +MCU.VCC <---> XHLink.3V3 +MCU.GND <---> XHLink.GND +MCU.RST <---> XHLink.RST +MCU.TOOL0(P40) <---> XHLink.DIO +MCU.TOOLTxD(P12)/SWDIO(P51) <---> XHLink.RX +MCU.TOOLRxD(P11)/SWCLK(P50) <---> XHLink.TX +""", }, - 'HC32F460xExx': { - 'MCUName': "HC32F460xExx", + 'HC32F160xAxx': { + 'MCUName': "HC32F160xAxx", + 'FrequecyList': ["1000000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "258", + 'FlashSize': "129K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc023", + 'WritePacketSize': 512, + 'IspConnection': """请确认目标芯片与XHSC DAP的连接: +UART单线: | UART双线: +MCU.VCC <---> DAP.VCC | MCU.VCC <---> DAP.VCC +MCU.GND <---> DAP.GND | MCU.GND <---> DAP.GND +MCU.TOOL0(P40) <---> DAP.DIO(TOOL0) | MCU.TOOL0(P40) <---> DAP.DIO(TOOL0) +MCU.RST <---> DAP.RST | MCU.RST <---> DAP.RST +DAP.ISP <---> DAP.GND | MCU.TOOLRxD(P11) <---> DAP.TX + | MCU.TOOLTxD(P12) <---> DAP.RX + | DAP.ISP <---> DAP.GND""", + }, + 'HC32F160xCxx': { + 'MCUName': "HC32F160xCxx", + 'FrequecyList': ["1000000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "514", + 'FlashSize': "257K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc023", + 'WritePacketSize': 512, + 'IspConnection': """请确认目标芯片与XHSC DAP的连接: +UART单线: | UART双线: +MCU.VCC <---> DAP.VCC | MCU.VCC <---> DAP.VCC +MCU.GND <---> DAP.GND | MCU.GND <---> DAP.GND +MCU.TOOL0(P40) <---> DAP.DIO(TOOL0) | MCU.TOOL0(P40) <---> DAP.DIO(TOOL0) +MCU.RST <---> DAP.RST | MCU.RST <---> DAP.RST +DAP.ISP <---> DAP.GND | MCU.TOOLRxD(P11) <---> DAP.TX + | MCU.TOOLTxD(P12) <---> DAP.RX + | DAP.ISP <---> DAP.GND""", + }, + 'HC32F334x8xx': { + 'MCUName': "HC32F334x8xx", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "4096", + 'PageCount': "16", + 'FlashSize': "64K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc039", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA2,PA9 ,PA13) <---> Serial.RXD +MCU.RXD(PA3,PA10,PA14) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32F334xAxx': { + 'MCUName': "HC32F334xAxx", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "4096", + 'PageCount': "32", + 'FlashSize': "128K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc039", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA2,PA9 ,PA13) <---> Serial.RXD +MCU.RXD(PA3,PA10,PA14) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32F420': { + 'MCUName': "HC32F420", + 'FrequecyList': ["1000000", "500000", "250000", "115200", "76800", "38400", "19200"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "256", + 'FlashSize': "128K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc008", + 'WritePacketSize': 240, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA14) <---> Serial.RXD +MCU.RXD(PA13) <---> Serial.TXD +MCU.BOOT0 <---> MCU.VCC +""", + }, + 'HC32F448xAxx/HC32M441xAxx': { + 'MCUName': "HC32F448xAxx/HC32M441xAxx", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "16", + 'FlashSize': "128K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc032", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA13) <---> Serial.RXD +MCU.RXD(PA14) <---> Serial.TXD +MCU.RESET <---> Serial.RTS/DTR +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32F448xCxx/HC32M441xCxx': { + 'MCUName': "HC32F448xCxx/HC32M441xCxx", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "32", + 'FlashSize': "256K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc032", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA13) <---> Serial.RXD +MCU.RXD(PA14) <---> Serial.TXD +MCU.RESET <---> Serial.RTS/DTR +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32F460xCxx': { + 'MCUName': "HC32F460xCxx", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "32", + 'FlashSize': "256K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc010", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA13) <---> Serial.RXD +MCU.RXD(PA14) <---> Serial.TXD +MCU.RESET <---> Serial.RTS/DTR +MCU.MODE <---> MCU.GND +""", + }, + 'HC32F460xExx/HC32F45xxExx': { + 'MCUName': "HC32F460xExx/HC32F45xxExx", 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], 'StartAddress': "00000000", 'PageSize': "8192", @@ -78,7 +424,217 @@ HDSC = { 'BootloaderBaudrate': 115200, 'RamCodeBinFile': "m_flash.hc010", 'WritePacketSize': 512, - 'IspConnection': "MCU.VCC <---> Serial.VCC\nMCU.GND <---> Serial.GND\nMCU.TXD(PA13) <---> Serial.RXD\nMCU.RXD(PA14) <---> Serial.TXD\nMCU.MODE <---> MCU.GND\n", + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA13) <---> Serial.RXD +MCU.RXD(PA14) <---> Serial.TXD +MCU.RESET <---> Serial.RTS/DTR +MCU.MODE <---> MCU.GND +""", + }, + 'HC32F467': { + 'MCUName': "HC32F467", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "128", + 'FlashSize': "1M", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc467", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA13,PB10) <---> Serial.RXD +MCU.RXD(PA14,PB11) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32F472xCxx': { + 'MCUName': "HC32F472xCxx", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "32", + 'FlashSize': "256K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc021", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA2,PA9 ,PA13) <---> Serial.RXD +MCU.RXD(PA3,PA10,PA14) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32F472xExx': { + 'MCUName': "HC32F472xExx", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "64", + 'FlashSize': "512K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc021", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA2,PA9 ,PA13) <---> Serial.RXD +MCU.RXD(PA3,PA10,PA14) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32F4A0xGxx': { + 'MCUName': "HC32F4A0xGxx", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "128", + 'FlashSize': "1M", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc020", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA13,PB10) <---> Serial.RXD +MCU.RXD(PA14,PB11) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32F4A8': { + 'MCUName': "HC32F4A8", + 'FrequecyList': ["1000000", "500000", "256000", "128000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "8192", + 'PageCount': "256", + 'FlashSize': "2M", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc037", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA13,PB10) <---> Serial.RXD +MCU.RXD(PA14,PB11) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32IV01J8TA': { + 'MCUName': "HC32IV01J8TA", + 'FrequecyList': ["1000000", "256000", "128000", "115200", "76800", "38400", "19200", "9600"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "128", + 'FlashSize': "64K", + 'BootloaderBaudrate': 9600, + 'RamCodeBinFile': "m_flash.hc006", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA09/PA14)<---> Serial.RXD +MCU.RXD(PA10/PA13)<---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", + }, + 'HC32L021': { + 'MCUName': "HC32L021", + 'FrequecyList': ["1000000", "250000", "115200", "76800", "57600", "38400", "19200"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "128", + 'FlashSize': "64", + 'BootloaderBaudrate': 250000, + 'RamCodeBinFile': "m_flash.hc048", + 'WritePacketSize': 160, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA14) <---> Serial.RXD +MCU.RXD(PA13) <---> Serial.TXD +MCU.RSTB <---> Serial.RTS/DTR +""", + }, + 'HC32L021x8xx': { + 'MCUName': "HC32L021x8xx", + 'FrequecyList': ["1500000", "1000000", "128000", "115200", "76800", "38400"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "128", + 'FlashSize': "64K", + 'BootloaderBaudrate': 100000, + 'RamCodeBinFile': "m_flash.hc008", + 'WritePacketSize': 240, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PD01) <---> Serial.RXD +MCU.RXD(PC07) <---> Serial.TXD +MCU.RSTB <---> Serial.RTS/DTR +""", + }, + 'HC32L031': { + 'MCUName': "HC32L031", + 'FrequecyList': ["2000000", "1000000", "260000", "128000", "115200", "76800", "57600", "38400", "19200", "9600"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "128", + 'FlashSize': "64", + 'BootloaderBaudrate': 1000000, + 'RamCodeBinFile': "m_flash.hc050", + 'WritePacketSize': 160, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA14) <---> Serial.RXD +MCU.RXD(PA13) <---> Serial.TXD +MCU.RSTB <---> Serial.RTS/DTR +""", + }, + 'HC32L110x4xx/HC32F003x4xx': { + 'MCUName': "HC32L110x4xx/HC32F003x4xx", + 'FrequecyList': ["691200", "230400", "115200", "38400", "19200", "9600"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "32", + 'FlashSize': "16K", + 'BootloaderBaudrate': 9600, + 'RamCodeBinFile': "m_flash.hc005", + 'WritePacketSize': 64, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(P31/P35) <---> Serial.RXD +MCU.RXD(P27/P36) <---> Serial.TXD +MCU.RESET <---> Serial.RTS/DTR +""", + }, + 'HC32L110x6xx/HC32F005x6xx': { + 'MCUName': "HC32L110x6xx/HC32F005x6xx", + 'FrequecyList': ["691200", "460800", "230400", "115200", "38400", "19200", "9600"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "64", + 'FlashSize': "32K", + 'BootloaderBaudrate': 9600, + 'RamCodeBinFile': "m_flash.hc005", + 'WritePacketSize': 64, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(P31/P35) <---> Serial.RXD +MCU.RXD(P27/P36) <---> Serial.TXD +MCU.RESET <---> Serial.RTS/DTR +""", + }, + 'HC32L12xxAxx': { + 'MCUName': "HC32L12xxAxx", + 'FrequecyList': ["2000000", "1500000", "1000000", "500000", "250000", "115200", "19200"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "256", + 'FlashSize': "128K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc008", + 'WritePacketSize': 240, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA14) <---> Serial.RXD +MCU.RXD(PA13) <---> Serial.TXD +MCU.BOOT0(PD03) <---> MCU.VCC +""", }, 'HC32L13xx8/HC32F030x8': { 'MCUName': "HC32L13xx8/HC32F030x8", @@ -90,11 +646,16 @@ HDSC = { 'BootloaderBaudrate': 9600, 'RamCodeBinFile': "m_flash.hc006", 'WritePacketSize': 512, - 'IspConnection': "MCU.VCC <---> Serial.VCC\nMCU.GND <---> Serial.GND\nMCU.TXD(PA09/PA14)<---> Serial.RXD\nMCU.RXD(PA10/PA13)<---> Serial.TXD\nMCU.MODE <---> MCU.VCC\n", + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA09/PA14)<---> Serial.RXD +MCU.RXD(PA10/PA13)<---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", }, 'HC32L15xx8': { 'MCUName': "HC32L15xx8", - 'FrequecyList': ["Internal CR", "4MHz", "6MHz", "8MHz", "10MHz", "12MHz", "16MHz", "18MHz", "20MHz", "24MHz", "32MHz"], + 'FrequecyList': ["{", "Internal CR", "4MHz", "6MHz", "8MHz", "10MHz", "12MHz", "16MHz", "18MHz", "20MHz", "24MHz", "32MHz"], 'StartAddress': "00000000", 'PageSize': "512", 'PageCount': "128", @@ -102,11 +663,16 @@ HDSC = { 'BootloaderBaudrate': 9600, 'RamCodeBinFile': "m_flash.hc001", 'WritePacketSize': 512, - 'IspConnection': "MCU.VCC <---> Serial.VCC\nMCU.GND <---> Serial.GND\nMCU.TXD(P12) <---> Serial.RXD\nMCU.RXD(P11) <---> Serial.TXD\nMCU.MODE <---> MCU.VCC\n", + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(P12) <---> Serial.RXD +MCU.RXD(P11) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", }, 'HC32L15xxA': { 'MCUName': "HC32L15xxA", - 'FrequecyList': ["Internal CR", "4MHz", "6MHz", "8MHz", "10MHz", "12MHz", "16MHz", "18MHz", "20MHz", "24MHz", "32MHz"], + 'FrequecyList': ["{", "Internal CR", "4MHz", "6MHz", "8MHz", "10MHz", "12MHz", "16MHz", "18MHz", "20MHz", "24MHz", "32MHz"], 'StartAddress': "00000000", 'PageSize': "512", 'PageCount': "256", @@ -114,55 +680,81 @@ HDSC = { 'BootloaderBaudrate': 9600, 'RamCodeBinFile': "m_flash.hc001", 'WritePacketSize': 512, - 'IspConnection': "MCU.VCC <---> Serial.VCC\nMCU.GND <---> Serial.GND\nMCU.TXD(P12) <---> Serial.RXD\nMCU.RXD(P11) <---> Serial.TXD\nMCU.MODE <---> MCU.VCC\n", + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(P12) <---> Serial.RXD +MCU.RXD(P11) <---> Serial.TXD +MCU.MODE <---> MCU.VCC +""", }, - 'HC32L110x4xx/HC32F003x4xx/HC32L110B4/HC32L110C4/HC32F003C4': { - 'MCUName': "HC32L110x4xx/HC32F003x4xx", - 'FrequecyList': ["691200", "230400", "115200", "38400", "19200", "9600"], + 'HC32L18xxAxx/HC32L16xxAxx': { + 'MCUName': "HC32L18xxAxx/HC32L16xxAxx", + 'FrequecyList': ["1000000", "256000", "128000", "115200", "76800", "38400", "19200"], 'StartAddress': "00000000", 'PageSize': "512", - 'PageCount': "32", - 'FlashSize': "16K", - 'BootloaderBaudrate': 9600, - 'RamCodeBinFile': "m_flash.hc005", - 'WritePacketSize': 64, - 'IspConnection': "MCU.VCC <---> Serial.VCC\nMCU.GND <---> Serial.GND\nMCU.TXD(P31/P35) <---> Serial.RXD\nMCU.RXD(P27/P36) <---> Serial.TXD\nMCU.RESET <---> Serial.RTS/DTR\n", + 'PageCount': "256", + 'FlashSize': "128K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc008", + 'WritePacketSize': 240, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.SWCLK(PA14) <---> Serial.RXD +MCU.SWDIO(PA13) <---> Serial.TXD +MCU.BOOT0 <---> MCU.VCC +""", }, - 'HC32L110x6xx/HC32F005x6xx/HC32L110B6/HC32L110C6/HC32F005C6': { - 'MCUName': "HC32L110x6xx/HC32F005x6xx", - 'FrequecyList': ["691200", "460800", "230400", "115200", "38400", "19200", "9600"], - 'StartAddress': "00000000", - 'PageSize': "512", - 'PageCount': "64", - 'FlashSize': "32K", - 'BootloaderBaudrate': 9600, - 'RamCodeBinFile': "m_flash.hc005", - 'WritePacketSize': 64, - 'IspConnection': "MCU.VCC <---> Serial.VCC\nMCU.GND <---> Serial.GND\nMCU.TXD(P31/P35) <---> Serial.RXD\nMCU.RXD(P27/P36) <---> Serial.TXD\nMCU.RESET <---> Serial.RTS/DTR\n", - }, - 'HC32M120': { - 'MCUName': "HC32M120", - 'FrequecyList': ["1000000"], - 'StartAddress': "00000000", - 'PageSize': "512", - 'PageCount': "32", - 'FlashSize': "16K", - 'BootloaderBaudrate': 1000000, - 'RamCodeBinFile': "m_flash.hc013", - 'WritePacketSize': 512, - 'IspConnection': "Half-duplex: VCC,GND,TOOL0,NRST\nFull-duplex: VCC,GND,TXD,RXD,TOOL0,NRST\n", - }, - 'HC32x19xxCxx': { - 'MCUName': "HC32x19xxCxx", + 'HC32L18xxCxx/HC32L16xxCxx': { + 'MCUName': "HC32L18xxCxx/HC32L16xxCxx", 'FrequecyList': ["1000000", "256000", "128000", "115200", "76800", "38400", "19200"], 'StartAddress': "00000000", 'PageSize': "512", 'PageCount': "512", 'FlashSize': "256K", 'BootloaderBaudrate': 115200, - 'RamCodeBinFile': "m_flash.hc015", + 'RamCodeBinFile': "m_flash.hc008", + 'WritePacketSize': 240, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.SWCLK(PA14) <---> Serial.RXD +MCU.SWDIO(PA13) <---> Serial.TXD +MCU.BOOT0 <---> MCU.VCC +""", + }, + 'HC32M120': { + 'MCUName': "HC32M120", + 'FrequecyList': ["1000000"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "64", + 'FlashSize': "32K", + 'BootloaderBaudrate': 1000000, + 'RamCodeBinFile': "m_flash.hc013", 'WritePacketSize': 512, - 'IspConnection': "MCU.VCC <---> Serial.VCC\nMCU.GND <---> Serial.GND\nMCU.TXD(PA14) <---> Serial.RXD\nMCU.RXD(PA13) <---> Serial.TXD\nMCU.BOOT0 <---> MCU.VCC\n", + 'IspConnection': """请确认目标芯片与转接板的连接: +半双工:VCC,GND,TOOL0,NRST +全双工:VCC,GND,TXD,RXD,TOOL0,NRST +""", + }, + 'HC32M423xAxx': { + 'MCUName': "HC32M423xAxx", + 'FrequecyList': ["1000000", "115200"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "256", + 'FlashSize': "128K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc017", + 'WritePacketSize': 512, + 'IspConnection': """请确认目标芯片与XHSC DAP的连接: +UART单线: | UART双线: +MCU.VCC <---> DAP.VCC | MCU.VCC <---> DAP.VCC +MCU.GND <---> DAP.GND | MCU.GND <---> DAP.GND +MCU.TOOL0(P50) <---> DAP.DIO(TOOL0) | MCU.TOOL0(P50) <---> DAP.DIO(TOOL0) +MCU.RST <---> DAP.RST | MCU.RST <---> DAP.RST +DAP.ISP <---> DAP.GND | MCU.SWDCLK(PB1) <---> DAP.TX + | MCU.SWDIO(PB2) <---> DAP.RX + | DAP.ISP <---> DAP.GND""", }, 'HC32x07xxAxx/HC32x17xxAxx': { 'MCUName': "HC32x07xxAxx/HC32x17xxAxx", @@ -174,11 +766,32 @@ HDSC = { 'BootloaderBaudrate': 115200, 'RamCodeBinFile': "m_flash.hc008", 'WritePacketSize': 512, - 'IspConnection': "MCU.VCC <---> Serial.VCC\nMCU.GND <---> Serial.GND\nMCU.TXD(PA14) <---> Serial.RXD\nMCU.RXD(PA13) <---> Serial.TXD\nMCU.BOOT0 <---> MCU.VCC\n", + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA14) <---> Serial.RXD +MCU.RXD(PA13) <---> Serial.TXD +MCU.BOOT0 <---> MCU.VCC +""", + }, + 'HC32x19xxCxx': { + 'MCUName': "HC32x19xxCxx", + 'FrequecyList': ["1000000", "256000", "128000", "115200", "76800", "38400", "19200"], + 'StartAddress': "00000000", + 'PageSize': "512", + 'PageCount': "512", + 'FlashSize': "256K", + 'BootloaderBaudrate': 115200, + 'RamCodeBinFile': "m_flash.hc015", + 'WritePacketSize': 512, + 'IspConnection': """MCU.VCC <---> Serial.VCC +MCU.GND <---> Serial.GND +MCU.TXD(PA14) <---> Serial.RXD +MCU.RXD(PA13) <---> Serial.TXD +MCU.BOOT0 <---> MCU.VCC +""", }, } - class TransportError(Exception): """Custom exception to represent errors with a transport """ @@ -337,6 +950,34 @@ class SerialTransport(): self.serial.dtr = self.SET return True +from difflib import get_close_matches +def find_device_simple(input_device, hdsc_keys): + input_upper = input_device.upper() + + # 构建候选映射 + candidates = {} + for device in hdsc_keys: + candidates[device.upper()] = device + for part in device.split('/'): + candidates[part.upper()] = device + + # 模糊匹配 + matches = get_close_matches(input_upper, candidates.keys(), n=8, cutoff=0.75) + if not matches: return None + + # 子串匹配 + best_match, match_cnt = None, 0 + if matches and len(matches)>1: + for m in matches: + prefix_len = 0 + for i in range(min(len(input_upper), len(m))): + if input_upper[i] != m[i]: break + prefix_len += 1 + if prefix_len > match_cnt: + best_match, match_cnt = m, prefix_len + + return candidates[best_match] if best_match else candidates[matches[0]] + if __name__ == '__main__': # parse arguments or use defaults parser = argparse.ArgumentParser(description='HC32xx Flash Downloader.') @@ -359,14 +1000,12 @@ if __name__ == '__main__': args.rfile,args.wfile,args.vfile = args.r,args.w,args.v # check device - _ = None - for dev in HDSC.keys(): - if dev.upper().find(args.dev.upper()) >= 0: - args.dev,_ = dev,dev - break - if not _: + matched_device = find_device_simple(args.dev, list(HDSC.keys())) + if not matched_device: sys.stdout.write("Invalid Device name '%s'.\n\nList of support device:\n" % args.dev) args.list = True + else: + args.dev = matched_device if args.list: for dev in HDSC.keys(): @@ -431,7 +1070,7 @@ if __name__ == '__main__': # stage 3. load ramcode sys.stdout.write("Stage 3. Load ramcode: ") sys.stdout.flush() - _f = os.path.join(base_dir, 'hdsc', 'HDSC.'+hc32xx['RamCodeBinFile']) + _f = os.path.join(base_dir, 'hdsc', 'XHSC.'+hc32xx['RamCodeBinFile']) if transport.load_ramcode(_f): sys.stdout.write("%s\n" % hc32xx['RamCodeBinFile']) else: diff --git a/hdsc/HDSC.m_flash.hc010 b/hdsc/HDSC.m_flash.hc010 deleted file mode 100644 index 01ef1ada8e1080d143d7510c795c55276dc58e8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3328 zcmeHJ|8E@C5udlW=Ud-7&R(2^b7FjN&zPQ*2F`(k)1+m6=j`3t7i<&gFM)Om&^{tn zU8mn{l&X87q8AcG(zI0wNVQubB|?bUjgd`zy(B-Nn6{EHCMYUY9Ia@aM3tVu!0p)) z+j(bFwf{kX=t{Hm=Ixt#^WMySX7|78O%aw|P;zowG3At~uF_r&DC_$S3RjkHzmO)M(iOD+&CK$&PW^0RCuYWS27PqjJe)XFh?u zr5P_hHPD{V&u-O$|8CM5?_%CVZ?hASJnsg|ORdb3y?DI8BhBaPNv+G?~J)X2{| zsPoRGmre}K<<+YFFIFOlo?y95F_dl|MV(*UzDu#m=kNsiSyd0A2g+N*s;4Br65M@w zK+PW*_ZmQ7cL1)jp-er)Rn@&~N{qFCZb^7LJm4wqGuqKg&C)RoOl8@VcMcihzT@_vGlVzCz9U`umqPp0aIb;7Ic8`3FDDF2Q1E5TA@<^~$_ zF`;K;7PN&5z+aoRlHyD|m%#sTHGHAcN>S&0(`t}kaKjX4ZvyiBbgxd})mOom_0JMs9aLF&+}k{+O!N}cz8Br_ zD=EOd@PL(kIi=6H1c{lLS0j@7ENfY`?|IhD;@v`fR&dUV;AtfdRe90Ic`Nxs+RuQJ zO{AchwG7$_wUXI0puw@9b_dz{1<=|j;iaCYTpW&nTJ+F0B^4tAYG|~N>0E_AQ)McD zV6}Hz$Pb`QD3s9R87tX=HyU@ma9a`hJ&u=Z%v`7m0@ci3?rxPZS~zP^M!5yl)T+K| zI6L7)jjj0(k^em65NJUC21ou}e?@x}u3PJ9crJ@*W`sSYJOmMQYkp6Lq8|k9S;=jT zP_g4Svv=_s>-g0z*PPzpe4w!EF?SHS18d@&o zkj?!ey;-xJqFbJDw^h%&&CJivzj*7bW>c|ldniP0D`|~CqDVJ>@q;&&u^Z2Ml!D4V zt7T(V@#q*tn+p%4SDi>}!k-qE(puCaNU9NUw(g?Hg z`?@)@+EY9nFV6st*`5*O9nn!0V?5I3v&;U zRHQm2k%vcxjPeuE$i0{=&a8i)iD#EHq+S!iu2^*Qq98DCf7^c?Y=4Aq9^wm5pU zbg98Og0t)Fmz$=1slx3RuGap*>Bnj2($PGv~(CdX02R z-#av>Vh+9TY6q}7rb%nmurO<7qh;6d5VJIP+M*2nvpA})Ya76EJsTL#of?Q5Be`1t zwSkeG(tc>nEgx}5a&2A8{`Ne~)sjPF4Tx-KCM=A}pByz)|DZl!+sYA=rUkf;x9To>7FP3 zBugWm=|FDpf)~4i7CBrU9k!b^V(-9y7UA}O$rLDI_X(8HxQ$4Q@*?OIEBm7u&Mn&g z0tF(A_TC6q-w9VkUll|Kfd*IvsMm=nU6CouYF<=DYbHLs(Jh`fIE;p%dV?R0HO|2gk!Gjn#e67h&jH>fhd`F%kQ~w zEC42}c)R7(F8+TwB4<|a#AkG1ZA;GbRe{%Hjno~45Pj_r%UAEjq!cqNn(w)uC(-Z~ zxO{0jTgV DLAEw) diff --git a/hdsc/HDSC.m_flash.hc020 b/hdsc/HDSC.m_flash.hc020 deleted file mode 100644 index 138e7b68424a65b5b8eaac90e949c7ac7c6f6220..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 delta 438 zcmXAiJxjw-6o${eP1+=_SRJI*v|hi9UljbnMZ6@UZ7B{qDwsmWs|a>1I8<=aK~UnL zxHyT9T1N$cLV`L90flZ7MJ!dJ-qz(joR{}G$7-=!4pfvmj4VueZ8%+0;pkZVvOT29 zkr>FBdaMKsc49qcOc8})Dp)BN)Ds3G-~eg9&COn2yrKSmfR631Md2j`-LJYFiNZ)^ zoSkbP`%)`E06|WWD>+^--eZcAjQG`HYddaU#xPr3vSBX6jut< zX@d!!2fASxOsccmGlc0JO+X%e&?vonNBnv6d1*8gF*xaZwMNG^)f4jL4m(lc#g}ZKt6k& xR2%Y1HIiFYVesQI8!bP*mjdzlop~d#%NxJda`n4f&KCQW24qryK$ud1`~g78kXHZz diff --git a/hdsc/HDSC.m_flash.hc013 b/hdsc/XHSC.m_flash.hc013 similarity index 64% rename from hdsc/HDSC.m_flash.hc013 rename to hdsc/XHSC.m_flash.hc013 index db1c4714b61b29f982f80951d70f015b5fab205f..ce509b1dbd3db1ac8e094021b713f4302166d0be 100644 GIT binary patch delta 497 zcmXAjF=!J}7{|Z&?vlJauJn*l484Sx=#`+AMoo*<2G2auq(%iNr4gSP@O22rEnBXg zDlQFC5L_JUCJx4eLyHbB-R_8iC=oIUSrpC=rm;diFIS?_1A1hqa+wHFuq8P;p(ij~<`<|cu;n?+LT5RS==Xko>z#xk-MoX& zq7#n*j@f2eE=9on!KR}#kd7{h*IC(poE@})R(z%IW54^&9lV4y_lEHTt)XPlS!_v3 z>X4S4oN>}U@ID=&vnQNIGR3QYDBuNE!gVtgW_5Mxp&JV2^;D9yHOrMeCh~4EqfkJze zlIuIhdu2EE7A5Ac6j#5IuoZH;LN;HqF7FCrn(QmrKywVSrGyu(Lr1RO7G<@JXIYV3 zMn1Oh9u>Bt` zAgt7b;KhRqo&=+yu!0BwfP}h>AOsY8jUJ3;LQT8N^WpjOe4ejA=}+#fXue&(w=6{P zd{c#|&+307j+~4|1`?)RXfmaWjWzoQkr}3ZxW*L2v=M`OB~zVD3l8uKUfmgJ7V(fSgx7nVPC~KA z>oehE49T~@NWU6kawV$)jr$_5oYn}4HAo%~jv05Ba&vic@Zu39vz_hSym!m88DHHu zY};nyn8WEynBJu(xR8gUs1t@Gfv%b;9!*GY4rm2%jxHI~nZs+yxIc2obh^oVG_`2S za5=>AohLJd`BI4l0zYZM|!#C)|cw zcA6?&{Qb36Ne_SZ3$w(n^GcKO?%pu{^lzA2N5k}O@K|c1P9hih Hq739ee6ppg diff --git a/hdsc/HDSC.m_flash.hc015 b/hdsc/XHSC.m_flash.hc015 similarity index 100% rename from hdsc/HDSC.m_flash.hc015 rename to hdsc/XHSC.m_flash.hc015 diff --git a/hdsc/XHSC.m_flash.hc017 b/hdsc/XHSC.m_flash.hc017 new file mode 100644 index 0000000000000000000000000000000000000000..cdcf3c4a8fa1b406f11b78856839f2138075ef8f GIT binary patch literal 2766 zcmZuyeQXrR6@Rn0d$)II?6rMR8yjcue83q(dJvQn(l+bGtoP0)HZ-(}(xwAA(Lji_ z&PRJjX>%r!9w`!#wrM`9)`?QZRhza(HpNnob6QlDG*xebR4A#GBmJ-minKO%ZZU@K z8=FY^qbvP(=i|-q_h$CJH&z7HY5?^oAy8jJJa$4f3G2Ti=X@!d`b=mC{;2XNP&$P3 zpjz#JFi&>)qJ)yzQmd6kr?b7Sw4a@k=H3JKcv_)W`-TzGK-;6g*^*#ml6-#57&G9- z*2V)m9GkIy>bg8*nxg=tEv(wPyGknZ{@vIoI0uLgBVE(`EU)~&Cqcq~rL%$7rfo86GG&rfN%o1$ z2dk#f0ebB8|HTE3`|k8BBjD_E^(o~EZr{@cx6azNDWb}>Ck_R0T3kMM)vih@9qB33 zEoakHzHOD}(yTVsTutbvDJ3RgM0B~JDtQ1!B$|wH5ZSD%dtMbBYAORjC?N$Ow)s2o_`@5hzrppW9Vs z=5_^5AKy#!BJ*7rl0Hjn4qM@Q{kfurdCdKVp(pO} z7dv+`wAe;sWQ}N}@{^o>4_ySyi*aUrx=Ml-BnB_6WMB3B&%-aCZiJu0&ws0bdJbYs zptdMvV!fYPeE< z4qyASq>Zt|X~GVhWaq0hOST@v?D0qYdwFDfQG zEK&CR8MxbbPEx;@%JnMw{Dgv5`|{RE8q7e1T-N067s!TGvN z5{50P^(9bGUjm3k#Yq{!aomOPx7>?tpf^gjQD1azX~#bCa=*Z5zP9JZc2QNotK?M! zoM+vE95{n6-G@145Ai1_-w=K2xOvNgAKQt;t7nc?f;eLfb(vRwDTym@M#C=WBeDL_1 zq3rR9OCEUzV{g{};P{VpD3Yl4mTYj{m8t!GX$#^$_CrfxHKBJbA8V)x_hP#;-Mc^c zT<p!CS-@-4!30JzHxW#?i&uR~pX*%)&AY?HZtE+)i@e zMxam&FBm^IlsglJfr*Ol*$dzPxb>+-p<>J|XvlabkSM6Gu-YtuOIAZZIYQV0rq{JH z;qq4BnSk%T&Nfm?HA?o&dZ<`)l{DZ9KL9NvzOS55HI?6+8m~wu`CT^>NcFYVt@U?4 z)wX24SPC(DS#?{kofxm`uC3%TVj+&W-SfOU0bqWA*gt~(9{h6fI3k!OkRU~`{15MU zS0D>2e|zPnW%gVCAR;s*U&;BIpNo6XI#a-x13KpneH)Ct?o%2X-~%JOBUy literal 0 HcmV?d00001 diff --git a/hdsc/XHSC.m_flash.hc020 b/hdsc/XHSC.m_flash.hc020 new file mode 100644 index 0000000000000000000000000000000000000000..faafb1ea7206e432a1f11410c190840339b0e3f1 GIT binary patch literal 4096 zcmeG;|8pBxou9YbmDY-4uVOo=B#OPVcgY+HnTBb6QGcQHK~%yeTU8nDZ=`0h-qFEDW5WudkdBCBg+5x;?)b@%d(m&v%V?f3fbhO#Q;K#nBr+fbhYJ(QEB7!K@da zs7Nc@b58|d%MkgB^`95cDZE+F`>uVJa3hx+>EbBgD( zqp!oXV~2wxJ(HQg8c?&7X5YrC#pDUqrGosL1>jS8)5Vc*|8U;$U$G*Q7nFe7F@3_@ zVM3)a-Z5va($o&qIOHlyA^bYjuU@gFYPsgUl9f zNSZEBwdtxlNVnzRwm^58F86=0eo^!+xNo91-T>9K-QF4EB`2DSpRxE|+i67+);c_; z{J9yZnk(#}9VV%S$m^_1aTmIR|DO5zyzy9RqQmrx*O@l$@j&D{EuZE;c#5}*KQ`^< zUqSgEb)vx7s5lCY#?`C^v7fS)imL!-k9BLpE0dSipP_~Er`b*MCR#<@PorLY`yVX6 z*fITEw+}78uVp*^3G*pJp)>e$=1kcNuMFY;MJwF=yLZp>e|gr;#>6q`rl**{%=NFC zq4&A6lQ+K>8|Fh0mhi3{3WIGIS?gSHO{=++zepie%W7C;PLI^kN7#Fq%nzBo@CZFU zZ`2d&9Y4-S1=mF|s~y`zc@{S%s3;_{HmkI={Dcct3sYvS@mD=Od~~V7nnY)-ic}XBwm&_O=Ya9+2`+ik0;&OMRueB<+(slK8St= zSx@T2D^>Krc;?!dVYymWIGs5@1m<(rK8s)W5W<%F`Kw?)W7Sw>nSc;e)jA^s(YXS0 zXJf+xzU74Q% znH13nvQzicFqn^9t29m)X;%cyomN-fZLEat7RXW-0C*DT5uSV~OkVuO+jkD{yI1Oe z^*7f8hzlaf2*(8yx9uu`Nqh0qYH(e6URG?o9zX^c#KEN_&AV=-!}X)7_-xouXv?hB zz|j^KHld}3_OXx&i9Ym`p1fDPcb9SwXkm?xRr+{V$(8ljt0 z(7^QwA);?;lNdx7^LjF(AZ}+2& z%wISJk$tp=4&OFs*0A=vb==DoZu|G{ALRD;HCAF;`eYltO$qfn3Ypf4{!w80m(J|MkaD5;@h_kiBj4NSwnbs7g;ccl+ zcj*neVJp&ykRE9h1T%4co8-_Y!tB4W-rtGYrB`gqVE%$mLXNMctT|lY&Z#n6rV49e z-Lj%qceYy`fu@DR*=`c$up<1QY0?h|PiJ0K;y2GWbK_64_pWMnpJT_%bhip-wi2r; z#ejoKJ-JNtvTCfYYI9kYm`Ch<5p`iiQ5(UE^RutJKb2dCJAg~%xT14JhKuNXW1Euh z+om8g4)B1ICJ!h@{SeGOAjG$97vgUt?IP|E;C_^Sw~esxrpV_`&ad42f)dHOLw%T6 z#xR83m=|AIf+11PGVJ*I?hShW$lu^Bo29GzDSu}swmSOMH;DGtseEC*pB|+ zTR!8tcDpoPrd(TecCE8d?oBKHLNCKUc`%SWJ^$5%V*d2}(Svol_-rJRR!+}<{92_mbNXsNazKFhgD3>;pLB|wYFa2L+<=o8qyWbeF~p<<`V9s3-|_b zIt#BpnA*`s($FXvQm?E(-21qGymz8^<&pTbOMV#t-ErJeO22a?f23s^!r{Jkz1pVQ z0`0Ae!ew!UYm|!BLmc{|NcUhK;k?=&{z897LT|oihn`Io;OgFWPhcKEm6{J5?ow7?8 zvpVL=ttF|w@?-JYibggPOAjjU%lD_dgUyCr`ky8Gh@Q<(>T!%>mP9=TyY%)_lj=li zD^9(bp<_IHu{U&KEaCxtlextF*y{R;x6sRAk&V%uY;hZ_A@)X%TB}MQ#qX)@uy9H9 zI6EJta&e2_*bjH84F;>A^)$D&RLy4wqh)#bj5*RR?w+!|djMYmgdJr{Ai=n6dtGB5*PHFFq^Jdj!uJ$!e#I@a1|#1I zO+5bJxTw{Y-kiPai^cG6(y&K6(i&)Xw?Esu@;<)kW#U?YYdT5PlZsW4vY6KpL3n=2 zwgVi1;|KhNZ`rm@aednP03w6A+=3{{+oj*xuipUd`Od#x+P#SNV>uag_ii3_EBcnR zZsS}uh8-HN%?|@{-uJ%W-+S?Wr$%V+9U;lb1fACs?Ysu<0A?vj!tWrr%>~kb zm4IaDS2L5=&)2og`b0rD+9$1Z>!QOr@(9&}UR1#KJu+$a@q2U)|HL6MJ=Ua^n77gG=+v)n4yy;`Pq(uD_^!H&wOR zw>)yk3lKiy8JX#bI?XEQv!0}~EAv9&-4u}~t?2cS6yB`jy)&;8&LrH%?AuDy7bO%H z`TR$%9FEPcU4at)Vrq6OYe5e2)dlFxf%jA1nb!zZ|6jVU zz{M1!eOqDF-+ca&;{Kf7x6ibrM+1WXerkToucoKXUS4N1ohcV|F^w9w^EFW0CnQv# z=^$s-e^fnVU4aXL=bAq|@G+Dug4xtM*6BALrQgX;T8DmMQ81sdEZrgPpgU=3&Is+) zp~lWXY5Q_l=?Lfe6wJ7_Fi})vQF$&QT6zI{1I*n8tfaP8jto9&@x^h3tMiG6|8pEE zTPQngdQn#W%tkxfYyH_n$(JR%LUtsbb&Vu

vjib5q}EiuZ$A zZ}CWRXf=Ns|%PjV9=Q~&TBL@Mc5KXa)%XU>RWQ%I@I`hlyNl6`~z5-q@ z;Enc1y0u{Yt(cj358BdPTix{_`|An}tog861B^rm`gIpp2at?*V`ziQtA8!LKXU@^ zQ%kd#Q)dRj{Jymxzj z#-Zk2)hwpFDwoiQ)B;IN15acg;qaqj^45o6t{&aLRXqL6fBk0Uq@?%}A3!+cBr;6f z%QrWH<2vGPyA*7@3P1t}$lx%L=D%G?hqKY{kHu$6r;vcqhFFmy^gv`eyI$jHnWv0! zD3j1_v?qpqnmil!5xsR*3~{e_mY=hd2`;v0145ZK>=-W!e zCbYKdy)>>0w?uuAP2G^RVS7^`^$Cz@1GZMNvIgP!+;dZ)e$La>C){nB zcWx8MPyL=MzD}|DgNx(kY9C_PCw>+fb!(Z;2GUhP-BdRE53I92s`0dio}m9kTeaV& zx`qdWO1yOsnAp ziMxJlM`8EE+OFfnFH+A8Ukq-GZ^K=WwXLvwacy^QSWFW`(NAJsFxrV4MEipI>tS=K zs)JK?TC6%ZLv3*`R(bU~VHoNbvsa%Z5f1a#cc{)d8n~Q#OObznwUHbD1^wMrtnxfP zQ=nVOn&}d)g=!QyC^6cLV{uxJ6`&JUbXXozak8}B|fKPhq=DYXig$cq4T!5 z)gRI3)1O)1#E(1d{NENRH|N-@ZT9eENyV4#p;+CI_%oO1Up*p>U7kO6q%tGVR<|UT z%k!@sAy~KiyA`!jjo?iimtnXcZ)X*V-F##vbov>3IQDuXI(!%_B=fc(@qdn#K7LY##{db-j}*>r|dwb9-*^h)yK7{QE6 zCTbRW^O~E#(V)T1DX{a+%UuDn{>}uEw#164Xf&pw&YuC(HO%6GRp}E8QiuMRa-}1( zt&r`U5U2%HSRj#yvz%0)6M_Sip@se=zJ(U_mq~C> zLcci?4(~Y$!4}<}8>n|?rBM9UVEB_)8IOIYEI&ZUu!nrr$o%m$`!0V{;BTNEkF%P( zme2Qc`CcC1%i%)ZE!pB`J%rVOIqVhNcVYbvf%*1T77v_?{a#3o` z(c~q?_4&5sbAiT$osX~RPZ;U+v?1I1wls;jvvyuysZ&{mH{qKmnqWTYLmwCz$Fg5E z9S&h^bW_#D7uc1+A`Ov@WN{7U5WTWaU9XBe@c-*wuy`}(W-Bjf8QJ0+PQzWgyJuJr z8}(zp;`vXIj?FA@nZF473x*(54sWXG3jF$~y`76Uzjv$UcqHQ;De!x6lySGX2Mhcj z1bp8SdWtIk7Rt>$<`{K5ZgjMfTrA+s{!}R%D_bBH==pc0#TGG^y1SATT}@Xg3ZwAK=sfNv-!uUlQD~|NEUO$M-b8cIyzBf&T|%?BYQH literal 0 HcmV?d00001 diff --git a/hdsc/XHSC.m_flash.hc023 b/hdsc/XHSC.m_flash.hc023 new file mode 100644 index 0000000000000000000000000000000000000000..1f2e5604a6047fcdd568b93cae6906e35bc384db GIT binary patch literal 2654 zcmZ8jU2NOd6+V}uB$JZi*mj9+nj7OS1um7ZrV|7H!>zrQ0ylii;uHgSrKCF*KN(pq2mP zyF;ei!yp{qb9vAC?zx8_KdRCKv=x970H_K;PrfVW2%C8%6~!8QE7}aZ?cP`dYGAIO9V)po6D}0SD66=oJC)JO zC|n+n!u+es=a!2OmNgbikj%LD98EAHi{?0!GMYwk1<-~{Yt#VVxW@@>x7b*X@x;CX zlKEJpjHyIUXc{9Y%8?Piek2~7v zB0Ryrf%r*_!t-O-8BgvT^k?4GupZ1xYBq9$?T}?>28r7lqDhE5&#ybUc4U*>M!Ljk5m`ftcmGvcP!PzTM%>FSS8Ny26>=IQGeD$8#lH zm3AvBw^?(N*CbcqjUa2+e6hCJ@%XAWfIIEc2AmTNXzq9F-ng_0DPnr5yQVQCaa$-VuBw}! zQHxWdGH-mk87k|g5$2x#J>w1I%h*s&>y+dFjeaFZBQ)h+9E2T6ci!0C)XQ%AT}03w zmhr~KCNgYRV`n1AwlZeYc3dTnX|v+XzN zrBTWFgozj>f4RT6#u({T<3@5(n0M;^Chq2{ofu8v{wjYV_tL1ZD6m%D9({gb!@58Z zsYPR;yjk)fCb{q#^D&rL$4Jjx#@OL!n56SY=zsV+gDb-kHU73ZuLw>x{u+53uJA@L zhm>HF%Tyz^A?DUy$iq+x-?`DfV-!1ESi!D6CW-6DUObrqfDDp!>|$0&Ey2k8$<>`> z^hYG+F%MT=DQZepF}2-PYf!(xLQ+{vpd&SGWWx1ZXYR46+-m0w(5z>hQU3!;zw9=f zR6_rtNm>rI997>#?)WKswn34&lq1*!DFX6O1efw&007Vz(JHw1jT|ZZb_DJnQT+wA zFKFcp?mmxsyXYH$;*27i4ocCNTC)h^={E^L7toP>dogTe@*RaH{aE3keyOlj=oj{6 zwoLC8cV&)E_j~qa4r-UCm!|EzO*72}b=NlQP$9UB+=X2PnbT2&e!=VjY0savj?T$= zf1&AnD4$)t#QGL1+E^1wIHp5u)sZmSD#e2Z5WAk|`F zPm3+6MBck%aXd;4-pF!f*)dyT6do#*lw|S7e(q7l9Ml6V_)I4!a7eR6$*r%0?-W z3*fl}*sVa`pApdGiS7ZS`BkDpJ-lMa@y2h~@jt=ijb-u{fV7{;R3@?ueZX%`Xb?y0 z%ZGF!A>~^&NtJY|Af*J$oAct^=(TyCS~qPD2Sm;>_sK=UD0%ouvpUp;!SpwIU6)RMh@Mzs=&x3w44hmi^CRws3#RKP jg8vnIm+*h$1GL9zJuaZ*Xg@=Hgq9V7eg|z5Z3F%TK`C9b literal 0 HcmV?d00001 diff --git a/hdsc/XHSC.m_flash.hc032 b/hdsc/XHSC.m_flash.hc032 new file mode 100644 index 0000000000000000000000000000000000000000..d2e24b9fd9137f227dbbcbb996597de40bc86a4e GIT binary patch literal 3806 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 literal 0 HcmV?d00001 diff --git a/hdsc/XHSC.m_flash.hc048 b/hdsc/XHSC.m_flash.hc048 new file mode 100644 index 0000000000000000000000000000000000000000..7eef5813a49a05dc7d5a9c650dcd579704cf1dae GIT binary patch literal 1337 zcmW+#ZD>-R2u{n~2fNKJ?Y(JqTAWI8a?(}2)d_cs za?=UDfidDfP`5DznT)ZHfw&)`857o7hDz$@xIw!g>x7J{*#~Z&I@4I`*{vMT%X^;Z zInVj=KBtWbR0Tl)PEvZ0py)d}p8%&Uea=J84)je6C*z%Vt*MDjglX-P>0+JvK-9!` zZ+*L`SYy^d?J%W!hxZt=c%->ng!Wr@opV0Nb;wKyRrEW3gx=8fTHMtHk5vA^sPd+pN3E43q^hk zz{- zt5SOA9+zb_4l^qBFO?kzad)7Uq5zS~4+PpMn^bZHE;tJkXn<5)2oF*|Tu5cYzSO>iOA6qvcy!=bx@mZo z9#ER_UX8Q%YRS~zgb#BmV=9&(8W>9cf?2*Nq%)BTC4|`$W7Zg&D2s#5E7*l%Y|6+_ z4Ny)hV(~S_b@5PfB^$D@nqBVq%uaTLvf1pWyOdgUgW~GNe5bcXUMzY;5NcTSXSvpN z8Nr@G-nEjwU!;(+jo(Pav#J{);xDay<*?jN?U!%lx_#~RA^C6EEw_7j%Om2u@%d|p zY)qZeEW}|z1^lryy6($pyU}mtPbc?;!$v|JHa;)rjF*{-W1+!MQ*y75=cCX^PSSD-bY!G zo%U2`0pXOS$Fk5y7q8^@JT+g8Zj;5BHEMc8RxTU=eXi{Y&z>TqeVoPwrlDf_a?x(DKj_z{CWsLv4gidUzn@5g`iz>;1G0wX}@wBLFpCFJ1Cq-rKr3jb8T zjc;K|XTm2H3HuQruJtKloHi3{-p^G-q;h{rP$<+oNVV~OJ;kfm6V@_MNUxCW$i z47}Xr17mIV{A5|Gj4WTDB zudX$pjC-%G&_S9}-ihD0*J_*rQV&X(iG)kQTmlaf1yra37Mrg1+*~k|fgCCCgf;G<9_W|m! n2PiZ=5o~$e5A&Z1ye`EM!!xkhk;%Zvv0O)_Nu5b7sBq7V5 literal 0 HcmV?d00001 diff --git a/hdsc/XHSC.m_flash.hc050 b/hdsc/XHSC.m_flash.hc050 new file mode 100644 index 0000000000000000000000000000000000000000..c4159172fdb4eddfc23778727dcaae5c21f20102 GIT binary patch literal 1400 zcmYjQacmP+82|2i+wR(KbYq5t^~Sqyo$J_4K|*E(bM$6+R|*qiA`(Vk5yDjyQzT^V zFsAblD2jgo%0C)Ij587W!%T`|C@}p8n8vGvXh4&y(Z)oi1hAbmeSSA$;=6qB-rf7Y z-}`;v_j_RzB>>|#r!){CsWPv zyPp87&a%YP%PDY+dryp>7VOc{Kuz0iQKz6fF7)B zvpWTFh76h@^BMtO+qMm$md|YpjvU;0D9)8wwZKA2E6QcLTssl9zltZ5mzwTgv!al@ z)O6=MsL4cvwi$%}l$anS5wZqz(90LEPVMgdxw!Ia%|Dpko0gR9R4#JkW*C{i!je%j zi-@_DF%c1LP<@0|-()johs`M$z~m&LA7dXk`Czq|*Pxl#*hR+JEI_{(h>!*C86Log zylZ*7i5eB^7?4YPIPvVr_W0;Vu_Oexo1+He)CCprgy$Hm9%G+npfQt?1WkS{Bk}9y zT3VF<&Tw7l(!S8Ic5A4`CZVvchSu7F(2(5~+Gh8L7TKYYYWIhB+xtqefVGYdW;h;W z^(V0}-->yOe*I=1}S)SSYq*Xq#AVTKpVplalNdC+9lPwR7;vkMU` zEf*2>Fm*6F8n!@^Q7<3c$0|RKsdJ_*2uhWO)0D#}^Ze)b@A6^8wc%U1nZ(ZoO7W*cn z55@N**srHhQ~nNK6H#Ngzh2$uHaH87x($yxO&#N{X>Y5}QOS_Z^_cGjZBRLy8U{Fz z7~cPB(>cRef)c6$vU#X9)mZgA1{Jvmgh&1O@~+tUkhqGEzdZE5;wo)Lx)z#H@+qy> zW;r*^!+Vih(N}PyPuHMwW3FBfpW)P&lFRy19wf)TPHgGf literal 0 HcmV?d00001 diff --git a/hdsc/XHSC.m_flash.hc467 b/hdsc/XHSC.m_flash.hc467 new file mode 100644 index 0000000000000000000000000000000000000000..c583ceff2b5c1529583ca12d999d6c1a41442e25 GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/hdsc/XHSC.m_flash1.hc050 b/hdsc/XHSC.m_flash1.hc050 new file mode 100644 index 0000000000000000000000000000000000000000..8df2f233b8da24172b32c1e9b603ebf5f9ffab32 GIT binary patch literal 1356 zcmZ8gZ)_7~7=P}1+wQso-M{2;z42b@V1|xPr4_?WTX(u@7c5`@dI^Du{@y(U7F$Xt z#Z}SHV!N=?xsnPs9!;$gy7fdV#P{lpQ!8`XQssflRC0a7V&Xm*~56GkII$XDuk?tr$M+pGOJxz4+q->>}v zBid?dMB5cO60KabHM{VRnIR$ta*4ieigZ2JW)Ir=w-UR9K|3DUX&<*2!EXTqta^!Ik{JPFFJdJRj)Ihp&-1(+^*FhakCTW{N=*?u7kYw2E&p{7goSEFc z>gQtLGg_cOGnSH+%w#V5{f!7>Im$+3Vg@tjo;R{l!2#7zSoH&TxqPnx05WJFdjJHP z*9h?1@G!u{1YjIvpEmiS-^Xk09An@EB4j{&me-(`AK5ZuRH$n}&g+rnwxQv~_RV5R z2o9Uu4OaCrK?VGa%~A7vM4#m$q8_1cPL4(_kYwzNkN))qkLi5S ztFJ}>-Lk74lv!X1RCfmFRsZWQsPZ8_AI}BkIEXQ2ETb)cE3fr!XzA zAMfO+<-;NT3p3)D5< zy5MWkIVu^Fxe@Ek(gu~I_8`C%=J5Tm5Bw!4F$9#!L#3(4s^2lF$Tc85_KrXAiH{G6 zYx%^%ffI_Sv<(0(G@;~ITCAt#+#nC{M{7lY!HvFHgUU~H^>XACr!FpetS{sNON{uU zyt6shyL4BVVs+C_C4{$kuE<-Uz^dPiktr9~HwfT1_Gn@rfixlo`0P6^U}f1^G3P-R zJq8TckvSmZ9VqoRxGaCj+&*B{lMK$`OWcuFKS%sfbMf#s4r^$N^~c=xJVxU#p5fyy iAd^qd&X-pJ4-Ezv^PI9`nOP~fkY^!_!zS)LsQ&{y6ya?E literal 0 HcmV?d00001 diff --git a/hdsc/HDSC.m_flash_upper.hc006 b/hdsc/XHSC.m_flash_upper.hc006 similarity index 100% rename from hdsc/HDSC.m_flash_upper.hc006 rename to hdsc/XHSC.m_flash_upper.hc006