wanstrive 发表于 2014-7-4 11:23:13

CW10.6的编译错误,求助(已解决)

本帖最后由 FSL_TICS_Robin 于 2014-7-30 10:06 编辑

见图片,是我定义的变量太多了么?怎么解决这个问题?

wanstrive 发表于 2014-7-4 12:44:57

怎么没人回复呢?

FSL_TICS_Robin 发表于 2014-7-4 14:06:59

楼主你好
你的MKE02Z64VLC4芯片只有64KB的Flash和4KB的SRAM,请问你的程序是否有定义过多变量呢?

FSL_TICS_Robin 发表于 2014-7-4 14:12:26

本帖最后由 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大小吗?

wanstrive 发表于 2014-7-4 14:22:18

FSL_TICS_Robin 发表于 2014-7-4 14:12
从报错来看你的堆栈大小与m_data不匹配,请问你有手动修改堆栈大小、m_data大小吗?
...

我没有改过,m_data最大能有多少?

FSL_TICS_Robin 发表于 2014-7-4 14:32:44

wanstrive 发表于 2014-7-4 14:22
我没有改过,m_data最大能有多少?

这里定义的m_data就是上面提到的SRAM大小,你的芯片4KB的SRAM大小以16进制表示就是0x1000那么大。

这个SRAM使用还需要注意数组变量等不能跨界(上图那个1/4界),如果你定义一个很大的数组超过了1/4的SRAM大小就会出错。

wanstrive 发表于 2014-7-4 14:38:09

FSL_TICS_Robin 发表于 2014-7-4 14:32
这里定义的m_data就是上面提到的SRAM大小,你的芯片4KB的SRAM大小以16进制表示就是0x1000那么大。

这个S ...

那如果是2KB的MKE02Z16VLC2呢?手头上就这两种片子。

FSL_TICS_Robin 发表于 2014-7-4 14:46:51

本帖最后由 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界)

wanstrive 发表于 2014-7-4 14:55:26

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数组还是编译通过了呃~

FSL_TICS_Robin 发表于 2014-7-4 15:08:53

wanstrive 发表于 2014-7-4 14:55
哦,好的,我有个360个值得正弦表,定义成了32位int型,我把它改为16位short型就好了,我有点疑问,一个3 ...

我在8楼的表述不准确,应该是单个数组大小别超3/4而非1/4。
因为超过1/4的话,编译器会把数组放到SRAM_U这块3/4大小的区域。

wanstrive 发表于 2014-7-4 15:16:31

FSL_TICS_Robin 发表于 2014-7-4 15:08
我在8楼的表述不准确,应该是单个数组大小别超3/4而非1/4。
因为超过1/4的话,编译器会把数组放到SRAM_U ...

那我问题的后半部分呢,是一个int型就占了4bytes的RAM?

FSL_TICS_Robin 发表于 2014-7-4 15:25:18

wanstrive 发表于 2014-7-4 15:16
那我问题的后半部分呢,是一个int型就占了4bytes的RAM?

看你调用的32位int和16位short具体怎么定义的,32位一般就占4B,16位就占2B的RAM
页: [1]
查看完整版本: CW10.6的编译错误,求助(已解决)