mirror of
https://github.com/lora-aprs/LoRa_APRS_iGate.git
synced 2025-12-06 07:42:00 +01:00
64 lines
2 KiB
Python
64 lines
2 KiB
Python
|
|
import os
|
||
|
|
import pytest
|
||
|
|
import serial
|
||
|
|
from testlib.common import runProcess
|
||
|
|
|
||
|
|
|
||
|
|
class EspFlash:
|
||
|
|
def __init__(self, port):
|
||
|
|
self.pio_package_path = "$HOME/.platformio/packages"
|
||
|
|
self.port = port
|
||
|
|
|
||
|
|
def runESPTool(self, cmd):
|
||
|
|
runProcess(
|
||
|
|
f"/usr/bin/python3 {self.pio_package_path}/tool-esptoolpy/esptool.py --chip esp32 --port {self.port} {cmd}")
|
||
|
|
|
||
|
|
def erase(self):
|
||
|
|
self.runESPTool("erase_flash")
|
||
|
|
|
||
|
|
def write(self, addr, bin_file):
|
||
|
|
self.runESPTool(
|
||
|
|
f"--baud 460800 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_size detect {addr} {bin_file}")
|
||
|
|
|
||
|
|
def verify(self, addr, bin_file):
|
||
|
|
self.runESPTool(
|
||
|
|
f"--baud 460800 --before default_reset --after hard_reset verify_flash --flash_mode dio --flash_size detect {addr} {bin_file}")
|
||
|
|
|
||
|
|
def make_spiffs(self, fs_path, fs_bin):
|
||
|
|
self.runESPTool(
|
||
|
|
f"{self.pio_package_path}/tool-mkspiffs/mkspiffs_espressif32_arduino -c {fs_path} -p 256 -b 4096 -s 1507328 {fs_bin}")
|
||
|
|
|
||
|
|
|
||
|
|
class EspDut:
|
||
|
|
def __init__(self, port):
|
||
|
|
self.port = port
|
||
|
|
self.serial = None
|
||
|
|
self.flash = EspFlash(self.port)
|
||
|
|
|
||
|
|
def writeFlash(self, bin_dir, fs_path=None):
|
||
|
|
self.flash.erase()
|
||
|
|
if fs_path:
|
||
|
|
fs_bin = "spiffs.bin"
|
||
|
|
self.flash.make_spiffs(fs_path, fs_bin)
|
||
|
|
self.flash.write("2686976", fs_bin)
|
||
|
|
self.flash.write("0x1000", f"{bin_dir}/bootloader_dio_40m.bin")
|
||
|
|
self.flash.write("0x8000", f"{bin_dir}/partitions.bin")
|
||
|
|
self.flash.write("0xe000", f"{bin_dir}/boot_app0.bin")
|
||
|
|
self.flash.write("0x10000", f"{bin_dir}/firmware.bin")
|
||
|
|
|
||
|
|
def openPort(self):
|
||
|
|
self.serial = serial.Serial(self.port, 115200, timeout=0)
|
||
|
|
|
||
|
|
def getLine(self):
|
||
|
|
return self.serial.readline()
|
||
|
|
|
||
|
|
def closePort(self):
|
||
|
|
if self.serial:
|
||
|
|
self.serial.close()
|
||
|
|
self.serial = None
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture
|
||
|
|
def ESP():
|
||
|
|
return EspDut(os.environ["ESP_PORT"])
|