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

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

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

STM32的存儲器映射詳解

MCU開發(fā)加油站 ? 來源:未知 ? 作者:鄧佳佳 ? 2018-03-23 15:24 ? 次閱讀

存儲器映射是指把芯片中或芯片外的FLASH,RAM,外設(shè),BOOT,BLOCK等進行統(tǒng)一編址。即用地址來表示對象。

這個地址絕大多數(shù)是由廠家規(guī)定好的,用戶只能用而不能改。用戶只能在掛外部RAM或FLASH的情況下可進行自定義。

Cortex-M3支持4GB的存儲空間,它的存儲系統(tǒng)采用統(tǒng)一編址的方式; 程序存儲器、數(shù)據(jù)存儲器、寄存器被組織在4GB的線性地址空間內(nèi),以小端格式(little-endian)存放。由于Cortex-M3是32位的內(nèi)核,因此其PC指針可以指向2^32=4G的地址空間,也就是0x0000_0000——0xFFFF_FFFF這一大塊空間。見圖1:

圖1:Cortex-M3的存儲器映射

Cortex-M3內(nèi)核將0x0000_0000——0xFFFF_FFFF這塊4G大小的空間分成8大塊:代碼、SRAM、外設(shè)、外部RAM、外部設(shè)備、專用外設(shè)總線-內(nèi)部、專用外設(shè)總線-外部、特定廠商(見圖1)。這就導致了,使用該內(nèi)核的芯片廠家必須按照這個進行各自芯片的存儲器結(jié)構(gòu)設(shè)計,如stm32。

圖2:Cortex-M3與中密度stm32的存儲器映射對比

圖2中可以很清晰的看到,STM32的存儲器結(jié)構(gòu)和Cortex-M3的很相似(這是因為stm32本來就是按照cortex_m3內(nèi)核來設(shè)計硬件的),不同的是,STM32加入了很多實際的東西,如:Flash、SRAM等。只有加入了這些東西,才能成為一個擁有實際意義的、可以工作的處理芯片——STM32。STM32的存儲器地址空間被劃分為大小相等的8塊區(qū)域,每塊區(qū)域大小為512MB(如:0x20000000~0x40000000)。對STM32存儲器知識的掌握,實際上就是對Flash和SRAM這兩個區(qū)域知識的掌握。

不同類型的STM32單片機的SRAM大小是不一樣的,但是他們的起始地址都是0x2000 0000,終止地址都是0x2000 0000+其固定的容量大小。SRAM的理解比較簡單,其作用是用來存取各種動態(tài)的輸入輸出數(shù)據(jù)、中間計算結(jié)果以及與外部存儲器交換的數(shù)據(jù)和暫存數(shù)據(jù)。設(shè)備斷電后,SRAM中存儲的數(shù)據(jù)就會丟失。

STM32的Flash,嚴格說,應(yīng)該是Flash模塊。三個分區(qū)的稱呼與datasheet保持一致。該Flash模塊包括:

Flash主存儲區(qū)(Main memory)Flash:存放代碼的地方,如圖2中的FLASH區(qū)域:128KB(0x08000000~0x0801ffff)(不同容量的Flash終止地址不同);

Flash信息區(qū)(Information block),該區(qū)域又可以分為Option Bytes和System Memory區(qū)域;

System Memory:STM32在出廠時,已經(jīng)固化了一段程序在System memory(medium-density devices的地址為:0x1FFF_F000,大小為2KB)存儲器中。這段程序就是一個固定好的,并且沒法修改的Boot Loader(見編程手冊PM0042這種描述)。

Option Bytes:可以按照用戶的需要進行配置(如配置看門狗為硬件實現(xiàn)還是軟件實現(xiàn));該區(qū)域除了互聯(lián)型所用型號地址都一樣:(0x1fff_f000~0x1fff_f80f)圖中終止地址有誤:應(yīng)為0x1fff_f80f,正好16個字節(jié)。

Flash存儲接口寄存器區(qū)(Flash memory interface),用于片上外設(shè)。是圖2中從0x40000000開始的PERIPHERALS區(qū)域。也稱作外設(shè)存儲器映射,對該區(qū)域操作,就是對相應(yīng)的外設(shè)進行操作。

根據(jù)STM32的內(nèi)存映射圖,在代碼區(qū),0x00000000地址為啟動區(qū),上電以后,CPU從這個地址開始執(zhí)行代碼。0x08000000是用戶FLASH的起始地址,0x20000000是SRAM的起始地址。

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

    關(guān)注

    38

    文章

    7517

    瀏覽量

    164065
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4337

    瀏覽量

    85984
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10914

    瀏覽量

    356712

原文標題:STM32的存儲器映射詳解

