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.

请教关于CCS3.3里系统生成的MAP文件具体含义

Other Parts Discussed in Thread: TMS320F28335

我在CCS3.3编译环境下开发TMS320F28335,目前用一些网络上的源码,现在的问题是编译出来的SRAM区域占用太大了,我是看编译后的MAP文件得知的,但是我并不确定我的判断方式是否正确. 首先我打开MAP文件找到MEMORY CONFIGURATION下的PAGE0中的RAM0-RAM3和PAGE1中的RAMM0,RAMM1,RAML4,RAML5,RAML6,RAML7,这几项相加,请问这几项的和是工程所用的全部SRAM大小吗? 另外还有一个问题是当把运行CMP文件换成在FALSH中运行时,这几项的和很小,如附件中两者的对比.  然后在SECTION ALLOCATION MAP下的text  cinit  econst length这几项分别代表什么意思呢?有相关的文档说明吗?针对MAP文件的.谢谢.

  • 还有个问题很疑惑,相同的代码在TMS320F2835下需要SRAM空间很大,但是在其他的MCU下只需要1多KB,而现在需要17KB,尽管TMS320F28335最小是16BIT,但是我所用的全局变量并不是很多,通过SECTION ALLOCATION MAP下分配长度得知SDO文件需要很大的SRAM空间,可是这个文件下并没有一个全局变量都是局部的,SECTION ALLOCATION MAP下的使用长度是代表SRAM大小吗?这个需要首先确认下.

  • hua gan 说:

    我在CCS3.3编译环境下开发TMS320F28335,目前用一些网络上的源码,现在的问题是编译出来的SRAM区域占用太大了,我是看编译后的MAP文件得知的,但是我并不确定我的判断方式是否正确. 首先我打开MAP文件找到MEMORY CONFIGURATION下的PAGE0中的RAM0-RAM3和PAGE1中的RAMM0,RAMM1,RAML4,RAML5,RAML6,RAML7,这几项相加,请问这几项的和是工程所用的全部SRAM大小吗? 另外还有一个问题是当把运行CMP文件换成在FALSH中运行时,这几项的和很小,如附件中两者的对比.  然后在SECTION ALLOCATION MAP下的text  cinit  econst length这几项分别代表什么意思呢?有相关的文档说明吗?针对MAP文件的.谢谢.

    瞄了一下你的map文件,发现你的ram没怎么用啊,你是不是看错了,只有used才是你使用掉的空间。

    如果你把一些库或者函数搬运到ram,那么ram自然就会占用大,而你不搬运的话,那就会比较小。

    其实map文件是和cmd文件相对应的,如果想要了解,请百度或者谷歌一下ti的cmd介绍。

  • hua gan 说:

    还有个问题很疑惑,相同的代码在TMS320F2835下需要SRAM空间很大,但是在其他的MCU下只需要1多KB,而现在需要17KB,尽管TMS320F28335最小是16BIT,但是我所用的全局变量并不是很多,通过SECTION ALLOCATION MAP下分配长度得知SDO文件需要很大的SRAM空间,可是这个文件下并没有一个全局变量都是局部的,SECTION ALLOCATION MAP下的使用长度是代表SRAM大小吗?这个需要首先确认下.

    SECTION ALLOCATION MAP是你的空间具体分配给了哪些部分,有ram,有flash

  • 感谢您的解答,我在http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/80869.aspx这里找到了答案.你说的没错,因为之前我是在SRAM环境下运行的,所有编译出来占用SRAM很大,后面在FALSH里面运行就很小了. 可是现在有个问题是CCS3.3编译器为什么指定地方分配地址呢?我看了下载PAGE0里的SRAM基本上没用,但是在PAGE1里面的SRAM不够用了,编译器自己不会往没用的地方分配吗?现在编译就出错了.如果所示

  • 的确会增加一点学习的曲线,不过你自己对资源的利用了然于心未尝不是一件好事。

    page0是代码存储区,page1是数据存储区。

    .ebss等报错是原来分配的空间太小了,你对照一下28335的片上ram资源,应该还有很多没有分配,你分配一些给它就是了。如果觉得麻烦,你可以分配比较大的空间,然后把这些都分配到那个段。等以后对cmd文件有进一步的了解了,再逐步细化优化。

  • 恩,我现在解决了.所有全局变量和静态变量都会分配在.ebbs指向的RAM中,是这样吗?

  • hua gan 说:

    恩,我现在解决了.所有全局变量和静态变量都会分配在.ebbs指向的RAM中,是这样吗?

    可以,先让他跑起来,其他的等熟悉了再说。

  • 是的,没有特定分配的全局变量和静态变量在.ebbs段

  • OK,感谢你的解答.