打印

keil4的map档,code (inc. data) 谁能尽述data是哪些?

[复制链接]
8561|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sedatefire|  楼主 | 2012-8-27 10:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sedatefire 于 2012-8-31 00:16 编辑

目前已知
1.printf的常量字符串
2.mcu的寄存器
可以影响inc. data字段

但,这些还对不上map档
高分求解?

另外,map档上写着
Total Rom Size = Code + R0 Data + RW data
rom空间关RW data什么事??

PS: 我说的是keil的arm版本

相关帖子

沙发
sedatefire|  楼主 | 2012-8-27 10:59 | 只看该作者
偶的贴,从来都是50分

使用特权

评论回复
板凳
dqyubsh| | 2012-8-27 12:53 | 只看该作者
首先是全局变量,它占的data空间最大了。

使用特权

评论回复
地板
forgot| | 2012-8-27 16:24 | 只看该作者
我记得网上有个MDK的map文件分析,可以看看那

使用特权

评论回复
5
airwill| | 2012-8-27 16:56 | 只看该作者
inc. data字段   是指令数据字段, 其实就是代码.
RO Data 字段   是常数   
RW Data 字段   是变量
ZI Data 字段    是零初始化变量, 通常是数组结构等.

1.printf的常量字符串,  是的, 我也发现 printf 控制字符串会影响生产的代码大小.

使用特权

评论回复
6
sedatefire|  楼主 | 2012-8-27 17:37 | 只看该作者
另外发现一个问题
Total Rom Size = Code + R0 Data + RW data
我好奇的是
rom空间关RW data什么事?!!
太奇怪了

使用特权

评论回复
7
雷影少年| | 2012-8-27 18:42 | 只看该作者
用keil俩月了,只是知道date受程序中变量个数的影响,xdate要自己定义,code受程序代码长度的影响,目前还没看到过专门讲这个的**或者帖子,坐等高人~

使用特权

评论回复
8
雷影少年| | 2012-8-27 18:48 | 只看该作者
百度了下相关资料,发现你们说的貌似是ARM,咱处于51阶段的新手就飘过好了找到了点东西不知道对LZ有没有帮助 RO,RWZIrar.rar (25.94 KB)

使用特权

评论回复
9
原野之浪| | 2012-8-27 19:01 | 只看该作者
1# sedatefire
大侠  上次看了你的贴  用词好像太甲骨文了 看了难受

现在看来可能是我知识不够宽

生成的list 啥的 看过了么?可能看过了哦

我是这样理解的

首先说 数据

想理解
先得弄个间的

使用特权

评论回复
10
原野之浪| | 2012-8-27 19:09 | 只看该作者
先得弄个简单的程序  然后设置那个好像叫做target的选项里面 看看data区 xdata区啥的 当然你的单片机没xdata区就不太好弄了么?当然不是,要用软件仿真环境弄   弄原理当然得弄51的软件仿真   软件仿真我现在认为比硬件真实运行要准确的多。比如有bug的程序在软仿真运行错误,在硬件里面运行竟然能凑凑合合的用

我的意思是软仿真已经可以说没啥bug了,51的。
然后就弄函数  看那个keil帮助文档  看里面的参数啊  寄存器分配啊
包括指针分配内存啊  比如 有6个参数  他可能就是前几个 放哪里啊 后几个 放哪里啊

这样简单了解

然后就写个简单程序 编译   先不看output里面分配  然后自己算能用几个data 几个xdata

然后看看和output里面是否一致。 对了 要注意优化级别

至于代码大小  我看一般的人 还是估计不出来大小的吧  

讲了半天  可能答非所问   就当时回顾以前的知识了

使用特权

评论回复
11
sedatefire|  楼主 | 2012-8-27 23:23 | 只看该作者
弄懂这些,对于程序优化,很有好处的。

使用特权

评论回复
12
hongshui3000| | 2012-8-27 23:58 | 只看该作者
学到不少谢谢各位了

使用特权

评论回复
13
misra| | 2012-8-28 08:59 | 只看该作者
11# sedatefire
大侠

一般来讲  过分讲究优化 未必是好事  还是看场合

如果对自己信心不足  并且没有多次搞过同一个程序 就是积累不够  并且对安全要求高  那么我觉得还是弄成最低优化级别好

如果有过积累 (所谓多次重构),对安全要求较高 那么 默认级别也好

如果要求极高 比如那个火星登陆  竟然全是静态类型 即便再有信心还是悠着点

夸大阅读面  能。。

嗨  班门弄斧

使用特权

评论回复
14
coody| | 2012-8-28 11:18 | 只看该作者
51的话,data就是内部的256字节。

使用特权

评论回复
15
efen| | 2012-8-29 14:06 | 只看该作者
RW Data 是要有初始值的
问题是RAM不能保存初始数据,所以就会烧录到flash,占用ROM的空间
上电运行的时候单片机再把flash的初始值copy到RAM

使用特权

评论回复
16
sedatefire|  楼主 | 2012-8-31 00:15 | 只看该作者
偶说的是ARM的啦啦啦啦

使用特权

评论回复
17
sedatefire|  楼主 | 2012-8-31 00:17 | 只看该作者
本帖最后由 sedatefire 于 2012-8-31 09:47 编辑

13# misra
我指的优化,是说通过看map档,可以知道程序的空间分布。
如果要压缩空间的话,压缩那些大头比较有效

使用特权

评论回复
18
雷影少年| | 2012-8-31 08:16 | 只看该作者
继续顶

使用特权

评论回复
19
sedatefire|  楼主 | 2012-8-31 09:47 | 只看该作者
13# misra
我指的优化,是说通过看map档,可以知道程序的空间分布。
如果要压缩空间的话,压缩那些大头比较有效
sedatefire 发表于 2012-8-31 00:17

使用特权

评论回复
20
sedatefire|  楼主 | 2012-9-14 10:06 | 只看该作者
自己顶一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4393

主题

5935

帖子

33

粉丝