This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C1294NCPDT: Multiple devices on JTAG chain

Part Number: TM4C1294NCPDT
Other Parts Discussed in Thread: UNIFLASH

I have to program 3 TM4C1294NCPDT controllers and i have used daisy chain connection method, a single set of JTAG pins are connected to 3 devices. The three devices are having 3 different  firmware and i want to know how i will identify each device and load the differnt firmware to each device using this JTAG in the daisy chain cconnection.

  • What software tool do you plan to use to program the devices? If using Code Composer Studio and UniFlash, you can create target configurations for each of the three devices in Code composer and then create session in UniFlash for each of the target configuration files.
  •  Hi

    Thanks for your reply

    I am using code composer studio in linux and i created target configurations for each of the three device and then debbuged .Bt its not working..

    CORTEX_M4_1: Error connecting to the target: Current implementation only support connection to one core at a time per process.

    this error is shown

  • The software only supports programming one device at a time. You need to create three separate configurations. Each configuration has three TM4C129 configured with two of the devices configured as bypass. The configuration below selects the device in the middle of the chain:

  • I am only using code composer studio . Is uniflash necessary to load program??
    we are using 5 controllers which are connected in daisy chain and a buffer is used for signal strengthening...
    we are not getting any response after loading the image and the IDE also shows success message
  • No, UniFlash is not necessary. You need to make the configuration match the number of devices on your scan chain, including any devices not TM4C. Did configuring the other devices in "Bypass" eliminate the error message you mentioned earlier?

    You need to be very careful with the hardware layout. JTAG is very sensitive to reflections on the TCK signal.
  • The following link provides some information about interfacing JTAG with multiple devices. That information is about 3/4 way down the page.

    http://dev.ti.com/tirex/#/?link=Development%20Tools%2FDebug%20Probes%2FXDS%2FDocuments%2FXDS%20Target%20Connection%20Guide

    Since you have 5 devices on the scan chain, you need to make sure the TCK routes from device to device in a chain (no stubs) and  add an AC termination at the last device.

  • *** LIKE ***

    So Glad to observe you offering "CAUTION" to this  "JTAG - Daisy Chaining" poster!

    Firm/I have past tried such - the demands placed are (very) high - "Attention to Circuit Layout & Detail" prove CRUCIAL.

    To "Attention to Detail" - poster opened - specifying "THREE Controllers" ("3" was noted - FOUR Times!) - which has (Suddenly without (any) announcement)  "NOW  Risen  to FIVE!"    (Greater "attention" - (may) be indicated...)

    From Firm's/my experience - should the "Daisy Chain" exceed THREE - "Success" may prove (likely will prove) ELUSIVE!      Thus - Two separate such "chains" - IMHO - prove more robust - thus superior!    (And "Attention to DETAIL" (remains) required!)

  • The jtag is detecting the 5 devices but we not able to program the desired target . is there Any additional setting that we have to do to program the desired target .Even though i have bypassed the other targets i am not able to program the selected target.do we have to do anything more in configuration settings ??

    the device detection was checked via j-link command line in terminal

  • Hi...
    u are saying to bypass CS_DAP router right??
    by doing that we are getting the same error and not able to program..
    CORTEX_M4_1: Error connecting to the target: Current implementation only support connection to one core at a time per process.
    so can u please make that clear that were should i bypass to properly program each device ..

  • This may be related to the J-Link driver. Unfortunately I do not have a J-Link or hardware with 5 TM4C connected in daisy chain. You might try using "bypass" with an IR length of 4 instead to define the not selected TM4C129 devices in the chain. For example, the target configuration for the second device would look like this: (You must manually change the IR length of the bypass elements from 8 to 4 to match that of the ARM DAP)

  • Diljith,
    I am moving your thread to the Code Composer group because I think you should have been able to connect to a single target in the scan chain and programmed without having to build different target configuration files. I will still be copied on all responses to this thread.
  • Diljith,

    As Bob mentioned, this may be a problem with the Jlink Driver. I will follow up with them and see if there are any limitations on their implementation.

    The cautionary considerations about reflections and board design mentioned by Bob and cb_mobile1 are valid, but it seems you already took into consideration the overall length of the daisy chain by using buffers along the way. One additional detail is to keep a consistent delay in all the JTAG lines (where buffers can heavily influence that), so the data can arrive still within the delay margins. The easier way to help with this is to reduce the TCLK speed, as shown in the following screenshot.

    Answering your original question:

    Diljith k Anil said:

    i want to know how i will identify each device and load the differnt firmware to each device using this JTAG in the daisy chain cconnection.

    The devices are ordered in ascending order from the device connected to the TDI pin of the Debug Probe. Conversely, the device that connects to the TDO pin of the Debug Probe is the last. 

    Hope this helps.

    Rafael