求C语言及ARM高手指点 20
因项目需要,我编写了一个基于新塘M058的ARM程序,M058是32K的,我的程序比较大,最初编译提示ProgramSize:Code=34024RO-data=964R...
因项目需要,我编写了一个基于新塘M058的ARM程序,M058是32K的,我的程序比较大,最初编译提示Program Size: Code=34024 RO-data=964 RW-data=432 ZI-data=1424 ,经过压缩已达到Program Size: Code=31924 RO-data=964 RW-data=432 ZI-data=1424 ,但是仍然下载不进去,提示超过容量。我该怎么调整程序。还有用到的"Driver\DrvUART.h" "Driver\DrvGPIO.h" "Driver\DrvPWM.h"等文件是不是也会占用内存?求解答
你好,目前我把程序压缩到了Program Size: Code=31004 RO-data=964 RW-data=348 ZI-data=1412 !!!31004+964+348=32316<32768可以下载到32K的芯片上了。但是在Keil软件上Debug时,运行一小会就出现“ICE: Cmd error: ERROR_GET_REG”无法继续调试了!!!请问是不是在运行时ZI-data=1412 这部分变量被初始化,内存又超了呢?还有通过设置断点发现,程序开始的某一个子函数执行不到,其后的语句也都执行不到。这些子模块单独运行都很好,在整个程序中就不行了。请问您能给点意见或建议码??? 展开
你好,目前我把程序压缩到了Program Size: Code=31004 RO-data=964 RW-data=348 ZI-data=1412 !!!31004+964+348=32316<32768可以下载到32K的芯片上了。但是在Keil软件上Debug时,运行一小会就出现“ICE: Cmd error: ERROR_GET_REG”无法继续调试了!!!请问是不是在运行时ZI-data=1412 这部分变量被初始化,内存又超了呢?还有通过设置断点发现,程序开始的某一个子函数执行不到,其后的语句也都执行不到。这些子模块单独运行都很好,在整个程序中就不行了。请问您能给点意见或建议码??? 展开
5个回答
展开全部
粗略算一下,你的代码有34K以上,M058才32K,装不下啊!
所以你该换M0516了,这有64K的容量。
或者你要优化你的程序来减少代码空间。
所以你该换M0516了,这有64K的容量。
或者你要优化你的程序来减少代码空间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
M058是32K只要这么大容量。你的程序大于32k肯定不行了,你只能优化程序,减少代码来年,对重复的代码提取形成函数,或者用时间换空间。还有h文件时不会占用代码大小的,h文件时给编译器使用的。
追问
你好,谢谢你的回答。这里用时间换空间是什么意思,集体怎么操作?
追答
尽量少调用函数,减少调用产生的代码。同时你可以for语句进行研究下,for(i=0;i0; i--)编译产生的代码数量是不一样的。希望对那你有用,不过你的代码超的比较多,这种方法减少的代码量很少。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
3楼正解,不知楼主是否有大量inline,如果有可以考虑不用;是否搭载操作系统,如果搭载,再进行深入裁剪;是否是DEBUG模式,如果是可以考虑release模式编译。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(31924+964)/1024>32
更多追问追答
追问
你好,实际占用空间的长度不仅仅是code啊!我一直以为只要code小于32768(32K)就可以了呢
追答
Code:程序;RO-data:只读变量;RW-data:可读可写变量;ZI-data:未初始化的
全局变量;关于以上四项的详细定义请参考 Keil/ADS 的帮助文档。
定义 Flash 数组可使用 const unsigned char Tab[]。定义在 Flash 中的变量为只读变量,改
变的是 RO-data 的大小。以上四项中与 Flash/RAM 的对应关系如下:
ROM(Flash)Size = CodeSize + RO-data + RW-data;
RAM Size = RW-data + ZI-data。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你个博客链接,详细看看,你可能会比较清楚
http://wjf88223.blog.163.com/blog/static/35168001201092692926478/
http://wjf88223.blog.163.com/blog/static/35168001201092692926478/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询