社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 精华区
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
搜索
查看: 2060|回复: 13

[求助] 编译提示内存不足怎么回事

[复制链接]

33

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2014-5-18 18:52:02 | 显示全部楼层 |阅读模式
本帖最后由 夏侯 于 2014-5-20 08:43 编辑

"./lnk.cmd", line 48: error #10099-D: program will not fit into available
    memory.  placement with alignment fails for section ".text" size 0x2b12 .
    Available memory ranges:
    FLASH        size: 0x1000       unused: 0xe56        max hole: 0xe56   

CMD文件: .text            : > PRAML0,    PAGE = 0


后记:问题解决了,RAM中空间不够,可以在FLASH中运行,用Release模式,具体参见“C2000在FLASH中运行”的帖子,希望初学者别走我这菜鸟的路。。。

此帖出自TI C2000论坛

cmd.docx

14.53 KB, 下载次数: 15

map.docx

38.45 KB, 下载次数: 10


回复

使用道具 举报

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

发表于 2014-5-19 00:36:33 | 显示全部楼层
楼主把2b12 .的代码,放到 0x1000   的空间里,当然是不行的。

可以组织一下CMD文件,方法是,打开MAP文件,看看哪一段占多少空间,把它们调整一下就好了。

也或者,将CMD文件中的FLASH分的小块块化为一个大块。

关于CMD文件这方面的知识,可以参阅TI的《TMS320C28x Assembly Language Tools v6.1 User's Guide》

回复

使用道具 举报

3359

TA的帖子

422

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

发表于 2014-5-18 19:04:42 | 显示全部楼层
有没有设置了编译优化?

回复

使用道具 举报

3359

TA的帖子

422

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

发表于 2014-5-18 21:32:19 | 显示全部楼层
捕获.PNG


还可以改CMD文件

点评

已经设置了编译优化,可还是存在这个错误  详情 回复 发表于 2014-5-19 09:53

回复

使用道具 举报

1万

TA的帖子

146

TA的资源

版主

Rank: 6Rank: 6

技术导师勋章

发表于 2014-5-18 23:05:10 | 显示全部楼层
说明你程序中使用的内存超出了芯片的资源限制。可以先进行优化编译试试,但本质的办法是认为严格管理内存的使用,特别是尽量减少不必要的全局变量。

点评

恩恩,我检查一下是不是有不必要的变量  详情 回复 发表于 2014-5-19 10:03
上传了一些书籍资料,也许有你想要的:http://download.eeworld.com.cn/user/chunyang

回复

使用道具 举报

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

发表于 2014-5-19 00:38:28 | 显示全部楼层
或者,楼主把你的MAP文件和CMD文件发上来看看,

点评

已发,我再看看变量设置有没有问题  详情 回复 发表于 2014-5-19 10:01

回复

使用道具 举报

33

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2014-5-19 09:53:48 | 显示全部楼层

已经设置了编译优化,可还是存在这个错误

回复

使用道具 举报

33

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2014-5-19 10:01:44 | 显示全部楼层
dontium 发表于 2014-5-19 00:38
或者,楼主把你的MAP文件和CMD文件发上来看看,

已发,我再看看变量设置有没有问题

点评

这不是变量的设置问题。 看来,你对CMD文件的使用还不太清楚。 根据你的MAP文件看,没有用到FALSH,只用到了RAM,当程序稍大时,就不能只在 “ RAM ” 中运行了。 我写的关于C2000的“ 在FALSH里运行 ” 的  详情 回复 发表于 2014-5-19 11:40

回复

使用道具 举报

33

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2014-5-19 10:03:50 | 显示全部楼层
chunyang 发表于 2014-5-18 23:05
说明你程序中使用的内存超出了芯片的资源限制。可以先进行优化编译试试,但本质的办法是认为严格管理内存的 ...

恩恩,我检查一下是不是有不必要的变量

回复

使用道具 举报

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

发表于 2014-5-19 11:40:23 | 显示全部楼层
夏侯 发表于 2014-5-19 10:01
已发,我再看看变量设置有没有问题

这不是变量的设置问题。

看来,你对CMD文件的使用还不太清楚。

根据你的MAP文件看,没有用到FALSH,只用到了RAM,当程序稍大时,就不能只在 “ RAM ” 中运行了。

我写的关于C2000的“ 在FALSH里运行 ” 的文章等,你可以搜一下。

顺便说一声,发MAP文件时,可以压缩后上传。

点评

按照FLASH运行的步骤试了一下就编译成功了,多谢多谢  详情 回复 发表于 2014-5-19 16:28

回复

使用道具 举报

2898

TA的帖子

262

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

荣誉会员勋章测评达人

发表于 2014-5-19 12:45:26 | 显示全部楼层
".text" size 0x2b12 超过4K,28027 RAM总共6K,但不连续。0x0000~0x0800占2K,0x8000~0x9000占4K。

回复

使用道具 举报

2898

TA的帖子

262

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

荣誉会员勋章测评达人

发表于 2014-5-19 12:54:42 | 显示全部楼层
   PRAML0     : origin = 0x008000, length = 0x000900

   .text            : > PRAML0,    PAGE = 0
上面2条你在你的CMD文件中能看到。PRAML0只有2K多一点的空间,但是".text" size 0x2b12有9K多,肯定放不下。
可将 .text 放入flash中。CMD已修改,关注附件中的红色部分。
MEMORY.docx (14.54 KB, 下载次数: 17)

点评

在FLASH中运行了一下就编译成功了,多谢多谢  详情 回复 发表于 2014-5-19 16:27

回复

使用道具 举报

33

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2014-5-19 16:27:59 | 显示全部楼层
ltbytyn 发表于 2014-5-19 12:54
PRAML0     : origin = 0x008000, length = 0x000900

   .text            : > PRAML0,    PAGE = 0
...

在FLASH中运行了一下就编译成功了,多谢多谢

回复

使用道具 举报

33

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2014-5-19 16:28:52 | 显示全部楼层
dontium 发表于 2014-5-19 11:40
这不是变量的设置问题。

看来,你对CMD文件的使用还不太清楚。

按照FLASH运行的步骤试了一下就编译成功了,多谢多谢

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-9-21 23:48 , Processed in 0.438808 second(s), 19 queries , Redis On.

快速回复 返回顶部 返回列表