本帖最后由 icekoor 于 2014-8-22 09:25 编辑
error message提示我的.text空间有问题(error: relocation value truncated at 0xa44 in section .text, file)
看到这个错误主要是我们在代码中定义的数组太大了,导致这个原因。解决办法:
在cmd中在SDRAM分配了一块空间,用来专门存放这几个数组:
-c -stack 0x400 -heap 0x400 MEMORY { ISRAM : origin = 0x0, len = 0x20000 DSRAM : origin = 0x20000, len = 0x10000 SDRAM : origin = 0x80000000 len = 0x1000000 DPRAM1 : origin = 0xB0001000 len = 0x0001000 /*将大数组分配到my_data1存储区(SDRAM)*/ DPRAM2 : origin = 0xB0002000 len = 0x0001000 /*将大数组分配到my_data2存储区(SDRAM)*/ DPRAM3 : origin = 0xB0003000 len = 0x0001000 /*将大数组分配到my_data3存储区(SDRAM)*/ } SECTIONS { .vec > ISRAM .text > ISRAM .data > DSRAM .bss > DSRAM .cinit > DSRAM .const > DSRAM .far > DSRAM .stack > DSRAM .cio > DSRAM .sysmem > DSRAM .my_data1 > DPRAM1 .my_data2 > DPRAM2 .my_data3 > DPRAM3 }
//---------------------------------------------------------- //混合基数FFT变量声明 //---------------------------------------------------------- #pragma DATA_SECTION(ResultFFT2, ".my_data1") //将数组分配到my_data1存储区(SDRAM) #pragma DATA_SECTION(Source2, ".my_data2") //将数组分配到my_data2存储区(SDRAM) #pragma DATA_SECTION(Result2, ".my_data3") //将数组分配到my_data3存储区(SDRAM) float ResultFFT2[Nh]; //定义FFT输出的幅值 struct Compx Source2[Nh]; //定义FFT的采样点存放数组 struct Compx Result2[Nh]; //定义FFT的运算结果存放数组 |