娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月09日(星期日)

正在發(fā)生

2021年02月09日 | STM32 查看 FLASH 和 RAM 使用情況(RO-data、RW-data、ZI-data)

發(fā)布者:eaff86 來源: eefocus關(guān)鍵字:STM32  FLASH  RAM  使用情況 手機(jī)看文章 掃描二維碼
隨時隨地手機(jī)看文章

1、KEIL MDK 編譯后的信息


Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116 


1)Code 是代碼占用的空間;


2)RO-data 是 Read Only 只讀常量的大小,如const型;


3)RW-data 是(Read Write)初始化了的可讀寫變量的大小;


4)ZI-data 是(Zero Initialize) 沒有初始化的可讀寫變量的大小,ZI-data不會被算做代碼里因?yàn)椴粫怀跏蓟?p>

1.1、Flash 占用


在燒寫的時候是 FLASH 中的被占用的空間為:


Code+RO Data+RW Data


1.2、RAM 內(nèi)存占用(不包括堆棧)


程序運(yùn)行的時候,芯片內(nèi)部 RAM 使用的空間為:


RW Data + ZI Data


示例:


Program Size: Code="18248" RO-data=320 RW-data=260 ZI-data=3952 

 

Code, RO-data,RW-data ..............flash

RW-data, ZIdata       ..............RAM

注:初始化時 RW-data 從 flash 拷貝到 RAM


生成的map文件位于list文件夾下 (KEIL)


Total RO  Size (Code + RO Data)                18568 (  18.13kB)

Total RW  Size (RW Data + ZI Data)              4212 (   4.11kB)

Total ROM Size (Code + RO Data + RW Data)      18828 (  18.39kB)

2、ARM 映像文件的組成


所謂ARM映像文件就是指燒錄到ROM中的bin文件,也稱為image文件。


Image文件包含了RO和RW數(shù)據(jù),之所以Image文件不包含ZI數(shù)據(jù),是因?yàn)閆I數(shù)據(jù)都是0,沒必要包含,只要程序運(yùn)行之前將ZI數(shù)據(jù)所在的區(qū)域一律清零即可,包含進(jìn)去反而浪費(fèi)存儲空間。


RO中的指令和常量以及RW中初始化過的變量是不能像ZI那樣“無中生有”。


3、ARM 程序的執(zhí)行過程


燒錄到ROM中的image文件與實(shí)際運(yùn)行時的ARM程序之間并不是完全一樣的。


因此就有必要了解ARM程序是如何從ROM中的image到達(dá)實(shí)際運(yùn)行狀態(tài)的。


RO中的指令至少應(yīng)該有這樣的功能:


1)將RW從ROM中搬到RAM中,因?yàn)镽W是變量,變量不能存在ROM中;


2)將ZI所在的RAM區(qū)域全部清零,因?yàn)閆I區(qū)域并不在Image中,所以需要程序根據(jù)編譯器給出的ZI地址及大小來將相應(yīng)得RAM區(qū)域清零。


ZI中也是變量,同理:變量不能存在ROM中,在程序運(yùn)行的最初階段,RO中的指令完成了這兩項(xiàng)工作后C程序才能正常訪問變量。


否則只能運(yùn)行不含變量的代碼。


示例:


1)RO


看下面兩段程序,他們之間差了一條語句,這條語句就是聲明一個字符常量。


因此按照我們之前說的,他們之間應(yīng)該只會在RO數(shù)據(jù)中相差一個字節(jié)(字符常量為1字節(jié))。


Prog1:

 

#include

void main(void)

{

;

}

 

Prog2

#include

const char a = 5;

void main(void)

{

;

}

Prog1編譯出來后的信息如下:


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

Code RO Data RW Data ZI Data Debug

948 60 0 96 0 Grand Totals

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

Total RO Size(Code + RO Data) 1008 ( 0.98kB)

Total RW Size(RW Data + ZI Data) 96 ( 0.09kB)

Total ROM Size(Code + RO Data + RW Data) 1008 ( 0.98kB)

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

Prog2編譯出來后的信息如下:


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

Code RO Data RW Data ZI Data Debug

