chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

IAR分析內(nèi)存重要的神器 - map文件全解析

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-14 14:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

對于使用RTOS進行項目開發(fā)的朋友可能會有這樣的疑惑,我創(chuàng)建的任務到底需要多大的堆棧空間才夠呢?

其實,除了使用RTOS開發(fā),就是使用裸機進行開發(fā)的朋友同樣也會遇到類似的問題,有些地方需要很大的堆棧,對系統(tǒng)堆棧的分配就有必要知道其大小,如果分配不充分,很有可能導致內(nèi)存溢出。

之前就有小伙伴問:我的代碼經(jīng)常運行到“HardFault_Handler”、 “MemManage_Handler”異常中斷里面去了,是什么原因導致的呢?

當我們遇到內(nèi)存溢出現(xiàn)象時,查看map文件,很快就能找到那些代碼占用了多少空間。

還有很多小伙伴問:我代碼、內(nèi)存占用的資源如何查看呢?當你們了解了map文件里面的內(nèi)容,以上問題就一目了然了。

輸出map配置

在工程中,默認是輸出了map文件,如果沒有輸出,需要如下配置:

當按照上面配置勾選了“生產(chǎn)map”文件,就可以看到如下情況:

下面才是重點,就讓我給大家詳細講述一下IAR中map文件的重要內(nèi)容。map文件主要分為六大塊,詳情見下面章節(jié)。

Ⅰ、MAIN INIF

Ⅱ、RUNTIME MODEL ATTRIBUTES

Ⅲ、PLACEMENT SUMMARY

Ⅳ、INIT TABLE

Ⅴ、MODULE SUMMARY

Ⅵ、ENTRY LIST

MAIN INIF主要信息

這段信息比較簡單,關于map文件的主要信息。包含:IAR版本、日期、輸出文件路徑、map文件路徑等。

RUNTIME MODEL ATTRIBUTES

RUNTIME MODEL ATTRIBUTES:運行時MODEL屬性。這部分顯示相關屬性等信息,可以不用深入理解。

PLACEMENT SUMMARY

PLACEMENT SUMMARY:概述位置,即各Section(段)存儲的位置。

1.總體概述

"A0": place at 0x08000000 { ro section .intvec };

"P1": place in [from 0x08000000 to 0x0801ffff] { ro };

"P2": place in [from 0x20000000 to 0x20004fff] { rw, block CSTACK, block HEAP };

意思是:

"A0"段位于0x08000000,類型為intvec(初始化向量);

"P1"段位于0x08000000 至 0x0801ffff區(qū)域,類型為ro;

"P2"段位于0x20000000 至0x20004fff區(qū)域,類型包含:rw, block CSTACK, block HEAP;

2.詳細說明

Section Kind Address Size Object

段 類型 地址 大小 目標位置

"A0": 0xec

.intvec ro code 0x08000000 0xec startup_stm32f10x_md.o [1]

- 0x080000ec 0xec

意思是:

"A0"段總共大小為0xec;

其中“.intvec”段類型為ro,地址0x08000000,大小0xec,位于

startup_stm32f10x_md文件;

"A0"段結束地址為0x080000ec,總共大小0xec。

提示:

段與類型一般有對應關系

Section Kind

"A1":

.intvec ro code(ro代碼)

"P1":

.text ro code(ro代碼)

.rodata const (常量)

CODE ro code(ro代碼)

.iar.init_table const(常量)

Initializer bytes ro data(ro數(shù)據(jù))

"P2":

.data inited(已初始化數(shù)據(jù))

.bss zero(未初始化數(shù)據(jù) 零)

INIT TABLE

INIT TABLE:初始化表,類似于上面第三部分內(nèi)容,這里是針對RAM存儲地址。

MODULE SUMMARY

MODULE SUMMARY:概述模塊,主要概述文件于庫(模塊)所占ro代碼大小、rw數(shù)據(jù)大小。

ENTRY LIST

ENTRY LIST:入口列表,包含函數(shù)、變量等入口地址。

其中Entry(入口)主要包含兩大類:函數(shù)和變量。

函數(shù):全局函數(shù)、靜態(tài)函數(shù)

變量:全局變量、(文件內(nèi))靜態(tài)變量、(函數(shù)內(nèi))靜態(tài)變量

入口 地址 大小 類型 目標

Entry Address Size Type Object

main 0x08000317 0x5e Code Gb main.o [1]

SetSysClock 0x08000141 0x8 Code Lc system_stm32f10x.o

