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.
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