+ def FlashTIHex(self, hexstring):
+ flash = segment_flash(TiHex(hexstring))
+ sled_path = os.path.join(os.path.dirname(__file__), "shellcode", "bslv2-flasher", "flasher.bin")
+ sled = open(sled_path, "rb").read()
+ for addr, data in flash:
+ # Maybe flash more than one block at a time? We do have 4K of ram
+ payload = struct.pack("<H", addr >> 8) + data
+ cksum = 256 - ((sum(ord(x) for x in "\001" + payload) + 1) % 256)
+ payload = "\001" + chr(cksum) + payload
+
+ assert (sum(ord(x) for x in payload) % 256) == 255
+
+ self.RxLargeDatablock(0x2400, sled + payload)
+ print repr(self.LoadPc(0x2400, True))
+
+