The CC3200 is a pretty neat new WiFi chip from Texas Instruments: It contains two CPU's: one running the TCP/IP and WiFi stacks and the other one (an ARM Cortex-M4F) is available to the user to run his application. When I tried to figure out if development was supported on a Linux host, I got mixed messages. On the one hand, TI's CCS IDE is available for Linux, but on the other hand, the CS3200 SDK comes as a Windows executable.

Since I have Windows available, I used it to install the SDK, and as it turns out, it just installs a bunch of files. This could easily have been packed in a cross-platform ZIP file, TI! You may be able to run this installer under Wine, but I haven't tried it.

I found instructions under "Option 3: GCC" in the Getting Started Guide that show how to build a project using GCC under Cygwin on Windows, and load and run the program using OpenOCD. So I was curious if these steps would work under Linux. Short answer: yes they do!

You can skip the Cygwin instructions under 3.3.1 of course. You do need to get the cross compiler installed as mentioned under 3.3.2 (Linux version), and make sure it is available in your path. I did not have to compile OpenOCD from source as described under 3.3.3, but installed it from the repo instead.

Building the example project as described under 3.3.4 worked after I renamed the "SimpleLink.h" file in the cc3200-sdk/simplelink/include directory to "simplelink.h" (typical Windows case sloppiness). Then it came time to try and get the program loaded using GDB and OpenOCD.

The debugger hardware on the CC3200 Launchpad is just an FTDI USB-to-serial chip, but with TI vendor and product IDs loaded. Linux already has the FTDI driver built-in, but a UDEV rule needs to be added to make it load this driver for the custom TI vendor and product ID:

sudo vi /etc/udev/rules.d/99-tiftdi.rules

Hit 'i' and put this in the file:


# For CC3200 Launchpad with FTDI Chip that TI put their codes in. ID = 0x0451, Product ID = 0xc32a
ATTRS{idProduct}=="c32a", ATTRS{idVendor}=="0451", RUN+="echo 0451 c32a > /sys/bus/usb-serial/drivers/ftdi_sio/new_id", MODE="666", GROUP="plugdev"

Hit Escape, ZZ and you're done. There are some other docs out there that have a rule to run modprobe instead with custom vendor and product parameters, but it seems that the newest kernels don't support these options anymore. You're now supposed to write to the new_id node instead.

To make this work, make sure your user is in the plugdev group (substitite the correct username of course):

sudo usermod -a -G plugdev USERNAME

That's it! Now the next instructions in the guide under 3.3.5, about testing OpenOCD and running GDB, should work just fine. Happy coding!

This blog post was posted to Techie Brain Showers on Tuesday August 19th, 2014 at 4:54PM
 

6 Responses to "CC3200 development under Linux"

  • ianc
    August 30th, 2014, 11:28 p.m.

    To answer your question: "You may be able to run this installer under Wine, but I haven't tried it."

    Yes, it works. Don't have a Windows machine at home :-) so no other alternative.

    Have you had any luck in getting the serial output of the FTDI Port B on Linux/minicom terminal?

  • sp
    October 21st, 2014, 12:01 a.m.

    Thanks!

    I'm trying this now, and get the following error:

    Open On-Chip Debugger 0.8.0 (2014-09-23-23:37)

    Licensed under GNU GPL v2

    For bug reports, read

    http://openocd.sourceforge.net/doc/doxygen/bugs.html [openocd.sourceforge.net]

    Error: The specified debug interface was not found (ft2232)

    The following debug interfaces are available:

    Runtime Error: cc3200.cfg:44:

    in procedure 'script'

    at file "embedded:startup.tcl", line 58

    in procedure 'interface' called at file "cc3200.cfg", line 44

    Any idea how to fix this?

  • ccname
    October 26th, 2014, 5:25 p.m.

    Hi sp,

    Looks like some stuff was deprecated/changed in openocd-0.8.0. I had the same problem. Switching back to openocd-0.7.0 worked for me. I did have to fiddle with the libftdi stuff, but I'm pretty sure that is a distro dependant thing. (I had to synlonk libftdi1 to libftdi for the configure script to find it).

    Also, I had to make a change for TI_RTOS/FreeRTOS projects in the gdbinit.

    From this:


    #*****************************************************************************
    # Load the binary
    #*****************************************************************************
    load

    ------------------------

    to this

    ------------------------


    #*****************************************************************************
    # Load the binary
    #*****************************************************************************
    monitor soft_reset_halt
    load

    Finally, I found it easiest to copy gbinit and cc3200.cfg to the cwd when running arm-none-eabi-gdb.

    Regards

    ...

  • November 13th, 2014, 8:36 a.m.

    Thanks for the useful additions everyone. :-)

    I have not tried OpenOCD 0.8.0 myself, nor have I tried to use FTDI port B.

  • Niall
    July 10th, 2015, 10:39 a.m.

    I've updated to the latest openocd release (0.9.0) and it now includes a board definition file for the simpleLink launchpad. You'll need to adjust the gdbinit to use it instead of the cc3200.cfg provided by the SDK.

    Still need the "monitor soft_reset_halt" noted above, though openocd notes it is deprecated, the suggested replacement ("reset halt") doesn't work.

  • Niall
    July 11th, 2015, 9:32 p.m.

    Using the FTDI port B just requires the ftdi-sio module to be loaded with the TI vendor/device ie:

    sudo modprobe ftdi-sio product=0xc32a vendor=0x0451

    or setup udev.

    It looks like openocd communicates directly via

    /dev/bus/usb/<bus>/<dev> and doesn't use a tty dev node.

Leave a Comment

You can use bbcode in the comment: e.g. [b]This is bold[/b], [url]http://www.achanceofbrainshowers.com[/url], [code python]import this[/code]
Preview Posting...
Previewing comment, please wait a moment...

My name is Patrick Van Oosterwijck. Welcome to my spot on the web where I will hopefully regularly dump some of my brain content for the benefit of whomever may find it useful.

You are reading my tech blog. See the homepage for my other blogs.

Search for Posts
Possibly related posts
Tags
Popular Tags
 
Archives
2015
 
 
© 2010 Patrick Van Oosterwijck.

Using technoblog blog engine by Will McGugan