Files
micropython/ports/cc3200
Yoctopuce dev df05caea6c
Some checks failed
JavaScript code lint and formatting with Biome / eslint (push) Has been cancelled
Check code formatting / code-formatting (push) Has been cancelled
Check spelling with codespell / codespell (push) Has been cancelled
Build docs / build (push) Has been cancelled
Check examples / embedding (push) Has been cancelled
Package mpremote / build (push) Has been cancelled
.mpy file format and tools / test (push) Has been cancelled
Build ports metadata / build (push) Has been cancelled
alif port / build_alif (alif_ae3_build) (push) Has been cancelled
cc3200 port / build (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3) (push) Has been cancelled
esp8266 port / build (push) Has been cancelled
mimxrt port / build (push) Has been cancelled
nrf port / build (push) Has been cancelled
powerpc port / build (push) Has been cancelled
qemu port / build_and_test_arm (bigendian) (push) Has been cancelled
qemu port / build_and_test_arm (sabrelite) (push) Has been cancelled
qemu port / build_and_test_arm (thumb) (push) Has been cancelled
qemu port / build_and_test_rv32 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_nucleo_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_pyb_build) (push) Has been cancelled
unix port / minimal (push) Has been cancelled
unix port / reproducible (push) Has been cancelled
unix port / standard (push) Has been cancelled
unix port / standard_v2 (push) Has been cancelled
unix port / coverage (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / settrace_stackless (push) Has been cancelled
unix port / macos (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
webassembly port / build (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, standard) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, dev) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, standard) (push) Has been cancelled
windows port / cross-build-on-linux (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled
shared/timeutils: Standardize supported date range on all platforms.
This is code makes sure that time functions work properly on a
reasonable date range, on all platforms, regardless of the epoch.
The suggested minimum range is 1970 to 2099.

In order to reduce code footprint, code to support far away dates
is only enabled specified by the port.

New types are defined to identify timestamps.

The implementation with the smallest code footprint is when
support timerange is limited to 1970-2099 and Epoch is 1970.
This makes it possible to use 32 bit unsigned integers for
all timestamps.

On ARM4F, adding support for dates up to year 3000 adds
460 bytes of code. Supporting dates back to 1600 adds
another 44 bytes of code.

Signed-off-by: Yoctopuce dev <dev@yoctopuce.com>
2025-07-09 11:54:21 +10:00
..
2024-03-07 16:25:17 +11:00
2024-03-07 16:25:17 +11:00
2024-03-07 16:25:17 +11:00

MicroPython port to CC3200 WiFi SoC

This is a MicroPython port to Texas Instruments CC3200 WiFi SoC (ARM Cortex-M4 architecture). This port supports 2 boards: WiPy and TI CC3200-LAUNCHXL.

Build Instructions for the CC3200

Currently the CC3200 port of MicroPython builds under Linux and OSX, but not under Windows.

The toolchain required for the build can be found at https://launchpad.net/gcc-arm-embedded.

In order to flash the image to the CC3200 you will need the cc3200tool. An alternative is to use CCS_Uniflash tool from TI, which works only under Windows, and all support is provided by TI itself.

Building the bootloader:

make BTARGET=bootloader BTYPE=release BOARD=LAUNCHXL

Building the "release" image:

make BTARGET=application BTYPE=release BOARD=LAUNCHXL

To build an image suitable for debugging:

In order to debug the port specific code, optimizations need to be disabled on the port file (check the Makefile for specific details). You can use CCS from TI. Use the CC3200.ccxml file supplied with this distribution for the debuuger configuration.

make BTARGET=application BTYPE=debug BOARD=LAUNCHXL

Flashing the CC3200-LAUNCHXL

Note that WiPy comes factory programmed with a default version of MicroPython, it cannot be programmed via serial, and can be upgraded only with OTA (see below).

  • Make sure that you have built both the bootloader and the application in release mode.
  • Make sure the SOP2 jumper is in position.
  • Make sure you Linux system recognized the board and created ttyUSB* devices (see below for configuration of ftdi_sio driver).
  • Run "make erase" and immediately press Reset button on the device.
  • Wait few seconds.
  • Run "make deploy" and immediately press Reset button on the device.
  • You are recommended to install the latest vendor WiFi firmware servicepack from http://www.ti.com/tool/cc3200sdk. Download CC3200SDK-SERVICEPACK package, install it, and locate ota_*.ucf and ota_*.ucf.signed.bin files. Copy them to the port's directory and run "make servicepack", with immediate press of Reset button.
  • Remove the SOP2 jumper and reset the board.

Flashing process using TI Uniflash:

  • Open CCS_Uniflash and connect to the board (by default on port 22).
  • Format the serial flash (select 1MB size in case of the CC3200-LAUNCHXL, 2MB in case of the WiPy, leave the rest unchecked).
  • Mark the following files for erasing: /cert/ca.pem, /cert/client.pem, /cert/private.key and /tmp/pac.bin.
  • Add a new file with the name of /sys/mcuimg.bin, and select the URL to point to cc3200\bootmgr\build<BOARD_NAME>\bootloader.bin.
  • Add another file with the name of /sys/factimg.bin, and select the URL to point to cc3200\build<BOARD_NAME>\mcuimg.bin.
  • Click "Program" to apply all changes.
  • Flash the latest service pack (servicepack_1.0.0.10.0.bin) using the "Service Pack Update" button.
  • Close CCS_Uniflash, remove the SOP2 jumper and reset the board.

Playing with MicroPython and the CC3200:

Once the software is running, you have two options to access the MicroPython REPL:

  • Through telnet.

    • Connect to the network created by the board (as boots up in AP mode), ssid = "wipy-wlan", key = "www.wipy.io".
      • You can also reinitialize the WLAN in station mode and connect to another AP, or in AP mode but with a different ssid and/or key.
    • Use your favourite telnet client with the following settings: host = 192.168.1.1, port = 23.
    • Log in with user = "micro" and password = "python"
  • Through UART (serial).

    • This is enabled by default in the standard configuration, for UART0 (speed 115200).
    • For CC3200-LAUNCHXL, you will need to configure Linux ftdi_sio driver as described in the blog post. After that, connecting a board will create two /dev/ttyUSB* devices, a serial console is available on the 2nd one (usually /dev/ttyUSB1).
    • WiPy doesn't have onboard USB-UART converter, so you will need an external one, connected to GPIO01 (Tx) and GPIO02 (Rx).
    • Usage of UART port for REPL is controlled by MICROPY_STDIO_UART setting (and is done at the high level, using a suitable call to os.dupterm() function in boot.py, so you can override it at runtime regardless of MICROPY_STDIO_UART setting).

The board has a small file system of 192K (WiPy) or 64K (Launchpad) located in the serial flash connected to the CC3200. SD cards are also supported, you can connect any SD card and configure the pinout using the SD class API.

Uploading scripts:

To upload your MicroPython scripts to the FTP server, open your FTP client of choice and connect to: ftp://192.168.1.1, user = "micro", password = "python"

Tested FTP clients are: FileZilla, FireFTP, FireFox, IE and Chrome. Other clients should work as well, but you may need to configure them to use a single connection (this should be the default for any compliant FTP client).

Upgrading the firmware Over The Air (OTA)

OTA software updates can be performed through the builtin FTP server. After building a new mcuimg.bin in release mode, upload it to: /flash/sys/mcuimg.bin. It will take around 6s (The TI SimpleLink file system is quite slow because every file is mirrored for safety). You won't see the file being stored inside /flash/sys/ because it's actually saved bypassing FatFS, but rest assured that the file was successfully transferred, and it has been signed with a MD5 checksum to verify its integrity. Now, reset the MCU by pressing the switch on the board, or by typing:

import machine
machine.reset()

There's a script which automates this process from the host side:

  • Make sure the board is running and connected to the same network as the computer.
make BTARGET=application BTYPE=release BOARD=LAUNCHXL WIPY_IP=192.168.1.1 WIPY_USER=micro WIPY_PWD=python deploy-ota

If WIPY_IP, WIPY_USER or WIPY_PWD are omitted the default values (the ones shown above) will be used.

Notes and known issues

Regarding old revisions of the CC3200-LAUNCHXL

First silicon (pre-release) revisions of the CC3200 had issues with the ram blocks, and MicroPython cannot run there. Make sure to use a v4.1 (or higher) LAUNCHXL board when trying this port, otherwise it won't work.

Note regarding FileZilla

Do not use the quick connect button, instead, open the site manager and create a new configuration. In the "General" tab make sure that encryption is set to: "Only use plain FTP (insecure)". In the Transfer Settings tab limit the max number of connections to one, otherwise FileZilla will try to open a second command connection when retrieving and saving files, and for simplicity and to reduce code size, only one command and one data connections are possible.