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.

CCS/TMS320C5515: TMS320C5515 hwafft

Part Number: TMS320C5515
Other Parts Discussed in Thread: TMS320C5505, , TMS320VC5505

Tool/software: Code Composer Studio

Hi,

I don't full understand for datasheet description. 

I used hwafft function ,  (download example sprabb6b.zip)

It was working...

But I want to use hwafft in ROM. I do something as below.

1) Remove the hwafft.asm file from the project 

2) rebuilt project cannot success... 

So , i have two questions

a) How to check / modify  the HWAFFT functions ROM locations?

b) The performance better runs in ROM than in hwafft.asm?

  • Hi SMART,

    Either delete hwafft.asm from your project or exclude it from your project build (right click on file).

    At the end of your .cmd file (after the MEMORY and SECTIONS blocks), add the following ROM locations for the HWAFFT functions - thsse are specific to C5505 and C5515 PG2.0.

    /* HWAFFT Routines ROM Addresses */
    /* C5505/C5515 (PG 2.0) */
    _hwafft_br         = 0x00ff6cd6;
    _hwafft_8pts     = 0x00ff6cea;
    _hwafft_16pts     = 0x00ff6dd9;
    _hwafft_32pts     = 0x00ff6f2f;
    _hwafft_64pts     = 0x00ff7238;
    _hwafft_128pts     = 0x00ff73cd;
    _hwafft_256pts     = 0x00ff75de;
    _hwafft_512pts     = 0x00ff77dc;
    _hwafft_1024pts    = 0x00ff7a56;

    If you had mapped the hwafft.asm functions into DARAM, the performance might be better when called from ROM as it frees the DARAM up for the HWAFFT data accesses (which should be in DARAM).

    Running these routines from ROM will save your RAM for other code or data storage.

    However, pay attention to Errata 2.1.9 HWAFFT Data and Scratch Pointers Copied as 16-Bit Instead of 23-Bit
    Instead of using extended aux registers, the HWAFFT software stored in ROM uses (non-extended) aux registers - copying only the lower 16-bits of a potentially 23-bit address. The errata provides a workaround.

    One easy way to workaround this errata is to use the small memory model instead of large or huge memory models. Then all accesses will use 16-bits and the errata is worked around.

    C5515 Errata:  www.ti.com/.../sprz308

    Don't forget to align your data and scratch buffers in memory as demonstrated in the abstract section of FFT Implementation on the TMS320VC5505, TMS320C5505, and TMS320C5515 DSPs (Rev. B)
    http://www.ti.com/lit/pdf/sprabb6

    After you build the project, you can open the .map file to confirm the HWAFFT routines are being called from ROM instead of RAM. It should show up like below:

    00ff7a56                _hwafft_1024pts
    00ff73cd                _hwafft_128pts
    00ff6dd9                _hwafft_16pts
    00ff75de                _hwafft_256pts
    00ff6f2f                  _hwafft_32pts
    00ff77dc                _hwafft_512pts
    00ff7238                _hwafft_64pts
    00ff6cea                _hwafft_8pts
    00ff6cd6                _hwafft_br

    Hope this helps,
    Mark

  • Hi Mark,

    I have edited c5515.cmd file (after the MEMORY and SECTIONS blocks), add the following ROM locations for the HWAFFT functions. But compiler cannot success...

    Error message :

    unresolved symbol _hwafft_512pts, first referenced in ./fastdct.obj

    unresolved symbol _hwafft_br, first referenced in ./fastdct.obj

    What is my problem root?

  • Hi SMART,

    Your linker .cmd file looks correct from what I can see.

    It behaves as though the linker is not able to find that .cmd file, however.

    Can you open the project properties and make sure the .cmd file that includes the _hwafft function addresses is selected like below?

    The only way I was able to reproduce your error was to "exclude from the project" the linker cmd file by right clicking on it or by commenting the _hwafft function address lines from the .cmd file.

    Make sure you have only this one .cmd file in your project.

    If that doesn't get it going, can you copy paste your build console here?

    Hope this helps,
    Mark