在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

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

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-14 14:19 ? 次閱讀

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

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

之前就有小伙伴問(wèn):我的代碼經(jīng)常運(yùn)行到“HardFault_Handler”、 “MemManage_Handler”異常中斷里面去了,是什么原因?qū)е碌哪兀?/p>

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

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

輸出map配置

在工程中,默認(rèn)是輸出了map文件,如果沒(méi)有輸出,需要如下配置:

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

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

Ⅰ、MAIN INIF

Ⅱ、RUNTIME MODEL ATTRIBUTES

Ⅲ、PLACEMENT SUMMARY

Ⅳ、INIT TABLE

Ⅴ、MODULE SUMMARY

Ⅵ、ENTRY LIST

MAIN INIF主要信息

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

RUNTIME MODEL ATTRIBUTES

RUNTIME MODEL ATTRIBUTES:運(yùn)行時(shí)MODEL屬性。這部分顯示相關(guān)屬性等信息,可以不用深入理解。

PLACEMENT SUMMARY

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

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,類(lèi)型為intvec(初始化向量);

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

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

2.詳細(xì)說(shuō)明

Section Kind Address Size Object

段 類(lèi)型 地址 大小 目標(biāo)位置

"A0": 0xec

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

- 0x080000ec 0xec

意思是:

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

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

startup_stm32f10x_md文件;

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

提示:

段與類(lèi)型一般有對(duì)應(yīng)關(guān)系

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:初始化表,類(lèi)似于上面第三部分內(nèi)容,這里是針對(duì)RAM存儲(chǔ)地址。

MODULE SUMMARY

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

ENTRY LIST

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

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

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

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

入口 地址 大小 類(lèi)型 目標(biāo)

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]

從上面列表的差異可以看到出來(lái)主要包含五類(lèi):

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

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

地址:0x08000317,代表存儲(chǔ)在FLASH;

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

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

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

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

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

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

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

3.全局變量

全局變量也叫“全局?jǐn)?shù)據(jù)”,因?yàn)樗念?lèi)型為“Data Gb”。

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

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

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

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

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

