精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

STM32芯片的存儲結構

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

一、前言

本篇介紹STM32芯片的存儲結構,ARM公司負責提供設計內核,而其他外設則為芯片商設計并使用,ARM收取其專利費用而不參與其他經濟活動,半導體芯片廠商拿到內核授權后,根據產品需求,添加各類組件,生產芯片售賣。圖1為STM32的組成示意圖,其中Cortex-M3內核、調試系統都是ARM公司設計,內部總線、外設、存儲、時鐘復位等都由ST公司開發。可以明顯看出總線是cpu、內存、外設傳遞信息的公用通道,芯片上的各個部件通過總線相連接。

圖片

圖1 STM32芯片簡要結構圖

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

二、內核存儲結構

圖片

圖2 存儲結構框架

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

圖片

圖3 Cortex‐M3存儲結構

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

Cortex‐M3的內部擁有一個總線基礎設施,專用于優化對這種存儲器結構的使用。在此之上, Cortex‐M3甚至還允許這些區域之間“越權使用”。比如說,數據存儲器也可以被放到代碼區,而且代碼也能夠在外部 RAM 區中執行。

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

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

Cortex‐M3的地址空間是 4GB, 程序可以在代碼區,內部 SRAM 區以及外部 RAM 區中執行。但是因為指令總線與數據總線是分開的,最理想的是把程序放到代碼區,從而使取指和數據訪問各自使用自己的總線,并行不悖。

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

圖片

圖4 Cortex‐M3預定義的存儲映射

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

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

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

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

三、芯片存儲映射

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

STM32的存儲器結構和Cortex-M3的很相似,不同的是,STM32加入了很多實際的東西,如:Flash、SRAM,片上外設等。只有加入了這些東西,才能成為一個擁有實際意義的、可以工作的處理芯片。可尋址的存儲空間分為 8 個主要塊,每個塊為 512 MB。未分配給片上存儲器和外設的所有存儲區域均視為“保留區”。

我們對比一下Cortex-M3存儲器結構和STM32存儲器結構:

圖片

圖5 Cortex‐M3和STM32存儲結構對比

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

圖片

圖6 STM32的存儲映射

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

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

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

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

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

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

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

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

四、總結

本篇對STM32芯片內部的存儲結構框架進行了整體的概述,主要是要對STM32芯片大致的存儲結構有一個初步的了解,重點是明確片上的FLASH和RAM地址,有助于理解實際代碼存儲和運行的空間位置。而諸如STM32的片上外設各個寄存器地址,可以詳細的去參考具體的芯片手冊獲取各個外設具體的寄存器相關內容。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10829

    瀏覽量

    211186
  • 存儲
    +關注

    關注

    13

    文章

    4266

    瀏覽量

    85686
  • STM32芯片
    +關注

    關注

    0

    文章

    38

    瀏覽量

    4366
收藏 人收藏

    評論

    相關推薦

    stm32存儲結構& 存儲器映射

    總線-外部、特定廠商等。導致了,使用該內核的設計者必須按照這個進行各自芯片存儲結構設計。這就可以去了解STM32存儲
    發表于 08-14 09:22

    存儲器的層次結構及其分類

    目錄【1】存儲器的層次結構【2】存儲器的分類【3】SRAM基本原理:結構芯片參數與引腳解讀:CPU與SRAM的連接方式【4】DRAM基本原
    發表于 07-29 06:21

    STM32控制器芯片內部的程序存儲空間

    的SRAM及FLASH作為內存和程序存儲空間,但當程序較大,內存和程序空間不足時,就需要在STM32芯片的外部擴展存儲器了,擴展內存時一般使用SRAM和SDRAM
    發表于 08-05 06:55

    STM32F4的存儲結構是由哪些部分組成的

    STM32F4的存儲結構是由哪些部分組成的?STM32 Flash的主要特性有哪些?
    發表于 09-27 08:32

    stm32芯片存儲有多大呢

    stm32有哪幾款芯片呢?stm32芯片存儲有多大呢?
    發表于 10-26 06:59

    STM32程序在Flash上的存儲結構是怎樣的?

    STM32程序在Flash上的存儲結構是怎樣的?
    發表于 11-30 07:48

    STM32存儲結構是如何工作的

    14.1 STM32存儲結構的工作原理14.1.1 STM32內核(Cortex-M3)的存儲器映射存儲
    發表于 02-14 06:26

    STM32F407芯片結構的相關資料分享

    關于STM32F407芯片結構的個人認知1.芯片內部結構(不深究)*內核就相當于我們電腦中的CPU,它通過總線矩陣與Flash,SRAM,等
    發表于 02-15 06:22

    STM32學習(1)-資料查找,STM32簡介,STM32選型以及芯片內部結構

    STM32學習(1)-資料查找,STM32簡介,STM32選型以及芯片內部結構
    發表于 11-26 19:51 ?82次下載
    <b class='flag-5'>STM32</b>學習(1)-資料查找,<b class='flag-5'>STM32</b>簡介,<b class='flag-5'>STM32</b>選型以及<b class='flag-5'>芯片</b>內部<b class='flag-5'>結構</b>圖

    《嵌入式-STM32開發指南》第二部分 基礎篇 - 第14章 STM32存儲結構(HAL庫)

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

    關于STM32F407芯片結構的個人認知

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

    AN4767_在STM32微控制器中Flash存儲器雙頻帶結構的優化使用

    AN4767_在STM32微控制器中Flash存儲器雙頻帶結構的優化使用
    發表于 11-21 17:07 ?0次下載
    AN4767_在<b class='flag-5'>STM32</b>微控制器中Flash<b class='flag-5'>存儲</b>器雙頻帶<b class='flag-5'>結構</b>的優化使用

    淺談STM32芯片存儲結構

    本篇介紹STM32芯片存儲結構,ARM公司負責提供設計內核,而其他外設則為芯片商設計并使用,ARM收取其專利費用而不參與其他經濟活動,半導
    的頭像 發表于 04-19 11:36 ?2442次閱讀
    淺談<b class='flag-5'>STM32</b><b class='flag-5'>芯片</b>的<b class='flag-5'>存儲</b><b class='flag-5'>結構</b>

    stm32 flash寫數據怎么存儲

    ,包括其結構、特點以及如何寫入數據。 一、STM32 Flash的結構 STM32 Flash存儲器通常被分為多個扇區,每個扇區大小為2KB
    的頭像 發表于 01-31 15:46 ?2277次閱讀

    存儲芯片的內部結構及其引腳類型

    的內部結構和引腳類型對于它們的功能和與外部設備的兼容性至關重要。 存儲芯片的內部結構 存儲單元 :存儲
    的頭像 發表于 09-18 11:04 ?672次閱讀