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.

TMS320F28376S: SCI flash bootloader

Part Number: TMS320F28376S
Other Parts Discussed in Thread: C2000WARE

Hello everybody,
I have a problem, with sending the firmware with SCI using the example version called (F2837xS_sci_flash_kernel),

I put the recommendations seen in other posts here, including in the CMD file, like the ALIGN(8) example for the sectors.
Another configuration made was so that the pins used correspond to my UART hardware, that is, the GPIO84 and GPIO85 pins are enabled.


The first used example version was (C2000Ware_4_01_00_00), that is, the current version.
The kernel sent to the TMS went correctly and the menu was presented.
When sending the command (1-DFU) the sending of the application itself starts, this process takes time and always ends without success.


I tested the kernel version (C2000Ware_2_01_00_00) for comparison and got a different error.

Now I have 2 questions:
1- How to fix this problem?
2- How to increase the application sending speed?

command sent:

serial_flash_programmer.exe -d f2837xS -k C:\Users\rodrigo.stefanini\Desktop\FIRMWARE_F28376S\F2837xS_sci_flash_kernel.txt -a C:\Users\rodrigo.stefanini\Desktop\FIRMWARE_F28376S\F28376S_application.txt -p COM79 -b 38400

  • Hello, 

    Can you share your linker command file here? Using ALIGN(8) was the correct step, it will be good to confirm that the sector address shown above is aligned. When trying the older C2000Ware version, did you use the serial flash programmer from that same version? It looks like the serial flash programmer and flash kernel are from different versions. 

    Thanks

    Anu

  • Hello Anu, thanks for your repply,

    For context, I basically put ALIGN(8) in front of all the lines of the example sector present in C:\ti\c2000\C2000Ware_4_01_00_00\device_support\f2837xs\examples\cpu1\F2837xS_sci_flash_kernel\cpu01, in the file called flash_programming_RAM.cmd.
    To answer your question, yes, I'm using the same serial_flash_programming, being the latest version of C2000Ware. But now
    I'm focusing on the example of this latest version, so only using its serial_flash_programming.exe.

    flash_programming_RAM.cmd.txt
    MEMORY
    {
    PAGE 0 :
       /* BEGIN is used for the "boot to SARAM" bootloader mode   */
    
       BEGIN           	: origin = 0x000000, length = 0x000002
       RAMM0           	: origin = 0x000122, length = 0x0002DE
       RAMD0           	: origin = 0x00B000, length = 0x000800
       RAMLS0          	: origin = 0x008000, length = 0x000800
       RAMLS1          	: origin = 0x008800, length = 0x000800
       RAMLS2      		: origin = 0x009000, length = 0x000800
       RAMLS3      		: origin = 0x009800, length = 0x000800
       RAMLS4      		: origin = 0x00A000, length = 0x000800
       RESET           	: origin = 0x3FFFC0, length = 0x000002
       RAMGS0           : origin = 0x00C000, length = 0x001000
       RAMGS1_code      : origin = 0x00D000, length = 0x000B00
       RAMGS2           : origin = 0x00E000, length = 0x001000
       RAMGS3           : origin = 0x00F000, length = 0x001000
       RAMGS4           : origin = 0x010000, length = 0x001000
       RAMGS5           : origin = 0x011000, length = 0x001000
       RAMGS6           : origin = 0x012000, length = 0x001000
    
    PAGE 1 :
    
       BOOT_RSVD        : origin = 0x000002, length = 0x000121     /* Part of M0, BOOT rom will use this for stack */
       RAMM1            : origin = 0x000400, length = 0x0003F8     /* on-chip RAM block M1 */
    // RAMM1_RSVD       : origin = 0x0007F8, length = 0x000008     /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
       RAMD1            : origin = 0x00B800, length = 0x000800
    
       RAMGS1_data		:origin = 0xDB00, length = 0x400
    
       RAMLS5           : origin = 0x00A800, length = 0x000800
    
       RAMGS7           : origin = 0x013000, length = 0x001000
       RAMGS8           : origin = 0x014000, length = 0x001000
       RAMGS9           : origin = 0x015000, length = 0x001000
       RAMGS10          : origin = 0x016000, length = 0x001000     
    
    //   RAMGS11        : origin = 0x017000, length = 0x000FF8   /* Uncomment for F28374D, F28376D devices */
    
    //   RAMGS11_RSVD   : origin = 0x017FF8, length = 0x000008    /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    
    //   RAMGS11        : origin = 0x017000, length = 0x001000     /* Only Available on F28379S/_, F28377S/F28377S, F28375D/F28375S devices. Remove line on other devices. */
    //   RAMGS12        : origin = 0x018000, length = 0x001000     /* Only Available on F28379S/_, F28377S/F28377S, F28375D/F28375S devices. Remove line on other devices. */
    //   RAMGS13        : origin = 0x019000, length = 0x001000     /* Only Available on F28379S/_, F28377S/F28377S, F28375D/F28375S devices. Remove line on other devices. */
    //   RAMGS14        : origin = 0x01A000, length = 0x001000     /* Only Available on F28379S/_, F28377S/F28377S, F28375D/F28375S devices. Remove line on other devices. */
    //   RAMGS15        : origin = 0x01B000, length = 0x000FF8     /* Only Available on F28379S/_, F28377S/F28377S, F28375D/F28375S devices. Remove line on other devices. */
       
    //   RAMGS15_RSVD   : origin = 0x01BFF8, length = 0x000008    /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
                                                                /* Only on F28379S/_, F28377S/F28377S, F28375D/F28375S devices. Remove line on other devices. */
    
       CPU2TOCPU1RAM    : origin = 0x03F800, length = 0x000400
       CPU1TOCPU2RAM    : origin = 0x03FC00, length = 0x000400
    }
    
    
    SECTIONS
    {
       codestart        : > BEGIN,     PAGE = 0, ALIGN(8)
       .text            : >>RAMGS0 | RAMGS1_code | RAMGS4,   PAGE = 0, ALIGN(8)
       .cinit           : > RAMGS0,     PAGE = 0, ALIGN(8)
       .pinit           : > RAMGS0,     PAGE = 0, ALIGN(8)
       .switch          : > RAMGS0,     PAGE = 0, ALIGN(8)
       .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */
    
       .stack           : > RAMM1,     PAGE = 1, ALIGN(8)
       .ebss            : > RAMGS1_data,    PAGE = 1, ALIGN(8)
       .econst          : > RAMGS1_data,    PAGE = 1, ALIGN(8)
       .esysmem         : > RAMGS1_data,    PAGE = 1, ALIGN(8)
       Filter_RegsFile  : > RAMGS8,	   PAGE = 1, ALIGN(8)
    
       ramgs0           : > RAMGS1_data,    PAGE = 1, ALIGN(8)
       ramgs1           : > RAMGS9,    PAGE = 1, ALIGN(8)
      
       .TI.ramfunc      : > RAMGS0      PAGE = 0, ALIGN(8)
      
       /* The following section definitions are required when using the IPC API Drivers */ 
        GROUP : > CPU1TOCPU2RAM, PAGE = 1
        {
            PUTBUFFER 
            PUTWRITEIDX 
            GETREADIDX 
        }
        
        GROUP : > CPU2TOCPU1RAM, PAGE = 1
        {
            GETBUFFER :    TYPE = DSECT
            GETWRITEIDX :  TYPE = DSECT
            PUTREADIDX :   TYPE = DSECT
        }
       
        /* The following section definition are for SDFM examples */		
       Filter1_RegsFile : > RAMGS10,	PAGE = 1, fill=0x1111, ALIGN(8)
    // Filter2_RegsFile : > RAMGS11,	PAGE = 1, fill=0x2222
    // Filter3_RegsFile : > RAMGS12,	PAGE = 1, fill=0x3333
    // Filter4_RegsFile : > RAMGS13,	PAGE = 1, fill=0x4444
    // Difference_RegsFile : >RAMGS14, 	PAGE = 1, fill=0x3333
    	
    }
    
    /*
    //===========================================================================
    // End of file.
    //===========================================================================
    */

    My last error with this CMD file was:

  • The ALIGN(8) needs to be present on the linker command file of your firmware image (the image mapped to Flash), not the flash kernel image (which is mapped to RAM). Can you try it on the firmware image's linker command file and let me know what happens?

    Anu

  • True!? Today I won't be able to check this more closely, my work ends at 17:00, Brazilian time. My project doesn't have a linked command file built in, can I use either one? Just changing ALIGN(4) to ALIGN(8)? Next monday I will try it.

  • Rodrigo, 

    Not sure what you mean when you say your project does not have a linker command file built in - how are you mapping it to Flash? Also, you should use ALIGN(8), not ALIGN(4). 

    Anu

  • Thanks, Anu,

    Im new in this Texas world, today I found the linked file and resolve my issue.