CC35X1 flashing setup
Activate and factory-program a TI LP-EM-CC35X1 for regular application flashing.
First build a CC35x1 sample from the BLE guide or Wi-Fi guide, then complete this one-time flashing setup before running west flash. These instructions assume that the CC35x1 workspace and build directory already exist. They apply the compatibility changes required by SimpleLink Wi-Fi Toolbox 4.3.23, activate the board, and perform its initial factory programming.
CC35x1 activation programs one-time device credentials and changes the lifecycle from OPERATIONAL to DEPLOYED. The commands below use TI's SDK example key and are intended for development boards, not production provisioning. Do not repeat activation after the lifecycle changes to DEPLOYED.
Install prerequisites
Install:
- A CC35x1 BLE or Wi-Fi sample built into the workspace's
builddirectory - An LP-XDS110 or LP-XDS110ET probe connected to the board's 20-pin J7 header
- SimpleLink Wi-Fi Toolbox, tested with version 4.3.23
Connect both the CC35x1 board and the XDS110 probe to the development computer. Add the Toolbox installation directory to PATH. For the default Windows installation used by version 4.3.23:
$env:Path = "C:\ti\simplelink_wifi_toolbox_win_4_3_23;$env:Path"
simplelink-wifi-toolbox --versionApply SimpleLink Wi-Fi Toolbox 4.3.23 compatibility changes
SimpleLink Wi-Fi Toolbox 4.3.23 changed its command-line interface and memory-layout schema after the TI Zephyr v4.4.0-ti-10.10.00 integration was published. Without the following compatibility changes, image generation or initial programming fails.
The three Toolbox-specific adjustments below might not be needed with SimpleLink Wi-Fi Toolbox 4.2.4, but this version has not been validated with the Spotflow samples. The CC35x1 Bluetooth source guard correction is unrelated to the Toolbox version and is still required.
Correct the CC35x1 Bluetooth source guard
In modules/hal/ti/simplelink_lpf3/CMakeLists.txt, change the misspelled Kconfig guard:
# Before
if(NOT CONFIG_BT_HCI_TI_CC3XXX)
# After
if(NOT CONFIG_BT_HCI_TI_CC35XX)Without this change, the build selects incompatible LPF3 Bluetooth controller sources and fails on a missing opt_dependencies.h header.
Select the device for image generation
In zephyr/soc/ti/simplelink/cc35xxe/toolbox.cmake, add --device CC35XXE between flash-images-builder and each build or sign subcommand. Apply this to all eight image-builder invocations:
simplelink-wifi-toolbox flash-images-builder --device CC35XXE build ...
simplelink-wifi-toolbox flash-images-builder --device CC35XXE sign ...The missing argument otherwise causes:
simplelink-wifi-toolbox flash-images-builder: error: the following arguments are required: --deviceUpdate the external-memory schema
In zephyr/boards/ti/lp_em_cc35x1/config/flash/is25wj032f/external_memory_configurator.json, add these fields to the inputs object:
{
"vendor_bl3_size": 0,
"ti_fw_in_vendor_image": false
}These values preserve the existing layout: the sample does not use a vendor BL3, and TI wireless firmware remains in its dedicated region.
Do not erase an unactivated device
In zephyr/scripts/west_commands/runners/simplelink_toolbox.py, remove --full_flash_erase from both command lists in do_initial_programming().
Toolbox 4.3.23 rejects full-flash erase while the board is still in the unactivated OPERATIONAL lifecycle. The factory-programming operation still creates and writes the required flash layout.
Activate and initially program the CC35x1
Activate the device once
Use an absolute report path. Toolbox 4.3.23 resolves a relative report path against its installation directory and can fail after activation while trying to save the report.
simplelink-wifi-toolbox programmer -i XDS110 -param1 auto activation `
--prog_inst_image_path "$PWD\build\zephyr\flash\programming_instructions_image.sign.bin" `
--report_file_name_path "$PWD\build\activation_report.txt" `
--verboseConfirm that activation completes without an earlier error. Do not repeat activation after the device has changed to the DEPLOYED lifecycle.
Perform factory programming once
After activation, write the boot sector, TI bootloader, TI wireless firmware, and Zephyr vendor image:
west flash --build-dir build -- --initial-programmingDo not treat a generic final Success as authoritative if the preceding output contains Factory programming failed or a lifecycle error.
Verify regular flashing
Confirm that subsequent application updates work without the initial-programming option:
west flash --build-dir buildVerify the serial console
Zephyr uses UART1 at 115200 baud. By default, UART1 is routed through jumpers J4 and J6 to the LP-XDS110 J7 header. Open the XDS110 Class Application/User UART port at 115200 baud, 8 data bits, no parity, and one stop bit. Open the terminal before pressing reset so you do not miss one-time startup output.
The following board LEDs normally remain on and do not indicate an application failure:
- D2 indicates that reset is released.
- D9 indicates the 3.3 V power rail.
- D10 indicates the 1.8 V power rail.
After regular flashing and serial output work, continue with the BLE guide or Wi-Fi guide.