diff --git a/pureboot/pureboot.py b/pureboot/pureboot.py index 6aa28c5..a906382 100644 --- a/pureboot/pureboot.py +++ b/pureboot/pureboot.py @@ -1600,7 +1600,7 @@ def main(): if __name__ == "__main__": try: main() - except Error as error: + except (Error, OSError) as error: print(f"error: {error}", file=sys.stderr) sys.exit(1) except KeyboardInterrupt: diff --git a/tools/pbhw.py b/tools/pbhw.py index fdc45fb..270358d 100755 --- a/tools/pbhw.py +++ b/tools/pbhw.py @@ -82,22 +82,26 @@ class Suite: on silicon.""" module = pbrig.load_pureboot(self.rig.d.pureboot) found = None - for pct in module.scan_ratios(): - rate = module.scan_rate(self.rig.d.baud, pct) - self.rig.reset() - try: - port = module.Port(self.rig.d.port, rate) - except module.Error as error: - self.check("scan opens every probe rate", False, f"{rate} Bd: {error}") - return - try: - module.Loader(port).connect(min(self.rig.d.wait, 6.0)) - found = pct - break - except module.Error: - continue - finally: - port.close() + try: + for pct in module.scan_ratios(): + rate = module.scan_rate(self.rig.d.baud, pct) + self.rig.reset() + try: + port = module.Port(self.rig.d.port, rate) + except module.Error as error: + self.check("scan opens every probe rate", False, f"{rate} Bd: {error}") + return + try: + module.Loader(port).connect(min(self.rig.d.wait, 6.0)) + found = pct + break + except module.Error: + continue + finally: + port.close() + except Exception as error: # noqa: BLE001 — a rig hiccup is a result + self.check("scan walks the probe ladder", False, str(error)[:70]) + return self.check("scan finds the board's rate", found is not None, "no probe answered" if found is None else f"{found:+d} % of {self.rig.d.baud} Bd")