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.

Flashing Program to OTP (Verification Error)

Hello,

I'm attempting to flash a revised CAN bootloading project directly to the OTP memory on a F28035 but am having issues with the following error:

C28xx: File Loader: Verification failed: Values at address 0x00000000003D7800 do not match Please verify target memory and memory map.
C28xx: GEL: File: C:\...\CCS\F28035_Flash_CAN_OTP\Debug\F28035_Flash_CAN_OTP.out: a data verification error occurred, file load failed.

I'm using the following TI example code as a baseline: http://www-s.ti.com/sc/techlit/spraaq3.zip

The following is my linker file:

MEMORY
{
PAGE 0 :

	    CANBOOTINIT : origin = 0x3D7800, length = 0x000020
	    CANBOOT     : origin = 0x3D7820, length = 0x000200

PAGE 1 :
         EBSS      : origin = 0x0000400, length = 0x00020
         STACK     : origin = 0x0000420, length = 0x000300     /* on-chip RAM block M0 */
}

SECTIONS
{
         .InitBoot    : load = CANBOOTINIT,  PAGE = 0
         .text        : load = CANBOOT,      PAGE = 0
         .stack       : load = STACK,        PAGE = 1
         .ebss        : load = EBSS,         PAGE = 1
}

I have attached the entire project with the generated .map file after compilation. F28035_Flash_CAN_OTP.zip

After compiling, the .map file shows that the program is correctly being placed at address 0x3d7800 (the start of OTP) but I am unable to program. If I connect to the target through JTAG without programming, I can view the OTP memory and can see that it's still all 0xFFFFs (never been written to). I've also confirmed that the OTP is defined in the Memory Map and .gel file as this wikipage suggests checking for: http://processors.wiki.ti.com/index.php/Troubleshooting_CCS_-_Data_Verification_Errors

I've also tried defining the bootloading specific .obj files to be allocated to CANBOOT and moving .text to an empty section of RAM but the linker file will simply program all objects to the .text region (RAM) instead of OTP as I wished.

My main goal is to have a single project that is used to configure the OTP custom bootloader and then later flash other program code into other non-OTP regions of memory. If anyone has an idea of what I'm configuring incorrectly or an alternative solution, I'd be happy to hear.

Thank you,

SH

  • Sean,

    OTP is one time programmable only  (a bit can be flipped from 1 to 0 but not otherwise). Can you check if there is anything already programmed in the OTP locations that you are trying to load? Maybe it got partially programmed in of the trials? You should be able to pull up the OTP memory you want to check from memory window and take a memory log ofit and check or just view in the memory window.

    The CCS Flash plug in for F28035x has been there for a while, so I doubt that it is a plug-in error. 

    Hope this helps.

    Best Regards
    Santosh Athuru

  • Sean,

    on 28035x user OTP is a secure memory. Did you program any passwords on the device? if so can you unlock the device and then load the program?

    If you haven't programmed any passwords, the unlock function in GEL script which is run on debugger reset should unlock the device.

    Can you open a memory window to the password location 0x3F7FF8, do a refresh of the memory window and then load the program?

    Best Regards

    Santosh Athuru

  • Sean,

    Adding to what Santosh mentioned.
    If passwords are programmed already, then you need to enter them in the Flash Plugin GUI's password/key field so that Flash Plugin can use them to unlock the device before the Flash erase/program operation.

    Thanks and regards,
    Vamsi
  • Hello all,

    I'm attaching a saved memory file that shows the contents of OTP and the password field memory. OTP has not been programmed as you see and the password has not been set. (I can also program a different project onto the same board without setting a password).

    I still have not found a solution yet myself.

    F28035_OTP_Memory.dat

    F28035_PW_Memory.dat

  • Sean,

    I tried programming USER OTP and there seems to be an issue in programming the USER OTP with code space sections.  I am able to load data space sections in to USER OTP but not always.  I notified the same to the tool developer.  Will update you.    

    Thanks and regards,

    Vamsi

  • Sean,

    Quick update: We identified a bug wherein in OTP address is not identified for program operation in few cases. Will post a fixed Flash Plugin file hopefully tomorrow.

    Thanks and regards,
    Vamsi
  • Vamsi,

    Glad to hear a solution is being looked into. Looking forward to hearing back.

    Thanks and best regards,
    SH
  • Sean,

    Please try the attached updated Flash Plugin file.  After downloading, rename the extension as "dll" and place the Flash28xx.dll file at C:\ti\ccsv6\ccs_base\DebugServer\bin.  Make sure to close the CCS when replacing this file and reopen CCS after replacing the file.  This file should work for all CCSV6 versions up to CCS6.1.3.

    After further testing (did limited testing for now since I have only one device with me), this will be released officially as an update later at which time you have to install the update in CCS.  Let me know if you have any issues using it.    

    Thanks and regards,

    Vamsi, Ricky

    Flash28xx.txt

  • Vasmi,

    The fix solved the issue without any additional problems and I was able to program OTP. Thank you for looking into this bug and coming up with a quick workaround.

    Best regards,

    SH

  • Sean,

    Good to know that it worked for you.  Thank you for informing us about this issue.

    Best regards,

    Vamsi

  • Updating here as a FYI for other forum users:

    We are planning to apply this fix as part of the default installation in the next version of CCS (CCS6.2.0) targeted for release in June this year. No fix will be available for CCS versions < 6.2.0.

    Thanks and regards,
    Vamsi