吴忠躺衫网络科技有限公司

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

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

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

剖析STM32的FLASH和SRAM的使用情況

FPGA之家 ? 來源:嵌入式案例Show ? 作者:嵌入式案例Show ? 2021-04-09 17:53 ? 次閱讀

01前言

STM32片上自帶FLASH和SRAM,簡(jiǎn)單講FLASH用來存儲(chǔ)程序的,SRAM是用來存儲(chǔ)運(yùn)行程序中的中間變量。本文詳細(xì)分析下如何查看程序中FLASH和SRAM的使用情況。

本文開發(fā)工具: keil5

芯片: STM32F105VCT6

02FLASH和SRAM介紹

FLASH存儲(chǔ)器又成為閃存,它與EEPROM都是掉電后數(shù)據(jù)不丟失的存儲(chǔ)器,但是FLASH的存儲(chǔ)容量都普遍的大于EEPROM,在存儲(chǔ)控制上,最主要的區(qū)別是FLASH芯片只能一大片一大片地擦除,而EEPROM可以單個(gè)字節(jié)擦除。

SRAM是靜態(tài)隨機(jī)存取存儲(chǔ)器。它是一種具有靜止存取功能的內(nèi)存,不需要刷新電路即能保存它內(nèi)部存儲(chǔ)的數(shù)據(jù)。STM32F1系列可以通過FSMC外設(shè)來拓展SRAM。

注意:SRAM和SDRAM是不相同的,SDRAM是同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,同步是指內(nèi)存工作需要同步時(shí)鐘,內(nèi)部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準(zhǔn);動(dòng)態(tài)是指存儲(chǔ)陣列需要不斷的刷新來保證數(shù)據(jù)不丟失;隨機(jī)是指數(shù)據(jù)不是線性依次存儲(chǔ),而是自由指定地址進(jìn)行數(shù)據(jù)讀寫。STM32的F1系列是不支持SDRAM的。

stm32不同型號(hào)的SRAM和FLASH大小是不相同的,可在datasheet中查看如下圖:

08d40a92-990f-11eb-8b86-12bb97331649.png

08ee58de-990f-11eb-8b86-12bb97331649.png

03編譯結(jié)果分析

在keil中編譯結(jié)果如下圖:

0915ec64-990f-11eb-8b86-12bb97331649.png

打開生成的map文件拉到最后可看到如下:

093488e0-990f-11eb-8b86-12bb97331649.png

編譯結(jié)果里面幾個(gè)的含義

Code:代碼空間,本質(zhì)是ARM指令( FLASH)。

RO-data:即 Read Only-data, 表示程序定義的常量,如 const 類型( FLASH)。

RW-data:即 Read Write-data, 非0初始化的全局和靜態(tài)變量占用的RAM大小,同時(shí)還要占用等量的ROM大小用于存放這些非0變量的初值(FLASH+RAM)。

ZI-data:即 Zero Init-data, 0初始化的內(nèi)存區(qū)的大小(該區(qū)域3個(gè)用途:0初始化的全局和靜態(tài)變量+堆區(qū)+棧區(qū))(RAM)。

由上可知:

程序占用FLASH=Code + RO-data + RW-data 即map文件中ROM size

程序占用RAM = RW-data + ZI-data 即map文件中RW size

常見的倆個(gè)疑問:

1、RW-data為什么會(huì)即占用Flash又占用RAM空間?

由前文知道RAM掉電數(shù)據(jù)會(huì)丟失,RW-data是非0初始化的數(shù)據(jù),已初始化的數(shù)據(jù)需要被存儲(chǔ)在掉電不會(huì)丟失的FLASH中,上電后會(huì)從FLASH搬移到RAM中。

2、為什么燒錄的鏡像文件不包含ZI-data呢?

我們都知道在燒寫程序的時(shí)候,需要燒寫bin文件或者h(yuǎn)ex文件到STM32的flash中,被燒寫的文件稱為鏡像像文件image。image的內(nèi)容包含這三個(gè)Code 、 RO-data 和 RW-data。

