I tried an experiment which involved removing the MIC2025 chip and bridging pins 6 and 7 with solder to connect VUSB in directly to the 5V rail. This bypasses input protection and connects the USB 5V rail directly to the regulator and therefore to the JTAGulator MCU and its components. Checking on the scope, I found that the transient blip had mostly disappeared from the supply rail. There is still noise on the USB supply, but with only a few 10s of millivolts fluctuation that is barely discernable at 1v/div and at a different frequency period. The 40kHz blip seemed to be being caused by the MIC2025 IC. I don't have a spare so if I can get the board working properly, I will have to order a rerplacement.
With the PSU rail protection/switching bypassed, the JTAGulator scan results seemed more stable in that the JTAG pin identification and the ID code being read each time was the same, but still the ID code was still incorrect. I tried both the Rigol scope and a Raspberry Pi. It should read the correct ID code from the latter at least without any difficulty. I could still not get anything via SWD from the Pico either. The problem runs deeper than just instability of the the supply rail.
I tried another experiment using the GPIO feature and pulling each pin low in turn. This worked just fine, correctly pulling each pin to logic 0 in turn. There were no anomalies that might indicate a short or adjacent pins affecting their neighbour, at least in manual slow mode!
I haven't tried an older firmware yet, as I haven't found one. The 'Releases' tab in GitHub mentioned by Joe in his video seems to be missing for me.
Thanks for the pic , Must admit nothing stand out at me. And comparing to other images on the net all seems right.
I did notice that the creator has a pdf on his site with scope screen shots , maybe worth grabbing your rigol and doing a screen cap as well and compare the levels and signal quality at the device and at the target.
Well its good to know that everything at least seems to look OK. If you are referring to the 'slides' file, I totally missed that! Thanks for the suggestion. I will definitely have a look at it.
The one thing i've found with openocd is that you need to know target information already and pass that onto the server when you start it, when digging into say unknown chips , router and secure device, devices behind nda's etc that become a issue. plus there also needs to be support in someway within openocd for sending the correct commands to mode switch , sending correct cpu halts etc.
I have not learned it well enough to go in blind and get results other than a id scan and thats it,
Yes, with the exception of what you say about devices behind nda's, that's about as much as I have learned so far about openocd. I am still very much a newbie to it. The first step was to identify the JTAG pinout and then extracting the ID code to identify the device, which why I got interested in JTAGenum and JTAGulator. Once done, then its a case of connecting up whatever interface one has available, and using the appropriate .cfg files for the interface being used (Olimex, BusBlaster, FTDI etc) and for the device being accessed from the openocd library.
for the task of looking at these unknowns i found urjtag and my bus-blaster with j-link setup to provide me more info including boundry scans and io control, which in theory with the right scripts (again , i failed there) you can in theory bit bash flash memory and even halt cpu etc, but again further work without the mode switch commands is hard. (looking at you broadcom)
Sadly, j-link is beyond my means as a hobbyist, but I did have a look at the ur-jtag documentation. It seems that it is compatible with my Olimex interface so I will download and experiment with this software.
another thing to try is the uart passthrough , again in theory you can send specific packets and do a comparison on the other end in duplex , then probe along the board with two channels to see where there is possible corruption, you can do the same with jtag really but you dont have passthrough for direct comparison, there's process involved on the data. but you could compare data at the device and data at the mcu , it should be just level shifted.
I did test UART passthrough when I finished building the JTAGulator and it worked just fine, although only one pair of pins was tested. Systematically testing the other pins sounds like a plan. It will take some time but I try this and see what results I get.
if you have a true 3.3v target then maybe bypass each stage starting direct at the mcu and adding each stage until you get errors , sadly that will involve a lot of board rework
but you could spread it by testing a different stage on each of the 3 groups.
Sounds like another excellent suggestion if I find no problems with the UART pass-through. Both the Pi and the Rigol are 3.3V devices, so should be find to experiment with for this purpose. Given that this process will involve a bit of messing around with reworking the board, I would like to try alternative firmware and the UART pass-though tests first.
I used the TX104 level translaters on i2c and was unimpressed - they seemed very inclined to false-trigger on noise. It's possible the 108s are the same. Do everything you can to ensure they don't see a reflection on output signals. They do have capacitors near them but check they're good as darkspr1te says - maybe change them for some known fast capacitors if they were junkbox parts. Use good local grounds and short wires etc.
Artag, thanks. Useful to have this info. The only junkbox parts I used were the reset switch and LED. The capacitors were brand new from DigiKey as specified on the JTAGulator BOM list so all things being equal I would expect them to be fine, although anything is possible. Point taken about cables. Although I am using a BusPirate cable as suggested by Joe, I do have some shorter DuPont wires I could use.