gVar 0x20000000 0x4 Data Gb main.o [1]

sVar_E 0x20000004 0x4 Data Lc main.o [1]

main::sVar_I 0x20000008 0x4 Data Lc main.o [1]

從上面列表的差異可以看到出來主要包含五類:

1.“全局”函數(shù)

入口:main,為全局函數(shù)接口;

地址:0x08000317,代表存儲在FLASH;

大?。?x5e,該入口函數(shù)大小為0x5e;

類型:Code Gb,其中code說明為代碼,Gb說明為“全局的”函數(shù)(Global);

目標:main.o,該入口函數(shù)位于main.c文件下面。

2.“靜態(tài)”函數(shù)

靜態(tài)函數(shù)也就是在函數(shù)前加“static”.

SetSysClock位于system_stm32f10x.c文件下,可以看到前面加了“static”。

類型為Code Lc,即靜態(tài)(局部Local)函數(shù);

3.全局變量

全局變量也叫“全局數(shù)據(jù)”,因為它的類型為“Data Gb”。

從地址0x20000000可以看得出,它是位于RAM區(qū)域,也就是內(nèi)存中。

(提示:只有全局和靜態(tài)的變量才會在編譯之后決定在RAM中的地址,定義在函數(shù)體里面的局部變量只有在程序運行時才會分配地址,也就是說局部變量位于堆棧中)。

4.(文件內(nèi))靜態(tài)變量

使用static關鍵字定義的變量,只有在當前文件內(nèi)使用,所以它屬于靜態(tài)(“局部”Local)變量。

5.(函數(shù)內(nèi))靜態(tài)變量

它和“(文件內(nèi))靜態(tài)變量”類似,屬于靜態(tài)變量,只是它定義在函數(shù)體內(nèi)的。

從入口“main::sVar_I”可以看得出,變量sVar_I定義在main函數(shù)體內(nèi)。

map文件的最后有如下一段信息:

[1] = C:\Users\Administer\Desktop\Demo\Debug\Obj

[2] = command line

[3] = dl7M_tln.a

[4] = m7M_tls.a

[5] = rt7M_tl.a

[6] = shb_l.a

130 157 bytes of readonly code memory

18 736 bytes of readonly data memory

121 508 bytes of readwrite data memory

Errors: none

Warnings: none

