# Resolving 'Can't initialize target CPU' on TI C6000 DSPs - Part 2

Configuration

The previous article discussed CCS configuration. The prerequisite for the following discussion is a valid CCS configuration file. All references will be for CCS 3.3, but they may be used or adapted to other versions of CCS. From the previous discussion, we know that the configuration file is located at 'C:\CCStudio_v3.3\cc\bin\brddat\ccBrd0.dat'.

XDS510 Emulators

Initial discussion will address only XDS510 class emulators that support TI drivers and utilities. This will include almost all emulators EXCEPT those made by Spectrum Digital [I will mention them later]. Do you remember the bit about reading the manual? Always check to see if your vendor has provided any special diagnostic tools.

The ccBrd0.dat that I will be using is:

 # config version=3.5$sepkpod_drvr=smt107.dllpod_port=0x240$ /@ tms320c6200_0 family=tms320c620x# /

Step 1 - Perform JTAG Reset

We have CCS configured, what could be wrong? The answer is, 'lots of things'. Let's get started.

Open a DOS window in the 'C:\CCStudio_v3.3\cc\bin' directory. The first tests we will do check out the emulator and some of the emulator low level software. CCS and the emulation driver will not be involved in these tests.

Enter the command 'xdsprobe -f brddat\ccBrd0.dat -r -v'. This command will not send any data to or from the DSP, but you must have the emulator connected to a DSP target that has power applied. The causes of errors that are detected at this time are no power, erroneous configuration, or emulator software [or software installation]. Any errors must be resolved before you can continue. Sample outputs are shown below [keep in mind that different software versions may have slightly different out].

On some versions of CCS you may have to explicitly enter the device address as '-p 240' or '-p 0' [the normal default addresses for non-parallel port emulators].

Step 2 - Read the Output!

Expected console output:

 >xdsprobe -f brddat/ccBrd0.dat -v-----[Print the reset-command hardware log-file]-----------------------------The scan-path will be reset by toggling the JTAG TRST signal.The controller type is the production TBC (74ACT8990).The controller has been hardware reset via its support logic.The controller has been software reset via its support logic.The software is configured to use only TBC features.The software is configured for slower clock operation.The controller has a logic ONE on its EMU[0] input pin.The controller has a logic ONE on its EMU[1] input pin.The controller will use rising-edge timing on output pins.The controller may use rising edge timing on input pins.The support logic has not previously detected a power-loss.The scan-path link-delay has been set to exactly '4' (0x0004).

Observe the output. The important lines to look at are 4 [adapter name], 5 [device address], 17 [reset was successful], line 22 [TBC (74ACT8990) - this will likely change in the future], 27, and 28 [EMU[0]/[1] are ONE].

If the target does not have power, the out put looks like:

 -----[Print the reset-command software log-file]-----------------------------This utility has selected an XDS510 class product.This utility will load the adapter 'smt107.dll'.This utility will operate on port address '0x0240'.The controller does not use a programmable FPGA.An error occurred while hard opening the controller.-----[An error has occurred and this utility has aborted]--------------------This error is generated by TI's USCIF driver.The value is '-180' (0xffffff4c).The title is 'SC_ERR_CTL_NO_TRG_POWER'.The explanation is:The controller has detected a target power loss.The user must turn-on or connect the power supply for the target.

Lines 8-19 give a very logical output. BUT, look what happens if I have not done my configuration properly. If I accidentally used the standard TI XDS510 configuration, my output would look like:

 -----[Print the reset-command software log-file]-----------------------------This utility has selected an XDS510 class product.This utility will load the adapter 'xds510.dll'.This utility will operate on port address '0x0240'.The controller does not use a programmable FPGA.An error occurred while hard opening the controller.-----[An error has occurred and this utility has aborted]--------------------This error is generated by TI's USCIF driver.The value is '-180' (0xffffff4c).The title is 'SC_ERR_CTL_NO_TRG_POWER'.The explanation is:The controller has detected a target power loss.The user must turn-on or connect the power supply for the target.

If I quickly look at the error message, lines 8-19 also indicate a power failure. This could start me on a path of 'pulling my hair out' if I did not observe line 4 [adapter 'xds510.dll']. Although the symptom was a power fail message, the problem is an incorrect configuration. The same power fail message will occur if you select a valid adapter DLL and use the wrong port address.

