@@ -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