Use CrossWorks + CrossConnect with TI DM270

Comments

31 comments

  • Avatar
    Michael Johnson

    I suspect this device has an ICE-pick on it. Can you provide the full part number so I can find the documentation?

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    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?

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    It does but requires a target script to program the icepick. Can you point me to a datasheet/reference manual?

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    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.

     

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    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

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    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?

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    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.....

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    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?

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    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.

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    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.

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    Did you try setting a jtag clock divider?

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    Yes, I try 4, 5, 255.

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    If you remove the project property "TAP Reset Script" and right click explore do you see anything? Do you know what devices are connected to the icepick?

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    After remove "TAP Reset Script", Device #1 show more detail information:
    IDCode: 0x2100E02F, Manufacturer: Texas Instruments, Part: 0x1002, Version: 3.
     
    As I know, one is TMS470 (ARM7TDMI), one is C54x DSP.

     

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    What is the IR length?

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    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.

     

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    It sounds like there isn't an icepick on it. You should be able to set the jtag project properties ir-pre 8 dr-pre 1 to get to the ARM7

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    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.

     

     

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    Did you try connecting via the explore dialog?

    Remember to set "Identify Target On Connect" to "Yes".

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    When select the ARM core in the explore dialog, the "Connect" button is gray.

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    Do you have a project loaded?

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    Yes, the project is based on Generic ARM.

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    Did you try ir-post 8 dr-post 1 - what is pre and post isn't obvious.

    What partid is displayed for the ARM7 in the explorer dialog?

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    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?

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    I remove the Connect() script function. Set irPost to 8, drPost to 1. It can connect to ARM7 now.

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    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.

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    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?

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    We haven't seen that part id for an ARM7 - these things are optional - this explains why the connect was greyed out in the explorer dialog.

    Try using TargetInterface.stop() rather than TargetInterface.resetAndStop() in the reset script.

    0
    Comment actions Permalink
  • Avatar
    Liu, Yi-Sheng

    It shows "Cannot stop target" when use TargetInterface.stop() in the reset script.

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    There is a project property "Stop CPU Using DBGRQ" which may be worth trying.

    0
    Comment actions Permalink

Please sign in to leave a comment.