diff --git a/SConstruct b/SConstruct index eda109849..ee49f9820 100644 --- a/SConstruct +++ b/SConstruct @@ -202,8 +202,21 @@ distenv.AlwaysBuild(copro_dist) distenv.Alias("copro_dist", copro_dist) +enable_debug_target = distenv.PhonyTarget( + "enable_debug", + [ + [ + "${PYTHON3}", + "${FBT_SCRIPT_DIR}/enable_debug.py", + ], + ], +) +coreenv.AlwaysBuild(enable_debug_target) + + firmware_flash = distenv.AddFwFlashTarget(firmware_env) distenv.Alias("flash", firmware_flash) +distenv.Depends(firmware_flash, enable_debug_target) # To be implemented in fwflash.py firmware_jflash = distenv.AddJFlashTarget(firmware_env) @@ -242,7 +255,7 @@ firmware_blackmagic = distenv.PhonyTarget( GDBREMOTE="${BLACKMAGIC_ADDR}", FBT_FAP_DEBUG_ELF_ROOT=firmware_env["FBT_FAP_DEBUG_ELF_ROOT"], ) -distenv.Depends(firmware_blackmagic, firmware_flash) +distenv.Depends(firmware_blackmagic, enable_debug_target) # Debug alien elf debug_other_opts = [ @@ -446,16 +459,11 @@ distenv.PhonyTarget( # Find blackmagic probe -distenv.PhonyTarget( +get_blackmagic_target = distenv.PhonyTarget( "get_blackmagic", - [ - [ - "${PYTHON3}", - "${FBT_SCRIPT_DIR}/enable_debug.py", - ], - "@echo $( ${BLACKMAGIC_ADDR} $)", - ], + "@echo $( ${BLACKMAGIC_ADDR} $)", ) +distenv.Depends(get_blackmagic_target, enable_debug_target) # Find STLink probe ids diff --git a/scripts/enable_debug.py b/scripts/enable_debug.py index 28fda6e0e..956666c6f 100644 --- a/scripts/enable_debug.py +++ b/scripts/enable_debug.py @@ -8,21 +8,20 @@ def main(): if len(flippers) != 1: return - port = serial.Serial() - port.port = flippers[0].device - port.timeout = 0.1 - port.write_timeout = 0.1 - port.baudrate = 115200 # Doesn't matter for VCP - port.open() + port = serial.Serial(flippers[0].device, 230400) + port.timeout = 2 except Exception: return try: - port.write( - b"sysctl debug 1\r" - b"sysctl sleep_mode legacy\r" - b"sysctl log_level debug\r" - ) + port.read_until(b">: ") + for cmd in ( + b"sysctl debug 1\r", + b"sysctl sleep_mode legacy\r", + b"sysctl log_level debug\r", + ): + port.write(cmd) + port.read_until(b">: ") except Exception: pass finally: diff --git a/scripts/ufbt/SConstruct b/scripts/ufbt/SConstruct index 7f07971f0..564107c36 100644 --- a/scripts/ufbt/SConstruct +++ b/scripts/ufbt/SConstruct @@ -136,6 +136,18 @@ dist_env = env.Clone( ], ) + +enable_debug_target = dist_env.PhonyTarget( + "enable_debug", + [ + [ + "${PYTHON3}", + "${FBT_SCRIPT_DIR}/enable_debug.py", + ], + ], +) +env.AlwaysBuild(enable_debug_target) + flash_target = dist_env.FwFlash( dist_env["UFBT_STATE_DIR"].File("flash"), dist_env["FW_ELF"], @@ -144,6 +156,7 @@ dist_env.Alias("firmware_flash", flash_target) dist_env.Alias("flash", flash_target) if env["FORCE"]: env.AlwaysBuild(flash_target) +dist_env.Depends(flash_target, enable_debug_target) firmware_jflash = dist_env.JFlash( @@ -165,13 +178,14 @@ firmware_debug = dist_env.PhonyTarget( GDBREMOTE="${OPENOCD_GDB_PIPE}", ) -dist_env.PhonyTarget( +blackmagic_target = dist_env.PhonyTarget( "blackmagic", "${GDBPYCOM}", source=dist_env["FW_ELF"], GDBOPTS="${GDBOPTS_BASE} ${GDBOPTS_BLACKMAGIC}", GDBREMOTE="${BLACKMAGIC_ADDR}", ) +dist_env.Depends(blackmagic_target, enable_debug_target) # Debug alien elf debug_other_opts = [ @@ -461,10 +475,11 @@ dist_env.Precious(app_template_dist) dist_env.NoClean(app_template_dist) dist_env.Alias("create", app_template_dist) -dist_env.PhonyTarget( +get_blackmagic_target = dist_env.PhonyTarget( "get_blackmagic", "@echo $( ${BLACKMAGIC_ADDR} $)", ) +dist_env.Depends(get_blackmagic_target, enable_debug_target) dist_env.PhonyTarget( "get_apiversion",