Other Parts Discussed in Thread: UNIFLASH
Tool/software:
Hi TI team,
I'm working with a custom BLE module based on the CC2340R5 and attempting to flash it via UART using the cc2340-bsl.py script (Linux SBL tool: https://github.com/Shuyang-z/cc2340-bsl). While the script reports a successful flash and CRC verification, the module does not start BLE advertisement, which it is supposed to do after flashing.
Setup:
MCU: CC2340R5N0RGER (blank chip)
Host OS: Debian 11.11
Flashing tool: cc2340-bsl.py
Firmware file: .hex, built from BLE Peripheral example in the SIMPLELINK-LOWPOWER-F3-SDK v8.10.01.02
UART port: /dev/ttyUSB0
Baudrate: 115200
Connection method: USB-to-UART adapter (works fine with UniFlash and launchpad cc1252p7-1)
Flash command: python3 cc2340-bsl.py -p /dev/ttyUSB0 -b 115200 -e -w -v /home/ops/Downloads/basic_ble_LP_EM_CC2340R5_freertos_ticlang.hex
Output:
python3 cc2340-bsl.py -p /dev/ttyUSB0 -b 115200 -e -w -v /home/ops/Downloads/basic_ble_LP_EM_CC2340R5_freertos_ticlang.hex
Opening port /dev/ttyUSB0, baud 230400
Reading data from /home/ops/Downloads/basic_ble_LP_EM_CC2340R5_freertos_ticlang.hex
Firmware file: Intel Hex
Connecting to target...
Performing mass erase
Erasing all main bank flash sectors
Erase done
Write 64 bytes at 0x4E0207C0C8
Write CCFG done
Write 16 bytes at 0x0007FFF098
Write main flash done
Verifying by comparing CRC32 calculations.
Main flash verified (match: 0x21006695)
CCFG verified (match: 0x22ca400f)
Bootloader Entry and Reset:
DIO21 is pulled LOW before powering the module to enter bootloader mode (verified by acknowledgement upon sending 0x55 0x55)
After flashing, DIO21 is released (pulled HIGH with 10k resistor).
The RESET is done by the script, and I’ve also tried toggling it manually — still no BLE advertisement.
What Works:
Flashing the exact same .hex file via UniFlash on Windows (using launchpad cc1352p7-1) results in correct BLE behavior — the device starts advertising immediately.
The script completes flashing and verification without any errors.
I doubt that the script writes the firmware on some address it is not supposed to.
I already checked the ccfg_address, ccfg_size, flash_size and page_size and they match in both the script and the firmware; and the script fails if i change the addresses.
Any guidance is appreciated — thank you!