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.

CC3235SF: FS Programming with sli file, will not program larger than 180MB and returns with success (0 status) message after 180 despite having more to send over.

Part Number: CC3235SF
Other Parts Discussed in Thread: UNIFLASH

I'm taking over a project form a previous employee. The feature transfers over a .sli file from the file system to the CC3235SF module for a firmware update. The current 180MB .sli file transfers are successful and install correctly but larger file sizes (next one up is 190MB) will not transfer past 180MB. The programming code seems to work correctly and does not have any limit on our side to only make 180MB sizes work. There is a while loop to send over the whole file as data is available. After 180MB is sent the system halts and eventually the 0 status message is sent back from the CC3235SF module but we still have the remaining data to send over using the 0x34 FS Programming command. The remaining data attempts to be sent as our device is still in the middle of the while loop but at this point it doesn't matter since the bootloader thinks the full file was sent.

I have a few questions about the FS programming process.

- How does the bootloader know when the full file has been transferred over (when to send the 0 status response after the last chunk)?

- Is there somewhere we have sent the file size previously and that is why the bootloader is halting the transfer and prematurely sending the success after 180MB is sent?

- Is it possible 180MB is the maximum size our device can take and therefore assumes the full file was sent? 

  • There are couple of things i don't understand.

    Are you saying the SLI size is more than180MB? (that seems too much)

    Are you referring to Embedded Programming (i.e. programming over UART)? 

  • Sorry 180KB. The original file was also 180KB and with new changes I'm attempting to update with a 190KB sli file. And yes, following the Embedded Programming document (over UART). 180KB updates succeed but files larger than that will prematurely send back 0 status at the 180KB mark. The 190KB file can be programmed successfully using Uniflash. So I seem to be running into an issue when programming over UART.

  • Can you program the big SLI using uniflash?

    There should be limitation of 180KB. Please verify your code.

    I'm not familiar with the details of the bootloader (i'll need to check) but there may be some padding at the end of the SLI so the bootloader already received all the needed data before your last chunk. You can check that by making a larger image (where the binary is more than 180KB). 

  • Yes the larger file can be programmed using uniflash. No issues and the device works as expected after the update.

    When programming over UART, the larger files stop consistently at 180KB transferred (with 0 status response indicating complete) despite having more of the file to send. On my side we don't limit anything we keep sending until end of file but we are receiving the 0 status response before we get to that. This does not happen on a 180KB file. We receive 0 status after completion of transfer.

    Is there any correlation to the original file being 180KB and when it tries to replace it, it thinks that the new file should also be 180KB and therefore prematurely sends the 0 response?

  • What happens if you just stop the when you get the 0 status (and then reset the device)?

    Does the new image get executed?

    (uniflash uses the same commands as you do over uart). 

  • This fixed it! Thanks.