历史上的今天
返回首页

历史上的今天

今天是: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文件优化代码。这个在下一篇文章中说明。

推荐阅读

史海拾趣

GD Rectifiers Ltd公司的发展小趣事

面对电子行业日益激烈的市场竞争,GD Rectifiers Ltd通过并购整合的方式加速了自身的发展步伐。公司精心挑选了几家在细分领域具有领先地位的竞争对手,通过友好协商和合理估值,成功完成了对这些企业的并购。并购后,GD Rectifiers Ltd充分利用被并购企业的技术优势和市场份额,实现了产品线的进一步丰富和销售渠道的拓展。同时,公司还加强了对内部资源的整合和优化,提高了整体运营效率和市场竞争力。

AIC [Analog Intergrations Corporation]公司的发展小趣事

为了进一步扩大市场份额,GD Rectifiers Ltd实施了积极的国际化战略。公司首先在欧洲市场设立了销售分支机构,凭借其优质的产品和服务迅速赢得了当地客户的认可。随后,公司又陆续在北美、亚洲等地区建立了分销网络,逐步构建起覆盖全球的营销体系。在国际化进程中,GD Rectifiers Ltd注重与当地企业的合作与交流,共同推动行业标准的制定和技术进步。通过不断的努力,公司成功地将品牌和产品推向了全球市场,实现了业务规模的快速增长。

华瓷(Chinocera)公司的发展小趣事

人才是企业发展的根本动力。华瓷深知这一点,因此在人才战略和团队建设上投入了大量精力。公司注重员工的培训和发展,为员工提供广阔的发展空间和良好的职业前景。同时,华瓷还积极引进国内外优秀人才,打造了一支高素质、专业化的团队。这支团队为公司的发展提供了有力的支持和保障。

Atlantic Microwave Ltd公司的发展小趣事

Atlantic Microwave Ltd公司成立于电子科技蓬勃发展的年代,初期只有几名志同道合的工程师,他们怀揣着对微波技术的热情,在狭小的办公室中开始了他们的创业之旅。资金短缺、技术难题、市场认可度低等问题接踵而至。然而,团队凭借着对技术的执着追求和对市场的敏锐洞察,不断攻克技术难关,优化产品设计,逐渐在市场上站稳了脚跟。

Atmel (Microchip)公司的发展小趣事

随着产品的不断完善和技术的不断进步,Atmel开始积极拓展全球市场。公司通过建立遍布全球的办事处和销售网络,将产品销往世界各地。同时,Atmel还注重品牌建设,通过优质的产品和服务,赢得了客户的信任和好评。这使得Atmel在全球微控制器市场中逐渐崭露头角。

Daco Semiconductor Co Ltd公司的发展小趣事

随着技术的不断成熟,Daco开始积极寻求市场拓展。公司首先与几家知名的电子设备制造商建立了合作关系,为其提供定制的半导体解决方案。同时,Daco也积极参与国际半导体展览和交流活动,与全球的行业同仁建立了广泛的联系。通过不断的市场拓展和战略合作,Daco的产品逐渐进入了全球市场,公司的知名度和影响力也得到了显著提升。

问答坊 | AI 解惑

如何在vs2005下面编译iperf

小弟准备测试下网络性能,下了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里面的成员函数了 但是反过来就不行,为什 ...…

查看全部问答>

MSP430F5438用什么仿真器呢?,不太好使

大家好,我的开发板下载程序后不好使(IAR显示可以下载成功),这是怎么回事呢?谢谢大家——我的开发板芯片是5438,仿真器的型号是UIF V 2.1,IAR型号是4.21。…

查看全部问答>

求助

RS485中是A>B时为逻辑1(正逻辑)还是B>A时为逻辑1,今天看到两种说法,但支持前者居多,但还是想确认一下…

查看全部问答>

【视频分享】2012全国电赛TI杯模拟电子系统设计专题邀请赛精彩全纪录

本视频包括赛前培训;宣读竞赛规则和选择竞赛题目;讨论设计方案;领取元器件;焊接制作;完成作品并调试;学生交流心得和颁奖环节,全程记录了TI杯电赛的精彩过程,希望可以给将要参加TI杯电赛的同学有所帮助。 $(\'swf_CJr\').innerHTML=AC_FL_R ...…

查看全部问答>

AT89S52几个经典程序

没事大家看看练习练习哈  很高心与大家分享…

查看全部问答>

如何修改BBB LCD7 的device tree 文件

大家好,我搞LCD Cape 已经有好一段时间了,但是成果甚微。想请教大家应该如果编写或者修改lcd7的device tree 文件呢?我使用的是群创的七寸屏,AT070TN83 我是这样做的:首先在/lib/firmware/目录下执行 cp BB-BONE-LCD7-01-00A2.dts BB-BONE-LCD ...…

查看全部问答>

vhdl串口的长数据通信的实现

本帖最后由 pinggougou 于 2014-5-6 01:09 编辑 要用vhdl编写一个串口程序,每隔1s接收一个120字节的数据包,包头定义为0X11AA,然后再对该数据包解析,请教各位如何实现呀? 我想在串口接收的时候,先验证头两个数据是否为0x11AA,然后再放在FI ...…

查看全部问答>