色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

STM32芯片的存儲(chǔ)結(jié)構(gòu)

科技綠洲 ? 來源:明解嵌入式 ? 作者:明解嵌入式 ? 2023-06-22 09:20 ? 次閱讀

一、前言

本篇介紹STM32芯片的存儲(chǔ)結(jié)構(gòu),ARM公司負(fù)責(zé)提供設(shè)計(jì)內(nèi)核,而其他外設(shè)則為芯片商設(shè)計(jì)并使用,ARM收取其專利費(fèi)用而不參與其他經(jīng)濟(jì)活動(dòng),半導(dǎo)體芯片廠商拿到內(nèi)核授權(quán)后,根據(jù)產(chǎn)品需求,添加各類組件,生產(chǎn)芯片售賣。圖1為STM32的組成示意圖,其中Cortex-M3內(nèi)核、調(diào)試系統(tǒng)都是ARM公司設(shè)計(jì),內(nèi)部總線、外設(shè)、存儲(chǔ)、時(shí)鐘復(fù)位等都由ST公司開發(fā)??梢悦黠@看出總線是cpu、內(nèi)存、外設(shè)傳遞信息的公用通道,芯片上的各個(gè)部件通過總線相連接。

圖片

圖1 STM32芯片簡要結(jié)構(gòu)圖

內(nèi)核通過總線訪問各個(gè)外設(shè),現(xiàn)在通往外設(shè)的“路”已經(jīng)鋪好,還需要規(guī)定各個(gè)外設(shè)的“門牌號(hào)”,以便精準(zhǔn)控制每個(gè)外設(shè)。ARM Cortex-M3系列的處理器,采用存儲(chǔ)器與I/O設(shè)備(外設(shè))統(tǒng)一編址的方式,將部分存儲(chǔ)器地址范圍用于外設(shè),這種通過存儲(chǔ)器地址訪問外設(shè)的方式,稱為存儲(chǔ)器地址映射。

二、內(nèi)核存儲(chǔ)結(jié)構(gòu)

圖片

圖2 存儲(chǔ)結(jié)構(gòu)框架

以Cortex‐M3內(nèi)核為例,對于32位的處理器,可尋址的范圍為2^32字節(jié),即2^32= 4 × 1024 × 1024 × 1024 = 4GB,也就是0x00000000至0xFFFFFFFF。ARM將這4G空間從低地址到高地址依次劃分為代碼區(qū)(Code)、片上SRAM區(qū)(SRAM)、片上外設(shè)(Peripheral)、片外RAM(External RAM)、片外外設(shè)(External Device)和系統(tǒng)級(System level),程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、寄存器和 I/O 端口排列在同一個(gè)順序的 4 GB 地址空間內(nèi)。各字節(jié)按小端格式在存儲(chǔ)器中編碼。字中編號(hào)最低的字節(jié)被視為該字的最低有效字節(jié),而編號(hào)最高的字節(jié)被視為最高有效字節(jié)。

圖片

圖3 Cortex‐M3存儲(chǔ)結(jié)構(gòu)

從圖3中可見,不像其它的 ARM 架構(gòu),它們的存儲(chǔ)器映射由半導(dǎo)體廠家說了算,Cortex‐M3 預(yù)先定義好了“粗線條的”存儲(chǔ)器映射。通過把片上外設(shè)的寄存器映射到外設(shè)區(qū),就可以簡單地以訪問內(nèi)存的方式來訪問這些外設(shè)的寄存器,從而控制外設(shè)的工作。結(jié)果,片上外設(shè)可以使用C語言來操作。這種預(yù)定義的映射關(guān)系,也使得對訪問速度可以做高度的優(yōu)化,而且對于片上系統(tǒng)的設(shè)計(jì)而言 更易集成(還有一個(gè)重要的,不用每學(xué)一種不同的單片機(jī)就要熟悉一種新的存儲(chǔ)器映射)。

Cortex‐M3的內(nèi)部擁有一個(gè)總線基礎(chǔ)設(shè)施,專用于優(yōu)化對這種存儲(chǔ)器結(jié)構(gòu)的使用。在此之上, Cortex‐M3甚至還允許這些區(qū)域之間“越權(quán)使用”。比如說,數(shù)據(jù)存儲(chǔ)器也可以被放到代碼區(qū),而且代碼也能夠在外部 RAM 區(qū)中執(zhí)行。

