From efb978da1af7810b16558d928f2eff3d0d5b6d62 Mon Sep 17 00:00:00 2001 From: Gil Pitney Date: Wed, 11 Jan 2017 18:29:32 -0800 Subject: [PATCH] cc3200: Added board documentation in RST format. This follows the board.rst template in the RFC for board documentation: https://gerrit.zephyrproject.org/r/#/c/9703/ This RST file was validated visually by rendering using the online tool: http://rst.ninjs.org/ JIRA: ZEP-1541 Change-Id: Ibe6e1c7f8eb3c7862b4087a78b469693927280a2 Signed-off-by: Gil Pitney --- .../cc3200_launchxl/doc/cc3200_launchxl.rst | 244 ++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 boards/arm/cc3200_launchxl/doc/cc3200_launchxl.rst diff --git a/boards/arm/cc3200_launchxl/doc/cc3200_launchxl.rst b/boards/arm/cc3200_launchxl/doc/cc3200_launchxl.rst new file mode 100644 index 00000000000..73b6dcf29e9 --- /dev/null +++ b/boards/arm/cc3200_launchxl/doc/cc3200_launchxl.rst @@ -0,0 +1,244 @@ +.. _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® Cortex®-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 perhipherals +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 + +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