历史上的今天
今天是:2024年12月29日(星期日)
2021年12月29日 | IAR软件中查看代码大小
2021-12-29 来源:eefocus
在使用IAR软件时,各种调试功能使用起来都挺好的,唯一感觉有缺陷的就是不能查看代码大小。不像keil那样代码编译后可以直接看到大小。那么在IAR中有没有办法可以查看到代码的大小呢?当然是可以的,最简单的方法就是通过map文件查看。
什么是map文件呢?简单的说map文件就是代码在编译后,关于代码的各种信息描述的文本文件。比如哪些变量在哪个地址空间存储?每个函数的入口地址是啥?每个变量都占用了多大空间等,在map文件中都会有详细的描述。
现在通过一个简单的例程来演示如何查看map文件。

这是一个简单的LED闪烁代码,LED指示灯1秒钟闪烁一次。编译完文件之后,在工程目录Debug目录中的List目录中就会生成map文件。

用记事本打开这个文件,可以看到里面好多信息。
最开始是软件版本及工程最后的编译时间,接下是输出的文件和map文件路径,最后一部分是编译过程中的命令,在这个命令中可以看到编译时都连接了那些目标文件。
接下来在文件的中间部分就可以看到每个目标文件的存储地址和大小。

这一部分中就可以看到工程中都用到了哪些目标文件,同时它的地址和大小是多少。
接下来就可以看到代码占用空间的详细情况了。

ro code :代码的存储区,编译器生成的机器指令,这些内容被存储到ROM区。
ro data :Read Only data,只读数据域,它指程序中用到的只读数据,这些数据被存储在ROM区,因而程序不能修改其内容。 C语言中const关键字定义的变量就是典型的RO-data。
rw data:Read Write data,可读写数据域,它指初始化为“非0值”的可读写数据,程序刚运行时,这些数据具有非0的初始值,且运行的时候它们会常驻在RAM区,因而应用程序可以修改其内容。
rw data(abs):这里的abs暂时还不知道是什么意思,也没有找到相关资料。
代码的大小就是最底下四个数据之和,在map文件的最后面也可以看到。

在文件最后面也列出来代码和数据分别占用的空间大小,将这四个数据加起来619+136+269+6=1030 也就是当前代码的大小是1030字节,也就是代码大小约1K左右。
可以通过STVP烧写软件打开二进制文件查看代码大小

代码的范围是8000到82F0,共752个字节,为什么这里的字节数比较少呢?因为还有一部分数据默认是0.数据0在这个界面上不能明确的看出结束位置。所以这里只能看到非0的数据。
以后再调试代码的时候就可以通过map文件来查看代码的大小了,同样还可以借助map文件优化代码。这个在下一篇文章中说明。
上一篇:如何通过map文件优化代码
史海拾趣
|
小弟准备测试下网络性能,下了Iperf源代码。要用在ARMV4I wince 6.0平台上。 但是不知道怎么在VS2005下面编译 目前bsp的SDK已经导出,下一步就不会操作了 哪位老大有成功的经验,分享下,多谢了!… 查看全部问答> |
|
wince5.0不支持directsound, 那用directsound开发的程序该怎么办 我现在想把一个VC下用directsound开发的程序转到EVC下,用PB定制内核时发现CE5.0不支持directsound,开发板是5.0的BSP包,我该怎么办?谢谢!… 查看全部问答> |
|
请教大侠们!怎样提高Vxworks的计算速度?用来做大量傅立叶变换 小弟用的Vxwoks5.4 tornado2.02 目标机是 P4 2.4G 512M 现在客户要求要进行运算量比较大的傅立叶变换,结果存在数组里,要求几毫秒内完成,并完成定时更新,我编程序计算了一下,发现要三百毫秒左右才能完成一次计算,想要更快点,有没有别的途径, ...… 查看全部问答> |
|
一个新添加的类里的成员函数怎样才能调用对话框类里的函数? 如对话框类:CImageViewerDlg 在ImageViewer.h里添加头文件#include \"ShowBMP.h\",这样CImageViewerDlg里面的成员函数就可以调用CShowBMP里面的成员函数了 但是反过来就不行,为什 ...… 查看全部问答> |
|
大家好,我的开发板下载程序后不好使(IAR显示可以下载成功),这是怎么回事呢?谢谢大家——我的开发板芯片是5438,仿真器的型号是UIF V 2.1,IAR型号是4.21。… 查看全部问答> |
|
【视频分享】2012全国电赛TI杯模拟电子系统设计专题邀请赛精彩全纪录 本视频包括赛前培训;宣读竞赛规则和选择竞赛题目;讨论设计方案;领取元器件;焊接制作;完成作品并调试;学生交流心得和颁奖环节,全程记录了TI杯电赛的精彩过程,希望可以给将要参加TI杯电赛的同学有所帮助。 $(\'swf_CJr\').innerHTML=AC_FL_R ...… 查看全部问答> |
|
大家好,我搞LCD Cape 已经有好一段时间了,但是成果甚微。想请教大家应该如果编写或者修改lcd7的device tree 文件呢?我使用的是群创的七寸屏,AT070TN83 我是这样做的:首先在/lib/firmware/目录下执行 cp BB-BONE-LCD7-01-00A2.dts BB-BONE-LCD ...… 查看全部问答> |
|
本帖最后由 pinggougou 于 2014-5-6 01:09 编辑 要用vhdl编写一个串口程序,每隔1s接收一个120字节的数据包,包头定义为0X11AA,然后再对该数据包解析,请教各位如何实现呀? 我想在串口接收的时候,先验证头两个数据是否为0x11AA,然后再放在FI ...… 查看全部问答> |




