CW10.6的编译错误,求助(已解决)
本帖最后由 FSL_TICS_Robin 于 2014-7-30 10:06 编辑见图片,是我定义的变量太多了么?怎么解决这个问题? 怎么没人回复呢? 楼主你好
你的MKE02Z64VLC4芯片只有64KB的Flash和4KB的SRAM,请问你的程序是否有定义过多变量呢? 本帖最后由 FSL_TICS_Robin 于 2014-7-4 14:18 编辑
FSL_TICS_Robin 发表于 2014-7-4 14:06
楼主你好
你的MKE02Z64VLC4芯片只有64KB的Flash和4KB的SRAM,请问你的程序是否有定义过多变量呢? ...
从报错来看你的堆栈大小与m_data不匹配,请问你有手动修改堆栈大小、m_data大小吗?
FSL_TICS_Robin 发表于 2014-7-4 14:12
从报错来看你的堆栈大小与m_data不匹配,请问你有手动修改堆栈大小、m_data大小吗?
...
我没有改过,m_data最大能有多少? wanstrive 发表于 2014-7-4 14:22
我没有改过,m_data最大能有多少?
这里定义的m_data就是上面提到的SRAM大小,你的芯片4KB的SRAM大小以16进制表示就是0x1000那么大。
这个SRAM使用还需要注意数组变量等不能跨界(上图那个1/4界),如果你定义一个很大的数组超过了1/4的SRAM大小就会出错。 FSL_TICS_Robin 发表于 2014-7-4 14:32
这里定义的m_data就是上面提到的SRAM大小,你的芯片4KB的SRAM大小以16进制表示就是0x1000那么大。
这个S ...
那如果是2KB的MKE02Z16VLC2呢?手头上就这两种片子。 本帖最后由 FSL_TICS_Robin 于 2014-7-4 15:11 编辑
wanstrive 发表于 2014-7-4 14:38
那如果是2KB的MKE02Z16VLC2呢?手头上就这两种片子。
如果你用的是CodeWarrior10.6的PE工具配置工程,那么你选择芯片型号时对应大小的m_data、堆、栈就已经填好到4楼界面处。
2KB的SRAM你按照6楼1/4那图看下,单个数组大小别超512B(单个数组别跨SRAM1/4界) FSL_TICS_Robin 发表于 2014-7-4 14:46
如果你用的是CodeWarrior10.6的PE工具配置工程,那么你选择芯片型号时对应大小的m_data、堆、栈就已经填 ...
哦,好的,我有个360个值得正弦表,定义成了32位int型,我把它改为16位short型就好了,我有点疑问,一个32位int型的变量是占RAM中的4个Byte,16位short型的变量占2个Byte?那我一个长360的short数组还是编译通过了呃~ wanstrive 发表于 2014-7-4 14:55
哦,好的,我有个360个值得正弦表,定义成了32位int型,我把它改为16位short型就好了,我有点疑问,一个3 ...
我在8楼的表述不准确,应该是单个数组大小别超3/4而非1/4。
因为超过1/4的话,编译器会把数组放到SRAM_U这块3/4大小的区域。 FSL_TICS_Robin 发表于 2014-7-4 15:08
我在8楼的表述不准确,应该是单个数组大小别超3/4而非1/4。
因为超过1/4的话,编译器会把数组放到SRAM_U ...
那我问题的后半部分呢,是一个int型就占了4bytes的RAM? wanstrive 发表于 2014-7-4 15:16
那我问题的后半部分呢,是一个int型就占了4bytes的RAM?
看你调用的32位int和16位short具体怎么定义的,32位一般就占4B,16位就占2B的RAM
页:
[1]