相信大家都會明白,信息就是所有代碼、內(nèi)存塊匯總的。而這條信息也會在編譯窗口中顯示出來。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)存
    +關注

    關注

    9

    文章

    3170

    瀏覽量

    76093
  • IAR
    IAR
    +關注

    關注

    5

    文章

    400

    瀏覽量

    38328
  • RTOS
    +關注

    關注

    25

    文章

    862

    瀏覽量

    122561
  • MAP
    MAP
    +關注

    關注

    0

    文章

    49

    瀏覽量

    15779
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Labview 解析dxf文件并顯示

    上一期開了一個帖子講Labview導入dxf文件,解析和顯示dxf文件,今天繼續(xù)繼續(xù)分享常用圖元的解析與顯示方法。 LINE :用文本方式打開dxf
    發(fā)表于 12-01 11:28

    請問如何打開map文件?

    如何打開map文件?
    發(fā)表于 11-28 07:17

    請問Keil中的map文件到底是什么意思?

    Keil中的map文件到底是什么意思?里面是如何進行相關執(zhí)行操作的
    發(fā)表于 11-25 06:59

    Labview 解析dxf文件并顯示<一>

    Labview軟件開發(fā)過程中,大家會遇到導入dxf文件的需要,今天開個帖子,聊聊如何解析和顯示dxf文件,同時用圖表來顯示。 首先來介紹下dxf, 簡單來說他就是圖形文件的一種文本格式
    發(fā)表于 11-14 22:45

    明晚8點|睿擎文件系統(tǒng)實戰(zhàn):從開發(fā)到發(fā)布流程解析

    著開發(fā)者。為此,我們特別推出本期文件系統(tǒng)專題直播,由睿擎平臺核心研發(fā)工程師手把手帶你掌握文件系統(tǒng)開發(fā)流程!直播預告▎直播主題睿擎平臺文件系統(tǒng)綜合實戰(zhàn):從開發(fā)到發(fā)
    的頭像 發(fā)表于 11-11 11:53 ?349次閱讀
    明晚8點|睿擎<b class='flag-5'>文件</b>系統(tǒng)實戰(zhàn):從開發(fā)到發(fā)布<b class='flag-5'>全</b>流程<b class='flag-5'>解析</b>

    睿擎派文件系統(tǒng)指南:從開發(fā)到發(fā)布流程實踐 | 技術解析

    在嵌入式系統(tǒng)開發(fā)中,文件系統(tǒng)扮演著至關重要的角色,它負責數(shù)據(jù)的持久化存儲、配置文件管理和資源訪問等核心功能。睿擎平臺提供了一套完整的文件系統(tǒng)解決方案,從開發(fā)階段的API調用到調試階段的
    的頭像 發(fā)表于 11-05 18:13 ?7657次閱讀
    睿擎派<b class='flag-5'>文件</b>系統(tǒng)指南:從開發(fā)到發(fā)布<b class='flag-5'>全</b>流程實踐 | 技術<b class='flag-5'>解析</b>

    AT組件無法正確解析bin文件怎么解決?

    通過ESP32接受網(wǎng)絡數(shù)據(jù),然后寫入MCU中,但是發(fā)現(xiàn)在解析bin文件的時候,會自動添加字符。應該是換行符號的解析出現(xiàn)了問題。有什么好辦法嗎?
    發(fā)表于 09-28 08:36

    文件系統(tǒng),使用iar編譯報錯,gcc可以正常編譯,為什么?

    文件系統(tǒng),使用iar編譯報錯,gcc可以正常編譯,為什么?
    發(fā)表于 09-23 06:54

    鴻蒙5開發(fā)寶藏案例分享---性能優(yōu)化案例解析

    內(nèi)存泄漏等問題,生成報告并定位到代碼。典型問題 :列表滑動卡頓 體檢報告提示 **: ** ? FrameDropRate > 10% :列表滑動丟幀嚴重! ?** 關聯(lián)文件
    發(fā)表于 06-12 16:36

    飛凌嵌入式ElfBoard ELF 1板卡-uboot編譯system.map/uboot.map

    但沒定義的符號)信息。符號值:每個符號對應一個內(nèi)存地址, 即符號值。符號類型:常見的有B(bss),D(data),T或t(text),當然還有其他不常見類型,這里不一一列舉。打開system.map
    發(fā)表于 05-22 11:22

    屋燈光秒變聰明,這個提升幸福感的神器你還沒安排嗎?

    屋燈光秒變聰明這個提升幸福感的神器你還沒安排嗎?我寶子們,你是否受夠了摸黑找開關的狼狽、手動調光的繁瑣,或是永遠調不出理想氛圍的無奈?作為專注智能燈控方案的我們,今天就來揭秘——如何讓家里的燈光
    的頭像 發(fā)表于 05-14 18:15 ?1017次閱讀
    <b class='flag-5'>全</b>屋燈光秒變聰明,這個提升幸福感的<b class='flag-5'>神器</b>你還沒安排嗎?

    基于 IAR Embedded Workbench 的自研 MCU 芯片軟件函數(shù)與變量內(nèi)存布局優(yōu)化精控方法

    在嵌入式軟件開發(fā)領域,MCU芯片軟件的架構設計與內(nèi)存布局的精細規(guī)劃對系統(tǒng)性能和穩(wěn)定性起著關鍵作用。本文檔聚焦于IAR Embedded Workbench環(huán)境下,為自研MCU芯片軟件提供了一套詳盡
    的頭像 發(fā)表于 04-30 16:38 ?574次閱讀
    基于 <b class='flag-5'>IAR</b> Embedded Workbench 的自研 MCU 芯片軟件函數(shù)與變量<b class='flag-5'>內(nèi)存</b>布局優(yōu)化精控方法

    電磁環(huán)境動態(tài)監(jiān)測與分析平臺軟件全面解析

    電磁環(huán)境動態(tài)監(jiān)測與分析平臺軟件全面解析
    的頭像 發(fā)表于 04-28 16:28 ?510次閱讀
    電磁環(huán)境動態(tài)監(jiān)測與<b class='flag-5'>分析</b>平臺軟件全面<b class='flag-5'>解析</b>

    S32G3有沒有辦法從.map文件確定SRAM使用情況?

    我有 NXP S32G3 板。我有 .map 文件。有沒有辦法從 .map 文件確定 SRAM 使用情況。 非常感謝幫助。
    發(fā)表于 04-08 06:00

    IAR無法跳轉定義,系統(tǒng)庫文件文件名后有[RO]是怎么回事?

    IAR無法跳轉定義,系統(tǒng)庫文件文件名后有[RO]
    發(fā)表于 03-10 07:36