948 61 0 96 0 Grand Totals

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

Total RO Size(Code + RO Data) 1009 ( 0.99kB)

Total RW Size(RW Data + ZI Data) 96 ( 0.09kB)

Total ROM Size(Code + RO Data + RW Data) 1009 ( 0.99kB)

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

以上兩個程序編譯出來后的信息可以看出:


Prog1和Prog2的RO包含了Code和RO Data兩類數(shù)據(jù)。


他們的唯一區(qū)別就是Prog2的RO Data比Prog1多了1個字節(jié)。


如果增加的是一條指令而不是一個常量,則結(jié)果應(yīng)該是Code數(shù)據(jù)大小有差別。


2)RW


同樣再看兩個程序,他們之間只相差一個“已初始化的變量”,按照之前所講的,已初始化的變量應(yīng)該是算在RW中的,所以兩個程序之間應(yīng)該是RW大小有區(qū)別。


Prog3:

 

#include

void main(void)

{

;

}

 

Prog4:

 

#include

char a = 5;

void main(void)

{

;

}

Prog3編譯出來后的信息如下:


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

Code RO Data RW Data ZI Data Debug

948 60 0 96 0 Grand Totals

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

Total RO Size(Code + RO Data) 1008 ( 0.98kB)

Total RW Size(RW Data + ZI Data) 96 ( 0.09kB)

Total ROM Size(Code + RO Data + RW Data) 1008 ( 0.98kB)

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

Prog4編譯出來后的信息如下:


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

Code RO Data RW Data ZI Data Debug

948 60 1 96 0 Grand Totals

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

Total RO Size(Code + RO Data) 1008 ( 0.98kB)

Total RW Size(RW Data + ZI Data) 97 ( 0.09kB)

Total ROM Size(Code + RO Data + RW Data) 1009 ( 0.99kB)

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

可以看出Prog3和Prog4之間確實(shí)只有RW Data之間相差了1個字節(jié),這個字節(jié)正是被初始化過的一個字符型變量“a”所引起的。


3)ZI


再看兩個程序,他們之間的差別是一個未初始化的變量“a”,從之前的了解中,應(yīng)該可以推測,這兩個程序之間應(yīng)該只有ZI大小有差別。


Prog3:

 

#include

void main(void)

{

;

}

 

Prog4:

 

#include

char a;

void main(void)

{

;

}

Prog3編譯出來后的信息如下:


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

Code RO Data RW Data ZI Data Debug

948 60 0 96 0 Grand Totals

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

Total RO Size(Code + RO Data) 1008 ( 0.98kB)

Total RW Size(RW Data + ZI Data) 96 ( 0.09kB)

Total ROM Size(Code + RO Data + RW Data) 1008 ( 0.98kB)

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

Prog4編譯出來后的信息如下:


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

Code RO Data RW Data ZI Data Debug

948 60 0 97 0 Grand Totals

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

Total RO Size(Code + RO Data) 1008 ( 0.98kB)

Total RW Size(RW Data + ZI Data) 97 ( 0.09kB)

Total ROM Size(Code + RO Data + RW Data) 1008 ( 0.98kB)

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

編譯的結(jié)果完全符合推測,只有ZI數(shù)據(jù)相差了1個字節(jié)。


這個字節(jié)正是未初始化的一個字符型變量“a”所引起的。


注意:


如果一個變量被初始化為0,則該變量的處理方法與未初始化華變量一樣放在ZI區(qū)域。


即:ARM C程序中,所有的未初始化變量都會被自動初始化為0。


總結(jié):


1) C中的指令以及常量被編譯后是RO類型數(shù)據(jù);


2) C中的未被初始化或初始化為0的變量編譯后是ZI類型數(shù)據(jù);


3) C中的已被初始化成非0值的變量編譯后市RW類型數(shù)據(jù)。


附:


程序的編譯命令(假定C程序名為tst.c):


armcc -c -o tst.o tst.c

armlink -noremove -elf -nodebug -info totals -info sizes -map -list aa.map -o tst.elf tst.o


編譯后的信息就在aa.map文件中。


