mirror of https://github.com/commaai/panda.git
28 lines
723 B
Python
28 lines
723 B
Python
|
#!/usr/bin/env python3
|
||
|
from panda import Panda, PandaDFU, STBootloaderSPIHandle
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
try:
|
||
|
from openpilot.system.hardware import HARDWARE
|
||
|
HARDWARE.recover_internal_panda()
|
||
|
Panda.wait_for_dfu(None, 5)
|
||
|
except Exception:
|
||
|
pass
|
||
|
|
||
|
p = PandaDFU(None)
|
||
|
assert isinstance(p._handle, STBootloaderSPIHandle)
|
||
|
cfg = p.get_mcu_type().config
|
||
|
|
||
|
print("restoring from backup...")
|
||
|
addr = cfg.bootstub_address
|
||
|
for i, sector_size in enumerate(cfg.sector_sizes):
|
||
|
print(f"- sector #{i}")
|
||
|
p._handle.erase_sector(i)
|
||
|
with open(f"sector_{i}.bin", "rb") as f:
|
||
|
dat = f.read()
|
||
|
assert len(dat) == sector_size
|
||
|
p._handle.program(addr, dat)
|
||
|
addr += len(dat)
|
||
|
|
||
|
p.reset()
|