Skip to content

Frequently Asked Questions

Joe Grand edited this page Mar 2, 2023 · 15 revisions
  1. Where can I find the most up-to-date design documentation?

    Complete engineering documentation, including schematic, bill-of-materials, PCB files, assembly drawing, functional test procedure, and demonstration code is available from jtagulator.com.

    For full operational details, subsystem functionality, background on supported interfaces, and product limitations, refer to the JTAGulator slide presentation and YouTube playlist.

    To obtain the latest official version of firmware, please visit the GitHub repository. Here's a video demonstrating the firmware update process.

    The JTAGulator firmware is built with the Parallax Propeller Tool version 1.3.2 for Windows. If you wish to compile code or contribute to the project, we recommend using this software. Alternative development environments are untested and unsupported.

  2. My JTAGulator isn't detecting anything.

    JTAGulator strives to support as many target devices as possible, but there are a number of reasons the tool may not identify or communicate with your particular hardware:

    • Not all pins required for the desired interface are connected to the JTAGulator

    • Interface is not being properly enabled

      • Other pins may be required to put the target in the correct state
      • There's a security feature preventing access to the interface
      • The interface is disabled in firmware
    • Interface is temporarily enabled

      • The interface might exist only for a brief period of time during the target's boot sequence before you're able to perform a scan
    • Interface is physically disconnected

      • Traces may have been cut or resistors removed between the target connector/test points and the rest of the system
    • No supported interface exists

      • The target chip does not use JTAG, SWD, or UART interfaces
    • Abnormal target behavior due to "fuzzing" unknown pins

      • The target may enter an unknown/unexpected state due to the manipulation of the target's pins via the JTAGulator
    • Signaling mismatch

      • Incorrect target I/O voltage (VADJ) setting; The target's signal levels may be different than its main system voltage
      • Pull-up or pull-down resistors on target are too strong; Less than 4.7 kΩ may result in a signal voltage lower than what the JTAGulator's input pins can recognize
      • Target uses an SWD interface, which is prone to compatibility issues with the JTAGulator

    Double check your connections between the JTAGulator and target device. Ensure that there is a GND connection between the devices and that VADJ is not connected to the target. Additionally, be sure to read through the closed issues at our GitHub repository in case someone has already encountered and solved a similar problem.

    JTAGulator HW Rev. B and earlier may have compatibility issues with certain target devices. This is caused by the JTAGulator's front-end circuitry (level translators, diodes, and series resistors) affecting signal levels between the JTAGulator and target. Consider implementing the recommended hardware modifications if needed.

  3. Why do I get different responses for IDCODE Scan or BYPASS Scan on repeated tries?

    The response you're seeing is when the JTAGulator thinks it found a result (e.g, the data it sees matches the requirements of that particular scan). Since the JTAGulator enumerates though all possible pin permutations for a given set of channels and may be setting the state of pins whose function on the target are unknown, the system could respond in a way that fools the JTAGulator into thinking it's found a possible pinout. The JTAGulator is an assistive tool and will sometimes require human intervention to determine proper results from a number of false positives.

  4. BYPASS Scan successfully detects an interface, but JTAG Scan and IDCODE Scan don't return anything.

    It's possible that the target device doesn't contain an IDCODE, contains a non-compliant IDCODE, doesn't load its IDCODE into the data register on TAP reset, or the JTAGulator can't properly read the IDCODE. Both the JTAG Scan (which combines the IDCODE Scan and BYPASS Scan into a single command) and IDCODE Scan assumes that a valid IDCODE is in the data register, which is often the case, but not always.

    It's also possible that the target has a security mechanism in place to prevent full access to its JTAG interface. In order for the target to remain compliant with the JTAG specification, it should still support the BYPASS command (which the JTAGulator uses during a BYPASS Scan) even if the remainder of its functionality is protected.

  5. When the JTAGulator powers up, the LED turns YELLOW and there's nothing displayed in the terminal program.

    Beginning with firmware version 1.4, the JTAGulator will wait until the user presses any key from within the terminal program before it sends the welcome header and command prompt. This ensures that the user doesn't miss the information after successfully connecting to a host.

  6. When the JTAGulator powers up, the LED turns YELLOW and then RED. There's nothing displayed in the terminal program and it appears unresponsive.

    This indicates that the JTAGulator is in a secondary operating mode (e.g., logic analyzer or OpenOCD) and is waiting for commands from the respective external software tool. These modes persist through JTAGulator resets, power cycles, and firmware updates. This behavior is required in order for the JTAGulator to remain in the desired mode while changing software applications and using the external software tools, some of which may reset the JTAGulator before, during, or after use.

    To exit and return to normal JTAGulator functionality, open your terminal program and press Ctrl-X. You will be presented with the command prompt (>) and the JTAGulator's LED will turn GREEN.

  7. After I start any scan, the JTAGulator immediately aborts.

    The JTAGulator expects any command or input to be followed by a single CR or LF (sent by the terminal program when the Enter key is pressed). If the JTAGulator immediately aborts after starting a scan, this indicates that your terminal program is sending both bytes when the Enter key is pressed, which will cause the JTAGulator to interpret it as two separate key presses. Change your terminal settings to ensure only a single CR or LF is sent and try again.

  8. During the JTAG Pin Mapper (EXTEST Scan), why do I sometimes see two different register bits detected on the same channel?

    This may occur when the JTAGulator has found an I/O control line (output enable) for a particular I/O pin. Depending on the target chip's internal I/O construction, setting the output enable high or low may cause its respective I/O pin to become enabled and be set high or low. In this case, you will need to do further experimentation on those pins to determine which register bit corresponds to the physical I/O pin and which register bit corresponds to the output enable. Typically, the control line is adjacent to the I/O pin in the Boundary Scan Register.

  9. I built my own JTAGulator and...

    While the JTAGulator is open source and intended for easy assembly, modification, and sharing, we unfortunately are unable to provide support for any JTAGulator unit not purchased from Parallax or their authorized distributors. Given the inconsistencies of build skill, component sourcing, and PCB fabrication quality, there are simply too many aspects that are out of our control. If you suspect a hardware issue, you can follow our functional test procedure and associated video to help identify the root cause.

  10. It still doesn't work!

    If you're unable to solve your problem after studying the available resources and believe you've found a bug in the JTAGulator, you may open a new issue in our GitHub repository. Otherwise, if you have questions related to using the JTAGulator or problems with a particular target, consider joining Joe Grand's Official Server on Discord and posting your question there.

    Please provide as much information as possible about your environment, such as:

    • JTAGulator firmware version
    • Description of your target hardware
    • High-resolution photos showing connections/wiring
    • Screenshots or log files showing JTAGulator output
    • Operating system details
    • Version numbers of any accompanying software
    • What steps you have already taken to troubleshoot/debug the issue