處于最高地址的系統(tǒng)級存儲(chǔ)區(qū),是Cortex‐M3用于藏“私房錢”的——包括中斷控制器、MPU 以及各種調(diào)試組件。所有這些設(shè)備均使用固定的地址。通過把基礎(chǔ)設(shè)施的地址定死,就至少在內(nèi)核水平上,為應(yīng)用程序的移植掃清了障礙。因此使用該內(nèi)核的設(shè)計(jì)者必須按照這個(gè)進(jìn)行各自芯片的存儲(chǔ)器結(jié)構(gòu)設(shè)計(jì)。這一點(diǎn)極大地方便了軟件在各種Cortex‐M3 單片機(jī)間的移植。舉個(gè)簡單的例子,各款 Cortex‐M3單片機(jī)的NVIC 和 MPU 都在相同的位置布設(shè)寄存器,使得它們變得通用。盡管如此,Cortex‐M3定出的條條框框是粗線條的,它依然允許芯片制造商靈活地分配存儲(chǔ)器空間,以制造出各具特色的單片機(jī)產(chǎn)品。

存儲(chǔ)空間的一些位置用于調(diào)試組件等私有外設(shè),這個(gè)地址段被稱為“私有外設(shè)區(qū)”。私有外設(shè)區(qū)的組件包括:閃存地址重載及斷點(diǎn)單元(FPB)、數(shù)據(jù)觀察點(diǎn)單元(DWT)、指令跟蹤宏單元(ITM)、嵌入式跟蹤宏單元(ETM)、跟蹤端口接口單元(TPIU) 、ROM 表。

Cortex‐M3的地址空間是 4GB, 程序可以在代碼區(qū),內(nèi)部 SRAM 區(qū)以及外部 RAM 區(qū)中執(zhí)行。但是因?yàn)橹噶羁偩€與數(shù)據(jù)總線是分開的,最理想的是把程序放到代碼區(qū),從而使取指和數(shù)據(jù)訪問各自使用自己的總線,并行不悖。

讓我們先看一看這 4GB 的粗線條劃分:

圖片

圖4 Cortex‐M3預(yù)定義的存儲(chǔ)映射

內(nèi)部 SRAM 區(qū)的大小是 512MB,用于讓芯片制造商連接片上的 SRAM,這個(gè)區(qū)通過系統(tǒng)總線來訪問。在這個(gè)區(qū)的下部,有一個(gè) 1MB 的位帶區(qū),位帶區(qū)就是可以按bit去訪問存儲(chǔ)的字節(jié)地址的內(nèi)容。該位帶區(qū)還有一個(gè)對應(yīng)的32MB 的“位帶別名(alias)區(qū)”,容納了 8M 個(gè)“位變量”(對比 8051 的只有 128 個(gè)位)。位帶區(qū)對應(yīng)的是最低的 1MB 地址范圍,而位帶別名區(qū)里面的每個(gè)字對應(yīng)位帶區(qū)的一個(gè)比特。位帶操作只適用于數(shù)據(jù)訪問,不適用于取指。通過位帶的功能,可以把多個(gè)布爾型數(shù)據(jù)打包在單一的字中,卻依然可以從位帶別名區(qū)中,像訪問普通內(nèi)存一樣地使用它們,位帶別名區(qū)中的訪問操作是原子的。

地址空間的另一個(gè) 512MB 范圍由片上外設(shè)(的寄存器)使用。這個(gè)區(qū)中也有一條32MB的位帶別名,以便于快捷地訪問外設(shè)寄存器。例如,可以方便地訪問各種控制位和狀態(tài)位。

要注意的是,外設(shè)內(nèi)不允許執(zhí)行指令。還有兩個(gè) 1GB的范圍,分別用于連接外部 RAM 和外部設(shè)備,它們之中沒有位帶。兩者的區(qū)別在于外部 RAM 區(qū)允許執(zhí)行指令,而外部設(shè)備區(qū)則不允許。