Selecting an invalid address gives an expected error message.

 -----[Print the reset-command software log-file]-----------------------------This utility has selected an XDS510 class product.This utility will load the adapter 'smt107.dll'.This utility will operate on port address '0x0244'.An error occurred while soft opening the controller.-----[An error has occurred and this utility has aborted]--------------------This error is generated by TI's USCIF driver.The value is '-118' (0xffffff8a).The title is 'SC_ERR_OCS_PORT'.The explanation is:An invalid controller port value has been used.Thus Unified-SCIF will not attempt to detect a controllerThe standard 560 ports are 0x0, 0x1, 0x2 and 0x3.The standard EVM ports are 0x0, 0x1, 0x2 and 0x3.The standard DSK ports are 0x378, 0x278 and 0x3BC.The standard 510 ports are 0x240, 0x280, 0x320 and 0x340.

The explanation at the bottom of the message is out of date and can be a bit misleading. It would be more accurate if it said something like:

The standard 560 emulators use ports 0x0, 0x1, 0x2 and 0x3.
The standard PCI EVMs use ports 0x0, 0x1, 0x2 and 0x3.
The standard Parallel port emulators and DSKs use ports 0x378, 0x278 and 0x3BC.
The standard 510 emulators use ports 0x240, 0x280, 0x320 and 0x340.
The some 510 USB emulators use ports 0x0, 0x1, 0x2 and 0x3.

Step 3 - Test JTAG Scan Path

A purchased target board, like a DSK or EVM, will most likely function with CCS at this point. If a custom board is being brought up for the first time, there could be problems with the JTAG scan path. We will use xdsprobe.exe to verify the integrity of the JTAG scan path connections between the connector and the target DSP.

NOTE: All JTAG signal references will assume a 14 pin JTAG connector. If you are using a different connector pinout, you will need to translate the pin numbers.

The command 'xdsprobe -f brddat\ccBrd0.dat -i -v' will check the scan chain integrity and generate output similar to the following:

 -----[Print the controller-open software log-file]---------------------------This utility has selected an XDS510 class product.This utility will load the adapter 'smt107.dll'.This utility will operate on port address '0x0240'.The controller does not use a programmable FPGA.The emulator adapter is named 'smt107.dll'.The emulator adapter is titled 'Custom normal-mode adapter for use with an XDS510'.The emulator adapter is version '33.0.0.0'.The emulator adapter is using 'Normal-Mode'.The controller has a version number of '1' (0x0001).The controller has an insertion length of '16' (0x0010).The local memory has a base address of '0' (0x000000).The local memory has a word capacity of '262144' (0x040000).-----[Perform the standard path-length test on the JTAG IR and DR]-----------This path-length test uses blocks of 512 32-bit words.The test for the JTAG IR instruction path-length succeeded.The JTAG IR instruction path-length is 8 bits.The test for the JTAG DR bypass path-length succeeded.The JTAG DR bypass path-length is 1 bits.-----[Perform the Integrity scan-test on the JTAG IR]------------------------This test will use blocks of 512 32-bit words.This test will be applied just once.Do a test using 0xFFFFFFFF.Scan tests: 1, skipped: 0, failed: 0Do a test using 0x00000000.Scan tests: 2, skipped: 0, failed: 0Do a test using 0xFE03E0E2.Scan tests: 3, skipped: 0, failed: 0Do a test using 0x01FC1F1D.Scan tests: 4, skipped: 0, failed: 0Do a test using 0x5533CCAA.Scan tests: 5, skipped: 0, failed: 0Do a test using 0xAACC3355.Scan tests: 6, skipped: 0, failed: 0All of the values were scanned correctly.The JTAG IR Integrity scan-test has succeeded.-----[Perform the Integrity scan-test on the JTAG DR]------------------------This test will use blocks of 512 32-bit words.This test will be applied just once.Do a test using 0xFFFFFFFF.Scan tests: 1, skipped: 0, failed: 0Do a test using 0x00000000.Scan tests: 2, skipped: 0, failed: 0Do a test using 0xFE03E0E2.Scan tests: 3, skipped: 0, failed: 0Do a test using 0x01FC1F1D.Scan tests: 4, skipped: 0, failed: 0Do a test using 0x5533CCAA.Scan tests: 5, skipped: 0, failed: 0Do a test using 0xAACC3355.Scan tests: 6, skipped: 0, failed: 0All of the values were scanned correctly.The JTAG DR Integrity scan-test has succeeded.

