diff --git a/activate_boot.py b/activate_boot.py index a42a5a8..56eebdc 100644 --- a/activate_boot.py +++ b/activate_boot.py @@ -48,7 +48,7 @@ def breed_boot_change(gw, dev, fw_num, fw_addr, fw_name): with open(fn_local, "wb") as file: file.write(data) gw.upload(fn_local, fn_remote) - pe = dev.get_part_num(env.addr) + pe = dev.get_part_num(env.addr, '#') if pe < 0: die('Partition for writing ENV {} not found!'.format("0x%08X" % env.addr)) part_addr = dev.partlist[pe]['addr'] diff --git a/read_info.py b/read_info.py index 0557016..adf6afa 100644 --- a/read_info.py +++ b/read_info.py @@ -144,10 +144,14 @@ class DevInfo(): if part['addr'] == 0 and part['size'] > 0x00800000: continue # skip "ALL" part addr = name_or_addr - if addr >= part['addr'] and addr < part['addr'] + part['size']: - return i + if comptype and comptype == '#': # range + if addr >= part['addr'] and addr < part['addr'] + part['size']: + return i + else: + if addr == part['addr']: + return i else: - if comptype and comptype[0] == 'e': + if comptype and comptype[0] == 'e': # endswith if part['name'].lower().endswith(name_or_addr.lower()): return i if part['name'].lower() == name_or_addr.lower(): @@ -164,15 +168,14 @@ class DevInfo(): lst.append(p) return lst - def get_part_by_addr(self, addr): - if not self.partlist: + def get_part(self, name_or_addr, comptype = None): + i = self.get_part_num(name_or_addr, comptype) + if i < 0: return None - for i, part in enumerate(self.partlist): - if part['addr'] == 0 and part['size'] > 0x00800000: - continue # skip "ALL" part - if part['addr'] == addr: - return part - return None + return self.partlist[i] + + def get_part_by_addr(self, addr): + return get_part(addr, None) def get_rootfs(self, verbose = None): verbose = verbose if verbose is not None else self.verbose @@ -516,7 +519,7 @@ class DevInfo(): return ret env_breed_addr = 0x60000 # breed env addr for r3g env_breed_size = 0x20000 - pb = self.get_part_num(env_breed_addr) + pb = self.get_part_num(env_breed_addr, '#') if pb >= 0: plst.append(1000 + pb) for i, p in enumerate(plst): @@ -848,7 +851,7 @@ if __name__ == "__main__": file.write("\n") file.write("_Bootloader_info_:\n") for i, bl in enumerate(info.bl_list): - p = info.get_part_num(bl.addr) + p = info.get_part_num(bl.addr, '#') name = info.partlist[p]['name'] if p >= 0 else "" file.write(" {}:\n".format(name)) file.write(" addr: 0x%08X \n" % (bl.addr if bl.addr else 0)) @@ -858,7 +861,7 @@ if __name__ == "__main__": file.write("\n") file.write("_ENV_info_:\n") for i, env in enumerate(info.env_list): - p = info.get_part_num(env.addr) + p = info.get_part_num(env.addr, '#') name = info.partlist[p]['name'] if p >= 0 else "" file.write(" {}:\n".format(name)) file.write(" addr: 0x%08X \n" % (env.addr if env.addr else 0))