Use CrossWorks + CrossConnect with TI DM270
I am try to use CrossWorks on an old TI DM270 (ARM and DSP dual-core) SBC. Since TI use 14-pin JTAG. I made a cable that converts 20-pin JTAG signals to 14-pin ones. The following signals are used: 7 > 1 (TMS), 3 > 2 (TRST), 5 > 3 (TDI), 4 > 4 (TDIS), 1 > 5 (TVD), 13 > 7 (TDO), 8 > 8 (GND0), 11 > 9 (TCLKR), 10 > 10 (GND1), 9 > 11 (TCLKO), 12 > 12 (GND2).
It work fine with Segger J-Link. But when use it with CrossConnect, CrossWorks show an error message: "Target not responding".
I have try to change adaptive clocking and increase the JTAG clock divider. But with no luck. What can I do to fix this problem? Thank you in advance.
-
Thanks for feedback.
The part number I can see from the chip is "TMX320DM270", followed by "$4A 39A454W". The second label maybe shows the revision version of the chip. The web page http://processors.wiki.ti.com/index.php/ICEPICK explains to me some information about ICEPick. TMX320DM270 is a multiple core CPU. It is reasonable that has an ICEPick on it. But the above page not shows the ICEPick version of this device.
Does CrossConnect support ICEPick based devices?
-
Thank you Michael, one of the SBCs that I am working can be found here: http://focus.ti.com/pdfs/vf/vidimg/dm270pb.pdf. Other documents I have are delivered under NDA.
You give me a hope and direction to use CrossConnect with this old SBC. May I make some hack to get information from the SBC to write such a target script. Or you can give me some guildlines that I can try myself.
-
Install the Sitara CPU support package.
In the targets window turn off "Identify Target On Connect" and connect to the target.
In the script console load the ICE pick stuff
>load("targets/Sitara/ICEPick.js")
- reset the TAP using
>TargetInterface.setTMS(1);TargetInterface.cycleTCK(6);TargetInterface.runTestIdle();
See if there is any life
>ICEPickShowICEPICKCODE(ICEPickGetICEPICKCODE())
Output will be display in the output window
-
After run the steps on DM270 SBC, the output window shows:
IPID: 0xff141f84 MAJOR: 15 MINOR: 15 TEST_TAP: 1 EMU_TAP: 4 ICEPICK: 0x1f8 CAPA1: 0 CAPA0: 0
Run the steps on another TI DSC21 SBC, the output windows shows:
IPID: 0xff149f84 MAJOR: 15 MINOR: 15 TEST_TAP: 1 EMU_TAP: 4 ICEPICK: 0x9f8 CAPA1: 0 CAPA0: 0
Are these messages helpful?
-
Set the "Connect Script" project property to "Connect()" and add the following to the target script
load("targets/Sitara/ICEPick.js")
function Connect()
{
TargetInterface.selectDevice(0, 0, 0, 0);
// TAP reset
TargetInterface.setTMS(1);
TargetInterface.cycleTCK(6);
TargetInterface.runTestIdle();
ICEPickStart();
ICEPickAddTAP(0);
ICEPickFinish();
TargetInterface.selectDevice(0, 6, 0, 1);
// Don't do any more resets
TargetInterface.setDebugInterfaceProperty("reset_debug_interface_enabled", false);
}Set the project properties "JTAG Data Bits Before" to 1 and "JTAG Instruction Bits Before" to 6
In the targets window turn on "Identify Target On Connect" and try to connect.....
-
I set all project properties in "Common" configuraton. My project is based on generic ARM BSP. I add the target script code to "Standard_ARM_Target.js" in my project folder. When try to connect, the output window shows "Executing script Connect()". But the status line still shows "Target not responding".
Am I do something wrong?
-
Add the following function to your script
function ResetTAP()
{
// TAP reset
TargetInterface.setTMS(1);
TargetInterface.cycleTCK(6);
TargetInterface.setTMS(0);
TargetInterface.cycleTCK(1);
ICEPickStart();
ICEPickAddTAP(0);
ICEPickFinish();
}Set the project property "TAP Reset Script" to ResetTAP()
In the targets window right click on the CrossConnect and select Explore... and see if anything appears.
-
The popup window shows:
1. There are two devices found.
2. Total instruction register length = 12.
3. Device #0: Bits before/after DR=1/0, IR=10/0, IR length = 2, IR capture =0x1.
4. Device #1: Bits before/after DR=0/1, IR=0/2, IR length = 10, IR capture =0x6b.
5. Other fields (IDcode, Manufacturer, Part, Version) are all zeros. -
The following information are saved when I use Segger five months ago:
Found 2 JTAG devices, Total IRLen = 12:
1. #0 Id: 0x00000001, IRLen: 08, Unknown device
2. #1 Id: 0x3100E02F, IRLen: 04, IRPrint: 0x1, ARM7TDMI Core
The IR length show by CrossConnect is 10 (I post at message #10)
The IR length shown by Segger seem different with CrossConnect.
-
No, I still can't connect to ARM7.
No matter what value I set ir-pre and dr-pre, the Explore function can find the ARM core. This mean CrossConnect always know there is an ARM core. I wonder why CrossConnnect can't connect to it.
Thank you Michael! You spend so much time to help me. Though I can't use CrossConnect to access DM270 at this moment. You show me many things that I never touch before. I think I need take time to learn JTAG more and keep trying.
-
The partid for the ARM7 is 0x100e.
TargetInterface.selectDevice(irPre, irPost, drPre, drPost) used in the Connect() script function has four parameters. Are these four parameters the same thing with the four settings of "JTAG Chain Options" in project properties? Do I need change them at the same time when try various settings?
-
The file $(StudioDir)/bin/devices.xml contains a list jtag device id's we have seen. This is used for the connect from the explore dialog - I suspect 0x100e isn't something we've seen before for an ARM7.
The selectDevice and properties are the same thing - but I suspect the values in the project may be used in preference.
Looks like you've made some progress which is always heartening.
-
First, make a correct. If partid mean IDCODE, it is 0x3100E02F. 0x100e is "Part" in the explorer dialog.
I want to thank you again, Michael. I can't do "these things" without your help.
After connect to ARM7 core of DM270. When I try to start debugging. It show "Cannot halt target after reset". How to solve this problem?
Please sign in to leave a comment.
Comments
31 comments