ROM主要指:NAND Flash,Nor Flash


RAM主要指:PSRAM,SDRAM,SRAM,DDRAM


簡單的說就是在燒寫完的時候是:


FLASH中:Code+RO Data+RW Data


運(yùn)行的時候:


RAM: RW Data + ZI Data,當(dāng)然還要有堆棧的空間。



refer:


https://blog.csdn.net/xkzju2010/article/details/51323901


關(guān)鍵字:STM32  FLASH  RAM  使用情況 引用地址:STM32 查看 FLASH 和 RAM 使用情況(RO-data、RW-data、ZI-data)

上一篇:STM32 編譯結(jié)果 map 之 code、RO-data、RW-data、ZI-data 字段解析
下一篇:readelf 命令讀取 STM32 編譯生成的 ELF 和 AXF 文件

推薦閱讀

????更新將首先推送給加入測試計(jì)劃的用戶,然后向普通用戶推送,無鎖版應(yīng)該會更快收到更新。  三星已經(jīng)正式開始為Galaxy S8和Galaxy S8 +手機(jī)推送Android?8.0 Oreo更新,版本號為SM-G955XXU1CRAP0,目前德國用戶率先收到了更新。  更新將首先推送給加入測試計(jì)劃的用戶,然后向普通用戶推送,無鎖版應(yīng)該會更快收到更新。當(dāng)然,地區(qū)方面首先在德...
近年來,隨著傳感器,控制和傳動技術(shù)的進(jìn)步發(fā)展,使得機(jī)器人產(chǎn)品的功能越來越強(qiáng)大,其應(yīng)用場景得到了較大的擴(kuò)展。醫(yī)療領(lǐng)域是機(jī)器人應(yīng)用的一個重要方向,醫(yī)院正在利用機(jī)器人技術(shù)輔助治療病人,進(jìn)行手術(shù)等多種操作。在某些方面,機(jī)器比人更具優(yōu)勢,基于數(shù)據(jù)和圖像分析的高精度手術(shù),機(jī)器人能完成人為手術(shù)不能解決的任務(wù)。此前,醫(yī)療科技巨頭美敦力花17億收購...
在我們的日常生活中,用電可謂再正常不過了,直到某一天突然停電了,才意識到電能的重要性,才關(guān)心起我們電力人[偷笑],很多人只對用電有所了解,并不太清楚電能是怎樣輸送并分配到千家萬戶的,今天小編就帶大家一起了解一下電力的五大環(huán)節(jié)吧! 文丨電氣應(yīng)用 發(fā)電:電能產(chǎn)生的最初環(huán)節(jié) 輸電:將電能傳輸向遠(yuǎn)方的環(huán)節(jié) 變電:將電能電壓等級調(diào)高或...
美國柏恩Bourns全球知名電子組件領(lǐng)導(dǎo)制造供貨商,今天宣布成功并購總部位于德國哥廷根的Kaschke集團(tuán)旗下多個實(shí)體公司的所有股份和權(quán)益,其交易條款并未公開。Kaschke是定制磁性組件和鐵氧體磁芯領(lǐng)域的市場領(lǐng)導(dǎo)者,該公司由Kurt Kaschke于1955年創(chuàng)立,向以開發(fā)和生產(chǎn)高水平磁性產(chǎn)品聞名。Kaschke旨在藉由他們的鐵氧體核心知識庫來開發(fā)客戶要求的特定解決方...

史海拾趣

問答坊 | AI 解惑

一個精密整流電路

精密整流電路在自動測量領(lǐng)域獲得廣泛的應(yīng)用,其結(jié)構(gòu)類型繁多,圖S1-3是一個典型的精密整流電路圖,圖S1-4給出其輸入和輸出的波形圖。 對該精密整流電路的分析分為正弦信號的正半周和負(fù)半周兩步來分析。 當(dāng)ui為正半周時,其第一個運(yùn)算放大器的 ...…

查看全部問答∨

急招!!!

