X-Git-Url: https://defiant.homedns.org/gitweb/?a=blobdiff_plain;f=bootloader.py;h=17cf64f3e486ac44fdffddbd5511a4b63fc1d8b0;hb=5a2e8766d52bbd4251cfa784ca71e087673789ad;hp=a077d38db510f687759670608f86662d1b6f87b3;hpb=c9dbcc66879f0e1d8beb05b49179fcb200ef8cf0;p=pyshared.git diff --git a/bootloader.py b/bootloader.py index a077d38..17cf64f 100755 --- a/bootloader.py +++ b/bootloader.py @@ -14,6 +14,7 @@ CMD_WRITE = 0x3 CMD_ERASE_ALL = 0x5 CMD_JUMP = 0x6 CMD_PAGESIZE = 0x7 +CMD_I2C_ADDR = 0x80 CMD_INFO = 0x99 class bootloader: @@ -87,6 +88,7 @@ class bootloader: else: print "Addr 0x%x" % buf_addr handle(buf_addr, buf[:self.pagesize]) + buf_addr += self.pagesize buf = buf[self.pagesize:] elif typ == 3: # Start Segment Address Record self.boot_addr = int(data.encode("hex"), 16) @@ -166,6 +168,9 @@ class bootloader: raise Exception("Unsupported pagesize") return i + def set_i2c_addr(self, addr): + self.run_cmd(CMD_I2C_ADDR, addr) + def to_bootloader(addr): dev = i2c(addr) @@ -179,6 +184,7 @@ if __name__ == "__main__": parser = OptionParser(usage=usage) parser.add_option("-b", "--start-bootloader", action="store_true", dest="bToBoot", default=False, help="Start Bootloader") parser.add_option("-j", "--jump", action="store_true", dest="bJump", default=False, help="Jump to Program") + parser.add_option("-s", "--set-i2c-addr", dest="i2c_addr", type="int", help="Set I2C address") (options, args) = parser.parse_args() if not args: @@ -189,6 +195,9 @@ if __name__ == "__main__": to_bootloader(addr) sleep(1) loader = bootloader(addr) + if options.i2c_addr is not None: + print "Setting i2c address to 0x%X" % (options.i2c_addr) + loader.set_i2c_addr(options.i2c_addr) if len(args) > 1: loader.load(args[1]) if options.bJump: