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.

compilation of complex FFT texas

Other Parts Discussed in Thread: CCSTUDIO

hello,

I installed the ccstudio v3.3 to work on the evaluation board DSP 320C6474 after plugging in the card, I have compiled the complex FFT texas located in the library IQmath_v213, but I got the following message:

Loader: One or more sections of your program falls into a memory region that is not writable.  These regions will not actually be written to the target.  Check your linker configuration and/or memory map.

Please help me solve this problem to get the results
thanks

 

  • youir youir said:

    Loader: One or more sections of your program falls into a memory region that is not writable.  These regions will not actually be written to the target.  Check your linker configuration and/or memory map.

    The first part of this message is telling you that the program you have build is being loaded into memory space that it should not be loaded into, since it is "not writable". The last part of this messages is telling you that you need to look at the linker configuration which you will find in the fft_IQ.cmd file for the FFT example from the IQmath library. The linker configuration is defined in the fft_IQ.cmd and should describe the physical memory configuration of your device/board and the logical configuration of how you want the compiler sections to be mapped to the physical memory.

    The fft_IQ.cmd supplied with the example includes the MEMORY section

    MEMORY{
      UDRAM       : o = 0x11f04000, l = 0x00010000     /* Uninitialized Data RAM */
      IRAM            : o = 0x00800000, l = 0x00100000
      ERAM          : o = 0xE1000000, l = 0x00100000
      TESTRAM   : o = 0xE1100000, l = 0x00100000
      UERAM       : o = 0xE1200000, l = 0x05D00000
    }

    I could not figure out which TI device this linker configuration was made for, but it is not for the C6474. To fix it, we need to look at the Memory Map Summary in the C6474 datasheet and apply the correct starting addresses and memory sizes to this MEMORY definition in your fft_IQ.cmd file. You might notice that the SECTIONS part of the fft_IQ.cmd file only makes use of the IRAM and ERAM memory components, but for completeness we should update all of the MEMORY section so it will work for other examples, if needed.

    In the datasheet Memory Map Summary table, you will see that the L2 internal RAM starts at 0x00800000 and can have lengths of 0x0008000 to 0x00180000 depending on the core being used and the symmetry configuration selected; this will be the IRAM memory. You will also see that the L1D internal RAM starts at 0x00f00000 with length of 0x00008000; this will be the UDRAM memory. Finally, you will see that the DDR2 data space starts at 0x80000000, and the EVM implements 128MB or 0x08000000; this will be the ERAM memory. Applying these memory starting addresses and sizes will give the following new MEMORY definitions to be pasted into your fft_IQ.cmd file:

    MEMORY{
      UDRAM       : o = 0x00f04000, l = 0x00008000     /* Uninitialized Data RAM */
      IRAM            : o = 0x00800000, l = 0x00080000
      ERAM          : o = 0x80000000, l = 0x00100000
      TESTRAM   : o = 0x80100000, l = 0x00100000
      UERAM       : o = 0x80200000, l = 0x07E00000
    }

    With this updated linker command file, your example should build, load, and run. One more comment for the fft_IQ.cmd file is that the -heap definition seems very large to me: 0x50000. If the example really needs it to be that large, then you can leave it and the example will run fine. If you build another example that needs more L2 memory for program or data, you might be able to reduce this large -help size to whatever would be a proper size for your application.