最后還剩下 0.5GB 的私有空間,Cortex‐M3內(nèi)核的專有外設(shè)就在這里面,包括了系統(tǒng)級組件,內(nèi)部私有外設(shè)總線,外部私有外設(shè)總線,以及由內(nèi)核提供者定義的系統(tǒng)外設(shè)。

三、芯片存儲(chǔ)映射

ARM公司只是大概的規(guī)定了存儲(chǔ)器空間的映射,允許各芯片廠商在指定范圍內(nèi)自行定義和使用這些存儲(chǔ)空間,未分配的空間為保留的地址空間。

STM32的存儲(chǔ)器結(jié)構(gòu)和Cortex-M3的很相似,不同的是,STM32加入了很多實(shí)際的東西,如:Flash、SRAM,片上外設(shè)等。只有加入了這些東西,才能成為一個(gè)擁有實(shí)際意義的、可以工作的處理芯片??蓪ぶ返拇鎯?chǔ)空間分為 8 個(gè)主要塊,每個(gè)塊為 512 MB。未分配給片上存儲(chǔ)器和外設(shè)的所有存儲(chǔ)區(qū)域均視為“保留區(qū)”。

我們對比一下Cortex-M3存儲(chǔ)器結(jié)構(gòu)和STM32存儲(chǔ)器結(jié)構(gòu):

圖片

圖5 Cortex‐M3和STM32存儲(chǔ)結(jié)構(gòu)對比

STM32在ARM規(guī)定的基礎(chǔ)上,將4G空間分為了Block0、Block1、Block2、……、Block7,共8塊,每塊大小為512MB。

圖片

圖6 STM32的存儲(chǔ)映射

0x0000 0000 ~ 0x1FFF FFFF(512MB):作為代碼區(qū),存默認(rèn)的向量表,用于存放下載的代碼。系統(tǒng)上電后,將從該部分讀取代碼;

0x2000 0000 ~ 0x3FFF FFFF(512MB):作為SRAM區(qū),用于存放運(yùn)行代碼。系統(tǒng)上電后,將從Flash讀取代碼,放到SRAM里,CPU再從SRAM讀取代碼運(yùn)行;

0x4000 0000 ~ 0x5FFF FFFF(512MB):作為片上外設(shè)區(qū),用于存放廠商外設(shè)寄存器。如USART,I2C等,要操作外設(shè),即修改這里對應(yīng)的外設(shè)寄存器;

0x6000 0000 ~ 0x9FFF FFFF(1GB):作為片外RAM,用于擴(kuò)展RAM。當(dāng)SRAM或者Flash不夠用時(shí),MCU通過FSMC外接其它IC芯片,則在這個(gè)地址范圍讀寫IC芯片數(shù)據(jù);

0xA000 0000 ~ 0xDFFF FFFF(1GB):作為片外外設(shè)區(qū),用于讀寫擴(kuò)展IC芯片的寄存器。ST只用了這里的一半空間,另外一空間未使用;

0xE000 0000 ~ 0xFFFF FFFF(512MB):作為內(nèi)核外設(shè)區(qū),用于存放Cortex-M3內(nèi)核的內(nèi)部外設(shè)。CortexM3內(nèi)核的內(nèi)部外設(shè)有NVIC、Systick等;

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

我們的程序和常量是存儲(chǔ)在Flash中的,調(diào)試模式下也可以看出PC指針始終指向0x0800 0000后面的Flash區(qū)域。

四、總結(jié)

