ideality0214 发表于 2014-10-18 10:25:29

kinetis 8K flash 只写了一点代码就报 FLAH溢出,求解!(已解决)

本帖最后由 FSL_TICS_Robin 于 2014-11-27 11:48 编辑

本人在用KL04Z8 做项目,8K的flash应该够用了,可是没写几句就报错了,好像是flash不够了




很不解,于是做了个实验用CodeWarrior 建了一个空工程,





编译后,生成HEX文件,发现空工程就就有15K的HEX,我知道HEX要比Bin大一些,但是这15K也不正常啊,望高手指教!

fengyunyu 发表于 2014-10-18 10:49:55

只看hex文件的大小没意义,打开hex文件看下起始地址。

qufuta 发表于 2014-10-18 11:40:18

你可以看下MAP文件,或者看下配置SRAM和FLASH的部署,而且最好把优化打开,这样没有使用的部分不会生成代码。。。。

ideality0214 发表于 2014-10-18 11:54:45

qufuta 发表于 2014-10-18 11:40
你可以看下MAP文件,或者看下配置SRAM和FLASH的部署,而且最好把优化打开,这样没有使用的部分不会生成代码 ...

但看MAP文件 也没找到现在已经用了多少K 的FLASH了,,您帮我看一下

avr9299 发表于 2014-10-18 13:50:33

把Hex用工具打开,看尾地址有多大

ideality0214 发表于 2014-10-18 14:32:04

本帖最后由 ideality0214 于 2014-10-19 11:00 编辑

avr9299 发表于 2014-10-18 13:50
把Hex用工具打开,看尾地址有多大





0x4110, 也有将近16K了



直接看这个空工程FLASH占用情况,也有5~6K的样子,一共8k的FALSH,还没开始一个空工程就有5~6K,这可怎么用啊

avr9299 发表于 2014-10-19 15:24:05

你这是HEX文件的大小,包含有其他的地址信息,内面的二进制文件也就5K多的样子,看下载时文件格式选错了没

ideality0214 发表于 2014-10-19 15:26:51

avr9299 发表于 2014-10-19 15:24
你这是HEX文件的大小,包含有其他的地址信息,内面的二进制文件也就5K多的样子,看下载时文件格式选错了没 ...

真正的FLASH占用5K 也是很大了,这个MCU一共才8K,只是一个空工程就占了5K,伤不起啊

avr9299 发表于 2014-10-19 16:20:58

要想伤得起,用汇编{:smile:}

829xuming 发表于 2014-10-19 19:38:14

坐等FSL技术支持解决,难道是编译器bug?

NG_Account 发表于 2014-10-19 22:39:24

找个hex转bin文件的工具,转成bin就知道占用多大空间了

semilog 发表于 2014-10-19 23:07:29

看一下你的连接文件,代码段的空间是不是设的太小了,有没有预留boot区或是其他的

ideality0214 发表于 2014-10-20 13:22:28

是不是codewarrior本身系统庞大,生成的启动代码也很庞大,之前用64K的Flash kinetis 不在乎这点牺牲,可是做个MCU就8K flash

fengyunyu 发表于 2014-10-20 13:47:03

.text.exit   0x00000c6c       0x38 D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(exit.o)
                0x00000c6c                exit
.text.memset   0x00000ca4      0xc D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(memset.o)
                0x00000ca4                memset
.text.long2str.isra.0
                0x00000cb0      0x19c D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(printformat_.o)
.text.__pformatter_
                0x00000e4c      0x428 D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(printformat_.o)
                0x00000e4c                __pformatter_
.text.__sformatter
                0x00001274      0x698 D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(scanformat_.o)
                0x00001274                __sformatter
.text.isalpha0x0000190c       0x20 D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(ctype_aeabi.o)
                0x0000190c                isalpha
.text.isspace0x0000192c       0x20 D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(ctype_aeabi.o)
                0x0000192c                isspace
.text.toupper0x0000194c      0xe D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(ctype_aeabi.o)
                0x0000194c                toupper
.text.__strtoul
                0x0000195a      0x1ce D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(__strtoul.o)
                0x0000195a                __strtoul
.text.__fill_mem
                0x00001b28       0x7e D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(__filll_mem.o)
                0x00001b28                __fill_mem
.text.memchr   0x00001ba6       0x1a D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(memchr.o)
                0x00001ba6                memchr
.text.memcpy   0x00001bc0       0x12 D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(memcpy.o)
                0x00001bc0                memcpy
.text.strchr   0x00001bd2       0x1e D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(strchr.o)
                0x00001bd2                strchr
.text.strlen   0x00001bf0       0x10 D:/work/software_work/CW MCU v10.6/MCU/ARM_GCC_Support/ewl/lib/armv6-m\libc.a(strlen.o)


看你的map文件,你貌似把c语言库都包含进来了,怎么可能不占flash?

wangpengcheng 发表于 2014-10-22 08:42:00

不用的东西就不要包含进来,而且注意选择优化!

mcucow 发表于 2014-10-22 12:39:27

一般都是COPY以前的工程 不用的函数尽量屏蔽掉优化后编译

jiang887786 发表于 2014-10-22 17:09:58

楼主的问题解决没有?我们想知道是什么问题啊,跟大家说说?看你的map文件好像字符串那些库什么的包含不少东西啊?具体啥情况呢?

ideality0214 发表于 2014-10-22 21:50:43

jiang887786 发表于 2014-10-22 17:09
楼主的问题解决没有?我们想知道是什么问题啊,跟大家说说?看你的map文件好像字符串那些库什么的包含不少 ...

没有解决,应该是codewarrior 的加入了一些没用的库,代码有很多冗余,我对codewarrior 不算了解,所以我 一般新建工程时就只是一路 next,新建的空工程,编译后就是5K的 flash,



注:我没用PE那个更高级的工具

ideality0214 发表于 2014-10-22 22:46:18

jiang887786 发表于 2014-10-22 17:09
楼主的问题解决没有?我们想知道是什么问题啊,跟大家说说?看你的map文件好像字符串那些库什么的包含不少 ...

我做了个详细的描述,本想更新楼主位的,但是好像编辑不了,新开了个贴 http://www.amobbs.com/thread-5601066-1-1.html

希望大家能关注一下这个问题
页: [1]
查看完整版本: kinetis 8K flash 只写了一点代码就报 FLAH溢出,求解!(已解决)