forked from platformio/platformio-core
162 lines
3.1 KiB
Python
162 lines
3.1 KiB
Python
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
GDB_DEFAULT_INIT_CONFIG = """
|
|
define pio_reset_halt_target
|
|
monitor reset halt
|
|
end
|
|
|
|
define pio_reset_run_target
|
|
monitor reset
|
|
end
|
|
|
|
target extended-remote $DEBUG_PORT
|
|
monitor init
|
|
$LOAD_CMDS
|
|
pio_reset_halt_target
|
|
$INIT_BREAK
|
|
"""
|
|
|
|
GDB_STUTIL_INIT_CONFIG = """
|
|
define pio_reset_halt_target
|
|
monitor reset
|
|
monitor halt
|
|
end
|
|
|
|
define pio_reset_run_target
|
|
monitor reset
|
|
end
|
|
|
|
target extended-remote $DEBUG_PORT
|
|
$LOAD_CMDS
|
|
pio_reset_halt_target
|
|
$INIT_BREAK
|
|
"""
|
|
|
|
GDB_JLINK_INIT_CONFIG = """
|
|
define pio_reset_halt_target
|
|
monitor reset
|
|
monitor halt
|
|
end
|
|
|
|
define pio_reset_run_target
|
|
monitor clrbp
|
|
monitor reset
|
|
monitor go
|
|
end
|
|
|
|
target extended-remote $DEBUG_PORT
|
|
monitor clrbp
|
|
monitor speed auto
|
|
pio_reset_halt_target
|
|
$LOAD_CMDS
|
|
$INIT_BREAK
|
|
"""
|
|
|
|
GDB_BLACKMAGIC_INIT_CONFIG = """
|
|
define pio_reset_halt_target
|
|
set language c
|
|
set *0xE000ED0C = 0x05FA0004
|
|
set $busy = (*0xE000ED0C & 0x4)
|
|
while ($busy)
|
|
set $busy = (*0xE000ED0C & 0x4)
|
|
end
|
|
set language auto
|
|
end
|
|
|
|
define pio_reset_run_target
|
|
pio_reset_halt_target
|
|
end
|
|
|
|
target extended-remote $DEBUG_PORT
|
|
monitor swdp_scan
|
|
attach 1
|
|
set mem inaccessible-by-default off
|
|
$LOAD_CMDS
|
|
$INIT_BREAK
|
|
|
|
set language c
|
|
set *0xE000ED0C = 0x05FA0004
|
|
set $busy = (*0xE000ED0C & 0x4)
|
|
while ($busy)
|
|
set $busy = (*0xE000ED0C & 0x4)
|
|
end
|
|
set language auto
|
|
"""
|
|
|
|
GDB_MSPDEBUG_INIT_CONFIG = """
|
|
define pio_reset_halt_target
|
|
end
|
|
|
|
define pio_reset_run_target
|
|
end
|
|
|
|
target extended-remote $DEBUG_PORT
|
|
monitor erase
|
|
$LOAD_CMDS
|
|
pio_reset_halt_target
|
|
$INIT_BREAK
|
|
"""
|
|
|
|
GDB_QEMU_INIT_CONFIG = """
|
|
define pio_reset_halt_target
|
|
monitor system_reset
|
|
end
|
|
|
|
define pio_reset_run_target
|
|
monitor system_reset
|
|
end
|
|
|
|
target extended-remote $DEBUG_PORT
|
|
$LOAD_CMDS
|
|
pio_reset_halt_target
|
|
$INIT_BREAK
|
|
"""
|
|
|
|
GDB_RENODE_INIT_CONFIG = """
|
|
define pio_reset_halt_target
|
|
monitor machine Reset
|
|
$LOAD_CMDS
|
|
monitor start
|
|
end
|
|
|
|
define pio_reset_run_target
|
|
pio_reset_halt_target
|
|
end
|
|
|
|
target extended-remote $DEBUG_PORT
|
|
$LOAD_CMDS
|
|
$INIT_BREAK
|
|
monitor start
|
|
"""
|
|
|
|
|
|
TOOL_TO_CONFIG = {
|
|
"jlink": GDB_JLINK_INIT_CONFIG,
|
|
"mspdebug": GDB_MSPDEBUG_INIT_CONFIG,
|
|
"qemu": GDB_QEMU_INIT_CONFIG,
|
|
"blackmagic": GDB_BLACKMAGIC_INIT_CONFIG,
|
|
"renode": GDB_RENODE_INIT_CONFIG,
|
|
}
|
|
|
|
|
|
def get_gdb_init_config(debug_options):
|
|
tool = debug_options.get("tool")
|
|
if tool and tool in TOOL_TO_CONFIG:
|
|
return TOOL_TO_CONFIG[tool]
|
|
server_exe = (debug_options.get("server") or {}).get("executable", "").lower()
|
|
if "st-util" in server_exe:
|
|
return GDB_STUTIL_INIT_CONFIG
|
|
return GDB_DEFAULT_INIT_CONFIG
|