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.

TMS320LF2407A: Verification failed at program address 0xxxxx

Part Number: TMS320LF2406A


Hi team,

I am supporting my customer on a legacy project based on F2406.

What they are trying to do is to download code to existing board. Currently, they can connect and erase the device. But the error "Verification failed at program address 0xxxxx" happens when they try to program the device.

Here is the CMD file:

-c Rts2xxm.lib
-stack 0x00E0 
-x 
-m cu_loader.map 
-o cu_loader.out
 
objs\ap_main.obj
objs\boot.obj
objs\flash_vec.obj
objs\io_can.obj
objs\io_hardware.obj
objs\io_timer.obj
objs\tk_applet.obj
objs\tk_diag.obj
objs\tk_ints.obj
objs\tk_mgr.obj
objs\tk_tdm.obj

MEMORY
{
  PAGE 0 :												
			VECS: 		origin=00000h, length=00030h    /* Interrupt vectors      */
			AHDR:		origin=00080h, length=00005h	/* Application header     */
		    APCRC       origin=00085h, length=00001h    /* Application CRC-16     */
			HDRSUM      origin=00086h, length=00001h    /* Header checksum        */
			START:      origin=00087h, length=00002h    /* Application code start */
			CODE:		origin=00089h, length=07F76h	/* Application code       */
	
  PAGE 1 :
          	Regs:		origin=0000h, length=005Fh
			B2:			origin=0060h, length=0020h		/* DARAM */
			B0:			origin=0200h, length=0100h 		/* DARAM reserved for vectors!*/
			B1:		    origin=0300h, length=00F0h		/* DARAM */
			AMP_RAM     origin=0800h, length=0100h
			RAM         origin=0900h, length=06FFh
}

                                       /* specify sections */
SECTIONS
{
  start      :    > START PAGE = 0
  fvectors   :	  > VECS PAGE = 0
  .text      :    > CODE PAGE = 0
  .cinit     :    > CODE PAGE = 0
  .const     :    > CODE PAGE = 0
  .data      :    > RAM PAGE = 1
  .bss       :	  > RAM PAGE = 1
  .heap      :    > RAM PAGE = 1
  .stack     :    > B1 PAGE = 1
  applets   : 
    {
      objs\io_can.obj(.bss) 
    } > B2 PAGE = 1 

}


Here is the error when trying to program the device. It seems the device is not successfully programmed since it read back 0xFFFF.

And here is the log during programming:

**** Begin Program Code Operation ****
OK: Flash Algorithm loaded into DSP memory
OK: Set Breakpoint at PRG_stop
OK: Running flash algorithm
OK: Read value 0x01f4 from symbol PRG_bufsize
OK: DSP Halted
OK: Read status value 0x0000 from symbol PRG_status
OK: PC set to PRG_init
OK: Running flash algorithm
OK: DSP Halted
OK: Read status value 0x0000 from symbol PRG_status
OK: PC set to PRG_program
OK: Running flash algorithm
OK: DSP Halted
Error: Read status value 0x0003 from symbol PRG_status
Flash algorithm failed during program operation

Hope to get your comments on how to fix this.

Thanks,
Brian

  • Programming the LF240xA flash memory consists of 3 distinct steps:

    CLEAR --> Makes all bits 0

    ERASE --> Makes all bits 1

    PROGRAM --> Does not disturb bits that need to be 1. Flips bits that need to be 0. 

    The above sequence is extremely important. That is, all 3 steps must be done to program a device and in the order shown.

    When you say you are able to "erase" the device, I presume you are saying you are able to clear and erase the device. Technically, if you are able to clear and erase a device, you should be able to program it as well. Please try the below:

    Clear the device and verify whether all bits are 0.

    Erase the device and verify whether all bits are 1.

    Instead of programming the application code, try programming the attached ADDRESS=DATA pattern. 

    It appears you are using the CCS3.3 flash plugin. Do you have access to other tools like prg2xx from Spectrum Digital?

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/171/L32KNoPw.out

  • Hi Hareesh,

    Thanks for quick response.

    Tested with customer. Even with L32KNOPW.out you provided. Customer cannot load the code:

    I suggested customer to test whether they can do erase only and clear only. It turns out the customer can only erase the device but cannot clear the device?

    Is it cause the device might be locked?

    Have not tried prg2xx yet.

  • Whether or not a device is secure can be ascertained by examining the contents of addresses 0x0040 to 0x0043 in program memory. If you don’t read 0xFFFF at these addresses, the device is secure. 

    If the device can only be erased , but not cleared, the flash may be damaged. Can you provide a screenshot of the flash contents after a CLEAR and after an ERASE?

    Can you try a known-good device in the same setup?

  • Hareesh,

    Already suggested customer to order some new devices for further test.

    Will start a new post if there is any new findings.

    Regards,

    Brian