在用IAR时可以正常工作,有时会出现堆栈溢出,但在ccs5.5编译器下提示:
error #10099-D: program will not fit into available memory. placement with alignment fails for section ".cinit" size 0x4dd .
Available memory ranges:
FLASH size: 0xa380 unused: 0x0 max hole: 0x0error #10010: errors encountered during linking; "DSJ89-100A.out" not built
这个问题会不会影响程序执行,该如何修改
HG:
两种编译器架构,工作方式,编译效率上都是不一样的。
当然会影响程序执行。.out文件没有生成没法下载运行啊。
这个错误翻译过来就是.cinit的大小是0x4dd,但是FLASH里unused的空间还有0x00,所以是满了放不进去了。
user3460585:
回复 HG:
我在官方的.cmd文件中发现有个flash和flash2,我的整个程序也不可能占用所有的flash,该如何调整?
灰小子:
回复 user3460585:
可以先试试修改优化选项,这两个开发环境默认的优化等级也不一样
user3460585:
回复 灰小子:
在IAR环境下,今天将程序改为最高优化选型,程序就不能正常运行了。运行时钟明显不对,求解?
灰小子:
回复 user3460585:
正常啊,最高优化级别改变的太多。调低一级优化选项试试
user3460585:
回复 灰小子:
降低一级的确可以运行,但是出现堆栈溢出,虽然IAR停止工作,但是我的程序仍然运行:程序中常量、全局变量和局部变量较多,如何确定程序需要的堆栈大小,而不让溢出?
灰小子:
回复 user3460585:
很久没用iar了,ccs有选项可以看到。
建议调整下堆栈大小试试,也可以尝试优化下代码,减小堆栈使用
user3460585:
回复 灰小子:
两个编译都可以设置堆栈大小,但是我怎么才能知道到底程序需要多少堆栈空间才能正常运行?
user3460585:
回复 灰小子:
这个内存分配我找到了,我的程序编译后显示
堆栈空间只有分配的大小,没有显示程序用了多少?