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/MSP432E401Y: XDS110 not recognized in Linux system

Part Number: MSP432E401Y

Tool/software: Code Composer Studio

I'm trying to do some development work on an MSP in a Linux environment, using 64-bit Fedora 25 build.  I've tested the board on  windows development system and it works just fine there, it only on Linux I'm having a problem.   I know this may end up being more of a Linux type issue, but I'm hopefully someone out there has some experience and can see what my problem is.

I got Code Composer installed, bno problem (v8.2).  I am using the tcpecho example from sdk 2.30, unmodified (CCS/tirtos version).   It builds fine.

My problem lies in trying to load the software to the MSP, the system won't recognize the board despite everything seeming to indicate it should.

Here is the error message from Code Composer during the load op:

[Start]

Execute the command:

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

[Result]


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

/home/pbyers/.ti/ti/0/0/BrdDat/testBoard.dat

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

This utility has selected a 100- or 510-class product.
This utility will load the adapter 'libjioxds110.so'.
The library build date was 'Sep 28 2018'.
The library build time was '17:16:01'.
The library package version is '8.0.803.0'.
The library component version is '35.35.0.0'.
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 or utilities.

The value is '-260' (0xfffffefc).
The title is 'SC_ERR_XDS110_OPEN'.

The explanation is:
An attempt to connect to the XDS110 failed.
The cause may be one or more of: no XDS110 is connected, invalid
firmware update, invalid XDS110 serial number, or faulty USB
cable. The firmware and serial number may be updated using the
xdsdfu utility found in the .../ccs_base/common/uscif/xds110
directory of your installation. View the ReadMe.txt file there
for instructions.

[End]

What I've tried so far:

Well, not much, I just looked at a lot of syslog outputs to confirm the board was being recognized and it seemed it was.   Here's what I see:

[pbyers@localhost ~]$ dmesg | grep tty
[    0.000000] console [tty0] enabled
[    3.253236] dw-apb-uart.0: ttyS4 at MMIO 0xdf14c000 (irq = 20, base_baud = 115200) is a 16550A
[pbyers@localhost ~]$ dmesg | grep tty
[    0.000000] console [tty0] enabled
[    3.253236] dw-apb-uart.0: ttyS4 at MMIO 0xdf14c000 (irq = 20, base_baud = 115200) is a 16550A
[  308.024095] cdc_acm 1-1:1.0: ttyACM0: USB ACM device
[  308.024521] cdc_acm 1-1:1.3: ttyACM1: USB ACM device
[pbyers@localhost ~]$ dmesg 
[  307.831170] usb 1-1: new full-speed USB device number 5 using xhci_hcd
[  308.000800] usb 1-1: New USB device found, idVendor=0451, idProduct=bef3
[  308.000808] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  308.000813] usb 1-1: Product: XDS110 (02.03.00.15) Embed with CMSIS-DAP
[  308.000817] usb 1-1: Manufacturer: Texas Instruments
[  308.000821] usb 1-1: SerialNumber: ME401023
[  308.006567] hid-generic 0003:0451:BEF3.0003: hiddev96,hidraw2: USB HID v1.11 Device [Texas Instruments XDS110 (02.03.00.15) Embed with CMSIS-DAP] on usb-0000:00:14.0-1/input5
[  308.024095] cdc_acm 1-1:1.0: ttyACM0: USB ACM device
[  308.024521] cdc_acm 1-1:1.3: ttyACM1: USB ACM device
[  308.024843] usbcore: registered new interface driver cdc_acm
[  308.024844] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[pbyers@localhost ~]$

So it seems like the board is recognized on ttyACM0 and ttyACM1

I tried using Putty to connect serially to those ports.   No connection could be established. 

I followed the instructions to attempt a reset of the xds probe, the system says it can't find it on the bus

[pbyers@localhost xds110]$ ./xds110reset
ERROR: Failed to connect to XDS110 (-260).
       Check USB connection to the XDS110.
[pbyers@localhost xds110]$ ./xdsdfu -f firmware.bin -r

USB Device Firmware Upgrade Utility
Copyright (c) 2008-2018 Texas Instruments Incorporated.  All rights reserved.

Scanning USB buses for supported XDS110 devices...

