VSC Debug with stlink fails but upload is successful

Thank you !
The build is still running.

Let us know if the ISR vector is now at its correct place.

No change ??
.pio\build\BIGTREE_E3_RRF\firmware.elf :

section size addr

.isr_vector 392 134250496

.text 98948 134250888

.rodata 9612 134349836

.ARM 8 134359448

.init_array 40 134359456

.fini_array 8 134359496

.data 1020 536870912

.ccmram 0 268435456

.bss 6256 536871932

.noinit 0 536878188

._user_heap_stack 1536 536878188

.ARM.attributes 48 0

.debug_info 6780785 0

.debug_abbrev 280953 0

.debug_aranges 13784 0

.debug_line 455358 0

.debug_str 168119 0

.comment 102 0

.debug_ranges 43280 0

.debug_frame 41440 0

.debug_loc 250475 0

Total 8152164
arm-none-eabi-objcopy -O binary .pio\build\BIGTREE_E3_RRF\firmware.elf .pio\build\BIGTREE_E3_RRF\firmware.bin
=============================================================== [SUCCESS] Took 442.02 seconds ===============================================================

platformio.ini:

[env:BIGTREE_E3_RRF]

extends = stm32_variant

board = marlin_STM32F407VGT6_CCM

board_build.variant = MARLIN_BIGTREE_E3_RRF

board_build.offset = 0x8000

board_build.offset = 0x0

build_flags = ${stm32_variant.build_flags}

                  -DSTM32F407_5VX

                  -DMF_RX_BUFFER_SIZE=255

                  -DMF_TX_BUFFER_SIZE=255

build_type = debug

#debug_init_break = tbreak loop

debug_init_break = tbreak main

ini/stm32f4.ini:

BigTreeTech E3 RRF (STM32F407VGT6 ARM Cortex-M4)

#[env:BIGTREE_E3_RRF]

#extends = stm32_variant

#board = marlin_STM32F407VGT6_CCM

#board_build.variant = MARLIN_BIGTREE_E3_RRF

#board_build.offset = 0x8000

#build_flags = ${stm32_variant.build_flags}

-DSTM32F407_5VX

-DMF_RX_BUFFER_SIZE=255

-DMF_TX_BUFFER_SIZE=255

I have deleted the one in ini/st32f4.ini and the offset in the platformio.ini.
i am repeating the build.

Advanced Memory Usage is available via “PlatformIO Home > Project Inspect”
RAM: [= ] 5.6% (used 7276 bytes from 131072 bytes)
Flash: [= ] 10.5% (used 109580 bytes from 1048576 bytes)
.pio\build\BIGTREE_E3_RRF\firmware.elf :

section size addr

.isr_vector 392 134250496

.text 98948 134250888

.rodata 9612 134349836

.ARM 8 134359448

.init_array 40 134359456

.fini_array 8 134359496

.data 1020 536870912

.ccmram 0 268435456

.bss 6256 536871932

.noinit 0 536878188

._user_heap_stack 1536 536878188

.ARM.attributes 48 0

.debug_info 6780785 0

.debug_abbrev 280953 0

.debug_aranges 13784 0

.debug_line 455358 0

.debug_str 168119 0

.comment 102 0

.debug_ranges 43280 0

.debug_frame 41440 0

.debug_loc 250475 0

Total 8152164
arm-none-eabi-objcopy -O binary .pio\build\BIGTREE_E3_RRF\firmware.elf .pio\build\BIGTREE_E3_RRF\firmware.bin
=============================================================== [SUCCESS] Took 421.19 seconds ===============================================================

with the deletions:

This fails !!

