我用的是比较老的ccs3.3,dsp为28335,有个问题是:
在多个文件中都会有变量函数等定义,如何控制这些文件编译的顺序和内存分配的顺序呢?
如图中1所示,main、uart、test都是工程中的源文件,是什么配置导致了是这个顺序?
再有就是图中2所示的retain是什么意思?为什么这个文件有这个注释,其他的没有呢?从什么地方可以配置?
谢谢
rookiecalf:
函数和变量地址可以通过#pragma CODE_SECTION和#pragma DATA_SECTION进行明确指定。
源文件编译的.text中分配时按照编译目标的大小进行先后分配的,先大后小。
retain的段内是含有中断函数的。
我用的是比较老的ccs3.3,dsp为28335,有个问题是:
在多个文件中都会有变量函数等定义,如何控制这些文件编译的顺序和内存分配的顺序呢?
如图中1所示,main、uart、test都是工程中的源文件,是什么配置导致了是这个顺序?
再有就是图中2所示的retain是什么意思?为什么这个文件有这个注释,其他的没有呢?从什么地方可以配置?
谢谢
lee lee2:
回复 rookiecalf:
谢谢啊,果真是你说的这样,自己都没注意到占用空间大小的降序关系。
如果我想让小的文件先编译,有什么办法么?还是只能把其他都文件中的合到这个文件里,使这个文件变大了?
我用的是比较老的ccs3.3,dsp为28335,有个问题是:
在多个文件中都会有变量函数等定义,如何控制这些文件编译的顺序和内存分配的顺序呢?
如图中1所示,main、uart、test都是工程中的源文件,是什么配置导致了是这个顺序?
再有就是图中2所示的retain是什么意思?为什么这个文件有这个注释,其他的没有呢?从什么地方可以配置?
谢谢
lee lee2:
回复 rookiecalf:
因为需要兼容以前的其他程序,之前用到了对固定内存区域进行读取数值进行数据判别,因此新的程序需要和之前的程序在同样的区域进行定义。但是文件分配的顺序变了就影响到判断数据的地址,无法与之前的程序兼容了。
我用的是比较老的ccs3.3,dsp为28335,有个问题是:
在多个文件中都会有变量函数等定义,如何控制这些文件编译的顺序和内存分配的顺序呢?
如图中1所示,main、uart、test都是工程中的源文件,是什么配置导致了是这个顺序?
再有就是图中2所示的retain是什么意思?为什么这个文件有这个注释,其他的没有呢?从什么地方可以配置?
谢谢
rookiecalf:
回复 lee lee2:
如果你说的数据是指代码段的话,可以使用#pragma CODE_SECTION明确指定相关函数到固定的存储地址