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.

CCS: CCS V7 on maxOS Sierra (10.12.5) connecting to XDS200

Other Parts Discussed in Thread: ENERGIA, EK-TM4C129EXL, AM1802

Tool/software: Code Composer Studio

Hi there,

I am trying to get CCS V7 (macOS) to talk to an XDS200.  When starting the debugger, CCS gives me the error message: 

---

Error initializing emulator:

(Error -2083 @ 0x0)

Unable to communicate with the debug probe. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation.

(Emulation package 6.0.628.3)

---

Despite this I can, from a terminal window, run "./xds2xx_conf get xds2xxu 0".  This will return the XDS200 boardRev = 1 and swRev = 1.0.0.8.  So I see that the I can recognize the XDS200.

To make the problem more interesting, if I run Windows under Parallels on the same mac, I can get the XDS200 to work.

Any theories on what might be going on?

Thanks!

All the best,

Ray Simar

  • Ray,

    That is strange that it works under parallels but not natively. I don't have an XDS200 at home with me but someone will take a look on Monday.

    Regards,
    John
  • Ray, one thought - as we've run into (probably related?) kinds of issues pretty frequently.

    We don't use Parallels, but under VMWare on MacOS, the mapping of a given serial port to either the host OS or the emulated one becomes critically important.

    Is it possible that your VM has simply grabbed hold of the USB port? - Which would manifest as all sorts of errors with the Debug Probe...
  • Thanks John.  Let me know what you find out.

    All the best,

    Ray

  • Hi LouEEEE!,

    This is an interesting observation. What did you do in your case to get this to work?

    Let me summarize what I just tried an attempt to keep Parallels from interfering. I went through the process of turning off Parallels, disconnecting all the USB ports, and powering off the mac. Then I turned the mac back on, started CCS natively, clicked the bug to start the debugger, and it hangs for a while. Then it returns the error message:
    ---
    Error initializing emulator:
    (Error -2083 @ 0x0)
    Unable to communicate with the debug probe. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation.
    (Emulation package 6.0.628.3)
    ---

    FYI, if I go to a terminal window and type in "ls /dev/cu.*" I get two connections: /dev/cu.usbmodem1413 and /dev/cu.usbmodem1411.

    Anything I might have missed in the process? Thanks!

    All the best,
    Ray
  • Wish I could give you an authoritative answer on this. Some observations based on my own agonies... :

    Is it possible you don't have drivers installed for the USB ports on these boards? Again, fumbling with CCSv7 myself, also on MacOS, I understood that the 'Standard Install' of CCS installed the relevant drivers. ( Seems to me I saw a standalone driver installer at some point as well; might be worth a Mulligan? )

    In any case, despite the many, many issues we're having with CCS, the debugger is one thing which has worked consistently. In fact, it's a main driver for our sticking with it.

    Ray Simar said:
    This is an interesting observation. What did you do in your case to get this to work?

    Nothing more than a series of hair-pulling 'accidents'. Board resets, IDE shutdowns, USB unplug/re-plug, etc.

    For example: Having done a bit of coding in the Energia environment, even a quit of the IDE doesn't always release the USB port. Evidence has been a variety of messages like: 'unable to communicate with port' and incorrect 'debug frequency'.

    Similarly, the screen command called on one of those ports will take control of it, and doesn't release it consistently, even on termination of the terminal. Imagine you'd have to kill the relevant processes...

    Ray Simar said:
    Let me summarize what I just tried an attempt to keep Parallels from interfering. I went through the process of turning off Parallels, disconnecting all the USB ports, and powering off the mac. Then I turned the mac back on, started CCS natively, clicked the bug to start the debugger, and it hangs for a while. Then it returns the error message:
    ---
    Error initializing emulator:
    (Error -2083 @ 0x0)
    Unable to communicate with the debug probe. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation.
    (Emulation package 6.0.628.3)

    Other than 'Did you point the debugger at something to debug?', that bit just feels like missing drivers...

    Ray Simar said:
    FYI, if I go to a terminal window and type in "ls /dev/cu.*" I get two connections: /dev/cu.usbmodem1413 and /dev/cu.usbmodem1411.

    Yes, consistent with my findings. I'm using the same approach (though I only see one device entry for the EK-TM4C129EXL): /dev/cu.usbmodem0F8008C1

    Experts here should weigh in. As James Comey has just said, "My feelings won't be hurt" ( I loved that... )

  • Hi Ray,
    I tried using my XDS200 USB debug probe on my Mac laptop running Sierra 10.12.4. No problems there so it sounds like something specific to your environment. Are you plugging directly to the mac or via hub? If it is directly, can you try using a hub as mentioned in the other thread?

    Thanks
    ki
  • Hi Ki,

    First, thanks a ton for looking into this.  I know you are super busy and I appreciate you taking the time to check into this.

    I've tried this on a mac laptop and an iMac, with and without hubs.  But I'll try this again.

    But, I was wondering what version of CCS and the emulation package are you using?

    All the best,

    Ray

  • Hi LouEEEE!

    Thanks for the followup.

    I'll give this another try and see if I can track down any errant processes that might be tying up the USB ports.

    All the best,
    Ray
  • Ray - Did you verify that using a hub made no difference?

    I tested with CCSv 7.1.0 (emupack 6.0.576.0) and a early yet-to-be-released CCSv7.2.0 (emupack 6.0.628.3). Both worked fine with my Spectrum Digital XDS200. I also updated my OS to 10.12.5 and it still worked after that.

    Can you try running the below from the command-line and pasting the output to this thread:

    > ioreg -lx | grep "IOModemSerialStreamSync " -A 5

    thanks
    ki
  • If it helps to add a little more input to this, my output of that ( MacOS 10.12.5, CCSv7.1.0.00016 ) is:

    $ ioreg -lx | grep "IOModemSerialStreamSync " -A 5 | | | | | | +-o IOModemSerialStreamSync <class IOModemSerialStreamSync, id 0x1000014b3, registered, matched, active, busy 0 (0 ms), retain 6> | | | | | | | { | | | | | | | "Product Name" = "In-Circuit Debug Interface" | | | | | | | "IOTTYBaseName" = "usbmodem" | | | | | | | "IOTTYSuffix" = "0F8008C1" | | | | | | | }
  • Thanks for the help Ki and LouEEEE!

    I have tried this with and without a hub. And here's what I get when I run the ioreg command (macOS 10.12.5, CCS Version: 7.2.0.00012, TI Emulators: 6.0.628.3)

    server:~ rsimar$ ioreg -lx | grep "IOModemSerialStreamSync " -A 5
    | | | | | | | +-o IOModemSerialStreamSync <class IOModemSerialStreamSync, id 0x100001677, registered, matched, active, busy 0 (0 ms), retain 6>
    | | | | | | | | {
    | | | | | | | | "Product Name" = "XDS2xx USB Emulator - Composit"
    | | | | | | | | "IOTTYBaseName" = "usbmodem"
    | | | | | | | | "IOTTYSuffix" = "14121"
    | | | | | | | | }
    --
    | | | | | | +-o IOModemSerialStreamSync <class IOModemSerialStreamSync, id 0x100001676, registered, matched, active, busy 0 (0 ms), retain 6>
    | | | | | | | {
    | | | | | | | "Product Name" = "XDS2xx USB Emulator - Composit"
    | | | | | | | "IOTTYBaseName" = "usbmodem"
    | | | | | | | "IOTTYSuffix" = "14123"
    | | | | | | | }

    Looking forward to what you all think!

    All the best,
    Ray
  • Ray - your results looks along the lines of what is expected.

    I'm at a loss of what the cause of the issue us. I'm guessing that LouEEE is on the right track in regards to some other virtualization software is interfering with the ports. I'll keep digging
  • Hi Ki-Soo,

    I'll see about doing an experiment on another mac and see if I can find out what the problem is. I'll report back here on what I find. Thanks!

    All the best,
    Ray
  • HI Ki-Soo,

    If I could ask you a quick question, do you have two "usbmodem"s that show up on your mac? It looks to me like LouEEE! might only be having one show up.

    Thanks!

    All the best,
    Ray
  • Mine looks much like yours. The only difference is the values for IOTTYSuffix.

    LouEEE does not have an XDS200 plugged in so his output looks different. He is using the Stellaris In-Circuit debug probe instead.
  • Ray,

    One quick comment: can you share your .ccxml file so we can take a look at it? Perhaps something may be wrong on the file itself, given the xds2xxu_conf command works fine.

    Similarly as Ki, I did try on my 10.12.4 with CCSv7.2.0.00013 and it works just fine.

    Regards,
    Rafael
  • Ray - do you have the option to try things out on a mac that does NOT have any virtualization software installed like Parallels or VirtualBox?

    Thanks
    ki
  • Hi Rafael,

    I'm happy to do that!  Let me know if you have any questions.

    Thanks.

    All the best,

    Ray

    Contents of file Tiva TM4c123GH6ZRB.ccxml:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <configurations XML_version="1.2" id="configurations_0">
    <configuration XML_version="1.2" id="Texas Instruments XDS2xx USB Debug Probe_0">
    <instance XML_version="1.2" desc="Texas Instruments XDS2xx USB Debug Probe_0" href="connections/TIXDS2XXUSB_Connection.xml" id="Texas Instruments XDS2xx USB Debug Probe_0" xml="TIXDS2XXUSB_Connection.xml" xmlpath="connections"/>
    <connection XML_version="1.2" id="Texas Instruments XDS2xx USB Debug Probe_0">
    <instance XML_version="1.2" href="drivers/tixds560cs_dap.xml" id="drivers" xml="tixds560cs_dap.xml" xmlpath="drivers"/>
    <instance XML_version="1.2" href="drivers/tixds560cortexM.xml" id="drivers" xml="tixds560cortexM.xml" xmlpath="drivers"/>
    <platform XML_version="1.2" id="platform_0">
    <instance XML_version="1.2" desc="Tiva TM4C123GH6ZRB_0" href="devices/tm4c123gh6zrb.xml" id="Tiva TM4C123GH6ZRB_0" xml="tm4c123gh6zrb.xml" xmlpath="devices"/>
    </platform>
    </connection>
    </configuration>
    </configurations>

  • Ray - and Ki,

    One other thought on this - again, I don't use Parallels...

    But Fusion definitely has a setting to allow a permanent mapping of a given USB device to (either MacOS) or Windows. In other words, if you let that dialog slip by at some point, you may have the connection to Windows baked in...

    This would certainly lead to all manner of strange messages amounting to Port Unavailable ...

  • Hi Ki,

    I am taking another mac and removing the virtualization software to see if that affects anything. I'll let you know what I find out. Shortly, I should have one mac with virtualization and one without and then I can compare them.

    And thanks for the help of you, Rafael and others! I am in the process of bring up a board design that I will be having my students use. Since they are on different platforms (PC, mac, Linux), I want to do my best to get this to work natively on the mac. Thanks!

    All the best,
    Ray
  • Hi there,

    Here's an update on what I have done. I have removed parallels from a MacBook Pro. I reinstalled Sierra and updated CCS on that MacBook Pro .

    Here's the current revs of the software:
    CCS: Version: 7.2.0.00013
    macOS Sierra: 10.12.5
    XDS200 software rev: 1.0.0.8
    TI Emulators package: 6.0.628.3

    Nothing seems to have changed. When I run "./xds2xx_conf get xds2xxu 0" I get

    boardRev=1
    ipAddress=0.0.0.0
    ipConfig=dhcp
    ipGateway=0.0.0.0
    ipNetmask=0.0.0.0
    productClass=XDS2XX
    productName=XDS200
    serialNum=00:0E:99:04:3C:65
    swRev=1.0.0.8
    hostCPU=AM1802
    emuCtrlType=Bit bang
    extMemType=SDRAM
    portUSB=true
    portENET=false
    portWIFI=false
    portRS232=false
    EnableUSBSerial=false
    CurrentMeasure=false

    I believe the above is reasonable.

    When I am in CCS and click Verify by the Connection for my project I get:

    ------------
    [Start]

    Execute the command:

    %ccs_base%/common/uscif/dbgjtag -f %boarddatafile% -rv -o -S integrity

    [Result]


    -----[Print the board config pathname(s)]------------------------------------

    /Users/Ray/.ti/ti/1/0/BrdDat/testBoard.dat

    -----[Print the reset-command software log-file]-----------------------------

    This utility has selected a 560/2xx-class product.
    This utility will load the program 'xds2xxu.out'.
    ---------

    Then it hangs for several minutes. After that it returns and gives me:

    ---------
    E_RPCENV_IO_ERROR(-6) No connection
    Failed to open i/o connection (xds2xxu:0)

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

    The value is '-250' (0xffffff06).
    The title is 'SC_ERR_ECOM_EMUNAME'.

    The explanation is:
    An attempt to access the debug probe via USCIF ECOM has failed.

    [End]
    ------

    Let me know if the ccxml file showed any issues. And if you have any questions, don't hesitate to ask.

    Thanks for all of your help!

    All the best,
    Ray
  • I installed parallels on my macbook and I was able to reproduce the issue to the degree after some playing around with a parallels vm. Even if the vm was shut down, I had issues accessing the XDS200 from CCS with the same error. A restart of the macbook did not help but I was able to resolve the issue by disconnecting and reconnecting the USB cable to the XDS200 while parallels was not active.

    Ray Simar said:
    I have removed parallels from a MacBook Pro. I reinstalled Sierra and updated CCS on that MacBook Pro .

    I guess we can safely say that Parallels is not the cause now in your case. There must be something else that is interfering with the USB communication between CCS and the XDS200...

  • Wow.  I think this counts as some heroics on your part!

    So, we are ruling parallels out.  Yesterday, I was trying to figure out what might be happening with the USB drivers.  I thought I would try to compare what I am seeing on my mac to what your are seeing.  When you have it working, could you shoot me a screen capture of your USB device tree?  Here's mine:

    And here's what shows up under my system network settings:

    Here's what I get when I run ioreg:

    And here's what I get when I run xds2xx_conf:

    What are you seeing on your side?

    I thought giving you a chance to see the screen captures of all of these windows might give you some inspiration.  Thanks for the help!

    All the best,

    Ray

  • The only main difference I see is the USB device tree:

    Looks like you are connected to a 2.0 port while I am connected to a 3.0 port. But that shouldn't matter

    ki

  • Thanks for giving that a look.

    I have moved the xds to a USB 3.0 bus, but that doesn't seem to change things. When it hangs, I can unplug it and get it to stop trying to connect and then it returns an error message. When I reattach the USB cable, it hangs again.

    What is so tempting is that xds2xx_conf works. If we can figure out this problem, it will be a very interesting solution!

    Do you have any other ideas? If we get stuck, my fall back is to run CCS under parallels, since that does work.

    All the best,
    Ray
  • What is the exact model of your mac?
  • Here's what I have: iMac (27-inch, Late 2012) and MacBook Pro (Retina, 15-inch, Early 2013).

    How about yours? Are you suspicious of some hardware differences?

    All the best,
    Ray
  • Thanks. I've got a MacBook Air (11-inch, Early 2014)

    I can't say I have any reason to suspect HW differences being the culprit but I'm grasping at a straws a bit at this point. We have several varieties of mac here in the office and it would make sense to continue my investigations on a mac as close to your specs as possible.
  • Thanks a ton for the effort! I wonder if I might have just stumbled across a configuration that has not been tested much. Let me know what you uncover.

    And, if there is any kind of testing on beta software that I might do on my end, I am happy to help. I'll keep trying things on my end.

    FYI, as I do these tests, I am not bothering to hook the XDS to a board. I figure that if I can't talk to the XDS200, that doesn't really matter.

    Thanks again and good luck!

    All the best,
    Ray
  • One last question:
    What kind of CCS install are you doing? (which device families are you selecting, which debug probes (besides xds200), etc).
  • Ray Simar said:
    FYI, as I do these tests, I am not bothering to hook the XDS to a board. I figure that if I can't talk to the XDS200, that doesn't really matter.

    yes you are right. If you were able to communicate to the xds200, you'd get some "cable break" error. But you are not even getting that far.

  • Sure thing.

    I am installing for the TM4C microcontrollers. I am mainly trying to use the XDS200.

    But, to try something different, I hooked up a LaunchPad (TM4C123G) and the debug interface worked fine. I moved it from USB 3.0 to USB 2.0 and I can talk to the LaunchPad, via the Stellaris In-Circuit Debug Interface just fine: single step, inspect memory, etc.

    Does this answer your question?

    All the best,
    Ray
  • Exactly. I'd be cheering if I got a cable break error. :-) What I am going to do next is keep the debugger up and just tell it to retry over and over, while I do more useful work, and see if anything changes.

    All the best,
    Ray
  • Hi Ki,

    I thought I would check in to see if you had learned anything else. Thanks!

    All the best,
    Ray
  • Hi Ray,
    Sorry for the delay. I'm pretty much all tapped out of suggestions. I've escalated this to our emulation guru and hopefully he can come up with some potential solutions to your issue.

    Thanks for all your patience
    ki
  • Hi Ki,

    Thank you for all of your help!  (And here's hoping that "tapped out" also means some beer in your near future.)  I'm happy to give feedback, help debug, etc. with your emulation guru.  The one common factor in all of these problems could in fact be ... me. :-)  Tell them to ping me if they need any more information.

    I am going to give another option a try and that's to use an XDS 110 to see how things go.  I'll compare what I find there to the XDS 200.  I am hopeful that if I can figure out the problem I am having with the XDS 200 that might in turn help others.

    Stay tuned!

    All the best,

    Ray

  • Yes please let me know how it goes with using the XDS110. I'll be sure to give you updates as I get them

    ki
  • Ray,

    It's odd that xds2xx_conf works but not CCS because both open a connection using code built from the same sources. The XDS200 is a composite USB device with two CDC class interfaces.  There isn't a TI supplied driver for the XDS200 because the Mac OS knows how to access CDC interfaces as COM ports (or rather tty.usbmodem ports).

    I have a just a couple more things that we can try to gather a bit more info:

    First, go to the .../ccs_base/common/uscif directory of your CCS installation. Make sure CCS is not running and try the following command line:

    ./dbgjtag -f @xds200 -rv

    Let us know what that does on your Mac.

    And, then from within CCS, edit the target configuration, select the XDS200 debug probe and in the "Debug Probe I/O Port Number" box enter the following:

    0x14321

    Save that, and try the Test Connection.

    There may be one of a couple things happening. Our code that searches for the XDS200 could be getting tripped up by some difference on your Mac vs the machines we've been testing on. Putting in the port number manually may work around that.

    Or, CCS is somehow grabbing a connection to the XDS200 COM port and blocking the debug code from using it. That might explain why xds2xx_conf worked outside of CCS.