Пример #1
0
 def test_row_bytes(self):
     ihex = IHex()
     self.assertEqual(ihex.write(), ':00000001FF\r\n')
     ihex.insert_data(6,
             'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuwvxyz')
     self.assertEqual(ihex.write(),
             ':100006004142434445464748494A4B4C4D4E4F5062\r\n' \
             ':100016005152535455565758595A30313233343554\r\n' \
             ':10002600363738396162636465666768696A6B6C1E\r\n' \
             ':0E0036006D6E6F707172737475777678797A6B\r\n' \
             ':00000001FF\r\n')
     ihex.set_row_bytes(8)
     self.assertEqual(ihex.write(),
             ':080006004142434445464748CE\r\n' \
             ':08000E00494A4B4C4D4E4F5086\r\n' \
             ':0800160051525354555657583E\r\n' \
             ':08001E00595A303132333435F8\r\n' \
             ':0800260036373839616263646A\r\n' \
             ':08002E0065666768696A6B6C86\r\n' \
             ':080036006D6E6F70717273743E\r\n' \
             ':06003E0075777678797AEF\r\n' \
             ':00000001FF\r\n')
     ihex.set_row_bytes(32)
     self.assertEqual(ihex.write(),
             ':200006004142434445464748494A4B4C4D4E4F505152535455565758595A303132333435CC\r\n' \
             ':1E002600363738396162636465666768696A6B6C6D6E6F707172737475777678797ABF\r\n' \
             ':00000001FF\r\n')
Пример #2
0
    def opProgram(self, data, addr_start=0):
        addr_hi_prev = None
        addr = addr_start
        while data:
            addr_hi, addr_lo = divmod(addr, 0x10000)
            if addr_hi != addr_hi_prev:
                addr_hi_prev = addr_hi
                cmd = self._protocol.getCmd('select_memory_page', PPPP=addr_hi)
                self._opDotCmd(cmd)

            addr_end = addr_lo + len(data)
            if addr_end >= 0x10000:
                addr_end = 0xffff
            size = addr_end + 1 - addr_lo
            buf, data = data[:size], data[size:]
            cmd = self._protocol.getCmd('program_start', PPPP=addr_lo, QQQQ=addr_end)
            self._opDotCmd(cmd)
            self._wdelayHack()
            addr = addr + size

            # send data
            ihex = IHex()
            ihex.insert_data(addr_lo, buf)
            ihex.set_row_bytes(255)
            buf = ihex.write()
            # split to lines, remove, empty strings
            buf = [b for b in buf.splitlines() if b]
            # remove hex end if file
            buf = buf[:-1]
            for d in buf:
                self._opDotCmd(str(d, 'ascii').upper())
                self._wdelayHack()
Пример #3
0
 def to_ihex(self, as_str=True):
     self._assemble()
     ihex = IHex()
     ihex.insert_data(self.offset, self._code_as_bytes())
     if as_str:
         return ihex.write()
     else:
         return ihex