本篇對STM32芯片內(nèi)部的存儲(chǔ)結(jié)構(gòu)框架進(jìn)行了整體的概述,主要是要對STM32芯片大致的存儲(chǔ)結(jié)構(gòu)有一個(gè)初步的了解,重點(diǎn)是明確片上的FLASH和RAM地址,有助于理解實(shí)際代碼存儲(chǔ)和運(yùn)行的空間位置。而諸如STM32的片上外設(shè)各個(gè)寄存器地址,可以詳細(xì)的去參考具體的芯片手冊獲取各個(gè)外設(shè)具體的寄存器相關(guān)內(nèi)容。

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

    關(guān)注

    68

    文章

    10878

    瀏覽量

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

    關(guān)注

    13

    文章

    4328

    瀏覽量

    85944
  • STM32芯片
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    4395
收藏 人收藏

    評論

    相關(guān)推薦

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

    總線-外部、特定廠商等。導(dǎo)致了,使用該內(nèi)核的設(shè)計(jì)者必須按照這個(gè)進(jìn)行各自芯片存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)。這就可以去了解STM32存儲(chǔ)
    發(fā)表于 08-14 09:22

    存儲(chǔ)器的層次結(jié)構(gòu)及其分類

    目錄【1】存儲(chǔ)器的層次結(jié)構(gòu)【2】存儲(chǔ)器的分類【3】SRAM基本原理:結(jié)構(gòu)芯片參數(shù)與引腳解讀:CPU與SRAM的連接方式【4】DRAM基本原
    發(fā)表于 07-29 06:21

    STM32控制器芯片內(nèi)部的程序存儲(chǔ)空間

    的SRAM及FLASH作為內(nèi)存和程序存儲(chǔ)空間,但當(dāng)程序較大,內(nèi)存和程序空間不足時(shí),就需要在STM32芯片的外部擴(kuò)展存儲(chǔ)器了,擴(kuò)展內(nèi)存時(shí)一般使用SRAM和SDRAM
    發(fā)表于 08-05 06:55

    STM32F4的存儲(chǔ)結(jié)構(gòu)是由哪些部分組成的

    STM32F4的存儲(chǔ)結(jié)構(gòu)是由哪些部分組成的?STM32 Flash的主要特性有哪些?
    發(fā)表于 09-27 08:32

    stm32芯片存儲(chǔ)有多大呢

    stm32有哪幾款芯片呢?stm32芯片存儲(chǔ)有多大呢?
    發(fā)表于 10-26 06:59

    STM32程序在Flash上的存儲(chǔ)結(jié)構(gòu)是怎樣的?

    STM32程序在Flash上的存儲(chǔ)結(jié)構(gòu)是怎樣的?
    發(fā)表于 11-30 07:48

    STM32存儲(chǔ)結(jié)構(gòu)是如何工作的

    14.1 STM32存儲(chǔ)結(jié)構(gòu)的工作原理14.1.1 STM32內(nèi)核(Cortex-M3)的存儲(chǔ)器映射存儲(chǔ)
    發(fā)表于 02-14 06:26

    STM32F407芯片結(jié)構(gòu)的相關(guān)資料分享

    關(guān)于STM32F407芯片結(jié)構(gòu)的個(gè)人認(rèn)知1.芯片內(nèi)部結(jié)構(gòu)(不深究)*內(nèi)核就相當(dāng)于我們電腦中的CPU,它通過總線矩陣與Flash,SRAM,等
    發(fā)表于 02-15 06:22

    STM32學(xué)習(xí)(1)-資料查找,STM32簡介,STM32選型以及芯片內(nèi)部結(jié)構(gòu)

    STM32學(xué)習(xí)(1)-資料查找,STM32簡介,STM32選型以及芯片內(nèi)部結(jié)構(gòu)
    發(fā)表于 11-26 19:51 ?82次下載
    <b class='flag-5'>STM32</b>學(xué)習(xí)(1)-資料查找,<b class='flag-5'>STM32</b>簡介,<b class='flag-5'>STM32</b>選型以及<b class='flag-5'>芯片</b>內(nèi)部<b class='flag-5'>結(jié)構(gòu)</b>圖

    《嵌入式-STM32開發(fā)指南》第二部分 基礎(chǔ)篇 - 第14章 STM32存儲(chǔ)結(jié)構(gòu)(HAL庫)

    14.1 STM32存儲(chǔ)結(jié)構(gòu)的工作原理14.1.1 STM32內(nèi)核(Cortex-M3)的存儲(chǔ)器映射存儲(chǔ)
    發(fā)表于 12-09 13:36 ?5次下載
    《嵌入式-<b class='flag-5'>STM32</b>開發(fā)指南》第二部分 基礎(chǔ)篇 - 第14章 <b class='flag-5'>STM32</b>的<b class='flag-5'>存儲(chǔ)</b><b class='flag-5'>結(jié)構(gòu)</b>(HAL庫)

    關(guān)于STM32F407芯片結(jié)構(gòu)的個(gè)人認(rèn)知

    關(guān)于STM32F407芯片結(jié)構(gòu)的個(gè)人認(rèn)知1.芯片內(nèi)部結(jié)構(gòu)(不深究)*內(nèi)核就相當(dāng)于我們電腦中的CPU,它通過總線矩陣與Flash,SRAM,等
    發(fā)表于 12-16 16:52 ?7次下載
    關(guān)于<b class='flag-5'>STM32</b>F407<b class='flag-5'>芯片</b><b class='flag-5'>結(jié)構(gòu)</b>的個(gè)人認(rèn)知

    AN4767_在STM32微控制器中Flash存儲(chǔ)器雙頻帶結(jié)構(gòu)的優(yōu)化使用

    AN4767_在STM32微控制器中Flash存儲(chǔ)器雙頻帶結(jié)構(gòu)的優(yōu)化使用
    發(fā)表于 11-21 17:07 ?0次下載
    AN4767_在<b class='flag-5'>STM32</b>微控制器中Flash<b class='flag-5'>存儲(chǔ)</b>器雙頻帶<b class='flag-5'>結(jié)構(gòu)</b>的優(yōu)化使用

    淺談STM32芯片存儲(chǔ)結(jié)構(gòu)

    本篇介紹STM32芯片存儲(chǔ)結(jié)構(gòu),ARM公司負(fù)責(zé)提供設(shè)計(jì)內(nèi)核,而其他外設(shè)則為芯片商設(shè)計(jì)并使用,ARM收取其專利費(fèi)用而不參與其他經(jīng)濟(jì)活動(dòng),半導(dǎo)
    的頭像 發(fā)表于 04-19 11:36 ?2573次閱讀
    淺談<b class='flag-5'>STM32</b><b class='flag-5'>芯片</b>的<b class='flag-5'>存儲(chǔ)</b><b class='flag-5'>結(jié)構(gòu)</b>

    stm32 flash寫數(shù)據(jù)怎么存儲(chǔ)

    ,包括其結(jié)構(gòu)、特點(diǎn)以及如何寫入數(shù)據(jù)。 一、STM32 Flash的結(jié)構(gòu) STM32 Flash存儲(chǔ)器通常被分為多個(gè)扇區(qū),每個(gè)扇區(qū)大小為2KB
    的頭像 發(fā)表于 01-31 15:46 ?2451次閱讀

    存儲(chǔ)芯片的內(nèi)部結(jié)構(gòu)及其引腳類型

    的內(nèi)部結(jié)構(gòu)和引腳類型對于它們的功能和與外部設(shè)備的兼容性至關(guān)重要。 存儲(chǔ)芯片的內(nèi)部結(jié)構(gòu) 存儲(chǔ)單元 :存儲(chǔ)
    的頭像 發(fā)表于 09-18 11:04 ?1131次閱讀
    主站蜘蛛池模板: 白丝美女被狂躁免费漫画| 国产亚洲精品欧洲在线视频| 97人人看碰人免费公开视频| 51国产偷自视频在线视频播放| 中文人妻熟妇精品乱又伧| 中文字幕午夜福利片| 99视频免费观看| 成人网站国产在线视频内射视频| 国产69精品久久久久妇女| 国产小伙和50岁熟女23p| 精品一区二区三区在线成人| 麻豆国产MV视频| 日本一卡精品视频免费| 无码国产精品高潮久久9 | yellow视频免费观看高清在线| 成人亚洲视频在线观看| 国产色精品久久人妻无码看片| 精品久久久噜噜噜久久久app| 理论937| 日韩精品久久久久影院| 亚洲精品高清在线| 97人妻精品全国免费视频| 国产69精品9999XXXX| 精品丰满人妻无套内射| 内射白浆一区二区在线观看| 手机在线成人精品视频网| 亚洲综合色在线视频久| 99热这里只有精品88| 国产精品一区二区亚瑟不卡| 久久成人免费大片| 日本女人下面毛茸茸| 亚洲欧美国产综合在线一区| 99精品国产在热久久| 国产精人妻无码一区麻豆| 久久一级视频| 双性h浪荡受bl| 中文字幕人成乱码中国| 高清国语自产拍在线| 久久人妻无码毛片A片麻豆| 日韩一区二区在线免费观看| 一本久道久久综合婷婷五月|