任職要求: 1、為TD-SCDMA Node B執(zhí)行RF測試用例 2、在板卡級別組織和開發(fā) HW RF測試環(huán)境 3、負(fù)責(zé)HW Node B系統(tǒng)的測試。 4、本科以上,碩士優(yōu)先,主修通信或者相關(guān)領(lǐng)域。 5、非常了解HW RF的測試(必須要有RF儀器經(jīng)驗(yàn) ) 6、RF 電路開發(fā)背景 ...…

查看全部問答∨

【藏書閣】32 個單片機(jī)類畢業(yè)設(shè)計(jì)

資料雖好,僅供參考,還是要自己做啊 16×16點(diǎn)陣(滾動顯示)論文+程序.rar cdma通信系統(tǒng)中的接入信道部分進(jìn)行仿真與分析.rar LED顯示屏動態(tài)顯示和遠(yuǎn)程監(jiān)控的實(shí)現(xiàn).rar MCS-51單片機(jī)溫度控制系統(tǒng).rar USB接口設(shè)計(jì).rar 畢業(yè)設(shè)計(jì)(論文)OFDM通信 ...…

查看全部問答∨

Recommended Power Solutions for the TMS320x28xx DSPs

Recommended Power Solutions for the TMS320x28xx DSPs…

查看全部問答∨

camera 驅(qū)動

我看到 camera驅(qū)動中有的帶Pin驅(qū)動,有的不帶,這個pin驅(qū)動是干嘛的。知道的告訴一下…

查看全部問答∨

編譯通過后download到目標(biāo)機(jī)出現(xiàn)錯誤提示,是什么錯誤

請教一下,下面的錯誤是由什么引起的?工程編譯通過了,但是下載時提示錯誤。 Errors while downloading D:/downLoadable/PENTIUMgnu/breakPoint.out: _pingLibInit _ping 如果屏蔽了工程中用ping的代碼就不再出現(xiàn)_ping 錯誤, 同樣屏蔽了工程 ...…

查看全部問答∨

大家有沒有對AT指令比較熟啊。

由于剛開始接觸AT指令這個東西,不是很清楚特來請教大家。 例如: AT+CSCS=" UCS2"    這個指令,我要串口發(fā)AT指令是不是連加號,雙引號一起變成ASCII碼的方式發(fā)送。 還有: <ctrl-Z>      這個又是 ...…

查看全部問答∨

FM25H20的讀寫問題

我用dsPIC33FJ128GP306控制FM25H20芯片的讀寫,二者通過SPI接口連接。在程序中,我先向RAM中寫一個數(shù)據(jù),然后從寫入的地址中讀出數(shù)據(jù)。現(xiàn)象是:在CPU的SPIDOUT端有數(shù)據(jù)輸出,但是RAM的DOUT端沒有數(shù)據(jù)。(我所說的數(shù)據(jù)是否存在是通過觀察示波器的波形 ...…

查看全部問答∨

哪位兄弟還有論壇活動贈送的811開發(fā)板的CD

兄弟我把CD弄丟了,現(xiàn)在想看看里面的例程。哪位兄弟能把里面例程和驅(qū)動上傳? 說明一下,是那塊有幾個LED和白色導(dǎo)光板的811開發(fā)板。   謝謝了!…

查看全部問答∨

請問AM335X SK (WL1271) soft AP WIFI速度

請問.. 我做下列測試 PC 送出資料 ,AM335X SK 收到資料後會回應(yīng)資料 , PC 計(jì)算送出資料到讀取到資料得時間 使用無線網(wǎng)路與有線網(wǎng)路有一定程度的差異, 請問是什麼原因造成?????               & ...…

查看全部問答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 兴国县| 正安县| 金堂县| 沁阳市| 久治县| 贵州省| 樟树市| 攀枝花市| 平和县| 剑河县| 五寨县| 淮阳县| 同仁县| 周口市| 洪湖市| 九龙城区| 集安市| 鄄城县| 四川省| 册亨县| 云林县| 阿荣旗| 永安市| 蒙阴县| 信宜市| 甘洛县| 泾川县| 庆阳市| 中江县| 修文县| 邵阳县| 新宁县| 德清县| 龙泉市| 武宣县| 广水市| 天长市| 辉南县| 潜山县| 武邑县| 曲水县|