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
 |