ACM interface on TI Launchpad

Peter Jeremy peterjeremy at acm.org
Sun Jan 30 02:22:57 UTC 2011


I recently acquired a TI LaunchPad[1] and want to use FreeBSD as my
development enviroment (for anyone else who is interested in this, at
some stage I intend to post my experiences with the various ports to
-ports or feel free to contact me off-list).  It provides a FET430UIF
USB interface to the host computer and some googling shows that this
is a Communication Device Class (CDC), Abstract Control Model (ACM)
sub-class which is supported in Linux via the cdc_acm driver.

On FreeBSD 8.1, umodem(4) reports:
 ugen0.2: <Texas Instruments> at usbus0
 umodem0: <MSP430 Application UART> on usbus0
 umodem0: data interface 0, has no CM over data, has no break
and creates /dev/ttyU0 (and friends) but mspdebug reports that it
cannot access the UIF (so it is presumably talking to the device
UART, rather than the control interface).

I have tried adding the device id to usbdevs and
  {USB_VPI(USB_VENDOR_TI, USB_PRODUCT_TI_FET430UIF, 1)},
to sys/dev/usb/serial/umodem.c:umodem_devs[] and this changes the
probe to:
 ugen4.2: <Texas Instruments> at usbus4
 umodem0: <MSP430 Application UART> on usbus4
 umodem0: data interface 0, has no CM over data, has no break
 umodem1: <MSP430 Debug-Interface> on usbus4
 umodem1: Missing descriptor. Assuming data interface is next.
 umodem1: data interface 2, has CM over data, has no break
 umodem1: no data interface
 device_attach: umodem1 attach returned 6
 umodem1: <MSP430 Debug-Interface> on usbus4
 umodem1: Missing descriptor. Assuming data interface is next.
 umodem1: data interface 2, has CM over data, has no break
 umodem1: no data interface
 device_attach: umodem1 attach returned 6
but there's no change to the accessibility.

Looking at the Linux driver sources, there are no quirks for this on
Linux.  How do I go about getting umodem(4) (or some other driver) to
detect the debug interfaces on FreeBSD?

The output from "usbconfig dump_device_desc" is:
ugen4.2: <Texas Instruments MSP-FET430UIF Texas Instruments> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0110 
  bDeviceClass = 0x0000 
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0008 
  idVendor = 0x0451 
  idProduct = 0xf432 
  bcdDevice = 0x0100 
  iManufacturer = 0x0001  <Texas Instruments>
  iProduct = 0x0002  <Texas Instruments MSP-FET430UIF>
  iSerialNumber = 0x0003  <1EFF426C50172852>
  bNumConfigurations = 0x0001 


The output from "usbconfig dump_curr_config_desc" is:
ugen4.2: <Texas Instruments MSP-FET430UIF Texas Instruments> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

 Configuration index 0

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x0055 
    bNumInterfaces = 0x0002 
    bConfigurationValue = 0x0001 
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x0080 
    bMaxPower = 0x0032 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0003 
      bInterfaceClass = 0x0002 
      bInterfaceSubClass = 0x0002 
      bInterfaceProtocol = 0x0001 
      iInterface = 0x0005  <MSP430 Application UART>

      Additional Descriptor

      bLength = 0x05
      bDescriptorType = 0x24
      bDescriptorSubType = 0x00
       RAW dump: 
       0x00 | 0x05, 0x24, 0x00, 0x10, 0x01


      Additional Descriptor

      bLength = 0x05
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump: 
       0x00 | 0x05, 0x24, 0x01, 0x00, 0x00


      Additional Descriptor

      bLength = 0x04
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump: 
       0x00 | 0x04, 0x24, 0x02, 0x02


     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0082  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x00ff 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0003  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0040 
        bInterval = 0x00ff 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 2
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0083  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0040 
        bInterval = 0x00ff 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


    Interface 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0002 
      bInterfaceClass = 0x0003 
      bInterfaceSubClass = 0x0000 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0004  <MSP430 Debug-Interface>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x01
       RAW dump: 
       0x00 | 0x09, 0x21, 0x01, 0x01, 0x00, 0x01, 0x22, 0xb6, 
       0x08 | 0x02

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0001 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0001  <OUT>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0001 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

[1] http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_%28MSP-EXP430G2%29
-- 
Peter Jeremy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-usb/attachments/20110130/cf6ac9e9/attachment.pgp


More information about the freebsd-usb mailing list