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.

Where "secureRamFuncs_loadstart" is defined in Lab10.cmd?

Other Parts Discussed in Thread: TMS320F28035

Hello,

I'm working on the C28x_Picclo_MDW_2-1.PDF, and in Lab 10's cmd file, I cannot find where "secureRamFuncs_loadstart, _secureRamFuncs_loadsize, _secureRamFuncs_runstart" are defined. The cmd file is copied below fyi, as marked in blue. Please advise, thanks a lot!

/**********************************************************************************
* File: Lab_10.cmd -- File for Lab 10 (Boot to FLASH boot mode)
* Devices: TMS320F28035
* Author: Technical Training Organization (TTO), Texas Instruments
* History:
*   09/15/09 - original
**********************************************************************************/

MEMORY
{
PAGE 0:    /* Program Memory */
/*   BEGIN_M0        : origin = 0x000000, length = 0x000002*/     /* Part of M0SARAM.  Used for "Boot to M0" bootloader mode. */
   L0SARAM         : origin = 0x008000, length = 0x000800     /* L0 SARAM, CSM secure */
   L3DPSARAM       : origin = 0x009000, length = 0x001000     /* L3 DPSARAM, CSM secure, CLA Prog RAM */
   OTP             : origin = 0x3D7800, length = 0x000400     /* OTP */
   DEVICE_CAL      : origin = 0x3D7C80, length = 0x000040     /* Device_cal function in reserved memory */
   FLASH_ABCDEFGH  : origin = 0x3E8000, length = 0x00FF80     /* FLASH, All sectors combined */
   CSM_RSVD        : origin = 0x3F7F80, length = 0x000076     /* Part of FLASH Sector A.  Reserved when CSM is in use. */
   BEGIN_FLASH     : origin = 0x3F7FF6, length = 0x000002     /* Part of FLASH Sector A.  Used for "Jump to flash" bootloader mode. */
   PASSWORDS       : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASH Sector A.  CSM password locations. */
   IQTABLES        : origin = 0x3FE000, length = 0x000B50     /* Part of Boot ROM */
   IQTABLES2       : origin = 0x3FEB50, length = 0x00008C     /* Part of Boot ROM */
   IQTABLES3       : origin = 0x3FEBDC, length = 0x0000AA     /* Part of Boot ROM */
   BOOTROM         : origin = 0x3FF27C, length = 0x000D44     /* Boot ROM */
   RESET           : origin = 0x3FFFC0, length = 0x000002     /* part of Boot ROM */

 PAGE 1 :   /* Data Memory */
   M0SARAM         : origin = 0x000002, length = 0x0003FE     /* M0 SARAM */
   M1SARAM         : origin = 0x000400, length = 0x000400     /* M1 SARAM */
   CLAMSGRAM1      : origin = 0x001480, length = 0x000080     /* Part of PF0 - CLA to CPU Message RAM */
   CLAMSGRAM2      : origin = 0x001500, length = 0x000080     /* Part of PF0 - CPU to CLA Message RAM */
   L1DPSARAM       : origin = 0x008800, length = 0x000400     /* L1 DPSARAM, CSM secure, CLA Data RAM 0 */
   L2DPSARAM       : origin = 0x008C00, length = 0x000400     /* L2 DPSARAM, CSM secure, CLA Data RAM 1 */
}

 
SECTIONS
{
/*** Compiler Required Sections ***/

  /* Program memory (PAGE 0) sections */
   .text             : > FLASH_ABCDEFGH, PAGE = 0
   .cinit            : > FLASH_ABCDEFGH,    PAGE = 0
   .const            : > FLASH_ABCDEFGH,    PAGE = 0
   .econst           : > FLASH_ABCDEFGH,    PAGE = 0     
   .pinit            : > FLASH_ABCDEFGH,    PAGE = 0
   .reset            : > RESET,             PAGE = 0, TYPE = DSECT  /* We are not using the .reset section */
   .switch           : > FLASH_ABCDEFGH,    PAGE = 0

  /* Data Memory (PAGE 1) sections */
   .bss              : > M0SARAM,               PAGE = 1
   .ebss             : > M0SARAM,               PAGE = 1
   .cio              : > M0SARAM,               PAGE = 1
   .stack            : > M1SARAM,               PAGE = 1
   .sysmem           : > M1SARAM,               PAGE = 1
   .esysmem          : > M1SARAM,               PAGE = 1

/*** User Defined Sections ***/
/*   codestart         : > BEGIN_M0,              PAGE = 0*/                /* Used by file CodeStartBranch.asm */
   codestart         : > FLASH_ABCDEFGH,  PAGE = 0                /* Used by file CodeStartBranch.asm */
   csm_rsvd          : > CSM_RSVD,              PAGE = 0                /* Used by file passwords.asm */
   passwords         : > PASSWORDS,             PAGE = 0                /* Used by file passwords.asm */
   ClaToCpuMsgRAM    : > CLAMSGRAM1,            PAGE = 1                /* Link to PF0 - CLA Message RAM */
   CpuToClaMsgRAM    : > CLAMSGRAM2,            PAGE = 1                /* Link to PF0 - CLA Message RAM */

   /* Section secureRamFuncs used by file SysCtrl.c. */
   secureRamFuncs    :   LOAD = FLASH_ABCDEFGH, PAGE = 0                /* Should be Flash */
                         RUN = L0SARAM,         PAGE = 0                /* Must be CSM secured RAM */
                         LOAD_START(_secureRamFuncs_loadstart),
                         LOAD_SIZE(_secureRamFuncs_loadsize),
                         RUN_START(_secureRamFuncs_runstart)

   /* Section Cla1Prog used by file Cla.c */
   Cla1Prog          :   LOAD = FLASH_ABCDEFGH, PAGE = 0
                         RUN = L3DPSARAM,       PAGE = 0
                         LOAD_START(_cla1Funcs_loadstart),
                         LOAD_SIZE(_cla1Funcs_loadsize),
                         RUN_START(_cla1Funcs_runstart)
  
/*** IQmath Sections ***/
   IQmathTables      : > IQTABLES,              PAGE = 0, TYPE = NOLOAD
   IQmath            : > FLASH_ABCDEFGH,  PAGE = 0
}

/******************* end of file ************************/

  • dongsheng Li said:
    I'm working on the C28x_Picclo_MDW_2-1.PDF, and in Lab 10's cmd file, I cannot find where "secureRamFuncs_loadstart, _secureRamFuncs_loadsize, _secureRamFuncs_runstart" are defined. The cmd file is copied below fyi, as marked in blue. Please advise, thanks a lot!

    dongsheng Li said:
                             LOAD_START(_secureRamFuncs_loadstart),
                             LOAD_SIZE(_secureRamFuncs_loadsize),
                             RUN_START(_secureRamFuncs_runstart)

    The syntax in the linker file actually defines the symbols - it tells the linker to do so when it links all of the code.   In the code itself there is likely a reference to this symbol as an extern.  Please see section 7.14.7 of www.ti.com/lit/spru513 (C28x assembly tools ref guide) for more information.

    -Lori

  • Thanks Lori.

    I understand now that those symbols are generated by the cmpiler, ie., if a sector's name is "secureRamFuncs", then compiler will auto generate _secureRamFuncs_loadstart/loadsize/runstart.

    Dongsheng.