查看全部教程开发请点击:apollo系列汇总

查看本文全部文章请点击:apollo系列之apollo2 mcu开发(基础篇)之1.3-解析编译生成的IAR中的map文件

====================================================================

版权归作者所有,未经允许,请勿转载。

====================================================================

\iar\bin中有*.map文件

一、map文件的主信息

###############################################################################
#
# IAR ELF Linker V8.32.2.178/W32 for ARM                  12/Jan/2021  16:24:56
# Copyright 2007-2018 IAR Systems AB.
#
#    Output file  =
#    ...\iar\bin\VoS_THF.out
#    Map file     =
#      ...\iar\bin\VoS_THF.map
#    Command line =
#     ...
#
###############################################################################

主要是文件路径,IAR的版本信息等。

二、运行模型属性(RUNTIME MODEL ATTRIBUTES)

*******************************************************************************
*** RUNTIME MODEL ATTRIBUTES
***CppFlavor       = *
__Heap_Handler  = DLMalloc
__SystemLibrary = DLib
__dlib_version  = 6

运行模型属性:__Heap_Handler用的是DLMalloc,__SystemLibrarys DLib,__dlib_version版本是6

三、堆选择(HEAP SELECTION)

*******************************************************************************
*** HEAP SELECTION
***The advanced heap was selected because the application calls memory
allocation functions outside of system library functions, and there
are calls to deallocation functions in the application.

之所以选择高级堆,是因为应用程序在系统库函数之外调用内存分配函数,并且应用程序中有对回收分配函数的调用。

四、