This command will generate several lines of output that should be checked carefully. The last line of output indicating 'scan-test has succeeded' indicates that we have a complete and functioning JTAG scan path, but may not necessarily mean that everything is correct. We will explore this condition in a future article.

One possible problem is the an input or output signal shorted to ground like in the output below:

 -----[Print the controller-open software log-file]---------------------------This utility has selected an XDS510 class product.This utility will load the adapter 'smt107.dll'.This utility will operate on port address '0x0240'.The controller does not use a programmable FPGA.The emulator adapter is named 'smt107.dll'.The emulator adapter is titled 'Custom normal-mode adapter for use with an XDS510'.The emulator adapter is version '33.0.0.0'.The emulator adapter is using 'Normal-Mode'.The controller has a version number of '1' (0x0001).The controller has an insertion length of '16' (0x0010).The local memory has a base address of '0' (0x000000).The local memory has a word capacity of '262144' (0x040000).-----[Perform the standard path-length test on the JTAG IR and DR]-----------This path-length test uses blocks of 512 32-bit words.The test for the JTAG IR instruction path-length failed.The JTAG IR instruction scan-path is stuck-at-zero.The test for the JTAG DR bypass path-length failed.The JTAG DR bypass scan-path is stuck-at-zero.-----[Perform the Integrity scan-test on the JTAG IR]------------------------This test will use blocks of 512 32-bit words.This test will be applied just once.Do a test using 0xFFFFFFFF.Test 1 Word 0: scanned out 0xFFFFFFFF and scanned in 0x00000040.Test 1 Word 1: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 2: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 3: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 4: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 5: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 6: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 7: scanned out 0xFFFFFFFF and scanned in 0x00000000.The details of the first eight errors have been provided.The utility will now report only the count of failed tests.Scan tests: 1, skipped: 0, failed: 1Do a test using 0x00000000.Scan tests: 2, skipped: 0, failed: 1Do a test using 0xFE03E0E2.Scan tests: 3, skipped: 0, failed: 2Do a test using 0x01FC1F1D.Scan tests: 4, skipped: 0, failed: 3Do a test using 0x5533CCAA.Scan tests: 5, skipped: 0, failed: 4Do a test using 0xAACC3355.Scan tests: 6, skipped: 0, failed: 5Some of the values were corrupted - 83.2 percent.The JTAG IR Integrity scan-test has failed.-----[Perform the Integrity scan-test on the JTAG DR]------------------------This test will use blocks of 512 32-bit words.This test will be applied just once.Do a test using 0xFFFFFFFF.Test 1 Word 0: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 1: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 2: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 3: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 4: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 5: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 6: scanned out 0xFFFFFFFF and scanned in 0x00000000.Test 1 Word 7: scanned out 0xFFFFFFFF and scanned in 0x00000000.The details of the first eight errors have been provided.The utility will now report only the count of failed tests.Scan tests: 1, skipped: 0, failed: 1Do a test using 0x00000000.Scan tests: 2, skipped: 0, failed: 1Do a test using 0xFE03E0E2.Scan tests: 3, skipped: 0, failed: 2Do a test using 0x01FC1F1D.Scan tests: 4, skipped: 0, failed: 3Do a test using 0x5533CCAA.Scan tests: 5, skipped: 0, failed: 4Do a test using 0xAACC3355.Scan tests: 6, skipped: 0, failed: 5Some of the values were corrupted - 83.2 percent.The JTAG DR Integrity scan-test has failed.

We can troubleshoot this problem with the help of a scope and a new command. If we use 'xdsprobe -f brddat\ccBrd0.dat -g 0x55555555 -c', a continuous alternating pattern of 1's and 0's will be output to the target board. Tracing the TDI signal will allow us to locate the point of failure.

mikedunn

