STM32儲存器結構 儲存器對映

2021-08-14 14:33:09 字數 3039 閱讀 7103

問題: 

1   什麼是儲存器對映?是怎麼乙個運作過程?

2   stm32總體架構

3   cm3核心結構

以下**:

1 stm32系統結構

要想深刻理解stm32的儲存器,需要首先知道stm32的系統結構。

如figure 1,是stm32系統結構框圖。

根據stm32 reference manual (rm0008)中的描述,如圖:

可以得知stm32系統結構的組成,每乙個模組更為詳細的內容,請參考相關文件。

rm0008文件中可以看出,stm32採用的是cortex-m3核心,因此,有必要了解cortex-m3的儲存器結構。

圖中還可以看出,cortex-m3是通過各個匯流排和flash、srom相連線的。

2 stm32核心(cortex-m3)的結構

以下是cortex-m3模組框圖:

該cortex-m3核心通過i-code、d-code、system匯流排與stm32內部的flash、srom相連線的,該種連線情況直接關係到stm32儲存器的結構組織;也就是說,cortex-m3的儲存器結構決定了stm32的儲存器結構。

這裡可能說的比較籠統,可以這樣理解:cortex-m3是乙個核心,自身定義了乙個儲存器結構,st公司按照cortex-m3的這個儲存器定義,設計出了自己的儲存器結構;但是st公司的stm32的儲存器結構必須按照cortex-m3這個定義的儲存器結構來進行設計。

舉個例子:

我買了乙個做飯的調料盒子,有三塊區域(假設儲存器分為3塊),上面分別標有鹽(flash)、糖(srom)、味精(peripheral);此時,該調料盒子並沒有任何意義(對應cortex-m3核心);我按照標籤放入特定品牌、特定分量的鹽(flash)、糖(srom)、味精(peripheral),產生乙個有實際意義的調料盒(各類cortex-m3核心的晶元,如stm32)。

期間,調料位置不能放錯,但可以不放。由上面的例子可以看出,空的調料盒子決定了有意義的調料盒子存放調料的結構。因此,只要了解空盒子的儲存結構,就可以很清楚的明白當有調料時的用法了。

3 stm32核心(cortex-m3)的儲存器對映

儲存器對映是指把晶元中或晶元外的flash,ram,外設,bootblock等進行統一編址。即用位址來表示物件。這個位址絕大多數是由廠家規定好的,使用者只能用而不能改。使用者只能在掛外部ram或flash的情況下可進行自定義。

如圖,是cortex-m3儲存器對映結構圖。

cortex-m3是32位的核心,因此其pc指標可以指向2^32=4g的位址空間,也就是0x0000_0000——0xffff_ffff這一大塊空間。

好,根據圖中描述,cortex-m3核心將0x0000_0000——0xffff_ffff這塊4g大小的空間分成8大塊:**、sram、外設、外部ram、外部裝置、專用外設匯流排-內部、專用外設匯流排-外部、特定廠商等。導致了,使用該核心的設計者必須按照這個進行各自晶元的儲存器結構設計。

這就可以去了解stm32的儲存器結構,以及為什麼這樣設計stm32儲存器的結構了。

4 stm32儲存器結構

首先,我們對比一下cortex-m3儲存器結構和stm32儲存器結構:

圖中可以很清晰的看到,stm32的儲存器結構和cortex-m3的很相似,不同的是,stm32加入了很多實際的東西,如:flash、sram等。只有加入了這些東西,才能成為乙個擁有實際意義的、可以工作的處理晶元——stm32。

stm32的儲存器位址空間被劃分為大小相等的8塊區域,每塊區域大小為512mb。

對stm32儲存器知識的掌握,實際上就是對flash和sram這兩個區域知識的掌握。因此,下面將重點描述flash和sram的知識。

5 stm32的sram

不同型別的stm32微控制器的sram大小是不一樣的,但是他們的起始位址都是0x2000 0000,終止位址都是0x2000 0000+其固定的容量大小。

sram的理解比較簡單,其作用是用來訪問各種動態的輸入輸出資料、中間計算結果以及與外部儲存器交換的資料和暫存資料。裝置斷電後,sram中儲存的資料就會丟失。

6 stm32的flash

stm32的flash,嚴格說,應該是flash模組。

該flash模組包括:flash主儲存區(main memory)、flash資訊區(information block),以及flash儲存介面暫存器區(flash memory inte***ce)。

三個組成部分分別在0x0000 0000——0xffff ffff不同的區域,如圖(小密度的stm32)所示:

圖中完全可以看出flash模組中的三個組成部分在整個儲存器中的位置。

具體的內部區域的意義及功能請參見程式設計手冊pm0042,裡面很詳細。

7 stm32儲存器結構總結

圖中淡藍色就是你需要知道的。

peripherals:外設的儲存器對映,對該區域操作,就是對相應的外設進行操作;

sram:執行時臨時存放**的地方;

flash:存放**的地方;

system memory:stm32出廠時自帶的你只能使用,不能寫或擦除;

option bytes:可以按照使用者的需要進行配置(如配置看門狗為硬體實現還是軟體實現);

今後,你的編寫**、程式執行、暫存器設定、icp、iap都依靠這些東西。

至此,關於《stm32儲存器》知識已經結束.

《rm0008 reference manual》

《cortex-m3技術參考手冊》

《pm0042 programming manual:stm32f10*** flash programming》

等等;另外也參考了很多無私網友的奉獻,在此感謝。

《stm32的儲存器》

《stm32儲存器知識的相關應用(iap、bit banding)》

《stm32實現iap(上位機和iap程式設計)》

如果有需要另外兩篇篇筆記,可以聯絡我:[email protected]

謝謝!

stm32儲存結構 儲存器對映

問題 1 什麼是儲存器對映?是怎麼乙個運作過程?2 stm32總體架構 3 cm3核心結構 1 stm32系統結構 要想深刻理解stm32的儲存器,需要首先知道stm32的系統結構。如figure 1,是stm32系統結構框圖。根據stm32 reference manual rm0008 中的描述...

STM32儲存器對映

stm32儲存器對映 1 cortex m3儲存器對映cm3的位址空間有4g,但它只對這4g空間作了預先的定義,把4g空間分成8個塊,每塊大小為512m,並指出各段該分給哪些裝置。具體的實現由晶元廠商決定,廠商可以設計出具有自己特色的產品。下圖是cm3的儲存器對映圖 來自cm3權威指南 1.1 st...

STM32儲存器位址對映

上圖是stm32的儲存器位址對映圖,位址範圍為 0x0000 0000 0xffff ffff 其中 區的位址是從0x0800 0000開始的,結束於0x0800 0000 晶元的flash的大小,ram的起始位址是0x2000 0000,結束於0x2000 0000 晶元的ram大小。支援位帶操作...