245 lines
7.3 KiB
ReStructuredText
245 lines
7.3 KiB
ReStructuredText
.. _cc3200_launchxl:
|
|
|
|
CC3200 LaunchXL
|
|
###############
|
|
|
|
Overview
|
|
********
|
|
The SimpleLink CC3200 LaunchXL is a development board for the CC3200
|
|
wireless microcontroller (MCU), the industry's first single-chip
|
|
programmable MCU with built-in Wi-Fi connectivity.
|
|
|
|
Features:
|
|
=========
|
|
|
|
* SimpleLink Wi-Fi, internet-on-a-chip solution with integrated MCU
|
|
* 40-pin LaunchPad standard that leverages the BoosterPack ecosystem
|
|
* FTDI based JTAG emulation with serial port for Flash programming
|
|
* On-board accelerometer and temperature sensor
|
|
* Two buttons and three LEDs for user interaction
|
|
* UART through USB to PC
|
|
* Power from USB for the LaunchPad and optional external BoosterPack
|
|
* GNU Debugger (GDB) support over Open On chip debugger (OpenOCD)
|
|
|
|
Details on the CC3200 LaunchXL development board can be found in the
|
|
`CC3200 LaunchXL User's Guide`_.
|
|
|
|
Hardware
|
|
********
|
|
|
|
The CC3200 SoC has two MCUs:
|
|
|
|
#. Applications MCU - an ARM |reg| Cortex |reg|-M4 Core at 80 MHz, with 256Kb RAM,
|
|
and access to external serial 1Mb flash with bootloader and peripheral
|
|
drivers in ROM.
|
|
|
|
#. Network Coprocessor (NWP) - a dedicated ARM MCU, which completely
|
|
offloads Wi-Fi and internet protocols from the application MCU.
|
|
|
|
Complete details of the CC3200 SoC can be found in the `CC3200 TRM`_.
|
|
|
|
Supported Features
|
|
==================
|
|
|
|
Zephyr has been ported to the Applications MCU, with basic peripheral
|
|
driver support.
|
|
|
|
+-----------+------------+-----------------------+
|
|
| Interface | Controller | Driver/Component |
|
|
+===========+============+=======================+
|
|
| UART | on-chip | serial port-interrupt |
|
|
+-----------+------------+-----------------------+
|
|
| GPIO | on-chip | gpio |
|
|
+-----------+------------+-----------------------+
|
|
|
|
The accelerometer, temperature sensors, WiFi, or other peripherals
|
|
accessible through the BoosterPack, are not currently supported by
|
|
this Zephyr port.
|
|
|
|
Connections and IOs
|
|
====================
|
|
|
|
Peripherals on the CC3200 LaunchXL are mapped to the following pins in
|
|
the file :file:`boards/arm/cc3200_launchxl/pinmux.c`.
|
|
|
|
+------------+-------+-------+
|
|
| Function | PIN | GPIO |
|
|
+============+=======+=======+
|
|
| UART0_TX | 55 | N/A |
|
|
+------------+-------+-------+
|
|
| UART0_RX | 57 | N/A |
|
|
+------------+-------+-------+
|
|
| LED D7 (R) | 64 | 9 |
|
|
+------------+-------+-------+
|
|
| LED D6 (O) | 01 | 10 |
|
|
+------------+-------+-------+
|
|
| LED D5 (G) | 02 | 11 |
|
|
+------------+-------+-------+
|
|
| Switch SW2 | 15 | 22 |
|
|
+------------+-------+-------+
|
|
| Switch SW3 | 04 | 13 |
|
|
+------------+-------+-------+
|
|
|
|
The default configuration can be found in the Kconfig file at
|
|
:file:`boards/arm/cc3200_launchxl/cc3200_launchxl_defconfig`.
|
|
|
|
|
|
Programming and Debugging
|
|
*************************
|
|
|
|
Build
|
|
=====
|
|
|
|
Follow the :ref:`getting_started` instructions for Zephyr application
|
|
development.
|
|
|
|
To build for the CC3200 LaunchXL:
|
|
|
|
.. code-block:: console
|
|
|
|
% make BOARD=cc3200_launchxl
|
|
|
|
This will produce both a zephyr.elf (for GDB debugging) and a
|
|
zephyr.bin file (for flashing) in the outdir/cc3200_launchxl/
|
|
subdirectory.
|
|
|
|
FTDI USB Setup
|
|
==============
|
|
|
|
The CC3200 LaunchXL has onboard FTDI based JTAG emulation with serial
|
|
port for Flash programming.
|
|
|
|
Under Linux, plugging the CC3200 USB cable into the PC should result in
|
|
a new USB device showing up at /dev/ttyUSB1. If not, it may be
|
|
necessary to create a udev rule to load the FTDI Linux driver for the
|
|
TI vendor and product ID. For example:
|
|
|
|
.. code-block:: console
|
|
|
|
% cat /etc/udev/rules.d/98-usbftdi.rules
|
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="c32a", MODE="0660", GROUP="dialout", RUN+="/sbin/modprobe ftdi-sio" RUN+="/bin/sh -c '/bin/echo 0451 c32a > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'"
|
|
|
|
To ensure access to the usb ftdi device without having to be root, add
|
|
yourself to the dialout group:
|
|
|
|
.. code-block:: console
|
|
|
|
% sudo usermod -a -G dialout <username>
|
|
|
|
Once the USB cable is connected to your host PC running Linux, one
|
|
should see something like:
|
|
|
|
.. code-block:: console
|
|
|
|
% dmesg -t
|
|
usb 1-2: new full-speed USB device number 32 using ohci-pci
|
|
usb 1-2: New USB device found, idVendor=0451, idProduct=c32a
|
|
usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
|
|
usb 1-2: Product: USB <-> JTAG/SWD
|
|
usb 1-2: Manufacturer: FTDI
|
|
usb 1-2: SerialNumber: cc3101
|
|
ftdi_sio 1-2:1.0: FTDI USB Serial Device converter detected
|
|
usb 1-2: Detected FT2232C
|
|
usb 1-2: Number of endpoints 2
|
|
usb 1-2: Endpoint 1 MaxPacketSize 64
|
|
usb 1-2: Endpoint 2 MaxPacketSize 64
|
|
usb 1-2: Setting MaxPacketSize 64
|
|
usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB0
|
|
ftdi_sio 1-2:1.1: FTDI USB Serial Device converter detected
|
|
usb 1-2: Detected FT2232C
|
|
usb 1-2: Number of endpoints 2
|
|
usb 1-2: Endpoint 1 MaxPacketSize 64
|
|
usb 1-2: Endpoint 2 MaxPacketSize 64
|
|
usb 1-2: Setting MaxPacketSize 64
|
|
usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB1
|
|
ftdi_sio ttyUSB0: failed to get modem status: -110
|
|
|
|
% ls -l /dev/ttyUSB1
|
|
crw-rw---- 1 root dialout /dev/ttyUSB1
|
|
|
|
.. note::
|
|
The ttyUSB1 device is used for UART0 output. ttyUSB0 is not used.
|
|
|
|
|
|
Flashing
|
|
========
|
|
|
|
The CC3200 has no integrated internal flash, but has 1Mb external serial
|
|
flash for storing program images and other files. Upon reset, the TI
|
|
bootloader copies the program from serial flash into RAM, and then
|
|
transfers control to the program.
|
|
|
|
The `CC3200 Programmer's Guide`_ provides instructions for development
|
|
using the `CC3200 SDK`_ with Windows platforms, including how to flash
|
|
the zephyr.bin binary onto the board.
|
|
|
|
For Windows:
|
|
------------
|
|
|
|
See Section 5.4 of the `CC3200 Programmer's Guide`_; or, follow the
|
|
directions per the `UniFlash Quick Start Guide`_. Please be sure to use
|
|
UniFlash version 3.4.1.
|
|
|
|
For Linux:
|
|
----------
|
|
|
|
An option for flashing the CC3200 LaunchXL on Linux is the
|
|
`cc3200tool`_. See the README there for build/install/usage.
|
|
|
|
The following command has been known to work:
|
|
|
|
.. code-block:: console
|
|
|
|
% cc3200tool -p /dev/ttyUSB1 --reset prompt write_file zephyr.bin
|
|
/sys/mcuimg.bin
|
|
|
|
.. note:: You will need to manually insert a jumper on SOP2 (J15) for
|
|
flashing and remove the jumper for execution.
|
|
|
|
Debugging
|
|
=========
|
|
|
|
The `CC3200 SDK`_ supports debugging using GDB (for ARM) over OpenOCD,
|
|
and includes the necessary OpenOCD CFG and sample gdbinit scripts.
|
|
|
|
See Section 5.3.3.5 of the `CC3200 Programmer's Guide`_.
|
|
|
|
To see program output from UART0, one can execute in a separate terminal
|
|
window:
|
|
|
|
.. code-block:: console
|
|
|
|
% screen /dev/ttyUSB1 115200 8N1
|
|
|
|
.. note:: The bootloader takes the first 16Kb of the 256Kb RAM, so the
|
|
Zephyr application starts at 0x20004000. The Zephyr CC3200
|
|
configuration thus sets the max SRAM size to 240Kb.
|
|
|
|
|
|
References
|
|
**********
|
|
|
|
CC32xx Wiki:
|
|
http://processors.wiki.ti.com/index.php/CC31xx_%26_CC32xx
|
|
|
|
TI CC3200 Product Page:
|
|
http://www.ti.com/product/cc3200
|
|
|
|
.. _CC3200 TRM:
|
|
http://www.ti.com/lit/pdf/swru367
|
|
|
|
.. _CC3200 Programmer's Guide:
|
|
http://www.ti.com/lit/pdf/swru369
|
|
|
|
.. _UniFlash Quick Start Guide:
|
|
http://processors.wiki.ti.com/index.php/CC31xx_%26_CC32xx_UniFlash_Quick_Start_Guide
|
|
|
|
.. _cc3200tool:
|
|
https://github.com/ALLTERCO/cc3200tool
|
|
|
|
.. _CC3200 SDK:
|
|
http://www.ti.com/tool/cc3200sdk
|
|
|
|
.. _CC3200 LaunchXL User's Guide:
|
|
http://www.ti.com/lit/pdf/swru372
|