Skip to content

Running debug.begin stop Teensy from running properly [VSCODE][Platformio] #12

@jparrish88

Description

@jparrish88

Hi @ftrias ,

I really love the idea of what you created here. I am doing my best to get it operational, however after multiple nights of trying different things. I'm a bit lost.

I am running:
Windows 10
VS Code 1.63.2
PlatformIO (core 5.2.4)
Teensyduino/framwork-arduinoteensy (1.154)
Teensy 4.1
GCCARMNOEEABI 1.504 (5.4.1)

I've ran both the launch configuration edits on the readme as well as and separately this script I found from the below posting (changed from teensy40 to teensy41):
https://community.platformio.org/t/full-support-for-teensy-4-0-build-test-debug-with-platformio/9249/11

[env:teensy41]
platform = teensy
board = teensy41
framework = arduino
build_type = debug
lib_deps = 
    https://github.com/ftrias/TeensyDebug/archive/refs/heads/master.zip
; activate Dual USB just as README says
build_flags =
    -D USB_DUAL_SERIAL
upload_protocol = teensy-cli
debug_port = COM7
debug_tool = custom
debug_load_mode = manual
debug_server = 
debug_init_cmds =
  target extended-remote $DEBUG_PORT
  $INIT_BREAK
  define pio_reset_run_target
  interrupt
  tbreak loop
  continue
  end
  define pio_restart_target
  echo Restart is undefined for now.
  end

debug_init_break =

I've also stripped out the complete portion below the build flags.

On build I get a gdbstub.cpp.o and a teensydebug.cpp.o along with a libTeensyDebug.a file.

BUT to my dismay, no matter how I build the program I typically have an issue where the hex file, once uploaded, ends up causing the teensy to never open up either serial port (in fact it looks dead or bricked). Luckily the button always brings it back alive.

That said, I posted it as an issue here. Simply because if I remove the debug.begin(SerialUSB1) and reprogram I get the dual serials to appear --- BUT I can't seem to connect with them over VSCODE or straight from the GDB tool.

Additionally, when I remove the debug.begin line I get weirdness where the teensy consistently disconnects. ( as if every few seconds it was performing a reset).

