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编译文件及分配内存空间的顺序?

我用的是比较老的ccs3.3,dsp为28335,有个问题是:
在多个文件中都会有变量函数等定义,如何控制这些文件编译的顺序和内存分配的顺序呢?
如图中1所示,main、uart、test都是工程中的源文件,是什么配置导致了是这个顺序?
再有就是图中2所示的retain是什么意思?为什么这个文件有这个注释,其他的没有呢?从什么地方可以配置?

谢谢

  • 函数和变量地址可以通过#pragma CODE_SECTION和#pragma DATA_SECTION进行明确指定。

    源文件编译的.text中分配时按照编译目标的大小进行先后分配的,先大后小。

    retain的段内是含有中断函数的。

  • 谢谢啊,果真是你说的这样,自己都没注意到占用空间大小的降序关系。

    如果我想让小的文件先编译,有什么办法么?还是只能把其他都文件中的合到这个文件里,使这个文件变大了?

  • 其实编译的顺序和这边的存储分配并不一定完全一致的,只有先编译完成才能知道需要的存储空间,然后才会分配。

    一般的应用场合是不会管这个顺序的,反正程序运行时的存取时间是相同的。

    不知道你一定要改变这一顺序的初衷是什么?

  • 因为需要兼容以前的其他程序,之前用到了对固定内存区域进行读取数值进行数据判别,因此新的程序需要和之前的程序在同样的区域进行定义。但是文件分配的顺序变了就影响到判断数据的地址,无法与之前的程序兼容了。

  • 如果你说的数据是指代码段的话,可以使用#pragma CODE_SECTION明确指定相关函数到固定的存储地址