The requested device was not found on the bus.
[pbyers@localhost xds110]$ 

I'm sort of at the end of what I can think to do right now.   Any help or possible suggestions would be a help.   I can still use a JTAG to program the MCU directly, so I'm fine there, but it would be really keen to be able to use the XDS for ease of dev and debug.

Thanks

  • For Linux, you have to grant permission to the user to use the device. Has that been done?

  • Thanks for the reply Mike.

    I've changed the permissions for the ttyACM0 and ttyACM1 devices, should this be enough?   I'm still not having any success.

    here's the permission settings

    [pbyers@localhost /]$ ls -al /dev/ttyACM*
    crw-rw-rw-. 1 root dialout 166, 0 Nov 29 15:36 /dev/ttyACM0
    crw-rw-rw-. 1 root dialout 166, 1 Nov 29 15:36 /dev/ttyACM1
    [pbyers@localhost /]$ 
    

  • How about the permissions for the ttys*?
  • So, I this solved at least one issue, I can now connect to the device via terminal on ttyACM0 and get expected readouts. But still no ability to program through the debugger and the xds reset and firmware flash utilities still can't locate the device on the bus.

    Here are the permissions for all tty:

    [pbyers@localhost ~]$ ls -al /dev/tty*            
    crw-rw-rw-. 1 root tty       5,  0 Nov 30 14:14 /dev/tty
    crw--w----. 1 root tty       4,  0 Nov 30 13:55 /dev/tty0
    crw--w----. 1 root tty       4,  1 Nov 30 13:55 /dev/tty1
    crw--w----. 1 root tty       4, 10 Nov 30 13:55 /dev/tty10
    crw--w----. 1 root tty       4, 11 Nov 30 13:55 /dev/tty11
    crw--w----. 1 root tty       4, 12 Nov 30 13:55 /dev/tty12
    crw--w----. 1 root tty       4, 13 Nov 30 13:55 /dev/tty13
    crw--w----. 1 root tty       4, 14 Nov 30 13:55 /dev/tty14
    crw--w----. 1 root tty       4, 15 Nov 30 13:55 /dev/tty15
    crw--w----. 1 root tty       4, 16 Nov 30 13:55 /dev/tty16
    crw--w----. 1 root tty       4, 17 Nov 30 13:55 /dev/tty17
    crw--w----. 1 root tty       4, 18 Nov 30 13:55 /dev/tty18
    crw--w----. 1 root tty       4, 19 Nov 30 13:55 /dev/tty19
    crw--w----. 1 root tty       4,  2 Nov 30 13:55 /dev/tty2
    crw--w----. 1 root tty       4, 20 Nov 30 13:55 /dev/tty20
    crw--w----. 1 root tty       4, 21 Nov 30 13:55 /dev/tty21
    crw--w----. 1 root tty       4, 22 Nov 30 13:55 /dev/tty22
    crw--w----. 1 root tty       4, 23 Nov 30 13:55 /dev/tty23
    crw--w----. 1 root tty       4, 24 Nov 30 13:55 /dev/tty24
    crw--w----. 1 root tty       4, 25 Nov 30 13:55 /dev/tty25
    crw--w----. 1 root tty       4, 26 Nov 30 13:55 /dev/tty26
    crw--w----. 1 root tty       4, 27 Nov 30 13:55 /dev/tty27
    crw--w----. 1 root tty       4, 28 Nov 30 13:55 /dev/tty28
    crw--w----. 1 root tty       4, 29 Nov 30 13:55 /dev/tty29
    crw--w----. 1 root tty       4,  3 Nov 30 13:55 /dev/tty3
    crw--w----. 1 root tty       4, 30 Nov 30 13:55 /dev/tty30
    crw--w----. 1 root tty       4, 31 Nov 30 13:55 /dev/tty31
    crw--w----. 1 root tty       4, 32 Nov 30 13:55 /dev/tty32
    crw--w----. 1 root tty       4, 33 Nov 30 13:55 /dev/tty33
    crw--w----. 1 root tty       4, 34 Nov 30 13:55 /dev/tty34
    crw--w----. 1 root tty       4, 35 Nov 30 13:55 /dev/tty35
    crw--w----. 1 root tty       4, 36 Nov 30 13:55 /dev/tty36
    crw--w----. 1 root tty       4, 37 Nov 30 13:55 /dev/tty37
    crw--w----. 1 root tty       4, 38 Nov 30 13:55 /dev/tty38
    crw--w----. 1 root tty       4, 39 Nov 30 13:55 /dev/tty39
    crw--w----. 1 root tty       4,  4 Nov 30 13:55 /dev/tty4
    crw--w----. 1 root tty       4, 40 Nov 30 13:55 /dev/tty40
    crw--w----. 1 root tty       4, 41 Nov 30 13:55 /dev/tty41
    crw--w----. 1 root tty       4, 42 Nov 30 13:55 /dev/tty42
    crw--w----. 1 root tty       4, 43 Nov 30 13:55 /dev/tty43
    crw--w----. 1 root tty       4, 44 Nov 30 13:55 /dev/tty44
    crw--w----. 1 root tty       4, 45 Nov 30 13:55 /dev/tty45
    crw--w----. 1 root tty       4, 46 Nov 30 13:55 /dev/tty46
    crw--w----. 1 root tty       4, 47 Nov 30 13:55 /dev/tty47
    crw--w----. 1 root tty       4, 48 Nov 30 13:55 /dev/tty48
    crw--w----. 1 root tty       4, 49 Nov 30 13:55 /dev/tty49
    crw--w----. 1 root tty       4,  5 Nov 30 13:55 /dev/tty5
    crw--w----. 1 root tty       4, 50 Nov 30 13:55 /dev/tty50
    crw--w----. 1 root tty       4, 51 Nov 30 13:55 /dev/tty51
    crw--w----. 1 root tty       4, 52 Nov 30 13:55 /dev/tty52
    crw--w----. 1 root tty       4, 53 Nov 30 13:55 /dev/tty53
    crw--w----. 1 root tty       4, 54 Nov 30 13:55 /dev/tty54
    crw--w----. 1 root tty       4, 55 Nov 30 13:55 /dev/tty55
    crw--w----. 1 root tty       4, 56 Nov 30 13:55 /dev/tty56
    crw--w----. 1 root tty       4, 57 Nov 30 13:55 /dev/tty57
    crw--w----. 1 root tty       4, 58 Nov 30 13:55 /dev/tty58
    crw--w----. 1 root tty       4, 59 Nov 30 13:55 /dev/tty59
    crw--w----. 1 root tty       4,  6 Nov 30 13:55 /dev/tty6
    crw--w----. 1 root tty       4, 60 Nov 30 13:55 /dev/tty60
    crw--w----. 1 root tty       4, 61 Nov 30 13:55 /dev/tty61
    crw--w----. 1 root tty       4, 62 Nov 30 13:55 /dev/tty62
    crw--w----. 1 root tty       4, 63 Nov 30 13:55 /dev/tty63
    crw--w----. 1 root tty       4,  7 Nov 30 13:55 /dev/tty7
    crw--w----. 1 root tty       4,  8 Nov 30 13:55 /dev/tty8
    crw--w----. 1 root tty       4,  9 Nov 30 13:55 /dev/tty9
    crw-rw-rw-. 1 root dialout 166,  0 Nov 30 14:14 /dev/ttyACM0
    crw-rw-rw-. 1 root dialout 166,  1 Nov 30 14:14 /dev/ttyACM1
    crw-rw-rw-. 1 root dialout   4, 64 Nov 30 13:55 /dev/ttyS0
    crw-rw-rw-. 1 root dialout   4, 65 Nov 30 13:55 /dev/ttyS1
    crw-rw-rw-. 1 root dialout   4, 74 Nov 30 13:55 /dev/ttyS10
    crw-rw-rw-. 1 root dialout   4, 75 Nov 30 13:55 /dev/ttyS11
    crw-rw-rw-. 1 root dialout   4, 76 Nov 30 13:55 /dev/ttyS12
    crw-rw-rw-. 1 root dialout   4, 77 Nov 30 13:55 /dev/ttyS13
    crw-rw-rw-. 1 root dialout   4, 78 Nov 30 13:55 /dev/ttyS14
    crw-rw-rw-. 1 root dialout   4, 79 Nov 30 13:55 /dev/ttyS15
    crw-rw-rw-. 1 root dialout   4, 80 Nov 30 13:55 /dev/ttyS16
    crw-rw-rw-. 1 root dialout   4, 81 Nov 30 13:55 /dev/ttyS17
    crw-rw-rw-. 1 root dialout   4, 82 Nov 30 13:55 /dev/ttyS18
    crw-rw-rw-. 1 root dialout   4, 83 Nov 30 13:55 /dev/ttyS19
    crw-rw-rw-. 1 root dialout   4, 66 Nov 30 13:55 /dev/ttyS2
    crw-rw-rw-. 1 root dialout   4, 84 Nov 30 13:55 /dev/ttyS20
    crw-rw-rw-. 1 root dialout   4, 85 Nov 30 13:55 /dev/ttyS21
    crw-rw-rw-. 1 root dialout   4, 86 Nov 30 13:55 /dev/ttyS22
    crw-rw-rw-. 1 root dialout   4, 87 Nov 30 13:55 /dev/ttyS23
    crw-rw-rw-. 1 root dialout   4, 88 Nov 30 13:55 /dev/ttyS24
    crw-rw-rw-. 1 root dialout   4, 89 Nov 30 13:55 /dev/ttyS25
    crw-rw-rw-. 1 root dialout   4, 90 Nov 30 13:55 /dev/ttyS26
    crw-rw-rw-. 1 root dialout   4, 91 Nov 30 13:55 /dev/ttyS27
    crw-rw-rw-. 1 root dialout   4, 92 Nov 30 13:55 /dev/ttyS28
    crw-rw-rw-. 1 root dialout   4, 93 Nov 30 13:55 /dev/ttyS29
    crw-rw-rw-. 1 root dialout   4, 67 Nov 30 13:55 /dev/ttyS3
    crw-rw-rw-. 1 root dialout   4, 94 Nov 30 13:55 /dev/ttyS30
    crw-rw-rw-. 1 root dialout   4, 95 Nov 30 13:55 /dev/ttyS31
    crw-rw-rw-. 1 root dialout   4, 68 Nov 30 13:55 /dev/ttyS4
    crw-rw-rw-. 1 root dialout   4, 69 Nov 30 13:55 /dev/ttyS5
    crw-rw-rw-. 1 root dialout   4, 70 Nov 30 13:55 /dev/ttyS6
    crw-rw-rw-. 1 root dialout   4, 71 Nov 30 13:55 /dev/ttyS7
    crw-rw-rw-. 1 root dialout   4, 72 Nov 30 13:55 /dev/ttyS8
    crw-rw-rw-. 1 root dialout   4, 73 Nov 30 13:55 /dev/ttyS9
    [pbyers@localhost ~]$ 
    
    
    
    

  • OK. We are getting somewhere. Now let's check if the debugger isn't connected using a non-virtual COM driver. Try to do the following:
    * Disconnect all other USB devices. Just keep the debugger.
    * run "lsusb" and look for anything with Texas Instruments.
  • Hi Mike, here is what I get:

    [pbyers@localhost ~]$ lsusb
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 004: ID 8087:0a2b Intel Corp. 
    Bus 001 Device 008: ID 0461:4e22 Primax Electronics, Ltd 
    Bus 001 Device 002: ID 413c:2107 Dell Computer Corp. 
    Bus 001 Device 009: ID 0451:bef3 Texas Instruments, Inc. 
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    [pbyers@localhost ~]$ lsusb

    The Primax Electronics device is my mouse and the Dell Computer Corp. device is the keyboard.

  • OK. Do you see any devices under /dev/ttyUSB?

    If so, give them the proper permissions as you did before.

  • Hi,

    Despite we don't officially test/support Fedora, several other users were successful in making CCS work on it.

    Mike is on the right path regarding permissions and access. A lot has been done to automate access to Debug Probes.

    Two very important details to have user access to tty ports are:
    - add yourself to the dialout group
    - run the install script to allow user interactions with the Debug Probes.
    software-dl.ti.com/.../ccsv8_linux_host_support.html

    Hope this helps,
    Rafael

**Attention** This is a public forum