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.

I waiting your advise about standard methods of RFFT_f32()

Other Parts Discussed in Thread: TMS320F28377D, CONTROLSUITE

Hello, I am trying to use the FFT library on TMS320F28377D.

I have referenced the manual on controlSUITE about RFFT (C:\ti\controlSUITE\libs\dsp\FPU\v1_50_00_00\examples\fft\2837x_rfft)

I already checked ADC data using memory browser.

and then I used memcpy function to copy from ADC memory to RFFTin1Buff.

The ADC data size is 200. so.. To use the FFT size(256), I added zero padding.. just add 0 after  data repeated 56th.

After initializing for RFFToutBuff and using the "RFFT_f32(hnd_rfft)",  there are no proper output data(just write 0) in RFFToutBuff. (There is no error)

I think.. it seem that it doesn't work well RFFT_f32(hnd_rfft) function.

I also checked the path of header and library(c28x_fpu_dsp_library).

How can i solve the this problem?

or from where can i start the debugging..?

Please help me as your good insight!

I attached my source code about the part of FFT to discuss with you.

/***** 2837xD_FLASH_lin_cpu1.cmd *****/

   EXRAM0    : origin = 0x80000000, length = 0x014FFE     // Set the External Memory-ADC Data
   EXRAM1    : origin = 0x80015000, length = 0x01FFFE     // Set the External Memory-1(0x20000 = 130KB) for FFT Input Data
   EXRAM2    : origin = 0x80035000, length = 0x00FFFE     // Set the External Memory-2(0x10000 = 65KB)  for FFT Output Data
   EXRAM3    : origin = 0x80045000, length = 0x004FFE     // Set the External Memory-3(0x5000  = 20KB)  for FFT Mag Data
   EXRAM4    : origin = 0x80050000, length = 0x00FFFE     // Set the External Memory-4(0x10000 = 65KB)  for FFT Coe Data
   EXRAM5    : origin = 0x80060000, length = 0x000FFE     // Set the External Memory-5(0x01000 =  4KB)  for FPUmathTables

...

 usersection     : > EXRAM0,      PAGE = 1
 RFFTdata1     : > EXRAM1,      PAGE = 1, ALIGN = 512 // ALIGN = RFFT_SIZE * 2;
 RFFTdata2       : > EXRAM2,     PAGE = 1
 RFFTdata3       : > EXRAM3,     PAGE = 1
 RFFTdata4       : > EXRAM4,     PAGE = 1
 FPUmathTables   : > EXRAM5,      PAGE = 1

/***** Task.c (not main.c)*****/

#include <math.h>
#include "fpu_rfft.h"
#include "fpu_vector.h"

#pragma DATA_SECTION(adc_i_data,"usersection");   // Set the External Memory to save the ADC Data

#define TEST_FFT 1

#if (TEST_FFT)
#define RFFT_STAGE 8
#define RFFT_SIZE (1 << RFFT_STAGE)
#define EPSILON     0.01

#pragma DATA_SECTION(RFFTin1Buff,"RFFTdata1");
#pragma DATA_SECTION(RFFToutBuff,"RFFTdata2");
#pragma DATA_SECTION(RFFTmagBuff,"RFFTdata3");
#pragma DATA_SECTION(RFFTF32Coef,"RFFTdata4");

float RFFTin1Buff[RFFT_SIZE];
float RFFToutBuff[RFFT_SIZE];
float RFFTF32Coef[RFFT_SIZE];
float RFFTmagBuff[RFFT_SIZE/2+1];
float* FFT_INPUT = RFFTin1Buff;
float* FFT_OUTPUT = RFFToutBuff;
float* FFT_MAG  = RFFTmagBuff;

float RFFTgoldenOut[RFFT_SIZE] = {
  #include "data_output_1.h"
  };

RFFT_F32_STRUCT rfft;
RFFT_F32_STRUCT_Handle hnd_rfft = &rfft;

uint16_t pass = 0;
uint16_t fail = 0;
#endif

...