PS D:\Projects\ROBODOS_FEB22\Giebler\Downloads\Marlin-tmc26x_cs_STM32F4\Marlin-tmc26x_cs> pio run -t BIGTREE_E3_RRF -v
Processing BIGTREE_E3_RRF (extends: stm32_variant; board: marlin_STM32F407VGT6_CCM; board_build.variant: MARLIN_BIGTREE_E3_RRF; board_build.offset: 0x0; build_flags: -g3 -D__MARLIN_FIRMWARE__ -DNDEBUG, -fmax-errors=5, -std=gnu++14 -DHAL_STM32, -DUSBCON -DUSBD_USE_CDC, -DTIM_IRQ_PRIO=13, -DSTM32F407_5VX, -DMF_RX_BUFFER_SIZE=255, -DMF_TX_BUFFER_SIZE=255; build_type: debug; debug_init_break: tbreak main; extra_scripts: pre:buildroot/share/PlatformIO/scripts/common-dependencies.py, pre:buildroot/share/PlatformIO/scripts/common-cxxflags.py, pre:buildroot/share/PlatformIO/scripts/preflight-checks.py, post:buildroot/share/PlatformIO/scripts/common-dependencies-post.py, pre:buildroot/share/PlatformIO/scripts/stm32_serialbuffer.py, pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py, buildroot/share/PlatformIO/scripts/offset_and_rename.py; platform: ststm32@~12.1; board_build.core: stm32; build_unflags: -std=gnu++11; src_filter: +<src/*> -<src/config> -<src/HAL> +<src/HAL/shared>, -<src/lcd/HD44780> -<src/lcd/TFTGLCD> -<src/lcd/dogm> -<src/lcd/tft> -<src/lcd/tft_io>, -<src/HAL/STM32/tft> -<src/HAL/STM32F1/tft>, -<src/lcd/e3v2/common> -<src/lcd/e3v2/creality> -<src/lcd/e3v2/proui> -<src/lcd/e3v2/jyersui> -<src/lcd/e3v2/marlinui>, -<src/lcd/menu>, -<src/lcd/menu/game/game.cpp> -<src/lcd/menu/game/brickout.cpp> -<src/lcd/menu/game/invaders.cpp>, -<src/lcd/menu/game/maze.cpp> -<src/lcd/menu/game/snake.cpp>, -<src/lcd/menu/menu_backlash.cpp>, -<src/lcd/menu/menu_bed_corners.cpp>, -<src/lcd/menu/menu_bed_leveling.cpp>, -<src/lcd/menu/menu_cancelobject.cpp>, -<src/lcd/menu/menu_delta_calibrate.cpp>, -<src/lcd/menu/menu_filament.cpp>, -<src/lcd/menu/menu_info.cpp>, -<src/lcd/menu/menu_job_recovery.cpp>, -<src/lcd/menu/menu_language.cpp>, -<src/lcd/menu/menu_led.cpp>, -<src/lcd/menu/menu_media.cpp>, -<src/lcd/menu/menu_mmu2.cpp>, -<src/lcd/menu/menu_password.cpp>, -<src/lcd/menu/menu_power_monitor.cpp>, -<src/lcd/menu/menu_spindle_laser.cpp>, -<src/lcd/menu/menu_temperature.cpp>, -<src/lcd/menu/menu_tmc.cpp>, -<src/lcd/menu/menu_touch_screen.cpp>, -<src/lcd/menu/menu_tramming.cpp>, -<src/lcd/menu/menu_ubl.cpp>, -<src/lcd/menu/menu_x_twist.cpp>, -<src/lcd/extui/anycubic_chiron>, -<src/lcd/extui/anycubic_i3mega>, -<src/lcd/extui/dgus> -<src/lcd/extui/dgus/fysetc> -<src/lcd/extui/dgus/hiprecy> -<src/lcd/extui/dgus/mks> -<src/lcd/extui/dgus/origin>, -<src/lcd/extui/dgus_reloaded>, -<src/lcd/extui/example>, -<src/lcd/extui/ftdi_eve_touch_ui>, -<src/lcd/extui/malyan>, -<src/lcd/extui/mks_ui>, -<src/lcd/extui/nextion>, -<src/lcd/lcdprint.cpp>, -<src/lcd/touch/touch_buttons.cpp>, -<src/sd/usb_flashdrive/lib-uhs2> -<src/sd/usb_flashdrive/lib-uhs3>, -<src/sd/usb_flashdrive/Sd2Card_FlashDrive.cpp>, -<src/sd/cardreader.cpp> -<src/sd/Sd2Card.cpp> -<src/sd/SdBaseFile.cpp> -<src/sd/SdFatUtil.cpp> -<src/sd/SdFile.cpp> -<src/sd/SdVolume.cpp>, -<src/HAL/shared/backtrace>, -<src/HAL/shared/cpu_exception>, -<src/HAL/shared/eeprom_if_i2c.cpp>, -<src/HAL/shared/eeprom_if_spi.cpp>, -<src/feature/adc> -<src/gcode/feature/adc>, -<src/feature/babystep.cpp>, -<src/feature/backlash.cpp>, -<src/feature/baricuda.cpp>
-<src/gcode/feature/baricuda>, -<src/feature/bedlevel/abl> -<src/gcode/bedlevel/abl>, -<src/feature/bedlevel/abl/x_twist.cpp>, -<src/feature/bedlevel/mbl> -<src/gcode/bedlevel/mbl>, -<src/feature/bedlevel/ubl> -<src/gcode/bedlevel/ubl>, -<src/feature/bedlevel/hilbert_curve.cpp>, -<src/feature/binary_stream.cpp> -<src/libs/heatshrink>, -<src/feature/bltouch.cpp>, -<src/feature/cancel_object.cpp> -<src/gcode/feature/cancel>, -<src/feature/caselight.cpp> -<src/gcode/feature/caselight>, -<src/feature/closedloop.cpp>, -<src/feature/controllerfan.cpp> -<src/gcode/feature/controllerfan>, -<src/feature/cooler.cpp> -<src/gcode/temp/M143_M193.cpp>, -<src/feature/dac> -<src/feature/digipot>, -<src/feature/direct_stepping.cpp> -<src/gcode/motion/G6.cpp>, -<src/feature/e_parser.cpp>, -<src/feature/easythreed_ui.cpp>, -<src/feature/encoder_i2c.cpp>, -<src/feature/ethernet.cpp> -<src/gcode/feature/network/M552-M554.cpp>, -<src/feature/fancheck.cpp>, -<src/feature/fanmux.cpp>, -<src/feature/filwidth.cpp> -<src/gcode/feature/filwidth>, -<src/feature/fwretract.cpp> -<src/gcode/feature/fwretract>, -<src/feature/host_actions.cpp>, -<src/feature/hotend_idle.cpp>, -<src/feature/joystick.cpp>, -<src/feature/leds/blinkm.cpp>, -<src/feature/leds/leds.cpp>, -<src/feature/leds/neopixel.cpp>, -<src/feature/leds/pca9533.cpp>, -<src/feature/leds/pca9632.cpp>, -<src/feature/leds/printer_event_leds.cpp>, -<src/feature/leds/tempstat.cpp>, -<src/feature/max7219.cpp>, -<src/feature/meatpack.cpp>, -<src/feature/mixing.cpp>, -<src/feature/mmu/mmu.cpp>, -<src/feature/mmu/mmu2.cpp> -<src/gcode/feature/prusa_MMU2>, -<src/feature/password> -<src/gcode/feature/password>, -<src/feature/pause.cpp>, -<src/feature/power.cpp>, -<src/feature/power_monitor.cpp> -<src/gcode/feature/power_monitor>, -<src/feature/powerloss.cpp> -<src/gcode/feature/powerloss>, -<src/feature/probe_temp_comp.cpp>, -<src/feature/repeat.cpp>, -<src/feature/runout.cpp> -<src/gcode/feature/runout>, -<src/feature/snmm.cpp>, -<src/feature/solenoid.cpp> -<src/gcode/control/M380_M381.cpp>, -<src/feature/spindle_laser.cpp> -<src/gcode/control/M3-M5.cpp>, -<src/feature/stepper_driver_safety.cpp>, -<src/feature/tmc_util.cpp> -<src/module/stepper/trinamic.cpp>, -<src/feature/tramming.cpp>, -<src/feature/twibus.cpp>, -<src/feature/z_stepper_align.cpp>, -<src/gcode/bedlevel/G26.cpp>, -<src/gcode/bedlevel/G35.cpp>, -<src/gcode/bedlevel/G42.cpp>, -<src/gcode/bedlevel/M420.cpp> -<src/feature/bedlevel/bedlevel.cpp>, -<src/gcode/calibrate/G33.cpp>, -<src/gcode/calibrate/G34.cpp>, -<src/gcode/calibrate/G34_M422.cpp>, -<src/gcode/calibrate/G76_M871.cpp>, -<src/gcode/calibrate/G425.cpp>, -<src/gcode/calibrate/M12.cpp>, -<src/gcode/calibrate/M48.cpp>, -<src/gcode/calibrate/M100.cpp>, -<src/gcode/calibrate/M425.cpp>, -<src/gcode/calibrate/M665.cpp>, -<src/gcode/calibrate/M666.cpp>, -<src/gcode/calibrate/M852.cpp>, -<src/gcode/control/M10-M11.cpp>, -<src/gcode/control/M42.cpp> -<src/gcode/control/M226.cpp>, -<src/gcode/config/M43.cpp>, -<src/gcode/config/M217.cpp>, -<src/gcode/config/M218.cpp>, -<src/gcode/config/M221.cpp>, -<src/gcode/config/M301.cpp>, -<src/gcode/config/M302.cpp>, -<src/gcode/config/M304.cpp>, -<src/gcode/config/M305.cpp>, -<src/gcode/config/M540.cpp>, -<src/gcode/config/M575.cpp>, -<src/gcode/config/M672.cpp>, -<src/gcode/control/M7-M9.cpp>, -<src/gcode/control/M211.cpp>, -<src/gcode/control/M350_M351.cpp>, -<src/gcode/control/M605.cpp>, -<src/gcode/feature/advance>, -<src/gcode/feature/camera>, -<src/gcode/feature/i2c>, -<src/gcode/feature/L6470>, -<src/gcode/feature/leds/M150.cpp>, -<src/gcode/feature/leds/M7219.cpp>, -<src/gcode/feature/macro>, -<src/gcode/feature/mixing/M163-M165.cpp>, -<src/gcode/feature/mixing/M166.cpp>, -<src/gcode/feature/pause/G27.cpp>, -<src/gcode/feature/pause/G60.cpp>, -<src/gcode/feature/pause/G61.cpp>, -<src/gcode/feature/pause/M125.cpp>, -<src/gcode/feature/pause/M600.cpp>, -<src/gcode/feature/pause/M603.cpp>, -<src/gcode/feature/pause/M701_M702.cpp>, -<src/gcode/feature/trinamic/M122.cpp>, -<src/gcode/feature/trinamic/M569.cpp>, -<src/gcode/feature/trinamic/M906.cpp>, -<src/gcode/feature/trinamic/M911-M914.cpp>, -<src/gcode/feature/trinamic/M919.cpp>, -<src/gcode/geometry/G17-G19.cpp>, -<src/gcode/geometry/G53-G59.cpp>, -<src/gcode/geometry/M206_M428.cpp>, -<src/gcode/host/M16.cpp>, -<src/gcode/host/M113.cpp>, -<src/gcode/host/M154.cpp>, -<src/gcode/host/M360.cpp>, -<src/gcode/host/M876.cpp>, -<src/gcode/lcd/M0_M1.cpp>, -<src/gcode/lcd/M117.cpp>, -<src/gcode/lcd/M250.cpp> -<src/gcode/lcd/M256.cpp>, -<src/gcode/lcd/M300.cpp>, -<src/gcode/lcd/M414.cpp>, -<src/gcode/lcd/M73.cpp>, -<src/gcode/lcd/M995.cpp>, -<src/gcode/motion/G2_G3.cpp>, -<src/gcode/motion/G5.cpp>, -<src/gcode/motion/G80.cpp>, -<src/gcode/motion/M290.cpp>, -<src/gcode/probe/G30.cpp>, -<src/gcode/probe/G31_G32.cpp>, -<src/gcode/probe/G38.cpp>, -<src/gcode/probe/M401_M402.cpp>, -<src/gcode/probe/M851.cpp>, -<src/gcode/probe/M951.cpp>, -<src/gcode/scara>, -<src/gcode/sd>, -<src/gcode/sd/M32.cpp>, -<src/gcode/sd/M808.cpp>, -<src/gcode/temp/M104_M109.cpp>, -<src/gcode/temp/M123.cpp>, -<src/gcode/temp/M155.cpp>, -<src/gcode/temp/M192.cpp>, -<src/gcode/units/G20_G21.cpp>, -<src/gcode/units/M82_M83.cpp>, -<src/gcode/units/M149.cpp>, -<src/libs/BL24CXX.cpp> -<src/libs/W25Qxx.cpp>, -<src/libs/L64XX> -<src/module/stepper/L64xx.cpp> -<src/HAL/shared/HAL_spi_L6470.cpp>, -<src/libs/MAX31865.cpp>, -<src/libs/hex_print.cpp>, -<src/libs/least_squares_fit.cpp>, -<src/libs/nozzle.cpp> -<src/gcode/feature/clean>, -<src/module/delta.cpp>, -<src/module/planner_bezier.cpp>, -<src/module/polargraph.cpp>, -<src/module/printcounter.cpp>, -<src/module/probe.cpp>, -<src/module/scara.cpp>, -<src/module/servo.cpp> -<src/gcode/control/M280.cpp> -<src/gcode/config/M281.cpp> -<src/gcode/control/M282.cpp>, -<src/module/stepper/TMC26X.cpp> +<src/HAL/STM32> +<src/HAL/shared/backtrace>; framework: arduino; lib_deps: ; monitor_speed: 250000; debug_tool: stlink; monitor_flags: --quiet, --echo, --eol, LF, --filter, colorize, --filter, time)
-------------------------------------------------------------------------------------------------------------------------------------------------------------CONFIGURATION: https://docs.platformio.org/page/boards/ststm32/marlin_STM32F407VGT6_CCM.html
PLATFORM: ST STM32 (12.1.1) > STM32F407VG (128k RAM, 64k CCM RAM, 1024k Flash
HARDWARE: STM32F407VGT6 168MHz, 128KB RAM, 1MB Flash
DEBUG: Current (stlink) External (jlink, stlink)
PACKAGES:

  • framework-arduinoststm32 4.10900.200819 (1.9.0)
  • framework-cmsis 2.50501.200527 (5.5.1)
  • toolchain-gccarmnoneeabi 1.90201.191206 (9.2.1)
    arm-none-eabi-g++ -o “D:\Projects\ROBODOS_FEB22\Giebler\Downloads\Marlin-tmc26x_cs_STM32F4\Marlin-tmc26x_cs\Marlin\Marlin.ino.cpp” -x c++ -fpreprocessed -dD
    -E “C:\Users\Phillip\AppData\Local\Temp\tmp2b3wa5u8”
    LDF: Library Dependency Finder → Library Dependency Finder (LDF) — PlatformIO latest documentation
    LDF Modes: Finder ~ chain, Compatibility ~ soft
    Found 10 compatible libraries
    Scanning dependencies…
    Dependency Graph
    |-- 1.0 (C:\Users\Phillip.platformio\packages\framework-arduinoststm32\libraries\SPI)
    |-- 1.1.2 (C:\Users\Phillip.platformio\packages\framework-arduinoststm32\libraries\Servo)
    |-- 2.0.1 (C:\Users\Phillip.platformio\packages\framework-arduinoststm32\libraries\EEPROM)
    |-- 1.0 (C:\Users\Phillip.platformio\packages\framework-arduinoststm32\libraries\SoftwareSerial)
    |-- 1.0.0 (C:\Users\Phillip.platformio\packages\framework-arduinoststm32\libraries\IWatchdog)
    |-- 1.0 (C:\Users\Phillip.platformio\packages\framework-arduinoststm32\libraries\Wire)
    Building in debug mode
    *** Do not know how to make File target `BIGTREE_E3_RRF’ (D:\Projects\ROBODOS_FEB22\Giebler\Downloads\Marlin-tmc26x_cs_STM32F4\Marlin-tmc26x_cs\BIGTREE_E3_RRF). Stop.
    ================================================================ [FAILED] Took 7.67 seconds ================================================================

This builds but the Address does not change !
pio run -v

Output:

.pio\build\BIGTREE_E3_RRF\firmware.elf :

section size addr

.isr_vector 392 134250496

.text 98948 134250888

.rodata 9612 134349836

.ARM 8 134359448

.init_array 40 134359456

.fini_array 8 134359496

.data 1020 536870912

.ccmram 0 268435456

.bss 6256 536871932

.noinit 0 536878188

._user_heap_stack 1536 536878188

.ARM.attributes 48 0

.debug_info 6780785 0

.debug_abbrev 280953 0

.debug_aranges 13784 0

.debug_line 455358 0

.debug_str 168119 0

.comment 102 0

.debug_ranges 43280 0

.debug_frame 41440 0

.debug_loc 250475 0

Total 8152164
arm-none-eabi-objcopy -O binary .pio\build\BIGTREE_E3_RRF\firmware.elf .pio\build\BIGTREE_E3_RRF\firmware.bin
=============================================================== [SUCCESS] Took 426.04 seconds ===============================================================

I will have a look at this later in the evening.

Thanks for your help.
I wish you a nice evening.

Ah. While a verbose build shows that the final linker command is

–defsym=LD_MAX_SIZE=1048576 -Wl,–defsym=LD_MAX_DATA_SIZE=131032 -Wl,–defsym=LD_FLASH_OFFSET=0x0

Aka, no offset, it also shows that the used linker script is

-Wl,–default-script C:/Users/Max/.platformio/packages/framework-arduinoststm32@4.10900.200819/variants/MARLIN_BIGTREE_E3_RRF/ldscript.ld

which is sourced from

and that has the offset hardcoded, which is really, really bad practice especially when dynamic configurations exist.

After going into the project’s buildroot\share\PlatformIO\variants\MARLIN_BIGTREE_E3_RRF\ldscript.ld file and changing 0x8008000 to 0x8000000, doing the project task Clean and then Verbose Build, PlatformIO shows me

.pio\build\BIGTREE_E3_RRF\firmware.elf  :
section                size        addr
.isr_vector             392   134217728

Which is the correct 0x8000000.

Try reproducing that and debug again.

That plus VSC Debug with stlink fails but upload is successful - #23 by maxgerhardt is this the solution.

You did it !
Thanks for helping me so much.
I can debug now !

Every time i start debug, a build is done before debugging. If there are no changes, can i debug without building ?

On simple projects yes, more complicated projects like Marlin may inject dynamic macros into the build system that change for every build, e.g. most prominently, the build timetamp that changes every second. As such, a rebuild is done. That’s on Marlin then.