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.

TMS320F2800155-Q1: flash drivers should be scolded to do it

Part Number: TMS320F2800155-Q1
Other Parts Discussed in Thread: C2000WARE

Tool/software:

Dear team:

  I would like to ask you something. In the process of upgrading bootleader, I first need to download Flash Drive to RAM.And then download my app.

 Is there any routine you can refer to or any information you can recommend?

Best Wishs

Zhang

  • By the way, the question I would like to ask is how do I take out the Flash drive separately?

  • Hi Zhang,

    Could you explain your application a little more in detail and what TI tools/features you are trying to use?

    Best Regards,

    Delaney

  • Hi  Delaney,

    Now I have a customer need,When I upgrade my software, I need to first write the FLASH driver function into my RAM, and then write to my application. Now my FLASH driver and my application are in a HEX, I need to separate them.But I don't have any idea now, can you give me some advice.

    Best Regards,

    Zhang

  • Hi Delaney,

    The Flash driver is a hardware-dependent module that provides Flash erase and write functions for the ECU.
    The Bootloader application software interlock mechanism, that is, the complete Flash driver code or its key parts are not in the Flash memory of the ECU
    It is the RAM downloaded to the ECU during the reprogramming process. The Flash driver code must be removed from RAM at the end of the reprogramming.

    Best Regards

    Zhang

  • Hi Zhang,

    I apologize for the delay; I have looped in the relevant expert, and they should have a response to you in the next day or so.

    Best Regards,

    Delaney

  • Hello Zhang,

    Please take a look at one of the Flash kernel examples in C2000Ware (under directory driverlib\f280015x\examples\flash). We have two examples, one using SCI and one using CAN to program incoming data into the device Flash memory. You can adapt these examples for your use.

    Best regards,
    Ibukun

  • Hi Ibukun Olumuyiwa,

    Thank you very much for taking time out of your busy schedule to answer my questions。

    Here are some of the problems I encountered while debugging the program, and I would like to get some expert advice。

    MEMORY
    {
       BEGIN            : origin = 0x00080000, length = 0x00000002
       BOOT_RSVD        : origin = 0x00000002, length = 0x00000126
    
       RAMM0            : origin = 0x00000128, length = 0x000002D8
       RAMM1            : origin = 0x00000400, length = 0x000003F8
       // RAMM1_RSVD       : origin = 0x000007F8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    
       RAMLS0           : origin = 0x00008000, length = 0x00001000
     RAMLS3           : origin = 0x00009000, length = 0x00001000
       RAMLS1           : origin = 0x0000A000, length = 0x00001FF8
       // RAMLS1_RSVD      : origin = 0x0000BFF8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
       DCSM_ZSEL_Z1_P0  : origin = 0x00078008, length = 0x00000002
       DCSM_ZSEL_Z1_P1  : origin = 0x0007800C, length = 0x00000002
       RESET            : origin = 0x003FFFC0, length = 0x00000002
    
      BOOTKEYADDR      : origin = 0x084000,   length = 0x000010     /* on-chip FLASHC EEPROM*/
    
       /* Flash sectors */
       FLASH_BANK0_SEC_0_7     : origin = 0x080002, length = 0x1FFE  /* on-chip Flash */
       FLASH_BANK0_SEC_8_15    : origin = 0x082000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_16_23   : origin = 0x084010, length = 0x1FF0  /* on-chip Flash */
       FLASH_BANK0_SEC_24_31   : origin = 0x086000, length = 0x2000  /* on-chip Flash */
      FLASH_BANK0_SEC_32_39   : origin = 0x088000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_40_47   : origin = 0x08A000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_48_55   : origin = 0x08C000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_56_63   : origin = 0x08E000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_64_71   : origin = 0x090000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_72_79   : origin = 0x092000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_80_87   : origin = 0x094000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_88_95   : origin = 0x096000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_96_103  : origin = 0x098000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_104_111 : origin = 0x09A000, length = 0x2000  /* on-chip Flash */
      FLASH_BANK0_SEC_112_119 : origin = 0x09C000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_120_127 : origin = 0x09E000, length = 0x1FF0  /* on-chip Flash */
    
       // FLASH_BANK0_SEC_127_RSVD : origin = 0x0A0FF0, length = 0x0010  /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    
    
    }
    SECTIONS
    {
        codestart        : > BEGIN
    
       .text            : >> FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
    
       .cinit           : > FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
       .switch          : > FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
    
       .reset           : > RESET,  TYPE = DSECT /* not used, */
    
       .stack           : > RAMM1
       dcsm_zsel_z1_p0  : > DCSM_ZSEL_Z1_P0,  PAGE = 0
       dcsm_zsel_z1_p1  : > DCSM_ZSEL_Z1_P1,  PAGE = 0
        boot_key_addr    : > BOOTKEYADDR       PAGE = 0
    
    
       .bss             : > RAMLS0
       .bss:output      : > RAMLS0
       .init_array      : >> FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
       .const           : >> FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
       .data            : > RAMLS0
       .sysmem          : > RAMLS0
      .bss:cio          : > RAMLS0
    
    	GROUP
    	{
    		.TI.FlashDrive
    		{-l FAPI_F280015x_EABI_v2.00.01.lib}
    	}
    		RUN = RAMLS3,
      		RUN_START(FlashDriverRunStart),
      		RUN_SIZE(FlashDriverRunSize),
      		RUN_END(FlashDriverRunEnd),
      		ALIGN(8)
    
        .TI.ramfunc:
    		LOAD = FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15,
     		RUN = RAMLS1,
      		LOAD_START(RamfuncsLoadStart),
      		LOAD_SIZE(RamfuncsLoadSize),
      		LOAD_END(RamfuncsLoadEnd),
      		RUN_START(RamfuncsRunStart),
      		RUN_SIZE(RamfuncsRunSize),
      		RUN_END(RamfuncsRunEnd),
      		ALIGN(8)
      		    /*  Allocate IQ math areas: */
     //  IQmath           : > FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
       //IQmathTables     : > FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
    
    
    
       DataBufferSection : > RAMLS1, ALIGN(2)
    }
    

    1、This is my cmd file configuration, there is a warning, how should I go to solve it

    Warn for"../lib/source/280015x_generic_flash_lnk.cmd", line 69: warning #10334-D: No LOAD placement specified for initialized object "GROUP_1"; using RUN placement

    2、When I use this CMD configuration file to run the program, it is easy to trigger an illegal interrupt. What is the cause of this

    __interrupt void Interrupt_illegalOperationHandler(void)
    {
    //
    // Something has gone wrong. The CPU has tried to execute an illegal
    // instruction, generating an illegal instruction trap (ITRAP).
    //
    ESTOP0;
    for(;;)
    {
    ;
    }
    }

  • Hi Zhang,

    The expert is currently out of office, so please expect a 1–2-day delay in response. Thank you.

    Best Regards,

    Aishwarya

  • Hi Zhang,

    	GROUP
    	{
    		.TI.FlashDrive
    		{-l FAPI_F280015x_EABI_v2.00.01.lib}
    	}
    		RUN = RAMLS3,
      		RUN_START(FlashDriverRunStart),
      		RUN_SIZE(FlashDriverRunSize),
      		RUN_END(FlashDriverRunEnd),
      		ALIGN(8)

    This section should have a Load address associated with it. Please see this link for more information on linker cmd file configuration.

    Kind regards,

    Skyler