unleashed-firmware/scripts/fbt_tools/fbt_debugopts.py
hedger ace0901125
[FL-3486,FL-3392] fbt: various improvements and bug fixes (#2982)
* fbt: extapps: compact debug format for .faps
* fbt: sdk: fixed symbol cache regen logic for removed-only symbols
* lib: elf_file: early .fap file handle release
* fbt: extapps: added FAP_VERSION define for application environments
* github: added appsymbols artifact
* api: updates for f18
* github: fixed early fap_dist
* fbt: added flash_dap
* ufbt: added flash_dap
* fbt: reworked flash target; scripts: program.py->fwflash.py and changes
* vscode: updated configuration
* scripts: fwflash.py: ugly fixes for ufbt
* scripts: fwflash.py: cleanup
* fbt: flash: always use .elf file
* scripts: fwflash: fixed elf file path

Co-authored-by: あく <alleteam@gmail.com>
2023-08-23 03:33:10 +09:00

81 lines
2.1 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="${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 ${FBT_DEBUG_DIR}/openocd.log' ${[SINGLEQUOTEFUNC(OPENOCD_OPTS)]}"
],
GDBOPTS_BASE=[
"-ex",
"source ${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 ${FBT_DEBUG_DIR}/FreeRTOS/FreeRTOS.py",
"-ex",
"source ${FBT_DEBUG_DIR}/flipperapps.py",
"-ex",
"source ${FBT_DEBUG_DIR}/flipperversion.py",
"-ex",
"fap-set-debug-elf-root ${FBT_FAP_DEBUG_ELF_ROOT}",
"-ex",
"source ${FBT_DEBUG_DIR}/PyCortexMDebug/PyCortexMDebug.py",
"-ex",
"svd_load ${SVD_FILE}",
"-ex",
"compare-sections",
"-ex",
"fw-version",
],
JFLASHPROJECT="${FBT_DEBUG_DIR}/fw.jflash",
)
def exists(env):
return True