mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-15 06:26:49 +00:00
48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
# SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
|
# SPDX-License-Identifier: Unlicense OR CC0-1.0
|
|
import os
|
|
import re
|
|
import typing
|
|
|
|
import pexpect
|
|
import pytest
|
|
from pytest_embedded_idf import IdfDut
|
|
from pytest_embedded_idf.utils import idf_parametrize
|
|
|
|
if typing.TYPE_CHECKING:
|
|
from conftest import OpenOCD
|
|
|
|
|
|
def _test_idf_gdb(openocd: 'OpenOCD', dut: IdfDut) -> None:
|
|
# Need to wait a moment to connect via OpenOCD after the hard reset happened.
|
|
# Along with this check that app runs ok
|
|
dut.expect('Hello world!')
|
|
|
|
# Don't need to have output from UART anymore
|
|
dut.serial.stop_redirect_thread()
|
|
|
|
with openocd.run(), open(os.path.join(dut.logdir, 'gdb.txt'), 'w') as gdb_log, pexpect.spawn(
|
|
f'idf.py -B {dut.app.binary_path} gdb --batch',
|
|
timeout=60,
|
|
logfile=gdb_log,
|
|
encoding='utf-8',
|
|
codec_errors='ignore',
|
|
) as p:
|
|
p.expect(re.compile(r'add symbol table from file.*bootloader.elf'))
|
|
p.expect(
|
|
re.compile(r'add symbol table from file.*rom.elf')
|
|
) # if fail here: add target support here https://github.com/espressif/esp-rom-elfs
|
|
p.expect_exact('hit Temporary breakpoint 1, app_main ()')
|
|
|
|
|
|
@pytest.mark.jtag
|
|
@idf_parametrize('target', ['esp32', 'esp32c2', 'esp32s2'], indirect=['target'])
|
|
def test_idf_gdb(openocd: 'OpenOCD', dut: IdfDut) -> None:
|
|
_test_idf_gdb(openocd, dut)
|
|
|
|
|
|
@pytest.mark.usb_serial_jtag
|
|
@idf_parametrize('target', ['esp32s3', 'esp32c3', 'esp32c6', 'esp32h2'], indirect=['target'])
|
|
def test_idf_gdb_usj(openocd: 'OpenOCD', dut: IdfDut) -> None:
|
|
_test_idf_gdb(openocd, dut)
|