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.

CC2640: No response from Bootloader Read Memory Command

Part Number: CC2640


I flashed a CC2640 on my custom board using UART and COMMAND_BANK_ERASE and multiple COMMAND_DOWNLOAD, COMMAND_SEND_DATA, COMMAND_GET_STATUS functions.

The application runs as designed. I am able to either run the flashed application or enter bootloader mode using a bootloader back door pin.

I am using SPI to read memory. When in bootloader mode, the CC2640 responds appropriately to COMMAND_PING, COMMAND_GET_CHIP_ID, COMMAND_GET_STATUS, COMMAND_RESET functions.

The CC2640 does *not* respond to a valid COMMAND_READ_MEMORY COMMAND_MEMORY_READ. If I force an error, such as set the packet size byte to something other than 0x09, the CC2640 responds to COMMAND_GET_STATUS with 0x42 "Status for invalid command (incorrect packet size)". If I send it a valid command, there is no response.

I have inserted delays ranging from 100ms to 1000ms after sending the COMMAND_READ_MEMORY COMMAND_MEMORY_READ packet and before receiving acknowledgement.

I flashed the same program on a BOOSTXL-CC2650 board, and I have no trouble reading memory.

I am trying to read CCFG memory locations at offset 0xFA8 through 0xFFF.

What could be wrong? Is there a configuration bit that can prevent reading memory?

Edit: correct spelling of COMMAND_MEMORY_READ

  • On further investigation, I discovered that the CC2640 does not always acknowledge COMMAND_MEMORY_READ. (I corrected the spelling of COMMAND_MEMORY_READ in my previous post).

    My external off-chip SPI software throws an error if the CC2640 does not acknowledge a command. I changed my program to not throw an error if an acknowledge is not received after COMMAND_MEMORY_READ. Whether or not the CC2640 acknowledges COMMAND_MEMORY_READ, the CC2640 correctly responds with a packet that contains the contents of memory. This allows my program to display the contents of CCFG (and other areas of memory).

    I don't see any change in behavior reading if each COMMAND_MEMORY_READ is for one 8-bit read access, four 8-bit read accesses, one 32-bit read access or two 32-bit read accesses.

    I was encouraged because FLASH PROGRAMMER 2 reads memory with UART. Reading memory with FLASH PROGRAMMER 2 will fail if I don't reset the CC2640 before each memory read. I reset the CC2640 by cycling the power off and on. The documentation describes issues with COMMAND_RESET, and I have found that COMMAND_RESET does not help. I have not followed this advice yet: "TI strongly recommends enabling the Warm Reset Converted to System Reset feature."

    I also found that pulling the NRESET pin low and high does not help with this issue. All is good when I cycle the CC2640 power off and on.

    I don't know what's going on with this CC2640. The various documents don't describe this issue.

    I am all ears if someone provides an explanation of this behavior.

    I will mark my issue resolved since I have figured out to read the contents of memory with my software, and my application seems to work as designed.

  • Hello Dennis,

    Thanks for posting the resolution!

    Regards,

    Sai