通過第一個(gè)問題大家應(yīng)該有所理解,因?yàn)閆I數(shù)據(jù)是0,沒必要包含,只要在程序運(yùn)行前把ZI數(shù)據(jù)區(qū)域一律清零即可,包含進(jìn)去反而浪費(fèi)Flash存儲(chǔ)空間。

編輯:jq

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

    關(guān)注

    10

    文章

    1642

    瀏覽量

    148678
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7528

    瀏覽量

    164345
  • STM32
    +關(guān)注

    關(guān)注

    2272

    文章

    10924

    瀏覽量

    357583

原文標(biāo)題:STM32的FLASH和SRAM的使用情況分析

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux下如何管理虛擬內(nèi)存 使用虛擬內(nèi)存時(shí)的常見問題

    查看虛擬內(nèi)存使用情況 : 使用 free 命令可以查看當(dāng)前的虛擬內(nèi)存使用情況,包括物理內(nèi)存、交換空間等的使用情況。 調(diào)整交換空間大小 : 如果需要調(diào)整交換空間的大小,可以使用 swapoff 命令關(guān)閉現(xiàn)有的交換空間,然后使用
    的頭像 發(fā)表于 12-04 09:19 ?631次閱讀

    LMX2592正常使用情況下溫度大概有多少?

    你好,LMX2592如果將 OUTA_PD = 1;OUTB_PD = 1;為什么芯片還是很燙,正常使用情況下溫度大概有多少,對(duì)于溫度的變化可以提供一下參考嗎
    發(fā)表于 11-08 08:32

    TMS320C64x在高性能DSP應(yīng)用中的高速緩存使用情況

    電子發(fā)燒友網(wǎng)站提供《TMS320C64x在高性能DSP應(yīng)用中的高速緩存使用情況.pdf》資料免費(fèi)下載
    發(fā)表于 10-21 09:43 ?0次下載
    TMS320C64x在高性能DSP應(yīng)用中的高速緩存<b class='flag-5'>使用情況</b>

    Banana Pi BPI-M7 RK3588開發(fā)板在 Linux 上檢查 Rockchip NPU 使用情況

    如下介紹如何監(jiān)控 Rockchip 設(shè)備的 NPU 使用情況。 如今,新型設(shè)備開始配備內(nèi)置 AI 芯片。“AI 芯片”的正確技術(shù)術(shù)語是 NPU,即神經(jīng)處理單元。 如果您有板載 NPU
    的頭像 發(fā)表于 07-11 16:47 ?486次閱讀
    Banana Pi BPI-M7 RK3588開發(fā)板在 Linux 上檢查 Rockchip NPU <b class='flag-5'>使用情況</b>

    如何查看TC397內(nèi)存的使用情況

    Hi,請(qǐng)問,如何查看 TC397 內(nèi)存的使用情況?謝謝!
    發(fā)表于 05-22 07:50

    可以從下面的圖看出我的工程flash和ram的使用情況嗎?

    芯片是:dspf28335;可以從下面的圖看出我的工程flash和ram的使用情況嗎?感覺flash還可以,ram有點(diǎn)不夠用了,請(qǐng)求大師指點(diǎn),如何分析?
    發(fā)表于 05-11 10:11

    STM32有什么辦法可以測(cè)試在操作一塊flash時(shí),剛好完成了一半就被另外一塊地址的flash操作打斷了的這種情況

    有什么辦法可以測(cè)試在操作一塊flash的時(shí)候,剛好完成了一半就被另外一塊地址的flash操作打斷了的這種情況? ,主要是想看這樣操作是否可以以及操作會(huì)出現(xiàn)什么異常?啟動(dòng)模式SRAM或者
    發(fā)表于 04-18 06:51

    STM32訪問FPGA內(nèi)部SRAM部分區(qū)域?yàn)槭裁粗荒茏x不能寫?

    采用STM32F427+FPGA+FlashSTM32通過FMC總線訪問FPGA內(nèi)部SRAM,起始地址為0x60000000; Flash中存儲(chǔ)FPGA的配置數(shù)據(jù),
    發(fā)表于 04-16 06:39

    stm32f4 FLASH_ProgramDoubleWord函數(shù)數(shù)據(jù)不能寫入flash的原因?

    STM32F401芯片,調(diào)用flash寫函數(shù)時(shí),如果寫一個(gè)字,也就是調(diào)用stm32f4 FLASH_ProgramWord函數(shù),能正確寫入;如果換成
    發(fā)表于 04-12 06:50

    STM32把程序下到SRAM里調(diào)試好用嗎?

    剛學(xué)會(huì)把程序下到SRAM里,以前都直接下載到flash里。下載速度好像也差不多,下載到SRAM里比較麻煩。flash有壽命,直接下載到flash
    發(fā)表于 04-08 06:35

    請(qǐng)問STM32G070的DMA支持把sram的數(shù)據(jù)搬到Flash嗎?

    STM32G070的DMA支持把sram的數(shù)據(jù)搬到Flash嗎?
    發(fā)表于 03-28 09:46

    STM32H在IAR中如何實(shí)現(xiàn)從FLASH加載到SRAM中運(yùn)行程序?

    如題,STM32H 在IAR中如何實(shí)現(xiàn)從FLASH加載到SRAM中運(yùn)行程序 有沒有相關(guān)的例程可供參考
    發(fā)表于 03-28 07:46

    CUBEIDE運(yùn)行完可以看RAM的使用情況,運(yùn)行中可以實(shí)時(shí)查看RAM的使用情況嗎?

    CUBEIDE運(yùn)行完可以看RAM的使用情況,運(yùn)行中可以實(shí)時(shí)查看RAM的使用情況嗎?以及負(fù)載情況? 圖片是運(yùn)行完可以看RAM使用情況,是否可以運(yùn)行中實(shí)時(shí)查看?是不是cubemonito
    發(fā)表于 03-12 07:56

    rtthread編譯后如何查看堆棧空間使用情況

    rtthread編譯后如何查看堆棧空間使用情況,現(xiàn)在只能在編譯完成后看到總大小,有沒有辦法能看到詳細(xì)的使用情況。 由于RAM只有128K,除去內(nèi)存池32k,想看看剩余的RAM在哪用了
    發(fā)表于 03-05 07:58

    使用rt_thread nano有辦法查看線程的資源占用情況嗎?

    使用rt_thread nano ,有辦法查看線程的資源占用情況麼?
    發(fā)表于 02-26 06:05
    百家乐官网娱乐城新闻| 娱乐城注册送18| 金沙百家乐官网的玩法技巧和规则 | 威尼斯人娱乐城信誉怎样| 破战百家乐官网的玩法技巧和规则 | 百家乐路珠价格| 百家乐官网正反投注| 大发888我的爱好| 百家乐大老娱乐| 真人百家乐官网海立方| 大发888娱乐场手机版| 百家乐游戏程序出售| 百家乐官网专打单跳投注法| 大发888假冒网站| 百家乐赌博破解| 大地百家乐官网的玩法技巧和规则| 英伦国际| 91百家乐的玩法技巧和规则 | 大赢家娱乐城官方网| 百家乐23珠路打法| 黄金百家乐官网的玩法技巧和规则| TT百家乐官网现金网| 德州扑克的规则| 百家乐软件辅助器| 百家乐官网知道| 娱乐城百家乐官网怎么样| 456棋牌官网| 网络百家乐的玩法技巧和规则| 百家乐官网最新产品| 龙井市| 大发888登录器下载| 百家乐买闲打法| 百樂坊百家乐官网的玩法技巧和规则 | 安溪县| 德州扑克战术与策略分析| 电投百家乐网站| 新濠百家乐官网娱乐城| 太阳城百家乐官网出千技术| 葵青区| 元游棋牌游戏下载| 澳门百家乐会出千吗|