求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 这部分变量被初始化,内存又超了呢?还有通过设置断点发现,程序开始的某一个子函数执行不到,其后的语句也都执行不到。这些子模块单独运行都很好,在整个程序中就不行了。请问您能给点意见或建议码???
展开
 我来答
ATF144X
2013-12-16 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4668万
展开全部
粗略算一下,你的代码有34K以上,M058才32K,装不下啊!
所以你该换M0516了,这有64K的容量。
或者你要优化你的程序来减少代码空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高电平有效
2013-12-16 · TA获得超过439个赞
知道答主
回答量:55
采纳率:0%
帮助的人:60.8万
展开全部
M058是32K只要这么大容量。你的程序大于32k肯定不行了,你只能优化程序,减少代码来年,对重复的代码提取形成函数,或者用时间换空间。还有h文件时不会占用代码大小的,h文件时给编译器使用的。
追问
你好,谢谢你的回答。这里用时间换空间是什么意思,集体怎么操作?
追答
尽量少调用函数,减少调用产生的代码。同时你可以for语句进行研究下,for(i=0;i0; i--)编译产生的代码数量是不一样的。希望对那你有用,不过你的代码超的比较多,这种方法减少的代码量很少。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xumin10419
2013-12-16 · TA获得超过271个赞
知道答主
回答量:136
采纳率:100%
帮助的人:89.5万
展开全部
3楼正解,不知楼主是否有大量inline,如果有可以考虑不用;是否搭载操作系统,如果搭载,再进行深入裁剪;是否是DEBUG模式,如果是可以考虑release模式编译。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aheng365
2013-12-16 · TA获得超过141个赞
知道小有建树答主
回答量:310
采纳率:0%
帮助的人:168万
展开全部
(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。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
踏雪寻芳迹
2013-12-16 · 超过11用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:24.9万
展开全部
给你个博客链接,详细看看,你可能会比较清楚
http://wjf88223.blog.163.com/blog/static/35168001201092692926478/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式