apollo系列之apollo2 mcu开发(基础篇)之1.3-解析编译生成的IAR中的map文件
查看全部教程开发请点击: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文件相关推荐
- Android App开发基础篇—数据存储(SQLite数据库)
Android App开发基础篇-数据存储(SQLite数据库) 前言:Android中提供了对SQLite数据库的支持.开发人员可以在应用中创建和操作自己的数据库来存储数据,并对数据进行操作. 一. ...
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务...
前面的四篇文章演示ORM的一些常规操作与配置,通过前面的文章,应用开发人员要可以使用ORM开发出简单的应用,但是,ORM也不是万能钥匙,在业务应用中,还有很多是ORM解决不了的问题,对于这些问题,我们 ...
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM中的查询
前文回顾 前面的文章一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM的基本操作一文给大家介绍了如果使用ORM实现数据的读取.插入.更新与删除基本业务也讲解了ORM开发基 ...
- 【学习记录】第一章 数据库设计-《SQL Server数据库设计和开发基础篇视频课程》...
一.课程笔记 1.1 软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Ent ...
- IBM主机系列课程之单元测试(基础篇)-李海湜-专题视频课程
IBM主机系列课程之单元测试(基础篇)-3681人已学习 课程介绍 IBM主机环境下进行的单元测试,课程包含单元测试重要知识点,从讲解到示例列举,带你逐步深入了解IBM主机的魅力所在. ...
- 数据库应用程序开发基础篇—— .NET中SQL Server数据库的操作C#篇之一
数据库应用程序开发基础篇-- .NET中SQL Server数据库的操作C#篇之一 写在前面:前面介绍了数据库系统的基本概念,SQl语句基本使用方法,接下来通过学习具体语言和具体数据库结合的应用开发来 ...
- 【安卓开发系列 -- APP】APP 开发基础技术整理
[安卓开发系列 -- APP]APP 开发基础技术整理 [1]Android Studio APP 项目目录布局 [2]活动的生命周期 活动的状态 : 1. 运行状态,一个活动位于返回栈栈顶时,活动 ...
- TensorFlow2.4 开发 基础篇① 张量和变量 (1)
TensorFlow2.4 开发 基础篇① 张量和变量(Tensor) 文章会不断更新,喜欢的小伙伴可以帮博主点个赞哟("'▽'") 文章目录 前言 1. 变量 1.1 ...
- Cocos2d-Lua手游开发基础篇-何韬-专题视频课程
Cocos2d-Lua手游开发基础篇-62875人已学习 课程介绍 Cocos2d-Lua是一个开源的移动游戏框架,可以轻松运行在iOS.Android.Blackberry等操作系统 ...
最新文章
- 【NLP】万字长文带你解读『虚假新闻检测』最新进展
- 按照一定策略把网页抓回到搜索引擎服务器的,SEO新手学习:搜索引擎的基本步骤...
- 任务管理器显示不全 - 确定谁占用了我们的端口
- TQ210——启动方式
- 爬虫-ProxyHandler代理类-通过代理发起请求
- iPhone 12“概念视频”曝光:被恶搞的太惨了
- 有关php链接MySql数据库的总结
- ubuntu linux编译apt,Ubuntu Linux系统下apt-get命令详解
- python 调用控制台_如何使用Python的交互控制台
- oracle海量数据中提升创建索引的速度
- php 取字符串的首字母,php取得字符串首字母的方法,php取得字符串_PHP教程
- UnityShader6:最简单的顶点/片元着色器
- phpmyadmin安装配置以及相关问题
- php基础语法学习汇总
- Android ASCII编码转换成相对应字符
- qt linux 视频教程,详解 QT 显示视频 Linux下 Qt 和 Xv实现
- 活字格企业Web应用生成器荣获2017年度优秀软件产品
- matlab:蚁群算法原理的实现
- 邮箱,手机号的正则表达式
- 周易六十四卦——火水未济卦