This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1310: Firmware only executes on custom hardware with attached debugger or after flashing firmware.

Part Number: CC1310

Hello.

First, small disclaimer: I am by no means a "proper" embedded systems engineer. Most of my knowledge pertains to power supply and analog design.

A little RF work, too, but I wouldn't call myself an "RF engineer" by any means.

Nevertheless, I have been tasked with porting some proof-of-concept code from the CC1310 launchpad to the CC1310F32 on our custom hardware.

Conceptually, the hardware and firmware are simple. The hardware consists of the CC1310F32, an I2C sensor, and requisite power circuitry.

All the device must do is poll the sensor and transmit the measurements. Polling rate is approximately 100 Hz.

The firmware functions as intended when used with the launchpad and a break-out-board for the sensor. I can capture the transmitted packets with another launchpad using SmartRF studio.

The code is based on the i2ctmp example project.

I attempted to port the PoC code to the -F32 by changing the target device and incorporating the appropriate -F32 linker file.

I also removed the code for the SPI flash on the launchpad, as there is no such hardware on the custom board.

My code easily fits within the smaller flash on the -F32 variant. Stack and heap appear to be sufficient.

Tests with the preliminary ported code revealed that the device only functions as intended when debug mode is initiated and the debugger is attached.

Upon power cycling or resetting the device, firmware execution ceases. Re-launching in debug mode causes execution to resume.

Searching the E2E forums revealed posts detailing a similar issue.

These posts suggested that there might be an issue related to the chip going into standby, as the debugger prevents the chip from entering standby when it is connected.

I added the line "Power_disablePolicy();"  to main() in the main_tirtos.c file, right before the BIOS_start() call.

After adding this line, the device continues functioning in debug mode, but also begins functioning as intended when the firmware is freshly flashed (without attaching the debugger).

However, the device continues to cease functioning when it is power cycled or reset.

At this point, I am unsure if I am seeing the results of a single bug in my code, or some strange interaction of several issues I may have unintentionally introduced whilst porting.

I find it unlikely that this is a hardware issue. The core CC1310 layout is in this design is based on one of our previous -F32 designs that was subjected to rigorous validation and was successfully operated for years.

Granted, the designs are not identical, but they differ only in layout, and not significantly.

Does anyone have any insight into where I might continue to look for issues in my code? I'm a little stumped at this point.

Please let me know if there's more useful information that I need to provide. Again, this isn't really my wheelhouse, and I'm sure I've left something out.

Thank you!