*******************************************************************************
*** PLACEMENT SUMMARY
***"A0":  place at 0x0 { ro section .intvec };//A0段位于0,类型.intvec
"P1":  place in [from 0x0 to 0xf'ffff] { ro };//p1段位于0到0xfffff,类型ro
define block CSTACK with size = 1K, alignment = 8 { };//定义堆块1K,8字节对齐
define block HEAP with size = 2K, alignment = 8 { };//定义栈2K,8字节对齐
"P3":  place in [from 0x0 to 0x0] |[from 0x1000'0000 to 0x1003'ffff] {rw, block CSTACK, block HEAP };
do not initialize { section .noinit };
initialize by copy { rw };No sections matched the following patterns:ro section application_specific_ro  in "P2|P4"rw section application_specific_rw  in "P2|P4"Section(段)       Kind(种类) Address     Size  Object(编译后的对象)-------            ----         -------     ----  ------
"A0":                                         0xc0.intvec            const            0x0     0xc0  startup_iar.o [1]- 0xc0     0xc0"P1":                                      0x50573.rodata            const           0xc0  0x21778  cnn.o [5]//常量.rodata            const       0x2'1838  0x213f8  cnn_stage2.o [5].text              ro code     0x4'2c30   0x22c0  am_hal_iom.o [6]//ro code 代码.text              ro code     0x4'4ef0      0x2  am_hal_debug.o [6].text              ro code     0x4'4ef2     0x3a  zero_init3.o [9]
。。。
"P3", part 1 of 3:                           0x2aeP3 s0                       0x1000'0000    0x2ae  <Init block>.data            inited   0x1000'0000    0x134  am_hal_iom.o [6]//.data已经初始化数据
。。。
"P3", part 2 of 3:                         0x2d154//.bss 未初始化数据 为0.bss               zero     0x1000'02b0  0x1803c  am_audio_buffer.o [1].bss               zero     0x1001'82ec  0x10018  heap_4.o [1]
。。。
P3", part 3 of 3:                          0x1000//未初始化.noinit            uninit   0x1002'd404   0x1000  startup_iar.o [1]- 0x1002'e404   0x1000Unused ranges://空闲范围From           To      Size----           --      ----0x5'0633     0xf'ffff  0xa'f9cd//flash空闲地址段0x1000'02ae  0x1000'02af       0x20x1002'e404  0x1003'ffff  0x1'1bfc

总结:

1.  Section(段)       Kind(种类) Address(地址)     Size(大小)  Object(编译后的对象)

2..rodata:常量

3.text:代码段

4..bss:BSS段(bss segment)通常是指用来存放程序中未初始化的或者初始值为0的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。

5.noinit:未初始化部分

6..data:已初始化

四、初始化列表(INIT TABLE)

*******************************************************************************
*** INIT TABLE
***Address      Size-------      ----
Zero (__iar_zero_init3)1 destination range, total size 0x2d153:0x1000'02b0  0x2d153Copy/packbits (__iar_packbits_init3)1 source range, total size 0xef (34% of destination):0x5'0544     0xef1 destination range, total size 0x2ae:0x1000'0000    0x2ae

五、模块概述(MODULE SUMMARY)

*******************************************************************************
*** MODULE SUMMARY
***Module                              ro code  ro data  rw data------                              -------  -------  -------
command line/config:-------------------------------------------------------------Total:am_app_KWD_audio.o                      248               328am_app_KWD_board_setup.o              1 508       95       20am_app_KWD_init.o                       136      152    1 111am_app_KWD_isr.o                        352                 1
...-------------------------------------------------------------Total:                               12 460      450  173 255
...
-----------------------------------------------------------------Grand Total:                         50 710  278 557  189 441

这部分主要描述文件库ro代码大小,ro rw数据大小。

六、入口列表(ENTRY LIST)

*******************************************************************************
*** ENTRY LIST
***Entry                       Address     Size  Type      Object
-----                       -------     ----  ----      ------
.iar.init_table$$Base      0x5'04b4            --   Gb  - Linker created -
.iar.init_table$$Limit     0x5'04e0            --   Gb  - Linker created -
?main                      0x5'04e1           Code  Gb  cmain.o [9]
GPIO_Init                  0x4'a79f    0x288  Code  Lc  am_app_KWD_board_setup.o [1]。。。50 710 bytes of readonly  code memory//只读属性,代码内存,存储在flahs中278 557 bytes of readonly  data memory//只读变量内存,存储在flash中189 441 bytes of readwrite data memory//可读可写变量内存

总结:

1.?main,全局函数入口,地址0x504e1,存储在flash中

2.Code Gb,代码段,全局函数

3.Code LC,局部函数

4.Data  Lc,局部变量

5.Data  Gb,全局变量

  • Flash = readonly code memory + readonly data memory
  • RAM = readwrite data memory

apollo系列之apollo2 mcu开发(基础篇)之1.3-解析编译生成的IAR中的map文件相关推荐

  1. Android App开发基础篇—数据存储(SQLite数据库)

    Android App开发基础篇-数据存储(SQLite数据库) 前言:Android中提供了对SQLite数据库的支持.开发人员可以在应用中创建和操作自己的数据库来存储数据,并对数据进行操作. 一. ...

  2. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务...

    前面的四篇文章演示ORM的一些常规操作与配置,通过前面的文章,应用开发人员要可以使用ORM开发出简单的应用,但是,ORM也不是万能钥匙,在业务应用中,还有很多是ORM解决不了的问题,对于这些问题,我们 ...

  3. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM中的查询

    前文回顾 前面的文章一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM的基本操作一文给大家介绍了如果使用ORM实现数据的读取.插入.更新与删除基本业务也讲解了ORM开发基 ...

  4. 【学习记录】第一章 数据库设计-《SQL Server数据库设计和开发基础篇视频课程》...

    一.课程笔记 1.1  软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Ent ...

  5. IBM主机系列课程之单元测试(基础篇)-李海湜-专题视频课程

    IBM主机系列课程之单元测试(基础篇)-3681人已学习 课程介绍         IBM主机环境下进行的单元测试,课程包含单元测试重要知识点,从讲解到示例列举,带你逐步深入了解IBM主机的魅力所在. ...

  6. 数据库应用程序开发基础篇—— .NET中SQL Server数据库的操作C#篇之一

    数据库应用程序开发基础篇-- .NET中SQL Server数据库的操作C#篇之一 写在前面:前面介绍了数据库系统的基本概念,SQl语句基本使用方法,接下来通过学习具体语言和具体数据库结合的应用开发来 ...

  7. 【安卓开发系列 -- APP】APP 开发基础技术整理

    [安卓开发系列 -- APP]APP 开发基础技术整理 [1]Android Studio APP 项目目录布局  [2]活动的生命周期 活动的状态 : 1. 运行状态,一个活动位于返回栈栈顶时,活动 ...

  8. TensorFlow2.4 开发 基础篇① 张量和变量 (1)

         TensorFlow2.4 开发 基础篇① 张量和变量(Tensor) 文章会不断更新,喜欢的小伙伴可以帮博主点个赞哟("'▽'") 文章目录 前言 1. 变量 1.1 ...

  9. Cocos2d-Lua手游开发基础篇-何韬-专题视频课程

    Cocos2d-Lua手游开发基础篇-62875人已学习 课程介绍         Cocos2d-Lua是一个开源的移动游戏框架,可以轻松运行在iOS.Android.Blackberry等操作系统 ...

最新文章

  1. 【NLP】万字长文带你解读『虚假新闻检测』最新进展
  2. 按照一定策略把网页抓回到搜索引擎服务器的,SEO新手学习:搜索引擎的基本步骤...
  3. 任务管理器显示不全 - 确定谁占用了我们的端口
  4. TQ210——启动方式
  5. 爬虫-ProxyHandler代理类-通过代理发起请求
  6. iPhone 12“概念视频”曝光:被恶搞的太惨了
  7. 有关php链接MySql数据库的总结
  8. ubuntu linux编译apt,Ubuntu Linux系统下apt-get命令详解
  9. python 调用控制台_如何使用Python的交互控制台
  10. oracle海量数据中提升创建索引的速度
  11. php 取字符串的首字母,php取得字符串首字母的方法,php取得字符串_PHP教程
  12. UnityShader6:最简单的顶点/片元着色器
  13. phpmyadmin安装配置以及相关问题
  14. php基础语法学习汇总
  15. Android ASCII编码转换成相对应字符
  16. qt linux 视频教程,详解 QT 显示视频 Linux下 Qt 和 Xv实现
  17. 活字格企业Web应用生成器荣获2017年度优秀软件产品
  18. matlab:蚁群算法原理的实现
  19. 邮箱,手机号的正则表达式
  20. 周易六十四卦——火水未济卦

热门文章

  1. Veeam Backup Replication 12 配置信息备份
  2. 【信息学奥赛】2069:【例2.12 】糖果游戏(C++)
  3. Fatfs U盘写入文件遇到的问题
  4. CAN通讯协议的数据帧、远程帧
  5. 3D建模行业就业前景
  6. opengl蓝宝书读书笔记七
  7. [转区工具]Locale Emulator的使用及下载
  8. 如何进行产品优化迭代
  9. 视频图像处理------人头识别
  10. 用Azure认知服务开发一个语音翻译机,学英文很爽快