UPDATE: I've now figured out how to allow the use of WROOM and WROVER boards to successfully use JTAG. I'm still in the process of determining exactly what is required and I will issue an update (possibly a video) on the details.
Great, looking forward for this update! Astonishingly a ESP32 D1 Mini works here without any problem, although having a WROOM. But the others ("normal" size) with a WROOM do not work.
Unbelievably serendipitous, Ralph. The ESP-Prog that I ordered some time ago arrived earlier this week. I was psyching myself up to research "what do I do next", but you've done the hard work for me. Thank you so much!
@@RalphBacon You're a gent, sir! I'm plate-spinning on several projects at the moment and my head is full of node red and mqtt, but when I get back to microcontrollers, I'll be sure to pick this up (especially as you now have some insights on WROOM and WROVER!).
Thanks for this video! There are a million guides for installing the drivers and connecting the esp-prog, but this is the first I've seen showing what to actually do in vscode. Very helpful!
Love your work Ralph! Can appreciate editing out the part where you talk through the detail that can be found elsewhere. Without knowing the additional work involved, but have you considered sharing those parts in a "sub-channel" of sorts? Having only gotten into this the past few months, I've found those parts incredibly invaluable and your explainations have given a noob the simple heuristics as an on ramp into a subject area that can quickly evlove into jargon.
Good idea, but the idea of a "sub channel" (ie even more work!) means I would have to petition for a 32-hour day. When that happens I'll move this idea forward! 😉
God I hope not, I'd have to spend more time in spreadsheets and wouldn't get anytime to tinker. I really value following your work mate. Your channel is one of the good corners of the internet and the idea of openly contributing the way you do, in a shed while fighting some bin lids, is now the life goal I strive for.
You'll find it either works pretty much straight away (once you've done the driver substitution thing) or not at all. Or maybe 1-in-10 which is about as useful as, well, you make it up.
Just a few days ago I figured out how to do do JTAG debugging on my ESP32 using PlatformIO. My ESP32 board is an MH ET LIVE ESP32DevKIT and it has a WROOM module on it, so I know it works on the WROOM modules too. By the way, you don't NEED an ESP-Prog, a cheap Chinese J-Link will work just as fine too (as it can do both JTAG and SWD debugging), as long as you change the relevant settings on PlatformIO. ESP32s have an inbuilt JTAG debug controller so anything that can communicate through JTAG would work. Btw I must say that using Linux for this work is much easier, as there is no driver swapping needed and you can even do this without having to rely on Platform IO. If there is enough interest I can make some content on how to use Arduino CLI through VSCode, including setting up inline debugging, so people can leave the confines of PlatformIO and use whatever editor they want.
Yes, WROOM and WROVER modules do work now that I've figured it out (why is that information so difficult to find?) so it's good news all round. Regarding doing a video on debugging, only you will be able to gauge the interest level and then see whether that hypothesis is correct once you have published! Welcome to my world!
@@RalphBacon Kudos to you for taking the time and putting in the effort! As for making content myself, I’ll first complete the smartwatch project I’m working on, which I’ve been neglecting. The tricky bit is Bluetooth Low Energy!
Thanks for Video ... On a Mimic Panel PCB I designed I had made at JLCPCB I left space for a Nano or an ESP32, the board which is A4 size has 8 x MCP23017's plus a number of CD4049's and ULN2803 to drive LED's on the Mimic display, which runs via the I2C bus control all of the 128 IO ports are connected and do work great, the Nano worked fine and is 55% full so didnt bother with trying to get the ESP32 to work, I do have all working and works great ... the sketch was fun all 1700 lines to date also trying to remember which mcp does what ... Regards John
I have just started travelling the same road and purchased an ESP-PROG to debug an ESP32 S2 Mini board. Hooked it all up as per the documentation you mention and it didn't work. At first I thought it was a bug. However, I discovered that the JTAG pins on an S2 and I think a S3 are different. Sadly they don't seem to break out all those pins on the S2-Mini board. You have to go to the chip docs to get the pinouts for JTAG. I have now got my self an ESP32 Dev board and the debugging works fine. The only thing that doesn't work for me is inspecting the contents of a struct or using an expression. It is ok for simple variables. Thank you for the video, I picked up a couple of tips from it.
Excellent that you got it working on a different board. Yes, the pins for the S2 Mini (and C3) are different and they don't have too many pins exposed anyway. I've now got it working on the WROOM and WROVER variants too (the ones with the lidded ESP32 modules). Details in a later video, I should think.
@@RalphBacon The board I obtained is WROOM-S2 Dev board and it has the can on top. I'd be interested to know which WROOM boards don't work and why. Look forward to your reveal!
David, Could you share more about how you got it working on S3 (VSC-platformio)? I am totally stuck trying to get it to work with S3-devkit board. (I do have the pins and fuse sorted out)
@@PeteDubler I haven't got it working on the S3, mainly because the JTAG pins are different on the S2 and I think the S3, so I have been using the ESP32-Vroom Dev board. That works fine. It is a shame the mini boards don't break out the JTAG pins, but I understand the constraint on pins with the size of the smaller board.
So if I understand correctly, you can step thru code via 2 techniques: 1) use a commercial software-only solution (Visual Studio + Visual Micro Arduino Extension) 2) use a JTAG Adapter (esp-prog) and open-source software (VS Code + PlatformIO) If going with option2, how does debugging the esp32's dual (Tensilicia Xtensa LX6 microprocessor) cores work? I assume it can also do the ESP32-C3's Risc-V variety too? I'd like to use an RTOS (FreeRTOS . Zephyr, etc), not the usual Arduino IDE flow ( setup() , loop() , etc).. but can't get Esp-Prog + VsCode + PlatformIO to consistently load GDB/OpenOCD, reset the target, download and halt on main(). There's an older IDF 4.3 video (YuriR?) that describes setting up json files (prerun, launch, tasks) that automates the setup and fixes reliability issues, but IDF (5.2.3), VSCode, and Extension have all changed so the instructions no longer work. Anyone have a sample platformio.ini file settings they can share (framework, build_type, etc)?
Sorry, no specific platformio.ini available that does this, I'm afraid. But: If you just include a '''' int main() {...} '''' as part of your code, you don't need the setup/loop construct. At least, it works for me, but it doesn't really give you anything more than the standard (and easy-to-use) Arduino construct. The ESP32 contains/compiles with Espressif's flavour of FreeRTOS and works as you might expect, although having an ESP32 reference guide to hand does aid one's understanding, I've found.
I have used the Arduino IDE on an esp32 Bluetooth simple project and it worked. The VC PlatformIO is nice and I am learning to use it. The new Orange Pi5 might be a good DIY project to try it out? 😎 Thanks for the great info.
Thanks for the debug video. Very helpful. Wish I could live in VSC/PIO IDE exclusively, but their compiler has some quirks that get in the way of using libraries (e.g. Espalexa and WiFiManger) that support (legacy) ESP8266 chips. (The compiler post errors if it cannot read external (irrelevant) libs that only come into play if using an ESP8266) The Arduino 2.0x compiler will finish and upload an INO file that completely flummoxes the VSC/PIO compiler. As a result, have resorted to "hybrid" IDE where the VSC/PIO dev/edit/pre-compile then shifts to Arduino 2.04 for compile, (fix,) upload. Having a real debugger is a huge improvement. Thanks!
You say the compiler objects about conditional library inclusion, but the compiler is the same one used by the Arduino IDE. So maybe you just need to include the libraries manually and let the linker throw stuff away it doesn't need?
@@RalphBacon Thank you for the thoughtful response. The process differences in library management between the two platforms are probably the biggest part of it. (It would be "life changing" to figure out a VSC "Central Library Repository" approach. I'm from the "build once - use many" school.) That being said, I've run across a couple of times where the VSC compile will load and then the object code sent to the chip will "spin loop" while the Arduino (2.04) IDE compile of the same sketch (Copy-Paste) runs perfectly. I'm guessing it the difference in the chip libraries between the two. It feels like being in that novice user "Twilight Zone" where a little knowledge is sufficient to REALLY screw things up. Again thanks and keep up the good work.
I have become addicted to your videos! I'm not a beginner, but there's much I don't know. So a big thanks. BTW, you mentioned, around three months ago, that you figured out how to successfully debug using the WROOM and WROVER boards. Have you posted that info anywhere? I've been checking your vids and github, but haven't seen anything.
Hi Ralph. Why did you decide on PlatformIO extension in the Visual Studio IDE instead of using the PlatformIO IDE? I've never used a big boy IDE before but this line-by-line debugging thing has me interested.
I'm not aware of any PlatformIO IDE _per se_ as it runs on top of the Visual Studio Code platform, as an add-on. I chose this platform because I've used VS professionally for too many years to remember, and whilst the "Code" version is much more lightweight, it's plenty powerful enough for smaller projects, although I do miss the "break if condition true" debugging (so you can set your program off and when the "faulty" condition arises the program stops and shows you what's what).
Hey Ralph…excellent video! Can you tell me, were your experiments on WROOM chips or WROVER, or a mix. Currently I’ve got several dev boards but they’re all WROVER versions. I’ve used JTAG in the past, and you’re right-it’s probably 20 times (at least) more efficient than print statements and definitely worth whatever effort it takes to set it up!
Both! the WROVER has some PSRAM on board but that seems to be the only difference between it and the WROOM (which is not to be used for new designs, apparently).
Not sure can you use Microchip Studio for AVR based boards and import sketch and then debug it. Those 6 pin headers in arduino are ISP + Debug connectors. You may need AVR Dragon, Atmel ICE or MPLAB SNAP (should be around 10-15e in retail). I have been using my old AVR Dragon and now bought MPLAB SNAP for new ARM based chips but it also should support old AVR and PIC chips. Edit: for MPLAB SNAP you need to do your cables. It's base board without cables or case
I used Microchip Studio for debugging PIC circuits, it was a nightmare. Eventually I got something running but then decided life was too short to continue with PIC (and Microchip really annoyed my by 'hobbling' their compiler if you used the free version) so switched to Arduino and others. So I'll stick to the debugger I've got, with VSC and PlatformIO, it works quite well really. Got it working with WROOM and WROVER boards now too. 😁
Wow #2 Thanks for the video. I have often seen vague reference to debugging but never actually seen it done on one of the dev boards. Atmel studio 7 had some debugging capability for some of their parts over JTAG. I used it for some assembly debugging but wasn't all that useful.
Do we need to press any button, i am always Connecting ............................ and nothing happens after. Do i need to press BOOT or RESET button on espprog or kit board.?
As the ESP32 has 2 hardware breakpoints, I think I would stick with just using run to breakpoint F5. could it be that some boards don't bring the Jtag pins to the outside world. Or they have just used them in part of their design. not sure how useful this is if your working with WiFi, or Rtos as stopping the processor is a no no. i often use a GPio pin for debug, and get the program to pulse it a different number of times in different routines, faster than a serial output and don't put too much overheads in the timings. plus you can check if routines are firing off as the rate they should be on a scope. still when debugging embedded hardware you do need a lot of different tools in the box.
Yes, there is always one more way in which debugging can be achieved. Starting with Serial.print and ending (we hope) with JTAG. And everything in-between.
@@RalphBacon When i started it was with emulators, where you replaced the micro itself with a cable and ran the code in the emulator. But back then the micro’s were only running with clocks at 1Mhz. But our emulator cost more than my house, how times have changed.
I know what you mean. ESP32 might be flaky - or how it is "implemented" in a dev board might be the problem. Or the RTL ... it's RTL implementation might have problems.... or some surprise beyond human intelligence. .. for the next few days/weeks anyway. I have a problem I've been trying to isolate for months. After hours of deep sleep/wake cycles buttons become more and more unresponsive. And reconnects to wifi take longer until my device becomes completely useless.
Odd. Deep Sleep on the ESP32 means, basically, "Switch off completely until restarted by the RTC". Upon wake-up it should be pretty much factory fresh. What happens if you do really switch it off and back on again 50 times? Still unresponsive? Are you sure it's deffo in Deep Sleep (not some kind of modem sleep?
o we need to press any button, i am always Connecting ............................ and nothing happens after. Do i need to press BOOT or RESET button on espprog or kit board.?
I'm sure I replied to this already! No, nothing to press on the board, but the debugging tool you are using needs to run the code. You do this by pressing F5 or Shift-F5 or whatever your IDE required. It will then single step through the code. Also sometimes labelled "Start Debug" or similar.
one thing that I never find on the internet about this subject is how to use serial communication, that is, it is always only explained how to use jtag, but never how to upload via the serial connectors of the ESP-PROG board, or how to monitor the output via serial. If you have already done this, why would you help us?
I haven't done this but it seemed pretty straightforward. But the reason I didn't cover it was because we already have a simple method to upload code via the USB socket on the ESP32 device itself; I couldn't see where the upside of uploading via the JTAG board was.
The JTAG debug board has an FTDI chip for the USB interface. I've been using devices with these chips for over 20 years and installing the drivers has always been a pain in the interface!!! Why are they so problematic to install but installing the CH340 drivers are simple as hell???
My experience of FTDI drivers does not match yours, I'm afraid. I install the driver in the usual way (Windows 10/11) and that's it. Make sure you pick a recent FTDI driver as older ones would brick a device with a fake FTDI chip 🫨
sorry but i not sue how to do this need help with JDY 41 (JDY 40 uses AT comands BLUE BOARDS ) 41 GREEN BOARD dose NOT use AT comands have 14 page PDF how do i share it?
I've already uploaded the EasyEDA project that you can import (they are just json files) but can also give you (and everyone else) the EasyEDA Gerber files if you want. Let me know and I'll upload to the GitHub for this video. github.com/RalphBacon/261-ESP32-Debugging-with-cheap-JTAG-module
@@RalphBacon Thanks Ralph, I've managed to get my head around downloading and adding JSON files to EasyEDA, but had a bit of a false start as they don't seem to work with EasyEDA Pro but they do with the standard version.
hi... have you been able to figure out how to make the esp-prog work with Serial.println using the same connector? i know it seems odd because the very reason we want to use a debugger is to avoid serial.println but i've seen multiple occacsions where Serial.println is still usefull. the only curretnly to do that is the connect another usb directly to the board and configure that in in PIO as monitor_port but from what i understand this is where "interface 1" in zadig comes into play and you can use the other connector in the esp-prog to hook up to the esp32, but i couldn't make it work. at the same time with esp-prog .
Short answer: no. Longer answer: use the standard USB port on the device for Serial.print output and the standard JTAG pins for debugging. That's what I do and it works well.
Hello Ralph. Nice tutorial. Would be even nicer if you used the blue tiny icons on the top and say they have "Fxx" shortcuts on windows. You should "not" assume all users are on windows and the short cuts are the same on other OS. Thanks. Regards from Paris, France :-)
Just thought I would try your idea of debuggung a sketch for an Oled display which has different letters depending on a signal position and Point position ... I need about 6 switch case statements but using a Robojax sketch as a strating point and a Nano got first Case done so testing tomorrow but after seeing your video again it is obviously a No No with a Nano ... LOL ... also looking at using 2 Oled displays on 2 parallel tracks, thats going to be fun... John
Good luck with that, John. Those 8-bit microcontrollers just were never designed to support line-by-line debugging. But hey, here's an idea: run the code (it's pretty much portable, unless you're doing weird register stuff) on an ESP32 instead (also fully supported by the Arduino IDE) and then you _can_ debug!
@@RalphBacon I got it working a treat up to now 4 switch cases till I sort shunt signals ... As I said I want to add another display ... only error I had was in first Case, I used enum RouteState { Idle, Active, Clearing }; and I fogot to go put to route1_state = Idle at end of case ...
Thanks for this tuto ! Do you have a esp32 with more then 30 i/o that you tested and works ? I searched for Espressif ESP32 DevKit 1 but I get with extensions like ESP32-S2-DevKitM-1 or ESP32-S2-DevKitM-1U or ESP32-S3-DevKitM-1-N8 . Thanks
There have been some recent modules for the C3 and S3 variants that have more (and different) GPIO pins. But I have not tested any so far, but it's on my list to do. Why not scour AliExpress to see what variants are available (research can take hours but keeps you off the streets).
Hi thanks for reply , but yhe obe you tested and works realy are which one s?? After it works on what you tested I can try other one s. Sorry for my English
No I've not tested any recent variants, only the older ESP32 Devkit-C V4 which I use quite often. Not the smallest device but it has quite a few GPIO pins. Very stable too.
So strange that ALL of these microcontroller chips don't have built in hardware debug interface capability. Even the PIC micros had that capability many years ago on anything except the lowest chips, albeit with a fairly pricey programmer/debugger (cheap clones were/are available).
One word answer: cost. In order to provide an on-board OBD it would require a few cents (or perhaps several cents more). Multiply that by a million and you see the problem. But if you sell an option ESP-PROG tool, well, you can see the benefit to the shareholders 😉
Yes, there is something to be said for that. It would perhaps have been a better use of their scarce resources to add support for all their boards into PlatformIO, which is well written, supported and mature.
Hi Ralph, thanks for your great videos! I use Visual Studio with the micro plugin, and give the same look and fill as the arduino IDE. It supports debugging of stm and esp devices, and supports ino files with no changes. I had one sketch which i couldnt get to work in platform IO
Thanks for the great debugging video Ralph. I've been enjoying your videos for a while, and am trying to go through your entire set. I think I just might get the gear to do this for my next project. I have a question about D1 Mini ESP32 boards. I'm trying to find a manufacturer that still uses the v2 ESP32 with dual cores, but when I search I find links for ESP32-S2, single core boards. I also find links to boards where the description says ESP 32, and ESP8266 for the same board. Or Shows an older ESP32 WROOM (I assume dual core), but then includes ESP32-S2 in the description. I don't feel confident buying those. Does anyone know of a verified dual core ESP32 D1 mini (I don't need the battery charging circuitry)?
What's the difference between the V1 and V2 variants of this board then? Plenty of V1 boards out there, that state they are ESP32-S2 (eg s.click.aliexpress.com/e/_DEvext7 ) but is says V1 on the reverse of the PCB. But, as always, caveat emptor!
@@RalphBacon Those minis are so inexpensive! Maybe I'll forgo the second core and buy a handful. The S2 mini boards seem to have no USB chip, with the data lines wired directly into the ESP32 chip. Pray for no static discharge! Thanks again for taking the time to create all these great videos!
Really good video 😍 I recently work on an ESP32 Wroom ( homemade pcb) and I couldn't make it work until I understand something. - problem I was having all the time the same issues that not able to upload the code for the home made pcb. When I try with the ESP32 dev board it was working all the time. -solution Use straight cable with no longing distance (max 10cm). And check the power supply, maybe add a capacitor. -understanding In fact I was using twisted cable that provide some issue. When you are trying to debug is not like using CAN that have to be twisted cable to “protect the data in the cable”. Is better to have really separately cable for the 4 pin of debug. I hope it will be helpful for somebody that have the same issue at me
Yes, on CAN you have a differential signal where twisted wires protect the signal against EMI from external. JTAG/SWD means TTL level signals that are different from each other and twisting wires will bring you cross-talk so basically one signal partially overwriting another.
Hi Ralph, I venture that under the can is some external RAM or something of that nature that has been scrimped on, I mean cheap rubbish and obviously without the can you can see what your getting and yep I am getting cynical in my young age...Cheers !.......Side note. Brian's last name is pronounced "Lock" it's an interesting Irish spelling !
I was expecting that they have used the pins for Jtag for something else. if you don't need to provide a jtag interface for your design then the pins are free. I think that the memory interface is defined so whatever is left your free to use. it still surprises me that folk use a ESP32 for designs that don't need Wifi or BLE, but if power is not an issue it saves you learning a new chip.
Irish spelling (and the associated pronunciation) is an art all on its own and mystery to the rest of the world. I stand corrected! I once worked with a guy called Padraig and only knew how to pronounce that because he sat next to me! I believe it was "Porr-ig".
So this is a new development, I assume? Hang on, no debug adapter? So no ESP-Prog required? I don't suppose you have a link to the documentation, do you? You know me, I'm no dev 😲
@@RalphBacon C3 and S3 have on-board USB CDC+JTAG, just make sure that on S3 you do not select USB to be in OTG mode (TinyUSB) and it will run in CDC+JTAG mode. Connect the board to the internal USB, select the proper JTAG adapter in the board menu (for now must use the official Dev Module boards), upload the sketch and then hit the debug button on top (next to the upload one). That is it. Same goes for ESP32 and S2, but you need the ESP-Prog for them.
Yes it does, and IMHO it works very well. Do download the "local" router from their website and run it on your PC. Thereafter all routing will be quick and accurate. You can, of course, tweak or alter the tracks after you autoroute. And don't forget the "teardrop" feature.
I have purchased two Espressive DevKit V1. and the JTAG debugger for other ESP32 boards. I am excited to return to real debugging after this mess of Arduino IDE without it. But RUclips suggested a video "Debugging the Arduino Uno or Nano! (No extra hardware needed!)" at "ruclips.net/video/7wx27FcluMg/видео.html". I was able to replicate the blink sketch shown but my code using Serial.prints() and attachInterrupt() failed at the Linker. Maybe there is a fix which I asked the YT guy. However, I hope you have time to take a look - or if you know this doesn't work, let me know.
Apparently, some ESP32 modules do not require any extra hardware (no JTAG board) but I have yet to test that out. No reason to not believe this as the responder was the guy who writes (most of) the Espressif framework for the Arduino (me-no-dev).
@@RalphBacon Reading the your info on the github: "Basically, all the boards I own with a lidded "module" on them do not work. You get an error about being unable to get the memory maps.🤷 This is unfortunate (for me) as I have many WROOM and WROVER modules!" I too only have a "lidded module" dev kit and I couldn't get the jtag debugging operational, a time out error. I can upload using USB a sketch to the ESP32 module but not jtag debug in PlatformIO. I have other lidded modules and another ESP-PROG jtag module to try. "The devil is in the details" I have other lidded ESP32 and another ESP-PROG to try. Thank you for all the help you offer here and on RUclips.
It does seem a pity that Arduino are not supporting the IDE better than they have done lately. Very slow development of features. And all the "advanced" features that you find on VSC are hidden.
Wow, that's a pretty strong opinion on... well the ESP32, I guess, or were you referring to the ESP-PROG module? I'm not sure many would agree would agree with you that either of them is "useless"?
4 pins is too many? 2 data pins? It's standard JTAG. Devices from $20 Chinese junk to 4 and 5-digit cost professional lab equipment have JTAG ports. Tell us you're a noob without telling us you're a noob.
Damned by faint praise indeed, Stephen. 😔 But thanks for taking the time to comment here. I know I "go on" a bit but that's for benefit of newcomers who really do need the verbal hand-holding I give. But I'm not sure about the negativity... glass half full type of person, I am. If you were to link to the timecode in the video...
UPDATE: I've now figured out how to allow the use of WROOM and WROVER boards to successfully use JTAG. I'm still in the process of determining exactly what is required and I will issue an update (possibly a video) on the details.
Great, looking forward for this update! Astonishingly a ESP32 D1 Mini works here without any problem, although having a WROOM. But the others ("normal" size) with a WROOM do not work.
Is it possible to add something like ft232h to smartphone to make it something similar to raspberry pi
Can’t hardly wait! I am soooo stuck trying to get this working with S3-Devkit on VS-platformio. Big project really needs the in-circuit debugging.
Yes excellent!
I just saw this reply after I entered my second reply. Of course, I will be keen to know what you found.
Unbelievably serendipitous, Ralph. The ESP-Prog that I ordered some time ago arrived earlier this week. I was psyching myself up to research "what do I do next", but you've done the hard work for me. Thank you so much!
I'll send you my "Professional Services" invoice later, Gerallt. Oh, on seconds thoughts, have this video on me! 😉😅
@@RalphBacon You're a gent, sir! I'm plate-spinning on several projects at the moment and my head is full of node red and mqtt, but when I get back to microcontrollers, I'll be sure to pick this up (especially as you now have some insights on WROOM and WROVER!).
Thanks for this video! There are a million guides for installing the drivers and connecting the esp-prog, but this is the first I've seen showing what to actually do in vscode. Very helpful!
Glad it helped!
Love your work Ralph!
Can appreciate editing out the part where you talk through the detail that can be found elsewhere. Without knowing the additional work involved, but have you considered sharing those parts in a "sub-channel" of sorts?
Having only gotten into this the past few months, I've found those parts incredibly invaluable and your explainations have given a noob the simple heuristics as an on ramp into a subject area that can quickly evlove into jargon.
Good idea, but the idea of a "sub channel" (ie even more work!) means I would have to petition for a 32-hour day. When that happens I'll move this idea forward! 😉
God I hope not, I'd have to spend more time in spreadsheets and wouldn't get anytime to tinker.
I really value following your work mate. Your channel is one of the good corners of the internet and the idea of openly contributing the way you do, in a shed while fighting some bin lids, is now the life goal I strive for.
Great walkthrough
Great video as always
Thanks for sharing your experiences with all of us 🙂
Glad you enjoyed it!
Very useful information, Ralph!! Thanks a lot. I will be getting one of those ESP-prog modules and see if it works for my boards. Cheers
You'll find it either works pretty much straight away (once you've done the driver substitution thing) or not at all. Or maybe 1-in-10 which is about as useful as, well, you make it up.
Just a few days ago I figured out how to do do JTAG debugging on my ESP32 using PlatformIO. My ESP32 board is an MH ET LIVE ESP32DevKIT and it has a WROOM module on it, so I know it works on the WROOM modules too. By the way, you don't NEED an ESP-Prog, a cheap Chinese J-Link will work just as fine too (as it can do both JTAG and SWD debugging), as long as you change the relevant settings on PlatformIO. ESP32s have an inbuilt JTAG debug controller so anything that can communicate through JTAG would work.
Btw I must say that using Linux for this work is much easier, as there is no driver swapping needed and you can even do this without having to rely on Platform IO. If there is enough interest I can make some content on how to use Arduino CLI through VSCode, including setting up inline debugging, so people can leave the confines of PlatformIO and use whatever editor they want.
Yes, WROOM and WROVER modules do work now that I've figured it out (why is that information so difficult to find?) so it's good news all round.
Regarding doing a video on debugging, only you will be able to gauge the interest level and then see whether that hypothesis is correct once you have published! Welcome to my world!
@@RalphBacon Kudos to you for taking the time and putting in the effort! As for making content myself, I’ll first complete the smartwatch project I’m working on, which I’ve been neglecting. The tricky bit is Bluetooth Low Energy!
The devil is in the detail, as always!
5:30 - can you click the link just over your right shoulder please 🙂
Great stuff Ralph, thank you for your amazing and informative content!
Done! Oh, you missed it?
Thanks for Video ... On a Mimic Panel PCB I designed I had made at JLCPCB I left space for a Nano or an ESP32, the board which is A4 size has 8 x MCP23017's plus a number of CD4049's and ULN2803 to drive LED's on the Mimic display, which runs via the I2C bus control all of the 128 IO ports are connected and do work great, the Nano worked fine and is 55% full so didnt bother with trying to get the ESP32 to work, I do have all working and works great ... the sketch was fun all 1700 lines to date also trying to remember which mcp does what ... Regards John
Just 128 IO ports, then, John? And only 1700 lines of code? I see you like a challenge! 👍
Thanks for the video, very informative!
Glad it was helpful!
I have just started travelling the same road and purchased an ESP-PROG to debug an ESP32 S2 Mini board. Hooked it all up as per the documentation you mention and it didn't work. At first I thought it was a bug. However, I discovered that the JTAG pins on an S2 and I think a S3 are different. Sadly they don't seem to break out all those pins on the S2-Mini board. You have to go to the chip docs to get the pinouts for JTAG. I have now got my self an ESP32 Dev board and the debugging works fine. The only thing that doesn't work for me is inspecting the contents of a struct or using an expression. It is ok for simple variables. Thank you for the video, I picked up a couple of tips from it.
Excellent that you got it working on a different board. Yes, the pins for the S2 Mini (and C3) are different and they don't have too many pins exposed anyway.
I've now got it working on the WROOM and WROVER variants too (the ones with the lidded ESP32 modules). Details in a later video, I should think.
@@RalphBacon The board I obtained is WROOM-S2 Dev board and it has the can on top. I'd be interested to know which WROOM boards don't work and why. Look forward to your reveal!
David, Could you share more about how you got it working on S3 (VSC-platformio)? I am totally stuck trying to get it to work with S3-devkit board. (I do have the pins and fuse sorted out)
@@PeteDubler I haven't got it working on the S3, mainly because the JTAG pins are different on the S2 and I think the S3, so I have been using the ESP32-Vroom Dev board. That works fine. It is a shame the mini boards don't break out the JTAG pins, but I understand the constraint on pins with the size of the smaller board.
Welcome BACK(!) Mr. Bacon :)
I'm surprised they haven't implemented local gdb on the second core like many other dual-core mcu's?
Cost. Or, perhaps, they designed the ESP32 (with those Tensilica chips) without considering this as an option. 🤷
So if I understand correctly, you can step thru code via 2 techniques:
1) use a commercial software-only solution (Visual Studio + Visual Micro Arduino Extension)
2) use a JTAG Adapter (esp-prog) and open-source software (VS Code + PlatformIO)
If going with option2, how does debugging the esp32's dual (Tensilicia Xtensa LX6 microprocessor) cores work? I assume it can also do the ESP32-C3's Risc-V variety too?
I'd like to use an RTOS (FreeRTOS . Zephyr, etc), not the usual Arduino IDE flow ( setup() , loop() , etc).. but can't get Esp-Prog + VsCode + PlatformIO to consistently load GDB/OpenOCD, reset the target, download and halt on main().
There's an older IDF 4.3 video (YuriR?) that describes setting up json files (prerun, launch, tasks) that automates the setup and fixes reliability issues, but IDF (5.2.3), VSCode, and Extension have all changed so the instructions no longer work.
Anyone have a sample platformio.ini file settings they can share (framework, build_type, etc)?
Sorry, no specific platformio.ini available that does this, I'm afraid. But:
If you just include a
''''
int main() {...}
''''
as part of your code, you don't need the setup/loop construct.
At least, it works for me, but it doesn't really give you anything more than the standard (and easy-to-use) Arduino construct.
The ESP32 contains/compiles with Espressif's flavour of FreeRTOS and works as you might expect, although having an ESP32 reference guide to hand does aid one's understanding, I've found.
I have used the Arduino IDE on an esp32 Bluetooth simple project and it worked. The VC PlatformIO is nice and I am learning to use it. The new Orange Pi5 might be a good DIY project to try it out? 😎 Thanks for the great info.
Thanks for the idea!
Thanks for the debug video. Very helpful. Wish I could live in VSC/PIO IDE exclusively, but their compiler has some quirks that get in the way of using libraries (e.g. Espalexa and WiFiManger) that support (legacy) ESP8266 chips. (The compiler post errors if it cannot read external (irrelevant) libs that only come into play if using an ESP8266) The Arduino 2.0x compiler will finish and upload an INO file that completely flummoxes the VSC/PIO compiler. As a result, have resorted to "hybrid" IDE where the VSC/PIO dev/edit/pre-compile then shifts to Arduino 2.04 for compile, (fix,) upload. Having a real debugger is a huge improvement. Thanks!
You say the compiler objects about conditional library inclusion, but the compiler is the same one used by the Arduino IDE. So maybe you just need to include the libraries manually and let the linker throw stuff away it doesn't need?
@@RalphBacon Thank you for the thoughtful response. The process differences in library management between the two platforms are probably the biggest part of it. (It would be "life changing" to figure out a VSC "Central Library Repository" approach. I'm from the "build once - use many" school.)
That being said, I've run across a couple of times where the VSC compile will load and then the object code sent to the chip will "spin loop" while the Arduino (2.04) IDE compile of the same sketch (Copy-Paste) runs perfectly. I'm guessing it the difference in the chip libraries between the two.
It feels like being in that novice user "Twilight Zone" where a little knowledge is sufficient to REALLY screw things up.
Again thanks and keep up the good work.
I have become addicted to your videos! I'm not a beginner, but there's much I don't know. So a big thanks. BTW, you mentioned, around three months ago, that you figured out how to successfully debug using the WROOM and WROVER boards. Have you posted that info anywhere? I've been checking your vids and github, but haven't seen anything.
Not yet! I have figured it out and I hope to include that snippet of info in my next video! If not, remind me.
Hi Ralph. Why did you decide on PlatformIO extension in the Visual Studio IDE instead of using the PlatformIO IDE? I've never used a big boy IDE before but this line-by-line debugging thing has me interested.
I'm not aware of any PlatformIO IDE _per se_ as it runs on top of the Visual Studio Code platform, as an add-on.
I chose this platform because I've used VS professionally for too many years to remember, and whilst the "Code" version is much more lightweight, it's plenty powerful enough for smaller projects, although I do miss the "break if condition true" debugging (so you can set your program off and when the "faulty" condition arises the program stops and shows you what's what).
Hey Ralph…excellent video! Can you tell me, were your experiments on WROOM chips or WROVER, or a mix. Currently I’ve got several dev boards but they’re all WROVER versions. I’ve used JTAG in the past, and you’re right-it’s probably 20 times (at least) more efficient than print statements and definitely worth whatever effort it takes to set it up!
Both! the WROVER has some PSRAM on board but that seems to be the only difference between it and the WROOM (which is not to be used for new designs, apparently).
I use the force to debug. It guides me always
Use the force, Alex, use the force. Oh, you have done. 👍Good.
@12:31 It takes a second to run the loop, not 1ms after F5, because you have the delay(1000) in it 😀. Debugger is waiting for the 1000ms in each loop.
That was probably just my demo code to slow things down so we could follow what was going on. But yes, you're right of course.
Not sure can you use Microchip Studio for AVR based boards and import sketch and then debug it. Those 6 pin headers in arduino are ISP + Debug connectors. You may need AVR Dragon, Atmel ICE or MPLAB SNAP (should be around 10-15e in retail).
I have been using my old AVR Dragon and now bought MPLAB SNAP for new ARM based chips but it also should support old AVR and PIC chips.
Edit: for MPLAB SNAP you need to do your cables. It's base board without cables or case
I used Microchip Studio for debugging PIC circuits, it was a nightmare.
Eventually I got something running but then decided life was too short to continue with PIC (and Microchip really annoyed my by 'hobbling' their compiler if you used the free version) so switched to Arduino and others.
So I'll stick to the debugger I've got, with VSC and PlatformIO, it works quite well really. Got it working with WROOM and WROVER boards now too. 😁
Wow #2 Thanks for the video. I have often seen vague reference to debugging but never actually seen it done on one of the dev boards. Atmel studio 7 had some debugging capability for some of their parts over JTAG. I used it for some assembly debugging but wasn't all that useful.
When it works, it works very well. when it doesn't, it's time to pack it up and use another ESP32 board!
Do we need to press any button, i am always Connecting ............................ and nothing happens after. Do i need to press BOOT or RESET button on espprog or kit board.?
No, the code is, however, controlled by the debugger; you need to click on debug or run-with-debug, sometimes F5.
As the ESP32 has 2 hardware breakpoints, I think I would stick with just using run to breakpoint F5. could it be that some boards don't bring the Jtag pins to the outside world. Or they have just used them in part of their design.
not sure how useful this is if your working with WiFi, or Rtos as stopping the processor is a no no. i often use a GPio pin for debug, and get the program to pulse it a different number of times in different routines, faster than a serial output and don't put too much overheads in the timings. plus you can check if routines are firing off as the rate they should be on a scope.
still when debugging embedded hardware you do need a lot of different tools in the box.
Woof!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@fredflintstone1 nice to catch a woof from you Fred. Eek 🙂
Yes, there is always one more way in which debugging can be achieved. Starting with Serial.print and ending (we hope) with JTAG. And everything in-between.
@@RalphBacon When i started it was with emulators, where you replaced the micro itself with a cable and ran the code in the emulator. But back then the micro’s were only running with clocks at 1Mhz.
But our emulator cost more than my house, how times have changed.
Squeak!!!!
I know what you mean. ESP32 might be flaky - or how it is "implemented" in a dev board might be the problem. Or the RTL ... it's RTL implementation might have problems.... or some surprise beyond human intelligence. .. for the next few days/weeks anyway.
I have a problem I've been trying to isolate for months. After hours of deep sleep/wake cycles buttons become more and more unresponsive. And reconnects to wifi take longer until my device becomes completely useless.
Odd. Deep Sleep on the ESP32 means, basically, "Switch off completely until restarted by the RTC". Upon wake-up it should be pretty much factory fresh. What happens if you do really switch it off and back on again 50 times? Still unresponsive? Are you sure it's deffo in Deep Sleep (not some kind of modem sleep?
o we need to press any button, i am always Connecting ............................ and nothing happens after. Do i need to press BOOT or RESET button on espprog or kit board.?
I'm sure I replied to this already! No, nothing to press on the board, but the debugging tool you are using needs to run the code. You do this by pressing F5 or Shift-F5 or whatever your IDE required. It will then single step through the code. Also sometimes labelled "Start Debug" or similar.
one thing that I never find on the internet about this subject is how to use serial communication, that is, it is always only explained how to use jtag, but never how to upload via the serial connectors of the ESP-PROG board, or how to monitor the output via serial. If you have already done this, why would you help us?
I haven't done this but it seemed pretty straightforward. But the reason I didn't cover it was because we already have a simple method to upload code via the USB socket on the ESP32 device itself; I couldn't see where the upside of uploading via the JTAG board was.
The JTAG debug board has an FTDI chip for the USB interface. I've been using devices with these chips for over 20 years and installing the drivers has always been a pain in the interface!!! Why are they so problematic to install but installing the CH340 drivers are simple as hell???
My experience of FTDI drivers does not match yours, I'm afraid. I install the driver in the usual way (Windows 10/11) and that's it. Make sure you pick a recent FTDI driver as older ones would brick a device with a fake FTDI chip 🫨
sorry but i not sue how to do this need help with JDY 41 (JDY 40 uses AT comands BLUE BOARDS ) 41 GREEN BOARD dose NOT use AT comands have 14 page PDF how do i share it?
You need to upload it to a shareable cloud store, like GitHub, or Google Docs.
Another helpful video Ralp, Is your JTAG board available either as source/gerbers or to order from JLCPCB?
I've already uploaded the EasyEDA project that you can import (they are just json files) but can also give you (and everyone else) the EasyEDA Gerber files if you want. Let me know and I'll upload to the GitHub for this video.
github.com/RalphBacon/261-ESP32-Debugging-with-cheap-JTAG-module
@@RalphBacon Thanks Ralph, I've managed to get my head around downloading and adding JSON files to EasyEDA, but had a bit of a false start as they don't seem to work with EasyEDA Pro but they do with the standard version.
Yes, I still use the standard version, luddite that I am 😆
hi... have you been able to figure out how to make the esp-prog work with Serial.println using the same connector?
i know it seems odd because the very reason we want to use a debugger is to avoid serial.println
but i've seen multiple occacsions where Serial.println is still usefull.
the only curretnly to do that is the connect another usb directly to the board and configure that in in PIO as monitor_port
but from what i understand this is where "interface 1" in zadig comes into play and you can use the other connector in the esp-prog to hook up to the esp32, but i couldn't make it work. at the same time with esp-prog .
Short answer: no.
Longer answer: use the standard USB port on the device for Serial.print output and the standard JTAG pins for debugging. That's what I do and it works well.
@@RalphBacon yea, that's what i do too, but i also i usb wire with a switch to quickly disconnect and connect the device to reset the comm port
Hello Ralph. Nice tutorial. Would be even nicer if you used the blue tiny icons on the top and say they have "Fxx" shortcuts on windows. You should "not" assume all users are on windows and the short cuts are the same on other OS. Thanks. Regards from Paris, France :-)
OK, noted!
Just thought I would try your idea of debuggung a sketch for an Oled display which has different letters depending on a signal position and Point position ... I need about 6 switch case statements but using a Robojax sketch as a strating point and a Nano got first Case done so testing tomorrow but after seeing your video again it is obviously a No No with a Nano ... LOL ... also looking at using 2 Oled displays on 2 parallel tracks, thats going to be fun... John
Good luck with that, John. Those 8-bit microcontrollers just were never designed to support line-by-line debugging. But hey, here's an idea: run the code (it's pretty much portable, unless you're doing weird register stuff) on an ESP32 instead (also fully supported by the Arduino IDE) and then you _can_ debug!
@@RalphBacon I got it working a treat up to now 4 switch cases till I sort shunt signals ... As I said I want to add another display ... only error I had was in first Case, I used enum RouteState { Idle, Active, Clearing }; and I fogot to go put to route1_state = Idle at end of case ...
Thanks for this tuto ! Do you have a esp32 with more then 30 i/o that you tested and works ? I searched for Espressif ESP32 DevKit 1 but I get with extensions like ESP32-S2-DevKitM-1 or ESP32-S2-DevKitM-1U or ESP32-S3-DevKitM-1-N8 . Thanks
There have been some recent modules for the C3 and S3 variants that have more (and different) GPIO pins. But I have not tested any so far, but it's on my list to do.
Why not scour AliExpress to see what variants are available (research can take hours but keeps you off the streets).
Hi thanks for reply , but yhe obe you tested and works realy are which one s?? After it works on what you tested I can try other one s. Sorry for my English
No I've not tested any recent variants, only the older ESP32 Devkit-C V4 which I use quite often. Not the smallest device but it has quite a few GPIO pins. Very stable too.
@@RalphBacon waiting for my prog esp and let you know my test thanks for your reply
So strange that ALL of these microcontroller chips don't have built in hardware debug interface capability. Even the PIC micros had that capability many years ago on anything except the lowest chips, albeit with a fairly pricey programmer/debugger (cheap clones were/are available).
One word answer: cost.
In order to provide an on-board OBD it would require a few cents (or perhaps several cents more). Multiply that by a million and you see the problem.
But if you sell an option ESP-PROG tool, well, you can see the benefit to the shareholders 😉
ok put on google drive ?but still not let me share link how would you do that?
It's visible in one of your comments, Philip, I'll take a look.
I would have preferred Arduino use their resources improving PlatformIO rather than build their own lacklustre IDE 2.0.
Yes, there is something to be said for that. It would perhaps have been a better use of their scarce resources to add support for all their boards into PlatformIO, which is well written, supported and mature.
Hi Ralph, thanks for your great videos!
I use Visual Studio with the micro plugin, and give the same look and fill as the arduino IDE. It supports debugging of stm and esp devices, and supports ino files with no changes.
I had one sketch which i couldnt get to work in platform IO
Excellent news that you have it all running.
Does PlatformIO still work with the latest VScode?
It most certainly does, Duncan.
Thanks for the great debugging video Ralph. I've been enjoying your videos for a while, and am trying to go through your entire set. I think I just might get the gear to do this for my next project. I have a question about D1 Mini ESP32 boards. I'm trying to find a manufacturer that still uses the v2 ESP32 with dual cores, but when I search I find links for ESP32-S2, single core boards. I also find links to boards where the description says ESP 32, and ESP8266 for the same board. Or Shows an older ESP32 WROOM (I assume dual core), but then includes ESP32-S2 in the description. I don't feel confident buying those. Does anyone know of a verified dual core ESP32 D1 mini (I don't need the battery charging circuitry)?
What's the difference between the V1 and V2 variants of this board then? Plenty of V1 boards out there, that state they are ESP32-S2 (eg s.click.aliexpress.com/e/_DEvext7 ) but is says V1 on the reverse of the PCB. But, as always, caveat emptor!
@@RalphBacon Those minis are so inexpensive! Maybe I'll forgo the second core and buy a handful. The S2 mini boards seem to have no USB chip, with the data lines wired directly into the ESP32 chip. Pray for no static discharge! Thanks again for taking the time to create all these great videos!
Really good video 😍
I recently work on an ESP32 Wroom ( homemade pcb) and I couldn't make it work until I understand something.
- problem
I was having all the time the same issues that not able to upload the code for the home made pcb. When I try with the ESP32 dev board it was working all the time.
-solution
Use straight cable with no longing distance (max 10cm). And check the power supply, maybe add a capacitor.
-understanding
In fact I was using twisted cable that provide some issue. When you are trying to debug is not like using CAN that have to be twisted cable to “protect the data in the cable”. Is better to have really separately cable for the 4 pin of debug.
I hope it will be helpful for somebody that have the same issue at me
Thanks for sharing, I'm certain others will find it enlightening.
Yes, on CAN you have a differential signal where twisted wires protect the signal against EMI from external. JTAG/SWD means TTL level signals that are different from each other and twisting wires will bring you cross-talk so basically one signal partially overwriting another.
Hi Ralph, I venture that under the can is some external RAM or something of that nature that has been scrimped on, I mean cheap rubbish and obviously without the can you can see what your getting and yep I am getting cynical in my young age...Cheers !.......Side note. Brian's last name is pronounced "Lock" it's an interesting Irish spelling !
I was expecting that they have used the pins for Jtag for something else. if you don't need to provide a jtag interface for your design then the pins are free. I think that the memory interface is defined so whatever is left your free to use.
it still surprises me that folk use a ESP32 for designs that don't need Wifi or BLE, but if power is not an issue it saves you learning a new chip.
Irish spelling (and the associated pronunciation) is an art all on its own and mystery to the rest of the world. I stand corrected!
I once worked with a guy called Padraig and only knew how to pronounce that because he sat next to me! I believe it was "Porr-ig".
@@RalphBacon LOl !
Hi, could use segger jlink for debugging esp32?
Absolutely, but you won't do much better with the $1200 Segger than the $15 ESP-Prog.
Good grief! That sounds expensive. I hope it does more than just allow debugging!
@@RalphBacon It's an exaggeration. The Segger J-Link EDU Mini sells for $60.
Still quite a lot, but if you need a decent debugger that might be on your list. Maybe not for hobby use but certainly small businesses.
Arduino IDE 2.0.3 + ESP32 Arduino 2.0.7 can JTAG all ESP32/S2/S3/C3 S3 and C3 do not even require external debug adapter
So this is a new development, I assume? Hang on, no debug adapter? So no ESP-Prog required? I don't suppose you have a link to the documentation, do you? You know me, I'm no dev 😲
@@RalphBacon C3 and S3 have on-board USB CDC+JTAG, just make sure that on S3 you do not select USB to be in OTG mode (TinyUSB) and it will run in CDC+JTAG mode. Connect the board to the internal USB, select the proper JTAG adapter in the board menu (for now must use the official Dev Module boards), upload the sketch and then hit the debug button on top (next to the upload one). That is it. Same goes for ESP32 and S2, but you need the ESP-Prog for them.
Ok, thank you, I'll give it a try with my new S3 (might be a C3 🤷♂️)
does easyeda have autorouter
Yes it does, and IMHO it works very well.
Do download the "local" router from their website and run it on your PC. Thereafter all routing will be quick and accurate. You can, of course, tweak or alter the tracks after you autoroute. And don't forget the "teardrop" feature.
Thanks !!! Suscribe, and going to watch other of you videos.
Awesome, thank you!
Asprin shares are going up 🙂
This is easy stuff, Barney! OK, not _easy_ exactly. But straightforward. OK, not _straightforward_ but you can see what I'm doing, right? 😉
@@RalphBacon yes I can see what your doing that is the easy bit 🙂
Squeak !!!!!!!!!
@@andymouse Cheese!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
"no body uses the ones that it can debug"(arduino ide) 🤣
It's true!
I have purchased two Espressive DevKit V1. and the JTAG debugger for other ESP32 boards. I am excited to return to real debugging after this mess of Arduino IDE without it. But RUclips suggested a video "Debugging the Arduino Uno or Nano! (No extra hardware needed!)" at "ruclips.net/video/7wx27FcluMg/видео.html". I was able to replicate the blink sketch shown but my code using Serial.prints() and attachInterrupt() failed at the Linker. Maybe there is a fix which I asked the YT guy. However, I hope you have time to take a look - or if you know this doesn't work, let me know.
Apparently, some ESP32 modules do not require any extra hardware (no JTAG board) but I have yet to test that out. No reason to not believe this as the responder was the guy who writes (most of) the Espressif framework for the Arduino (me-no-dev).
@@RalphBacon Reading the your info on the github: "Basically, all the boards I own with a lidded "module" on them do not work. You get an error about being unable to get the memory maps.🤷
This is unfortunate (for me) as I have many WROOM and WROVER modules!"
I too only have a "lidded module" dev kit and I couldn't get the jtag debugging operational, a time out error. I can upload using USB a sketch to the ESP32 module but not jtag debug in PlatformIO. I have other lidded modules and another ESP-PROG jtag module to try. "The devil is in the details" I have other lidded ESP32 and another ESP-PROG to try. Thank you for all the help you offer here and on RUclips.
Arduino IDE is a dead duck. Development of pio+vsc is much faster.
No advanced developer will take the Arduino IDE serieus.
It does seem a pity that Arduino are not supporting the IDE better than they have done lately. Very slow development of features. And all the "advanced" features that you find on VSC are hidden.
How do I debug ESP32? Simple. Stay up all night, drink whisky and swear a lot :-)
That is certainly one way. I'm hoping this is a better way (you can still have the whisky but by then your program will be debugged!).
🙏🙏🙏🙏
Always very early to the party, Yogesh!
It's useless, uses too many pins.
Wow, that's a pretty strong opinion on... well the ESP32, I guess, or were you referring to the ESP-PROG module? I'm not sure many would agree would agree with you that either of them is "useless"?
4 pins is too many? 2 data pins? It's standard JTAG. Devices from $20 Chinese junk to 4 and 5-digit cost professional lab equipment have JTAG ports.
Tell us you're a noob without telling us you're a noob.
You express too much negativity and take too long to explain things. But thanks for a few useful contributions.
Damned by faint praise indeed, Stephen. 😔
But thanks for taking the time to comment here. I know I "go on" a bit but that's for benefit of newcomers who really do need the verbal hand-holding I give. But I'm not sure about the negativity... glass half full type of person, I am. If you were to link to the timecode in the video...
idk, i didn't notice that there was too much negativity, in the video