mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-29 19:17:28 +08:00
committed by
Felix Ruess
parent
68d95cc411
commit
d707d9b850
@@ -30,6 +30,7 @@ from optparse import OptionParser
|
|||||||
import usb
|
import usb
|
||||||
import dfu
|
import dfu
|
||||||
import time
|
import time
|
||||||
|
import numpy
|
||||||
|
|
||||||
APP_ADDRESS = 0x08002000
|
APP_ADDRESS = 0x08002000
|
||||||
SECTOR_SIZE = 2048
|
SECTOR_SIZE = 2048
|
||||||
@@ -50,8 +51,8 @@ def stm32_erase(dev, addr):
|
|||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
def stm32_write(dev, data):
|
def stm32_write(dev, data, crc):
|
||||||
dev.download(2, data)
|
dev.download(2+crc, data)
|
||||||
while True:
|
while True:
|
||||||
status = dev.get_status()
|
status = dev.get_status()
|
||||||
if status.bState == dfu.STATE_DFU_DOWNLOAD_BUSY:
|
if status.bState == dfu.STATE_DFU_DOWNLOAD_BUSY:
|
||||||
@@ -151,6 +152,7 @@ if __name__ == "__main__":
|
|||||||
valid_manufacturers.append("Black Sphere Technologies")
|
valid_manufacturers.append("Black Sphere Technologies")
|
||||||
valid_manufacturers.append("TUDelft MavLab. 2012->13")
|
valid_manufacturers.append("TUDelft MavLab. 2012->13")
|
||||||
valid_manufacturers.append("1 BIT SQUARED")
|
valid_manufacturers.append("1 BIT SQUARED")
|
||||||
|
valid_manufacturers.append("S.Krukowski")
|
||||||
|
|
||||||
# list of tuples with possible stm32 (autopilot) devices
|
# list of tuples with possible stm32 (autopilot) devices
|
||||||
stm32devs = []
|
stm32devs = []
|
||||||
@@ -232,14 +234,33 @@ if __name__ == "__main__":
|
|||||||
addr = options.addr
|
addr = options.addr
|
||||||
print("Programming memory from 0x%08X...\r" % addr)
|
print("Programming memory from 0x%08X...\r" % addr)
|
||||||
|
|
||||||
|
use_crc = False
|
||||||
|
if "CRC" in product:
|
||||||
|
use_crc = True
|
||||||
|
|
||||||
init_progress_bar()
|
init_progress_bar()
|
||||||
|
|
||||||
while binf:
|
while binf:
|
||||||
update_progress_bar((addr - options.addr), bin_length)
|
update_progress_bar((addr - options.addr), bin_length)
|
||||||
stm32_erase(target, addr)
|
stm32_erase(target, addr)
|
||||||
stm32_write(target, binf[:SECTOR_SIZE])
|
|
||||||
|
|
||||||
binf = binf[SECTOR_SIZE:]
|
if use_crc:
|
||||||
|
write_block = binf[:(SECTOR_SIZE)]
|
||||||
|
write_block_array = numpy.frombuffer(write_block, "uint8")
|
||||||
|
crc1 = 0
|
||||||
|
crc2 = 0
|
||||||
|
for b in write_block_array:
|
||||||
|
crc1 += b
|
||||||
|
crc2 += crc1 & 0xFF
|
||||||
|
crc1 &= 0xFF
|
||||||
|
crc2 &= 0xFF
|
||||||
|
write_block += struct.pack('1B', crc1)
|
||||||
|
write_block += struct.pack('1B', crc2)
|
||||||
|
stm32_write(target, write_block, 1)
|
||||||
|
else:
|
||||||
|
stm32_write(target, binf[:SECTOR_SIZE], 0)
|
||||||
|
|
||||||
|
binf = binf[(SECTOR_SIZE):]
|
||||||
addr += SECTOR_SIZE
|
addr += SECTOR_SIZE
|
||||||
|
|
||||||
# Need to check all the way to 100% complete
|
# Need to check all the way to 100% complete
|
||||||
|
|||||||
Reference in New Issue
Block a user