文章出處:【微信號:mcugeek,微信公眾號:MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    ARM的存儲器映射存儲器重映射

    利用芯片內(nèi)的存儲器,因此我們要知道存儲器的地址,即物理地址,所以虛擬地址和物理地址之間必然存在一定的轉(zhuǎn)換關(guān)系,這就是映射。把虛擬地址按照某種規(guī)則轉(zhuǎn)換成物理地址的方法就為存儲器
    發(fā)表于 03-24 11:57

    stm32存儲結(jié)構(gòu)& 存儲器映射

    問題: 1 什么是存儲器映射?是怎么一個運作過程?2 Stm32總體架構(gòu)3CM3內(nèi)核結(jié)構(gòu)1 STM32系統(tǒng)結(jié)構(gòu) 要想深刻理解STM32
    發(fā)表于 08-14 09:22

    【精選】STM32存儲器映射詳解

    存儲stm32單片機非常重要的一個單元,它到底是怎么映射的呢?見附件。
    發(fā)表于 03-03 12:43

    STM32存儲器映像

    與時鐘概述3.2.6.STM32的時鐘框圖詳解第二部分、章節(jié)介紹3.2.1.STM32存儲器映像 本節(jié)講述STM32
    發(fā)表于 08-20 06:06

    存儲器映射介紹

    以下均以STM32F429IGT6為例一、存儲器映射存儲器本身不具有地址信息,它的地址是由芯片廠商或用戶分配,給存儲器分配地址的過程就稱為
    發(fā)表于 08-20 06:29

    存儲器映射與寄存映射的原理分別是什么

    一定編碼規(guī)則分配地址的行為。值得注意,存儲器映射一般是由產(chǎn)家規(guī)定,用戶不能隨意更改。圖2 STM32芯片存儲器映射注1
    發(fā)表于 12-20 08:17

    STM32存儲器映像的相關(guān)資料

    第一部分、章節(jié)目錄3.2.1.STM32存儲器映像13.2.2.STM32存儲器映像23.2.3.STM32的位帶操作
    發(fā)表于 12-30 08:11

    存儲器映射是什么意思

    存儲器本身不具有地址信息,它的地址是由芯片廠商或用戶分配,給存儲器分配地址的過程稱為存儲器映射,如果再分配一個地址就叫重映射
    發(fā)表于 01-20 08:21

    存儲器映射是什么意思

    存儲器映射是什么意思?其映射過程是怎樣的?
    發(fā)表于 01-21 07:39

    一文詳解存儲器映射與寄存映射

    什么叫存儲器映射呢?什么是寄存?寄存映射又是什么呢?
    發(fā)表于 01-21 07:45

    STM32F7系統(tǒng)架構(gòu)和存儲器映射

    STM32 F7 概述? STM32總線架構(gòu)和存儲器映射? 總線架構(gòu)? 存儲器映射? Cache
    發(fā)表于 09-08 06:53

    STM32F7技術(shù)培訓1:存儲器映射

    STM32F7技術(shù)培訓1--系統(tǒng)架構(gòu)_存儲器映射
    的頭像 發(fā)表于 07-02 10:30 ?4140次閱讀

    什么是存儲器和寄存映射?如何訪問STM32寄存內(nèi)容?

    存儲器本身不具有地址信息,它的地址是由芯片廠商或用戶分配,給存儲器分配地址的過程稱為存儲器映射,如果再分配一個地址就叫重映射
    發(fā)表于 10-12 08:00 ?58次下載
    什么是<b class='flag-5'>存儲器</b>和寄存<b class='flag-5'>器</b><b class='flag-5'>映射</b>?如何訪問<b class='flag-5'>STM32</b>寄存<b class='flag-5'>器</b>內(nèi)容?

    STM32(F407)—— 存儲區(qū)映射存儲器重映射

    端口都在同一個線性的4 GB(Cortex-M4的地址總線寬度是32位的,最大地址為 0xFFFF FFFF)的地址空間之內(nèi)。1. 存儲器映射在明白什么是存儲器映射前,我們需要明白什么
    發(fā)表于 12-04 13:51 ?13次下載
    <b class='flag-5'>STM32</b>(F407)—— <b class='flag-5'>存儲</b>區(qū)<b class='flag-5'>映射</b>和<b class='flag-5'>存儲器重映射</b>

    2.STM32存儲器、電源和時鐘體系

    第一部分、章節(jié)目錄3.2.1.STM32存儲器映像13.2.2.STM32存儲器映像23.2.3.STM32的位帶操作
    發(fā)表于 01-07 15:32 ?1次下載
    2.<b class='flag-5'>STM32</b>的<b class='flag-5'>存儲器</b>、電源和時鐘體系