void Zero_Padding(void)
{
 Uint16 i = 0;

 // Data Copy from ADC to FFTinput
 memcpy(FFT_INPUT, IQ_I_Addr, 200 * 4);

 //Zero Padding
 for(i=0; i<56; i++)
 {
  __addr32_write_uint16((unsigned long) FFT_INPUT+(200+i), 0);
 }
}

...

void RFFT_TEST(void)
{
 Uint16 i = 0;

 hnd_rfft->FFTSize  = RFFT_SIZE;
 hnd_rfft->FFTStages = RFFT_STAGE;
 hnd_rfft->InBuf  = &RFFTin1Buff[0];       //Input buffer
 hnd_rfft->OutBuf  = &RFFToutBuff[0];   //Output buffer
 hnd_rfft->MagBuf  = &RFFTmagBuff[0];   //Magnitude buffer
 hnd_rfft->CosSinBuf = &RFFTF32Coef[0];   //Twiddle factor buffer
 RFFT_f32_sincostable(hnd_rfft);     //Calculate twiddle factor

 //Clean up output buffer
 for (i=0; i < RFFT_SIZE; i++)
 {
     __addr32_write_uint16((unsigned long) FFT_OUTPUT+i, 0);
 }

 //Calculate real FFT

 RFFT_f32(hnd_rfft);     

 for(i = 0; i < RFFT_SIZE; i++){  // Check the output
        if(fabs(RFFTgoldenOut[i] - hnd_rfft->OutBuf[i]) <= EPSILON){
            pass++;
        }else{
            fail++;
        }
    }
}

  • Hi,

    Have you allocated the section "FPUfftTables" or are you using the tables in ROM? Also can you try keeping the buffers in internal RAM and see if its still not working. Im trying to think if the algorithm will work correctly with the buffers in external memory?

    It also looks like this is "far" memory, i.e. the address > 22-bits in which case i dont think the regular memcpy works. If you look at the example C:\ti\controlSUITE\device_support\F2837xD\v200\F2837xD_examples_Cpu1\emif1_16bit_sdram_far\cpu01, you see the memcpy_fast_far function being used. Also not the way the target buffer (in far memory) is defined. I would check the external memory contents after i do the memcpy just to be sure the data was copied correctly.

  • Hello, Vishal_Coelho.

    Thank you for your reply.

    I think I missed to set the "FPUfftTables" as you said, but how to set the this table?

    I followed the referenced TI example,, but I don't know exactly where I missed about FPUfftTables from.

    perhaps...should I add the *.asm files(such as RFFT_f32, RFFT_f32_twiddleFactors) in my project folder(..\F2837xD_common\source)?

    and I am using Flash boot with SRAM now.

    so I set the RFFTin1Buff, RFFToutBuff.. etc in SRAM..

    Is this critical problem?

    I will try again as you mentioned how to debug in my situation.

    I always realized that I need more tech and skill...@~@;

    Please let me know the way to setting table, and extra advise.

    Thank you.

    After few hour, I trying to add the FFT_Twiddles which I missed before.

    But the warning message was appeared in this line "--library=c28x_fpu_dsp_library.lib<RFFT_f32_twiddleFactors.obj> (.econst)"

    The message is no matching section... maybe I failed connection..

    How can I match the this file(RFFT_f32_twiddleFactors.obj)???

    I atteched my code again.

    //###########################################################################
    // FILE    : F2837xD_FLASH_lnk_cpu1.cmd
    //###########################################################################

    MEMORY
    {
    PAGE 0:    /* Program Memory */
               /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */


       RAMM0            : origin = 0x000122, length = 0x0002DE
       RAM_L0L1L2L3  : origin = 0x008000, length = 0x004800     // on-chip RAM block L0

       /* Flash sectors */
       BEGIN_FLASH   : origin = 0x080000, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
       FLASHA           : origin = 0x080002, length = 0x007FFE /* on-chip Flash */
       FLASHE           : origin = 0x088000, length = 0x008000 /* on-chip Flash */
       FLASHF           : origin = 0x090000, length = 0x008000 /* on-chip Flash */
       FLASHG           : origin = 0x098000, length = 0x008000 /* on-chip Flash */
       FLASHH           : origin = 0x0A0000, length = 0x008000 /* on-chip Flash */
       FLASHI           : origin = 0x0A8000, length = 0x008000 /* on-chip Flash */
       FLASHJ           : origin = 0x0B0000, length = 0x008000 /* on-chip Flash */
       FLASHK           : origin = 0x0B8000, length = 0x002000 /* on-chip Flash */
       FLASHL           : origin = 0x0BA000, length = 0x002000 /* on-chip Flash */
       FLASHM           : origin = 0x0BC000, length = 0x002000 /* on-chip Flash */
       FLASHN           : origin = 0x0BE000, length = 0x002000 /* on-chip Flash */
       RESET            : origin = 0x3FFFC0, length = 0x000002


    PAGE 1 :   /* Data Memory */
               /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
               /* Registers remain on PAGE1                                                  */

       RAMM0       : origin = 0x000000, length = 0x000400     /* on-chip RAM block M0 */
       BOOT_RSVD   : origin = 0x000400, length = 0x000080     /* Part of M1, BOOT rom will use this for stack */
       RAMM1       : origin = 0x000480, length = 0x000380     /* on-chip RAM block M1 */
       RAMD1       : origin = 0x00B800, length = 0x000800
       RAMGS0      : origin = 0x00C000, length = 0x001000
       RAMGS1      : origin = 0x00D000, length = 0x001000
       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
       RAMGS7      : origin = 0x013000, length = 0x001000
       RAMGS8      : origin = 0x014000, length = 0x001000
       RAMGS9      : origin = 0x015000, length = 0x001000
       RAMGS10     : origin = 0x016000, length = 0x001000
       RAMGS11     : origin = 0x017000, length = 0x001000
       RAMGS12     : origin = 0x018000, length = 0x001000
       RAMGS13     : origin = 0x019000, length = 0x001000

       EXRAM0    : origin = 0x80000000, length = 0x014FFE
       EXRAM1    : origin = 0x80015000, length = 0x01FFFE     // Set the External Memory-1(0x20000 = 130KB) for FFT Input Data
       EXRAM2    : origin = 0x80035000, length = 0x00FFFE     // Set the External Memory-2(0x10000 = 65KB)  for FFT Output Data
       EXRAM3    : origin = 0x80045000, length = 0x004FFE     // Set the External Memory-3(0x5000  = 20KB)  for FFT Mag Data
       EXRAM4    : origin = 0x80050000, length = 0x00FFFE     // Set the External Memory-4(0x10000 = 65KB)  for FFT Coe Data
       EXRAM5    : origin = 0x80060000, length = 0x000FFE     // Set the External Memory-5(0x01000 =  4KB)  for FPUmathTables

       CPU2TOCPU1RAM   : origin = 0x03F800, length = 0x000400
       CPU1TOCPU2RAM   : origin = 0x03FC00, length = 0x000400
    }

    /*-----------------------------------------------------------------------------
      Link all user defined sections
    -----------------------------------------------------------------------------*/
    SECTIONS
    {

        /* User Defined Sections */
        codestart       : > BEGIN_FLASH, PAGE = 0        /* Used by file CodeStartBranch.asm */
        wddisable  : > FLASHA,   PAGE = 0
       copysections : > FLASHA,   PAGE = 0

       FFT_Twiddles     : LOAD = FLASHE,
                          RUN  = RAMGS12,
                          RUN_START(_FFTTwiddlesRunStart),
                          LOAD_START(_FFTTwiddlesLoadStart),
                          LOAD_SIZE(_FFTTwiddlesLoadSize),
                          PAGE = 1,
      {
         --library=c28x_fpu_dsp_library.lib<RFFT_f32_twiddleFactors.obj> (.econst)    // <------ (Warnning) no matching section
      }

     .reset          : > RESET,       PAGE = 0, TYPE = DSECT


        /* Uninitialized Sections */
        .stack          : > RAMD1        PAGE = 1
        .ebss           : > RAMM1        PAGE = 1
        .esysmem        : > RAMM1        PAGE = 1

        SHARERAMGS0  : > RAMGS0,  PAGE = 1
        SHARERAMGS1  : > RAMGS1,  PAGE = 1
        ramgs0           : > RAMGS0,     PAGE = 1
        ramgs1           : > RAMGS1,     PAGE = 1

        /* Initialized Sections */
       .cinit   : LOAD = FLASHA,  PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0     /* must be CSM secured RAM */
                      LOAD_START(_cinit_loadstart),
                      RUN_START(_cinit_runstart),
                      SIZE(_cinit_size)

     .const   :   LOAD = FLASHA,   PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0        /* must be CSM secured RAM */
                      LOAD_START(_const_loadstart),
                      RUN_START(_const_runstart),
                      SIZE(_const_size)

     .econst   :   LOAD = FLASHA,   PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0        /* must be CSM secured RAM */
                      LOAD_START(_econst_loadstart),
                      RUN_START(_econst_runstart),
                      SIZE(_econst_size)

     .pinit   :   LOAD = FLASHA,   PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0        /* must be CSM secured RAM */
                      LOAD_START(_pinit_loadstart),
                      RUN_START(_pinit_runstart),
                      SIZE(_pinit_size)

     .switch   :   LOAD = FLASHA,   PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0        /* must be CSM secured RAM */
                      LOAD_START(_switch_loadstart),
                      RUN_START(_switch_runstart),
                      SIZE(_switch_size)

     .text   :   LOAD = FLASHA,   PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0        /* must be CSM secured RAM */
                      LOAD_START(_text_loadstart),
                      RUN_START(_text_runstart),
                      SIZE(_text_size)

     usersection     : > EXRAM0,      PAGE = 1
     RFFTdata1     : > EXRAM1,      PAGE = 1, ALIGN = 512 // ALIGN = RFFT_SIZE * 2;
        RFFTdata2       : > EXRAM2,     PAGE = 1
        RFFTdata3       : > EXRAM3,     PAGE = 1
        RFFTdata4       : > EXRAM4,     PAGE = 1
        FPUmathTables   : > EXRAM5,      PAGE = 1

    //###########################################################################
    // FILE    : F2837xD_TaskFMCW.c
    //###########################################################################

    #include "F2837xD_TaskFMCW.h"
    #include "F2837xD_device.h"     // F2837xD Headerfile Include File
    #include "F2837xD_Examples.h"   // F2837xD Examples Include File
    #include <stdio.h>
    #include <math.h>
    #include "fpu_rfft.h"
    #include "fpu_vector.h"

    #pragma DATA_SECTION(adc_i_data,"usersection");   // Set the External Memory(SRAM - 1MB/128MB) 0x80000000

    t_fmcw  mFMCW;
    Uint16 adc_i_data[40000];
    Uint16* IQ_I_Addr = adc_i_data;
    Uint16 I_Q_Acq_Flag = 0;
    char *Data_Str;

    #define TEST_FFT 1

    #if (TEST_FFT)
    #define RFFT_STAGE 8
    #define RFFT_SIZE (1 << RFFT_STAGE)

    #pragma DATA_SECTION(RFFTin1Buff,"RFFTdata1");
    #pragma DATA_SECTION(RFFToutBuff,"RFFTdata2");
    #pragma DATA_SECTION(RFFTmagBuff,"RFFTdata3");
    #pragma DATA_SECTION(RFFTF32Coef,"RFFTdata4");

    float RFFTin1Buff[RFFT_SIZE];
    float RFFToutBuff[RFFT_SIZE];
    float RFFTF32Coef[RFFT_SIZE];
    float RFFTmagBuff[RFFT_SIZE/2+1];
    float* FFT_INPUT = RFFTin1Buff;
    float* FFT_OUTPUT = RFFToutBuff;

    RFFT_F32_STRUCT rfft;
    RFFT_F32_STRUCT_Handle hnd_rfft = &rfft;

    extern uint16_t  FFTTwiddlesRunStart;
    extern uint16_t  FFTTwiddlesLoadStart;
    extern uint16_t  FFTTwiddlesLoadSize;

    #endif

    void GUI_TEST_START(void)
    {
     if(mFMCW.Total_Sample_Cnt == 0)
     {
      mFMCW.Test_Start = 1;
     }
     else if(mFMCW.Total_Sample_Cnt >= 40000)
     {
      I_Q_Acq_Flag = 0;

      Zero_Padding();
      RFFT_TEST();

      I_Q_Send_Nth_Ramp();
     }
    }

    void Zero_Padding(void)
    {
     Uint16 i = 0;

         memcpy(FFT_INPUT, IQ_I_Addr, 200 * 4);

     //Zero Padding
     for(i=0; i<(56); i++)
     {
      __addr32_write_uint16((unsigned long) FFT_INPUT+(200+i), 0);
     }
    }

    void RFFT_TEST(void)
    {
     Uint16 i = 0;

     memcpy((uint32_t *)&FFTTwiddlesRunStart, (uint32_t *)&FFTTwiddlesLoadStart, (uint32_t)&FFTTwiddlesLoadSize); // USE Table

     hnd_rfft->FFTSize  = RFFT_SIZE;
     hnd_rfft->FFTStages = RFFT_STAGE;
     hnd_rfft->InBuf  = &RFFTin1Buff[0];           //Input buffer
     hnd_rfft->OutBuf  = &RFFToutBuff[0];   //Output buffer
     hnd_rfft->MagBuf  = &RFFTmagBuff[0];   //Magnitude buffer

     hnd_rfft->CosSinBuf = RFFT_f32_twiddleFactors;    //Twiddle factor buffer

     //Clean up output buffer
     for (i=0; i < RFFT_SIZE; i++)
     {
      __addr32_write_uint16((unsigned long) FFT_OUTPUT+i, 0);
        }
     RFFT_f32(hnd_rfft);     //Calculate real FFT

    }

  • I think i got the name of the section wrong. ITs FFT_Twiddles. The linker command file for the RFFT example is here

    C:\ti\controlSUITE\libs\dsp\FPU\v1_50_00_00\cmd\F2837xD_FPU_RFFT_lnk.cmd

    Now if you look at the RFFT example in CCS it has a build configuration for FLASH

    There are 2 FLASH build configurations, one that uses the hardware TMU or one using the SW fast RTS library for things like sqrt, atan. Either one of these builds are designed to operate out of FLASH (standalone) without the emulator connected. I would recommend you modify this specific example, with this build configuration active, and try and execute on the device.

  • Hi, Vishal.
    I have checked again in Flash mode as you mentioned, and I also showed the FFT result through the graph in CCS (using example project), Thanks a lot!!!
    But I still have a problem in my project. I want to added FFT function in existed my project file.
    When I have tried this, I could'nt go on because of error in cmd file.
    now I have several questions when I have tried to added FFT function on existing my project.

    1. error in cmd (to use the FFT example, where can i  modify the special part on cmd file?)

    2. there is no option on build configuration of existing my project. May I just modify the cmd file? (Because I already operate in Flash mode.)

    3. shoud I change the cmd file from FLASH_lnk_cpu1 to "FLASH_TMU_lnk_cpu1"?
     
    4. perhaps is it possible to import FFT example on my exised project without modifying cmd file?

    and thanks for your kindly advise!
    If you wanna advise or recommand the manual anything, please help..^^

  • I need to some kinds of procedure to allocate the  RFFT_f32_twiddleFactors.obj on my exist project file.

    now I just conntect the twiddleFactor.obj.. so I am testing the FFT result is right or not.

    so.. I attached the some kinds of pictures what can I do to allocate the twiddleFactor.

    If I had a wrong on my project, please tell me what is mistake.

    1. Define to operate FALSH mode and USE_TABLE in cmd (Project Explorer -> "your operating project" -> properties)

    2. Modifying cmd file (I didn't set the twiddleFactor on not external sram but flash rom)

    --define RFFT_ALIGNMENT=512

    #if !defined(RFFT_ALIGNMENT)
    #error define RFFT_ALIGNMENT under C2000 Linker -> Advanced Options -> Command File Preprocessing -> --define
    #endif

    MEMORY
    {
    PAGE 0:    /* Program Memory */
               /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */


       RAMM0            : origin = 0x000122, length = 0x0002DE
       RAM_L0L1L2L3  : origin = 0x008000, length = 0x004800     /* on-chip RAM block L0
       RAMGS14          : origin = 0x01A000, length = 0x001000
       RAMGS15          : origin = 0x01B000, length = 0x001000

       /* Flash sectors */
       BEGIN_FLASH   : origin = 0x080000, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
       FLASHA           : origin = 0x080002, length = 0x007FFE /* on-chip Flash */
       //FLASHE           : origin = 0x088000, length = 0x008000 /* on-chip Flash */
       FLASHF           : origin = 0x090000, length = 0x008000 /* on-chip Flash */
       FLASHG           : origin = 0x098000, length = 0x008000 /* on-chip Flash */
       FLASHH           : origin = 0x0A0000, length = 0x008000 /* on-chip Flash */
       FLASHI           : origin = 0x0A8000, length = 0x008000 /* on-chip Flash */
       FLASHJ           : origin = 0x0B0000, length = 0x008000 /* on-chip Flash */
       FLASHK           : origin = 0x0B8000, length = 0x004000 /* on-chip Flash */
       //FLASHL           : origin = 0x0BA000, length = 0x002000 /* on-chip Flash */
       FLASHM           : origin = 0x0BC000, length = 0x002000 /* on-chip Flash */
       FLASHN           : origin = 0x0BE000, length = 0x002000 /* on-chip Flash */
       RESET            : origin = 0x3FFFC0, length = 0x000002


    PAGE 1 :   /* Data Memory */
               /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
               /* Registers remain on PAGE1                                                  */

        RAMM0       : origin = 0x000000, length = 0x000400     /* on-chip RAM block M0 */
        BOOT_RSVD   : origin = 0x000400, length = 0x000080     /* Part of M1, BOOT rom will use this for stack */
        RAMM1       : origin = 0x000480, length = 0x000380     /* on-chip RAM block M1 */
        RAMD1       : origin = 0x00B800, length = 0x000800
        RAMGS0      : origin = 0x00C000, length = 0x001000
        RAMGS1      : origin = 0x00D000, length = 0x001000
        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
        RAMGS7      : origin = 0x013000, length = 0x001000
        RAMGS8      : origin = 0x014000, length = 0x001000
        RAMGS9      : origin = 0x015000, length = 0x001000
        RAMGS10     : origin = 0x016000, length = 0x001000
        RAMGS11     : origin = 0x017000, length = 0x001000
        RAMGS12     : origin = 0x018000, length = 0x001000
        RAMGS13     : origin = 0x019000, length = 0x001000

        FLASHE1           : origin = 0x088000, length = 0x004000 /* on-chip Flash */
        FLASHE2           : origin = 0x08C000, length = 0x004000

        EXRAM0    : origin = 0x80000000, length = 0x100000     /* Set the External Memory(0x100000 = 1MB) */

       CPU2TOCPU1RAM   : origin = 0x03F800, length = 0x000400
       CPU1TOCPU2RAM   : origin = 0x03FC00, length = 0x000400
    }

    /*-----------------------------------------------------------------------------
      Link all user defined sections
    -----------------------------------------------------------------------------*/
    SECTIONS
    {

        /* User Defined Sections */
        codestart       : > BEGIN_FLASH, PAGE = 0        /* Used by file CodeStartBranch.asm */
        wddisable  : > FLASHA,   PAGE = 0
       copysections : > FLASHA,   PAGE = 0

    #if defined(RAM)
       ramfuncs         : > RAMM0,     PAGE = 0
       .text            :>> RAMM1 | RAMD0 | RAMD1 | RAMLS0,  PAGE = 0
       .cinit           : > RAMLS1,    PAGE = 0

       .pinit           : > RAMLS1,    PAGE = 0
       .switch          : > RAMLS1,    PAGE = 0
       .econst          : > RAMLS4,    PAGE = 1
    #elif defined(FLASH)
       ramfuncs         :  LOAD = FLASHA,
                           RUN = RAM_L0L1L2L3,
                           RUN_START(_RamfuncsRunStart),
                           LOAD_START(_RamfuncsLoadStart),
                           LOAD_SIZE(_RamfuncsLoadSize),
                           PAGE = 0

       .text            : > FLASHK,    PAGE = 0
       .cinit           : > FLASHM,    PAGE = 0

       .pinit           : > FLASHM,    PAGE = 0
       .switch          : > FLASHM,    PAGE = 0
       .econst          : > FLASHE2,    PAGE = 1
    #if defined(USE_TABLES)
       FFT_Twiddles     : LOAD = FLASHE2,
                          RUN  = RAMGS12
                          RUN_START(_FFTTwiddlesRunStart),
                          LOAD_START(_FFTTwiddlesLoadStart),
                          LOAD_SIZE(_FFTTwiddlesLoadSize),
                          PAGE = 1,
      {
         --library=c28x_fpu_dsp_library.lib<RFFT_f32_twiddleFactors.obj> (.econst)
      }

    #endif
    #else
    #error Add either "RAM" or "FLASH" to C2000 Linker -> Advanced Options -> Command File Preprocessing -> --define
    #endif //RAM

        /* .reset is a standard section used by the compiler.  It contains the
           the address of the start of _c_int00 for C Code.
           When using the boot ROM this section and the CPU vector
           table is not needed.  Thus the default type is set here to DSECT */
     .reset          : > RESET,       PAGE = 0, TYPE = DSECT
     //vectors         : > VECTORS      PAGE = 0, TYPE = DSECT

        /* Uninitialized Sections */
        .stack          : > RAMD1        PAGE = 1
        .ebss           : > RAMM1        PAGE = 1
        .esysmem        : > RAMM1        PAGE = 1

        SHARERAMGS0  : > RAMGS0,  PAGE = 1
        SHARERAMGS1  : > RAMGS1,  PAGE = 1
        ramgs0           : > RAMGS0,     PAGE = 1
        ramgs1           : > RAMGS1,     PAGE = 1

        /* Initialized Sections */
       .cinit   : LOAD = FLASHA,  PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0     /* must be CSM secured RAM */
                      LOAD_START(_cinit_loadstart),
                      RUN_START(_cinit_runstart),
                      SIZE(_cinit_size)

     .const   :   LOAD = FLASHA,   PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0        /* must be CSM secured RAM */
                      LOAD_START(_const_loadstart),
                      RUN_START(_const_runstart),
                      SIZE(_const_size)

     .econst   :   LOAD = FLASHA,   PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0        /* must be CSM secured RAM */
                      LOAD_START(_econst_loadstart),
                      RUN_START(_econst_runstart),
                      SIZE(_econst_size)

     .pinit   :   LOAD = FLASHA,   PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0        /* must be CSM secured RAM */
                      LOAD_START(_pinit_loadstart),
                      RUN_START(_pinit_runstart),
                      SIZE(_pinit_size)

     .switch   :   LOAD = FLASHA,   PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0        /* must be CSM secured RAM */
                      LOAD_START(_switch_loadstart),
                      RUN_START(_switch_runstart),
                      SIZE(_switch_size)

     .text   :   LOAD = FLASHA,   PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0        /* must be CSM secured RAM */
                      LOAD_START(_text_loadstart),
                      RUN_START(_text_runstart),
                      SIZE(_text_size)

       usersection      : > EXRAM0,      PAGE = 1

       RFFTdata1        : > RAMGS4,    PAGE = 1, ALIGN = RFFT_ALIGNMENT
       RFFTdata2        : > RAMGS5,    PAGE = 1
       RFFTdata3        : > RAMGS6,    PAGE = 1
       RFFTdata4        : > RAMGS7,    PAGE = 1

       FPUmathTables    : > RAMGS8,    PAGE = 1
    }

    /*
    //===========================================================================
    // End of file.
    //===========================================================================
    */

    3. Modify the Sysctrl.c

    4. Modify the GlobalPrototypes.h

    I think it is lucky..

    When I cheked the disappear the wanning message on cmd file, I had prayed for God.

    I hope that the FFT result also will be reasonable.

    Finally, Thanks for good advise, Vishal.

    If anybody tell me advise or something to set the FFTtable, reply me again.

    Thank you.