This is my complete code (as found from your Readme:

#include <Arduino.h>
#include "TeensyDebug.h"
#pragma GCC optimize ("O0")

int mark = 0;

void test_function() {
  mark++;
}

void setup() {
  // Use the first serial port as you usually would
  Serial.begin(19200);

  // Debugger will use second USB Serial; this line is not need if using menu option
  debug.begin(SerialUSB1);

  // debug.begin(Serial1);   // or use physical serial port

  halt();                    // stop on startup; if not, Teensy keeps running and you
                             // have to set a breakpoint or use Ctrl-C.
}

void loop() {
  test_function();
  Serial.println(mark);
  delay(1000);
}
Here is my complete build with debug.begin(SerialUSB1) still in the program. 
Processing teensy41 (platform: teensy; board: teensy41; framework: arduino)
-------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/teensy/teensy41.html
PLATFORM: Teensy (4.13.1) > Teensy 4.1
HARDWARE: IMXRT1062 600MHz, 512KB RAM, 7.75MB Flash
DEBUG: Current (jlink) External (jlink)
PACKAGES:
 - framework-arduinoteensy 1.154.0 (1.54)
 - tool-teensy 1.154.210805 (1.54)
 - toolchain-gccarmnoneeabi 1.50401.190816 (5.4.1)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 93 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <TeensyDebug> 0.0.1
Building in debug mode
Compiling .pio\build\teensy41\src\main.cpp.o
Compiling .pio\build\teensy41\lib9f0\TeensyDebug\TeensyDebug.cpp.o
Compiling .pio\build\teensy41\lib9f0\TeensyDebug\gdbstub.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\AudioStream.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\Blink.cc.o
Compiling .pio\build\teensy41\FrameworkArduino\CrashReport.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\DMAChannel.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\EventResponder.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\HardwareSerial1.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\HardwareSerial2.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\HardwareSerial3.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\HardwareSerial4.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\HardwareSerial5.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\HardwareSerial6.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\HardwareSerial7.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\HardwareSerial8.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\IPAddress.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\IntervalTimer.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\Print.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\WMath.cpp.o
Archiving .pio\build\teensy41\lib9f0\libTeensyDebug.a
Compiling .pio\build\teensy41\FrameworkArduino\WString.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\analog.c.o
Compiling .pio\build\teensy41\FrameworkArduino\bootdata.c.o
Compiling .pio\build\teensy41\FrameworkArduino\clockspeed.c.o
Compiling .pio\build\teensy41\FrameworkArduino\debugprintf.c.o
Compiling .pio\build\teensy41\FrameworkArduino\delay.c.o
Compiling .pio\build\teensy41\FrameworkArduino\digital.c.o
Compiling .pio\build\teensy41\FrameworkArduino\eeprom.c.o
Compiling .pio\build\teensy41\FrameworkArduino\extmem.c.o
Compiling .pio\build\teensy41\FrameworkArduino\interrupt.c.o
Compiling .pio\build\teensy41\FrameworkArduino\keylayouts.c.o
Compiling .pio\build\teensy41\FrameworkArduino\main.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\memcpy-armv7m.S.o
Compiling .pio\build\teensy41\FrameworkArduino\memset.S.o
Compiling .pio\build\teensy41\FrameworkArduino\new.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\nonstd.c.o
Compiling .pio\build\teensy41\FrameworkArduino\pwm.c.o
Compiling .pio\build\teensy41\FrameworkArduino\rtc.c.o
Compiling .pio\build\teensy41\FrameworkArduino\serialEvent.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\serialEvent1.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\serialEvent2.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\serialEvent3.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\serialEvent4.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\serialEvent5.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\serialEvent6.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\serialEvent7.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\serialEvent8.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\serialEventUSB1.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\serialEventUSB2.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_alloc_valid.c.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_calloc.c.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_free.c.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_hash.c.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_malloc.c.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_malloc_stats.c.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_pool.c.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_realloc.c.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_realloc_i.c.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_realloc_move.c.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_szalloc.c.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_util.c.o
Compiling .pio\build\teensy41\FrameworkArduino\sm_zalloc.c.o
Compiling .pio\build\teensy41\FrameworkArduino\startup.c.o
Compiling .pio\build\teensy41\FrameworkArduino\tempmon.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_audio.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_desc.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_flightsim.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_inst.cpp.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_joystick.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_keyboard.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_midi.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_mouse.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_mtp.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_rawhid.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_seremu.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_serial.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_serial2.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_serial3.c.o
Compiling .pio\build\teensy41\FrameworkArduino\usb_touch.c.o
Compiling .pio\build\teensy41\FrameworkArduino\yield.cpp.o
Archiving .pio\build\teensy41\libFrameworkArduino.a
Linking .pio\build\teensy41\firmware.elf
Calculating size .pio\build\teensy41\firmware.elf
Checking size .pio\build\teensy41\firmware.elf
Building .pio\build\teensy41\firmware.hex
teensy_size: Memory Usage on Teensy 4.1:
teensy_size:   FLASH: code:38308, data:5544, headers:8368   free for files:8074244
teensy_size:    RAM1: variables:17216, code:35976, padding:29560   free for local variables:441536
teensy_size:    RAM2: variables:24736  free for malloc/new:499552
================================================= [SUCCESS] Took 4.29 seconds =================================================
Terminal will be reused by tasks, press any key to close it.

I didn't install TeensyDebug though, as I am unsure where the correct directory is to install it for VSCODE and platformio. I found a directory in some of the Platformio folders, but there is also no Tools directory. I would install it, if needed, but the python script you made doesn't seem to show anything different with the build process happening; it more looks like where and how gdb is automatically opened and sent the programming commands. What I'm not sure is if there needs to be some special tool that uploads the program to begin with && how to even make that work with VSCODE. (It seems like that's not the case).

Essentially I'm hoping you can help me figure out what's going on? Why would teensy not even run properly when "debug.begin" is left in? Why would teensy just act like it's restarting over and over again when debug.begin is removed?

When debug.begin is removed and I try to connect to it with the gdb program, I get an error saying that the remote connection was closed. Windows also makes it sound like there was some sort of hardware reset occurring.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions