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.

CC26xx UART not working after flash with srfprog

Other Parts Discussed in Thread: CC2640, CC2650

So I have a firmware that works fine via CCS. Now I generated a bin file, and used srfprog command line tool to flash it into the CC26xx via JTAG. After flash and reset the firmware appears to boot just fine, except for the fact that the UART appears not to be working. The firmware puts out some status information during boot, but I never get that information.

However if I disconnect the power, and reconnect again, the UART is working just fine.

What's the problem here? I already tried the various reset methods of srfprog, but that does not help.

  • Hi Christiaan,

    That sounds strange. It is hard to pinpoint what the issue is from the description unfortunately. Can you share some more details on what your setup looks like?

    - Board (custom board or TI board) / Debugger
    - CCS and srfprog version?
    - What exampel project is the firmware based on?
    - Steps taken to produce image?
    - How do you verify it is only UART that doesn't work and not the entire device/program?
    - Have you probed the UART lines with an oscilloscope for the different cases?

    Does the device work fine when:
    - Flashing the device via CCS and then run
    - Flashing via CCS, then power cycling the device after flashing
    - Flashing via srfprog GUI vs command line?

    Thanks,
    Svend
  • Hello Svend,

    Thanks for the response. As for your questions:

    - Board (custom board or TI board) / Debugger
    custom board
    - CCS and srfprog version?
    CCS 6.1.0.00104, srfprog v1.6.3-windows
    - What exampel project is the firmware based on?
    loosely bases on the sensortag firmware, heavily stripped. Basically it's a completely custom project
    - Steps taken to produce image?
    bin file is made by a post-build step:

    "${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/armofd" "${CG_TOOL_ROOT}/bin/armhex" "${CCS_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin"

    - How do you verify it is only UART that doesn't work and not the entire device/program?
    I can't verify all functionality, but I do have a LED flashing indicating that other parts of the program are working.
    - Have you probed the UART lines with an oscilloscope for the different cases?
    I do get some output, but nothing I ever send out, and far to little.

    Does the device work fine when:
    - Flashing the device via CCS and then run
    That works just fine
    - Flashing via CCS, then power cycling the device after flashing
    Power cycling always fixes the problem
    - Flashing via srfprog GUI vs command line?
    No difference

    And remember, when I power cycle a firmware flashed via srfprog, it also works fine.
  • Thanks Christiaan,

    Testing the srfprog GUI (v.1.6.0) with a hex file included with the latest BLE SDK (C:/ti/simplelink/ble_cc26xx_2_01_00_44076_s_alpha/Accessories/HexFiles/CC2640_SmartRF_SimpleBLEPeripheral.hex) the sofware starts running immediately on my setup.

    Have you connected the reset pin from the debugger to your board as well?

    .:svend
  • Yes, we implemented the 10pin header that is also used by the SensorTag
  • Are you using the XDS110 DevPack Debugger for downloading the FW?

    If you are able to send me a sample hex/bin file where you see the issue (that will run on either the SensorTag or a CC2650 Evaluation module) I will try to reproduce the issue.

    .:Svend

  • I don't have the time now to make a binary that will run on a sensortag.

    We are using the SmartRF06EB board to programme.

    What it looks like tough, is that the JTAG is blocking serial communications (they share the same pins (TDO and TDI). When I leave the JTAG connected to the board, and power cycle the board, I still don't have a working serial port. Only after I disconnect the JTAG interface , and then powercycle the device, it works. Reconnecting the JTAG interface does not matter in that case. The device keeps working. 

    Pressing the reset button on the SmartRF06EB does not seem to work either. In contrast, after the SmartRF06EB was powercycles, pressing the reset, does not makt the serial port stop working.

    So it appears that CCS appears to leave the JTAG interface in a different state than the programmer software.

    Workaround for now it to put the SmartRF06EB in "battery" power, and switch the DC-in power after programming off.