Started working on internal checksum transfers

This commit is contained in:
Luxferre
2021-12-20 16:35:51 +02:00
parent 5d260d3440
commit f5637b9bc7
2 changed files with 50 additions and 28 deletions
+16 -14
View File
@@ -32,6 +32,12 @@ def crc16_fdl(data: bytes): # used in FDL1/2 mode
crc += (crc >> 16)
return ~crc & 0xffff
def chksum32(data: bytes): # used in flashing mode
cksum = 0
for c in data:
cksum = (cksum + c) & 0xffffffff
return cksum
def hdlc_encode(data, fdl = False, nocrc = False):
if nocrc:
crc = 0
@@ -120,18 +126,14 @@ BSL_CMD_READ_MIDST = 0x11
BSL_CMD_READ_END = 0x12
BSL_CMD_KEEP_CHARGE = 0x13
BSL_CMD_EXTTABLE = 0x14
BSL_CMD_READ_FLASH_UID = 0x15
BSL_CMD_READ_SOFTSIM_EID = 0x16
BSL_CMD_POWER_OFF = 0x17
BSL_CMD_CHECK_ROOT = 0x19
BSL_CMD_READ_CHIP_UID = 0x1a
BSL_CMD_ENABLE_WRITE_FLASH = 0x1b
BSL_CMD_ENABLE_SECUREBOOT = 0x1c
BSL_CMD_READ_RF_TRANSCEIVER_TYPE = 0x24
BSL_CMD_CHECK_BAUD = FLAG_BYTE
BSL_CMD_READ_CHIP_UID = 0x1A
BSL_CMD_ENABLE_WRITE_FLASH = 0x1B
BSL_CMD_ENABLE_SECUREBOOT = 0x1C
BSL_CMD_EXEC_NAND_INIT = 0x21
BSL_DDR_VERIFY = 0x26
BSL_CMD_CHECK_BAUD = FLAG_BYTE
BSL_CMD_END_PROCESS = 0x7F
@@ -218,8 +220,11 @@ def shape_data_packet(dtype, data, dlen = 0):
packethdr = pack('>HH', dtype, dlen)
return packethdr + data
def cmd_data_start(targetAddr, targetLen):
datahdr = pack('>LL', targetAddr, targetLen)
def cmd_data_start(targetAddr, targetLen, externalCrc = 0):
if externalCrc:
datahdr = pack('>LLL', targetAddr, targetLen, externalCrc)
else:
datahdr = pack('>LL', targetAddr, targetLen)
return shape_data_packet(BSL_CMD_START_DATA, datahdr)
def cmd_data_send(data):
@@ -251,9 +256,6 @@ def cmd_read_chip_type():
def cmd_read_sector_size():
return shape_cmd_packet(BSL_CMD_READ_SECTOR_SIZE)
def cmd_read_flash_info():
return shape_cmd_packet(BSL_CMD_READ_FLASH_INFO)
def cmd_read_flash(targetAddr, targetLen, offset):
return pack('>HHLLL', BSL_CMD_READ_FLASH, 12, targetAddr, targetLen, offset)