它和“(文件內(nèi))靜態(tài)變量”類(lè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

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

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

    關(guān)注

    8

    文章

    3108

    瀏覽量

    74987
  • IAR
    IAR
    +關(guān)注

    關(guān)注

    5

    文章

    370

    瀏覽量

    37245
  • RTOS
    +關(guān)注

    關(guān)注

    24

    文章

    841

    瀏覽量

    120758
  • MAP
    MAP
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    15412
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

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

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

    S32G3有沒(méi)有辦法從.map文件確定SRAM使用情況?

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

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

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

    FPD-link裕量分析程序(MAP)用戶(hù)指南

    電子發(fā)燒友網(wǎng)站提供《FPD-link裕量分析程序(MAP)用戶(hù)指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-26 15:49 ?0次下載
    FPD-link裕量<b class='flag-5'>分析</b>程序(<b class='flag-5'>MAP</b>)用戶(hù)指南

    如何獲取入口函數(shù)不是__iar_program_start的Program entry的stack使用情況

    問(wèn)題 IAR中默認(rèn)的入口函數(shù)是__iar_program_start,使能stack usage analysis之后: 生成的map文件中STACK USAGE章節(jié)里面會(huì)包含Prog
    的頭像 發(fā)表于 11-25 16:23 ?899次閱讀
    如何獲取入口函數(shù)不是__<b class='flag-5'>iar</b>_program_start的Program entry的stack使用情況

    HBM與GDDR內(nèi)存技術(shù)解析

    在高性能圖形處理領(lǐng)域,內(nèi)存技術(shù)起著至關(guān)重要的作用。本文介紹兩種主要的圖形內(nèi)存技術(shù):高帶寬內(nèi)存(HBM)和圖形雙倍數(shù)據(jù)速率(GDDR),它們?cè)诩軜?gòu)、性能特性和應(yīng)用場(chǎng)景上各有千秋。通過(guò)對(duì)比
    的頭像 發(fā)表于 11-15 10:47 ?2613次閱讀
    HBM與GDDR<b class='flag-5'>內(nèi)存</b>技術(shù)<b class='flag-5'>全</b><b class='flag-5'>解析</b>

    深入解析Tricore的Tasking鏈接文件

    目錄 1.鏈接文件有什么用? 2.文件結(jié)構(gòu)和語(yǔ)法解析 2.1 文件結(jié)構(gòu) 2.2 語(yǔ)法解析 3.小結(jié) 玩慣了ld
    的頭像 發(fā)表于 11-12 16:31 ?1628次閱讀
    深入<b class='flag-5'>解析</b>Tricore的Tasking鏈接<b class='flag-5'>文件</b>

    CAN底層報(bào)文抓到了,卻不知怎么解析?以及如何看到信號(hào)運(yùn)行狀態(tài)?

    本文介紹CAN總線(xiàn)中DBC文件重要性及ZCANPRO如何實(shí)現(xiàn)DBC解析、數(shù)據(jù)發(fā)送和實(shí)時(shí)曲線(xiàn)分析,幫助您更有效地分析和利用CAN總線(xiàn)數(shù)據(jù)。在
    的頭像 發(fā)表于 09-30 08:05 ?2401次閱讀
    CAN底層報(bào)文抓到了,卻不知怎么<b class='flag-5'>解析</b>?以及如何看到信號(hào)運(yùn)行狀態(tài)?

    PCBA加工流程解析:電子制造的關(guān)鍵環(huán)節(jié)

    成成品產(chǎn)品的重要任務(wù)。本文將詳細(xì)介紹PCBA加工的流程,從設(shè)計(jì)到成品,逐步解析每個(gè)環(huán)節(jié)的工藝和關(guān)鍵步驟。 PCBA加工電子制造的關(guān)鍵環(huán)節(jié)流程解析
    的頭像 發(fā)表于 09-18 09:51 ?1126次閱讀

    內(nèi)存的分類(lèi)有哪些

    內(nèi)存作為計(jì)算機(jī)系統(tǒng)中至關(guān)重要的組成部分,其分類(lèi)可以從多個(gè)維度進(jìn)行闡述。以下將從主要類(lèi)型、技術(shù)特性、應(yīng)用場(chǎng)景等多個(gè)方面詳細(xì)介紹內(nèi)存的分類(lèi),力求全面且深入地解析這一話(huà)題。
    的頭像 發(fā)表于 09-10 14:20 ?2417次閱讀

    什么是內(nèi)存通道技術(shù)

    內(nèi)存通道技術(shù)作為計(jì)算機(jī)系統(tǒng)中的核心組成部分,對(duì)于提升數(shù)據(jù)處理能力、優(yōu)化系統(tǒng)性能以及增強(qiáng)系統(tǒng)的穩(wěn)定性與擴(kuò)展性等方面發(fā)揮著至關(guān)重要的作用。以下是對(duì)內(nèi)存通道技術(shù)作用的詳細(xì)闡述,旨在通過(guò)多個(gè)方面解析
    的頭像 發(fā)表于 09-04 12:47 ?1413次閱讀

    內(nèi)存時(shí)鐘是什么意思

    內(nèi)存時(shí)鐘是內(nèi)存模塊中一個(gè)至關(guān)重要的參數(shù),它直接關(guān)聯(lián)到內(nèi)存模塊能夠工作的最高頻率。以下是對(duì)內(nèi)存時(shí)鐘的詳細(xì)
    的頭像 發(fā)表于 09-04 11:45 ?2103次閱讀

    使用GD32E230X8通過(guò)IAR仿真出現(xiàn)outside FLASH問(wèn)題怎么解決?

    是0x8000000~0x800ffff,大小為64k,IAR上的icf文件設(shè)置地址也是正確,map文件中程序?qū)懙降刂?x800\'449c,剩余0xbb64
    發(fā)表于 07-26 08:30

    內(nèi)存的種類(lèi)都有哪些?有什么區(qū)別?

    內(nèi)存,作為計(jì)算機(jī)中不可或缺的組成部分,承擔(dān)著存儲(chǔ)和交換數(shù)據(jù)的重要任務(wù)。隨著技術(shù)的不斷發(fā)展,內(nèi)存的種類(lèi)也日益豐富,每種類(lèi)型都有其獨(dú)特的特點(diǎn)和適用場(chǎng)景。以下是對(duì)內(nèi)存種類(lèi)及其區(qū)別的詳細(xì)
    的頭像 發(fā)表于 07-15 18:15 ?1.4w次閱讀
    主站蜘蛛池模板: 亚洲国产精品乱码在线观看97 | 免费人成网站永久 | 国产精品免费观看网站 | 国产成人精品一区二区仙踪林 | 色偷偷资源网 | 婷婷亚洲五月琪琪综合 | 国产小视频免费在线观看 | 伊人久久影院大香线蕉 | 男人午夜禁片在线观看 | 性香港xxxxx免费视频播放 | 免费人成动漫在线播放r18 | 色妞妞网 | 夜天干天干啦天干天天爽 | 中文字幕亚洲天堂 | 综合激情网站 | 夜夜操天天干 | 夜夜爱视频 | 亚洲黄色网址大全 | 天天干天天操天天爱 | 永久黄网站色视频免费观看 | 日日噜噜噜夜夜爽爽狠狠 | 欧美一级免费观看 | 国产叼嘿网站免费观看不用充会员 | 狠狠狠狠操 | 午夜色大片 | 2018天堂视频免费观看 | 中文字幕一区在线 | 国产一级久久免费特黄 | 国产农村三片免费网站 | 深爱激情五月婷婷 | 四虎电影免费观看网站 | 欧美片欧美日韩国产综合片 | 日本www网站| 色综合天 | 六月婷婷视频 | 久久精品久噜噜噜久久 | 免费精品美女久久久久久久久 | 女上男下边吃奶边做视频成都 | 美女中出视频 | 美女被拍拍拍拍拍拍拍拍 | 国产综合色精品一区二区三区 |