Skip to content

Commit f1f3f70

Browse files
authored
Enhance ROM ELF file search patterns and sorting
1 parent 305b10e commit f1f3f70

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

monitor/filter_exception_decoder.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -173,24 +173,27 @@ def find_rom_elf(self, chip_name):
173173
)
174174
return None
175175

176-
# Search for ROM ELF files matching the chip
177-
# Pattern: <chip_name>_rev<rev>_rom.elf
178-
pattern = os.path.join(rom_elfs_dir, f"{chip_name}_rev*.elf")
179-
rom_files = glob.glob(pattern)
176+
# Patterns commonly seen: <chip>_rev<rev>_rom.elf, <chip>_rev<rev>.elf, <chip>_rom.elf
177+
patterns = [
178+
os.path.join(rom_elfs_dir, f"{chip_name}_rev*_rom.elf"),
179+
os.path.join(rom_elfs_dir, f"{chip_name}_rev*.elf"),
180+
os.path.join(rom_elfs_dir, f"{chip_name}*_rom.elf"),
181+
os.path.join(rom_elfs_dir, f"{chip_name}*.elf"),
182+
]
183+
rom_files = []
184+
for p in patterns:
185+
rom_files.extend(glob.glob(p))
186+
# de-dup
187+
rom_files = sorted(set(rom_files))
180188

181-
if not rom_files:
182-
sys.stderr.write(
183-
"%s: No ROM ELF files found for chip %s in %s\n"
184-
% (self.__class__.__name__, chip_name, rom_elfs_dir)
185-
)
186-
return None
187-
188-
# Sort by revision number and return the lowest (most compatible)
189-
# This handles cases where specific revision isn't available
190-
rom_files.sort()
189+
# Sort by numeric revision (lowest first) if present; otherwise push to the end
190+
def _rev_key(path):
191+
m = re.search(r"_rev(\d+)", os.path.basename(path))
192+
return int(m.group(1)) if m else 10**9
193+
rom_files.sort(key=_rev_key)
191194
return rom_files[0]
192195

193-
except Exception as e:
196+
except (PlatformioException, OSError) as e:
194197
sys.stderr.write(
195198
"%s: Error accessing ROM ELF package: %s\n"
196199
% (self.__class__.__name__, e)

0 commit comments

Comments
 (0)