unleashed-firmware/scripts/fbt_tools/fbt_debugopts.py
Silent 4039ccbcca
fbt/ufbt: Ensure POSIX paths are passed to GDB on all platforms (#3360)
* fbt/ufbt: Ensure POSIX paths are passed to GDB on all platforms
  GDB heavily dislikes forward slashes from Windows paths and strips
  them internally instead of normalizing them. Account for this by
  passing POSIX paths explicitly.
* fbt: different approach for posix path handling
* fbt, ufbt: further fixes for path handling
* fbt: explicit path stringification
* linter fixes

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
Co-authored-by: あく <alleteam@gmail.com>
2024-03-21 07:36:38 +09:00

82 lines
2.2 KiB
Python

from SCons.Errors import UserError
def _get_device_serials(search_str="STLink"):
import serial.tools.list_ports as list_ports
return set([device.serial_number for device in list_ports.grep(search_str)])
def GetDevices(env):
serials = _get_device_serials()
if len(serials) == 0:
raise UserError("No devices found")
print("\n".join(serials))
def generate(env, **kw):
env.AddMethod(GetDevices)
env.SetDefault(
FBT_DEBUG_DIR="${POSIXPATH('$FBT_SCRIPT_DIR')}/debug",
)
if (adapter_serial := env.subst("$SWD_TRANSPORT_SERIAL")) != "auto":
env.Append(
OPENOCD_OPTS=[
"-c",
f"adapter serial {adapter_serial}",
]
)
# Final command is "init", always explicitly added
env.Append(
OPENOCD_OPTS=["-c", "init"],
)
env.SetDefault(
OPENOCD_GDB_PIPE=[
"|openocd -c 'gdb_port pipe; log_output ${POSIXPATH('$FBT_DEBUG_DIR')}/openocd.log' ${[SINGLEQUOTEFUNC(OPENOCD_OPTS)]}"
],
GDBOPTS_BASE=[
"-ex",
"source ${POSIXPATH('$FBT_DEBUG_DIR')}/gdbinit",
"-ex",
"target extended-remote ${GDBREMOTE}",
],
GDBOPTS_BLACKMAGIC=[
"-q",
"-ex",
"monitor swdp_scan",
"-ex",
"monitor debug_bmp enable",
"-ex",
"attach 1",
"-ex",
"set mem inaccessible-by-default off",
],
GDBPYOPTS=[
"-ex",
"source ${POSIXPATH('$FBT_DEBUG_DIR')}/FreeRTOS/FreeRTOS.py",
"-ex",
"source ${POSIXPATH('$FBT_DEBUG_DIR')}/flipperapps.py",
"-ex",
"source ${POSIXPATH('$FBT_DEBUG_DIR')}/flipperversion.py",
"-ex",
"fap-set-debug-elf-root ${POSIXPATH('$FBT_FAP_DEBUG_ELF_ROOT')}",
"-ex",
"source ${POSIXPATH('$FBT_DEBUG_DIR')}/PyCortexMDebug/PyCortexMDebug.py",
"-ex",
"svd_load ${POSIXPATH('$SVD_FILE')}",
"-ex",
"compare-sections",
"-ex",
"fw-version",
],
JFLASHPROJECT="${FBT_DEBUG_DIR}/fw.jflash",
)
def exists(env):
return True