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.

Running programs on RAM with TMS320F28026

Hello all,

I'm doing a flash programming utility via SCI mode. I made the following steps:

1)First program is downloaded on M0 and M1 SARAM, is executing correctly. It must set the baudrate and pll and receive a second program which is using L0 SARAM.
2)Sent the second program. When the program is written the first program make a jump to the main of the second program starting from 0x8000. This program has the flashing library.

After the jump I receive no answer from the second program. I exclude that the jump routine is not working.
Here the linkers for the two programs: do you see any mistake?

--------FIRST PROGRAM - WORKING--------
MEMORY
{
PAGE 0 :
   /* For this example, L0 is split between PAGE 0 and PAGE 1 */
   /* BEGIN is used for the "boot to SARAM" bootloader mode   */

   BEGIN      : origin = 0x000000, length = 0x000002
   RAMM0      : origin = 0x000050, length = 0x0003B0
   PRAML0     : origin = 0x008000, length = 0x000900
   RESET      : origin = 0x3FFFC0, length = 0x000002

   IQTABLES   : origin = 0x3FE000, length = 0x000B50     /* IQ Math Tables in Boot ROM */
   IQTABLES2  : origin = 0x3FEB50, length = 0x00008C     /* IQ Math Tables in Boot ROM */
   IQTABLES3  : origin = 0x3FEBDC, length = 0x0000AA     /* IQ Math Tables in Boot ROM */

   BOOTROM    : origin = 0x3FF27C, length = 0x000D44


PAGE 1 :

   /* For this example, L0 is split between PAGE 0 and PAGE 1 */
   BOOT_RSVD   : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */
   RAMM1       : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   DRAML0      : origin = 0x008900, length = 0x000700
}


SECTIONS
{
   /* Setup for "boot to SARAM" mode:
      The codestart section (found in DSP28_CodeStartBranch.asm)
      re-directs execution to the start of user code.  */
   codestart        : > RAMM0,     PAGE = 0
   ramfuncs         : > RAMM0      PAGE = 0
   .text            : > RAMM0,     PAGE = 0
   .cinit           : > RAMM0,     PAGE = 0
   .pinit           : > RAMM0,     PAGE = 0
   .switch          : > RAMM0,     PAGE = 0
   .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */
  
   sci_func         : > RAMM0,         PAGE = 0
   APIstart         : > PRAML0,     PAGE = 0
  
   .stack           : > RAMM1,     PAGE = 1
   .ebss            : > DRAML0,    PAGE = 1
   .econst          : > DRAML0,    PAGE = 1
   .esysmem         : > RAMM1,     PAGE = 1

   IQmath           : > PRAML0,    PAGE = 0
   IQmathTables     : > IQTABLES,  PAGE = 0, TYPE = NOLOAD


---------SECOND PROGRAM - NOT WORKING--------
MEMORY
{
PAGE 0 :
   /* For this example, L0 is split between PAGE 0 and PAGE 1 */
   /* BEGIN is used for the "boot to SARAM" bootloader mode   */

   BEGIN      : origin = 0x000000, length = 0x000002
   RAMM0      : origin = 0x000050, length = 0x0003B0
   PRAML0_0   : origin = 0x008000, length = 0x000004
   PRAML0     : origin = 0x008004, length = 0x001000 /*modified*/
   RESET      : origin = 0x3FFFC0, length = 0x000002

   IQTABLES   : origin = 0x3FE000, length = 0x000B50     /* IQ Math Tables in Boot ROM */
   IQTABLES2  : origin = 0x3FEB50, length = 0x00008C     /* IQ Math Tables in Boot ROM */
   IQTABLES3  : origin = 0x3FEBDC, length = 0x0000AA     /* IQ Math Tables in Boot ROM */

   BOOTROM    : origin = 0x3FF27C, length = 0x000D44


PAGE 1 :

   /* For this example, L0 is split between PAGE 0 and PAGE 1 */
   BOOT_RSVD   : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */
   RAMM1       : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   /*DRAML0      : origin = 0x008900, length = 0x000700*/ /*modified*/
}


SECTIONS
{
   /* Setup for "boot to SARAM" mode:
      The codestart section (found in DSP28_CodeStartBranch.asm)
      re-directs execution to the start of user code.  */
   ramfuncs         : > PRAML0      PAGE = 0
   .text            : > PRAML0,     PAGE = 0 /*modified*/
   .cinit           : > PRAML0,     PAGE = 0 /*modified*/
   .pinit           : > PRAML0,     PAGE = 0 /*modified*/
   .switch          : > PRAML0,     PAGE = 0 /*modified*/
   .reset           : > RESET,      PAGE = 0, TYPE = DSECT /* not used, */
  
   sci_func         : > PRAML0,     PAGE = 0
   APIstart         : > PRAML0_0,     PAGE = 0
  
   .stack           : > PRAML0,     PAGE = 0 /*modified*/
   .ebss            : > PRAML0,    PAGE = 0 /*modified*/
   .econst          : > PRAML0,    PAGE = 0 /*modified*/
   .esysmem         : > PRAML0,     PAGE = 0 /*modified*/
   data_buffer        : > PRAML0,    PAGE = 0 /*added*/

   IQmath           : > PRAML0,    PAGE = 0
   IQmathTables     : > IQTABLES,  PAGE = 0, TYPE = NOLOAD