Previous post by Mike Dunn:
Resolving 'Can't initialize target CPU' on TI C6000 DSPs - Part 1

[ - ]
Comment by July 16, 2008
How about an article on transitioning from CCS/JTAG to standalone booting in target boards? At least the GEL files need to be removed and integrated into the DSP code. But there seems to be something else, too.
[ - ]
Comment by June 4, 2009
very good result
[ - ]
Comment by October 14, 2010
Thank you very much for very useful post. I've read it and solve some of my problem. I tried the command: 'xdsprobe -f brddat\ccBrd0.dat -r -v' and this is the result: This utility has selected an XDS510 class product. This utility will load the adapter 'XDS510U2.dll'. This utility will operate on port address '0x0240'. TDS510USB Emulator found (USB 2.0 port) The controller does not use a programmable FPGA. The emulator adapter is named 'XDS510U2.dll'. The emulator adapter is titled 'Custom block-mode adapter for use with an TDS510 '. The emulator adapter is version '33.0.0.0'. The emulator adapter is using 'Block-Mode'. The controller has a version number of '1' (0x0001). The controller has an insertion length of '16' (0x0010). The local memory has a base address of '0' (0x000000). The local memory has a word capacity of '262144' (0x040000). This utility will attempt to reset the controller. This utility has successfully reset the controller. -----[Print the reset command log-file]-------------------------------------- The scan-path will be reset by toggling the JTAG TRST signal. The controller type is the production TBC (74ACT8990). The controller has been hardware reset via its support logic. The controller has been software reset via its support logic. The software is configured to use only TBC features. The software is configured for slower clock operation. The controller has a logic ONE on its EMU[0] input pin. The controller has a logic ONE on its EMU[1] input pin. The controller will use rising-edge timing on output pins. The controller may use rising edge timing on input pins. The support logic has not previously detected a power-loss. The scan-path link-delay has been set to exactly '0' (0x0000). But when I tried this one:xdsprobe -f brddat\ccBrd0.dat -r -v; it show this text: This utility has selected an XDS510 class product. This utility will load the adapter 'XDS510U2.dll'. This utility will operate on port address '0x0240'. TDS510USB Emulator found (USB 2.0 port) The emulator adapter is named 'XDS510U2.dll'. The emulator adapter is titled 'Custom block-mode adapter for use with an TDS510 '. The emulator adapter is version '33.0.0.0'. The emulator adapter is using 'Block-Mode'. The controller has a version number of '1' (0x0001). The controller has an insertion length of '16' (0x0010). The local memory has a base address of '0' (0x000000). The local memory has a word capacity of '262144' (0x040000). -----[Perform the scan-path length test on the JTAG IR and DR]--------------- This scan-path length test uses blocks of 512 32-bit words. -----[The results of the scan-path length test on the JTAG IR and DR]-------- The test for the JTAG IR instruction scan-path length failed. The JTAG IR instruction scan-path is stuck-at-zero. The test for the JTAG DR bypass scan-path length failed. The JTAG DR bypass scan-path is stuck-at-zero. -----[Perform the scan-path integrity test on the JTAG IR]------------------- This scan-path test uses blocks of 512 32-bit words. Starting an Integrity Test using 0xFFFFFFFF. -----[An error has occurred and this utility has aborted]-------------------- This error is generated by TI's USCIF driver. The value is -270' (0xfffffef2). The title is: SC_ERR_SCN_LENGTH_CONTROL'. The explanation is: The length of the scan is too large for the emulators controller. But there's still one. After configuring the board in CCS Setup, I launch the CCS. But I try to connect to the target board, it show error message: Error connecting to the target: Error 0x80000244/-2131 Fatal Error during: Register, Initialization, OCS, Cannot access register at 0x00000000 Sequence ID: 0 Error Code: -2131 Error Class: 0x80000244 I/O Port = 0 I'm a newbie in Embedded System, so I can't figure out what the problem is and how to fix it. Please show me what's up. I use CCS 3.3, TI DSP Emulator XDS510-USB2.0.

To post reply to a comment, click on the 'reply' button attached to each comment. To post a new comment (not a reply to a comment) check out the 'Write a Comment' tab at the top of the comments.