mrjimenez / JTAG

JTAG library for Arduino
BSD 2-Clause "Simplified" License
123 stars 22 forks source link

Are these boards compatible easily? #5

Open GizmoTheGreen opened 4 years ago

GizmoTheGreen commented 4 years ago

I couldn't find a way to send "message via github"? and I think it might be good info for people interested in the future.

I tried to find a jtag programmer locally but nothing... I'd have to order from china and wait a few weeks which I'd not really want to do. these are what I found locally and in Sweden that are "arduino compatible" and have 3.3v IO.

I'm unsure if the nodemcu is programmed with arduino IDE like normal?

NodeMCU ESP8266 https://www.kjell.com/se/produkter/el-verktyg/arduino/utvecklingskort/nodemcu-utvecklingskort-p87091

Arduino MKR Zero https://www.kjell.com/se/produkter/el-verktyg/arduino/utvecklingskort/arduino-mkr-zero-utvecklingskort-p87190

GizmoTheGreen commented 4 years ago

I bought the NodeMCU, since the code only compiled for it. I've sorted the pins I think. but I get error when trying to play XSFV to update Gamecube hdmi adapter (insurrection Carby)

I've attached JTAGtest app which I flashed to nodeMCU and the output from running the python script. also the xsfv I want to use.

hopefully you can help me gcvideo-dvi-shuriken-v3-gc-3.0a-M25P40-complete.txt JTAGTest.txt log.txt

mrjimenez commented 4 years ago

Hi Gizmo,

The log you sent me suggests that the program on the NodeMCU is aborting:

...
Sent:   374970 bytes, 16062105 remaining
Sent:   375009 bytes, 16062066 remaining
Sent:   375048 bytes, 16062027 remaining
Unrecognized line: User exception (panic/abort/assert)
Unrecognized line: Panic core_esp8266_main.cpp:189 loop_task
Unrecognized line: >>>stack>>>
Unrecognized line: ctx: sys
Unrecognized line: sp: 3fffeee0 end: 3fffffb0 offset: 0000
Unrecognized line: 3fffeee0:  00ad5b8a 00b6e5fb 4023542b 3ffe91d4
Unrecognized line: 3fffeef0:  000000fe 00000000 00000000 00000000
Unrecognized line: 3fffef00:  00000000 00000000 00000000 3ffee468
Unrecognized line: 3fffef10:  00000000 3fffd9d0 3ffe88d0 3ffee42c
Unrecognized line: 3fffef20:  3fffdad0 00000000 3ffe84e4 402035ba
...

The "Unrecognized line: " part is from Uploader.py. What comes next is what the NodeMCU is sending. It is hard to me to help you with that issue.

There are some buffers in the program that were small due to the limited memory of an Arduino, but they could be augmented for the NodeMCU, which I suppose has a lot more memory. If I recall correctly, there was an instruction in XSVF that could use a lot of memory, I think it is XSDRINC. That way, it is possible for the generated XSVF file to overflow the microcontroller's buffer.

You can try something like 60dcdca41e0fd1921431e905bed02e85a60b146b and change the value of S_MAX_CHAIN_SIZE_BYTES to something bigger than 129. This is the best shot I can give since I don't have the hardware to test. If that solves the issue for you, please tell us. Maybe I can add some notes on the README.md file to explain this issue.

If that does not work, and if you are willing to go down some levels of abstraction, you can try to disassemble the XSVF file with XSVFDisassembler.py and see if there is a huge XSDRINC instruction or something else similar there and try to fix the issue.

Hope this helps.

Regards, Marcelo.

GizmoTheGreen commented 4 years ago

Hi thank you for your reply. I tried changing buffer size and max_chain size with no luck, it still errors in around the same area. for now I have ordered a xilinx compatible jtag.

chepo92 commented 4 years ago

I was having this same question, if this code is compatible with any modern boards (ESP, DUE, etc)

jyang669 commented 3 years ago

I am also interested to know if this code is compatible to ARM-based Arduino like DUE. If not, how to adapt it for DUE.

mrjimenez commented 3 years ago

The code is easily adaptable to any other processor. The class JTAGPort is virtual. There are two implementations: JTAGPortArduino and JTAGPortAVR. If your processor is Arduino compatible, there should be no problems using PlayXSVFJTAGArduino. If the pins are not compatible, but the API is, then it is just a matter of changing the pins. In the worst case scenario, you would have to derive from JTAGPort and reimplement the methods and write a new PlayXSVFJTAGxxx , which is also straight forward.

jyang669 commented 3 years ago

Great. Thanks for the clarification.

The Arduino's official website says it is only compatible for certain boards, which creates confusion.

https://www.arduino.cc/reference/en/libraries/jtag/

mrjimenez commented 3 years ago

The compatibility list is based on what has been specified in the library.properties file. This is what I have actualy tested or that someone has helped me testing. I have never used an ARM-based arduino. The library uses some portInputRegister()/portOutputRegister() magic to try to be a bit faster when manipulating I/O, but this was still a bit slow, that is why the AVR versions exist. I really don't know how this code would behave in the ARM versions of the Arduino environment. If anyone is willing to test, I will gladly accept patches.