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.

CLA MATH LIB DATA ROM

Other Parts Discussed in Thread: CONTROLSUITE

I have the CLAmath source project and open and it has a few different build options:

CLAMATHLIB_STD

CLAMATHLIB_FPU32_SUPPORT

CLAMATHLIB_DATAROM_STD

CLAMATHLIB_DATAROM_FPU32_SUPPORT

So, I am having trouble finding information on what DATAROM means, from what I gather it stores the math tables in Data ROM.

What I've been doing up to now is just using CLAMATHLIB_FPU32_SUPPORT and in my cmd file, I copy the math tables to CLA Data RAM 2 (L0DPSARAM).

If I compile and use CLAMATHLIB_DATAROM_FPU32_SUPPORT what do I have to change in my cmd file?  Take everything out about the tables?  It is handled automatically?  I tried this, and I get errors about unresolved symbols (tables).  Should they be being copied to another memory section instead of DLA Data RAM 2?????

Below is my cmd file for reference

/* User Configurable Options                                                                                          */
#define USE_CLA_C    1      /* 1 = Using CLA C-compiler, 0 = ASM only                                                 */

_Cla1Prog_Start = _Cla1funcsRunStart;
-heap 0x400
-stack 0x400

/* Define size for the CLA scratchpad area that will be used by the CLA compiler for local symbols and temporary
 * variables; also force references to the special symbols that mark the scratchpad area.                             */

#if USE_CLA_C == 1
   CLA_SCRATCHPAD_SIZE = 0x100;
   --undef_sym=__cla_scratchpad_end
   --undef_sym=__cla_scratchpad_start
#endif

MEMORY
{
PAGE 0:    /* Program Memory                                                                                          */
   BEGIN_M0           : origin = 0x000000, length = 0x000002    /* Part of M0SARAM - used for "Boot to M0" mode       */
   L3DPSARAM          : origin = 0x009000, length = 0x001000    /* L3 DPSARAM, CSM secure, CLA Prog RAM               */
   L4SARAM            : origin = 0x00A000, length = 0x002000    /* L4 SARAM, CSM secure                               */
   OTP            (R) : origin = 0x3D7800, length = 0x000400    /* OTP                                                */
   FLASH_ABCDEFGH (R) : origin = 0x3D8000, length = 0x01FF80    /* FLASH, All sectors combined                        */
   CSM_RSVD       (R) : origin = 0x3F7F80, length = 0x000076    /* Part of FLASH_A - reserved when CSM is in use      */
   BEGIN_FLASH    (R) : origin = 0x3F7FF6, length = 0x000002    /* Part of FLASH_A - used for "Jump to flash" mode    */
   PASSWORDS      (R) : origin = 0x3F7FF8, length = 0x000008    /* Part of FLASH_A - CSM password locations           */
   FPUTABLES      (R) : origin = 0x3FD860, length = 0x0006A0    /* Part of Boot ROM                                   */
   IQTABLES       (R) : origin = 0x3FDF00, length = 0x000B50    /* Part of Boot ROM                                   */
   IQTABLES2      (R) : origin = 0x3FEA50, length = 0x00008C    /* Part of Boot ROM                                   */
   IQTABLES3      (R) : origin = 0x3FEADC, length = 0x0000AA    /* Part of Boot ROM                                   */
   RESET          (R) : 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               */
   L0DPSARAM          : origin = 0x008000, length = 0x000800    /* L0 DPSARAM, CSM secure, CLA Data RAM 2             */
   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             */
   L5DPSARAM          : origin = 0x00C000, length = 0x002000    /* L5 DPSARAM, DMA RAM 0                              */
   L6DPSARAM          : origin = 0x00E000, length = 0x002000    /* L6 DPSARAM, DMA RAM 1                              */
   L7DPSARAM          : origin = 0x010000, length = 0x002000    /* L7 DPSARAM, DMA RAM 2                              */
   L8DPSARAM          : origin = 0x012000, length = 0x002000    /* L8 DPSARAM, DMA RAM 3                              */
}

 
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

   .bss_cla           : > L2DPSARAM,             PAGE = 1
   .const_cla         : > L2DPSARAM,             PAGE = 1

  /* User Defined Sections                                                                                            */
   codestart          : > BEGIN_FLASH,           PAGE = 0                /* Used by file CodeStartBranch.asm          */
   dmaMemBufs         : > L5DPSARAM,             PAGE = 1                /* Link to DMA accessible memory             */
   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 Flash.c.                                                                    */
   secureRamFuncs     :   LOAD = FLASH_ABCDEFGH, PAGE = 0                /* Load to flash, run from CSM secure RAM    */
                          RUN = L4SARAM,         PAGE = 0
                          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                /* Load to flash, run from CLA Prog RAM      */
                          RUN = L3DPSARAM,       PAGE = 0
                          LOAD_START(_Cla1funcsLoadStart),
                          LOAD_END(_Cla1funcsLoadEnd),
                          LOAD_SIZE(_Cla1funcsLoadSize),
                          RUN_START(_Cla1funcsRunStart)

//   CLA1mathTables     :   LOAD = FLASH_ABCDEFGH, PAGE = 0                /* Load to flash, run from CLA Prog RAM      */
//                          RUN = L0DPSARAM,       PAGE = 1
//                          LOAD_START(_Cla1mathTablesLoadStart),
//                          LOAD_END(_Cla1mathTablesLoadEnd),
//                          LOAD_SIZE(_Cla1mathTablesLoadSize),
//                          RUN_START(_Cla1mathTablesRunStart)

#if USE_CLA_C == 1
   CLAscratch         : { *.obj(CLAscratch)                              /* Scratchpad memory for the CLA C Compiler  */
                          . += CLA_SCRATCHPAD_SIZE;
                          *.obj(CLAscratch_end)
                        } > L2DPSARAM,           PAGE = 1
#endif

/* Math Tables                                                                                                        */
   FPUmathTables      : > FPUTABLES,             PAGE = 0, TYPE = NOLOAD
   IQmathTables       : > IQTABLES,              PAGE = 0, TYPE = NOLOAD
   IQmath             : > FLASH_ABCDEFGH,        PAGE = 0
}

  • Hi,

    The DATAROM builds only work on the 2805x and 2837x line. These devices have the math tables in the CLA data ROM. These are internal test builds for v400, they werent supposed to be available for that release.

    I am releasing v4.00.01.00 with the next controlSUITE update that has examples and documentation relating to the dataROM builds. The way to use the dataROM builds is to 

    1. get rid of the CLA1MathTables section in the linker command file
    2. include the dataROM symbols library with the project ( i have these files for the 2805x and 2837x)
    3. replace the standard CLAMath library with its DATAROM variant.

    Let me know if you have 2805x or a 2837x and would like to try it out. I can post the symbols library for these. Alternatively, you can wait for the 4.00.01.00 release which will have examples that show the datarom variants in use on the 2837x

  • I am using F28069 so I guess that does not apply to me.  Thank you very much for your help Vishal.