【IAR】设置和编译信息解析 程序运行耗时 内存分配MAP

一、设置:

1、怎么设置可以查看单片的内存(消耗)使用状况?

IAR的菜单栏 -->Tools-->IDE Options -->Messages -->Show build messages选择 ALL


设置完后IARMAKE,没有error的话最后会在Message框显示代码的大小

(菜单栏-->View-->Maessge-->Build)

 

 1. Tools->option->messages show build messages设置成all 

这样可以在编译后看到用了多少个RAM多少Code,中间每个文件使用情况也可以看得到。

2. Project->Options...(Alt-F7))
Linker->List中勾选Generate linkermap file

这样可以生成map文件,这个就更详细了(需要什么自己勾选)。

3. Project->Options...(Alt-F7))
C/C++ compile ->List中勾选output list file

这样可以看到每个文件编译的细节的list文件,还可以看到反汇编(需要什么自己勾选)。

 

二、编译信息

1下面什么意思

4 960 bytes of CODE  memory
4 150 bytes of DATA  memory
44 bytes of CONST memory

 

4 960 个字节的代码(FLASH)

4150 个字节的变量数据(RAM)
44 
个字节的常量数据(FLASH)

生成bin文件的大小= 4960+44

 

1
9 486 bytes of CODE memory
 
 404 bytes ofDATA memory (+ 36 absolute )
 
 520 bytes ofCONST memory

1、的括号内表示内存的绝对使用量,对应你设的全局变量大小
2
、表示共享的存储空间,和单片机的结构有关


220115月提问:

  9 176 bytes of CODE  memory(+     30 bytes shared)
  
 568 bytes ofCONST memory (+ 18 148 bytes shared)
  
 943 bytes ofDATA  memory(+    114 bytesshared)

 

答:"+ 114 bytesshared"或linking后的"+114bytes absolute"指的是您在程序中有144bytes 使用@ operator 或 #pragma location=operator 或__no_init volatile语法定义的数据。也可以说是可以在汇编中定义的数据。举例:P1OUT在430头文件中就用到了上述语法,当您读写P1OUT时,编译器和链接器就认为您使用了一个上述sahred/absolute数据。编译器和链接器并不能真正地辨认出什么是RAM什么是Flash,它们使用DATA(没有指定固定的数据)和CONST/CODE(有指定固定的数据)概念来工作。http://zhidao.baidu.com/question/268793362.html

 

 

在软件仿真下,可以看到整个程序走的时间,当语言然能看到C语言的时间了,单步走,就知道一条CCPU周期,乘周期时间125NS,就是一条指令的周期了!


2012.2.20  IAR查看程序指令代码所花的时间


软件仿真设置:Project————Options————Debugger————DriverSimulator就可以了。

然后View——RegstrersCPU RegstrersCYCLECOUNTER的值!

 软件仿真时计算两断点CYCLECOUNTER(在CPU registers中)的差值,乘以指令周期(MCLK

 

2012.6.28各函数运行速度比对

原文:http://www.iartools.com/Info_ArticleList_Show.asp?ArticleId=147

  1、在VIEW中选择PROFILING开打刨析记录。启动程序全速运行,当运行到一个断点或程序结束时,窗口中将显示对当年程序所有函数运行的刨析记录结果 

 

2、代码覆盖分析:

   代码覆盖分析用于帮助用户确认是否所有程序代码都得到执行,这对于鉴别程序代码中是否有不能被执行的部分特别有用。打开VIEW-CODECOVERAGE窗口,如图9显示的是当前代码覆盖分析状态报告,即哪部分代码在分析开始后至少执行了一次。

3C-SPY可以在调试过程中随时显示整个调用链,跟踪显示当前调用函数内容,以方便调试和修改源代码中的错误。在VIEW-CALL STACK打开调用堆栈窗口其中显示的是程序调用过程中函数调用的列表。并将当前函数置顶。

4、增加调试功能

   Debugger选项配置中的 Plugins选项卡,用于指定在调试阶段需要加载的C-SPY插件模块并启动其功能。例如选用实时操作系统RTOS插件模块,应用任务列表,队列等RTOS特定组件,可以使用户对基于实时操作系统上的应用程序有更全面的控制功能,同时使调试任务变的更轻松。

 

三、跳到函数、变量定义、Goto definition of

 

一般IAR默认是不可以能过右键直接查找变量、函数的定义的。

 

方法1    你选中一个函数名在上面点右键发现“Go to definition of ……”是灰色的,无法找到函数的定义处。但是,IAR是支持快速查找变量、类型、函数甚至是宏定义功能的。设置方法如下:

    1、打开工程,在菜单栏的【TOOLS】项下,选择【options...

    2、弹出的IDE options对话框中选择Project选项卡,勾选“Generate browse information"

    3、设置完点击【确定】即可生效。

 

    这时再来查找函数的定义,查找时先将鼠标在函数名上双击,定位光标到函数名字串,再右键弹出快捷菜单。发现原先灰色的“Goto definition of uart0Send”选项已经可选了。在单击“Goto definition of dummyInterrupt”后,IDE界面直接跳转显示到函数定义的地方。

 

方法2

在工程的C编译器选项里的预编译添加$TOOLKIT_DIR$inc可以搞定。

  

深入剖析之通过IAR MAP文件查看目标文件内存分配

 

查看映象文件
检查project1.map文件,观察段是如何定义以及代码是怎样放置在存贮器中的。一个映象文件主要包含以下几点信息:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CATHY_T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值