系統包括乙個由多個互相連線的32位ahb匯流排組成的矩陣
– cortex-m4 with fpu core i-bus, d-bus and s-bus– dma1 memory bus
– dma2 memory bus
– dma2 peripheral bus
– ethernet dma bus
– usb otg hs dma bus
– internal flash memory icode bus匯流排矩陣也能夠提供主到從的訪問,從而使能併發訪問,甚至在多個高速外設同時工作的時候也能夠高效工作. 64kbyte的ccm(core coupled memory)資料ram不是匯流排矩陣的一部分– internal flash memory dcode bus
– main internal sram1 (112 kb)
– auxiliary internal sram2 (16 kb)
– ahb1 peripherals including ahb to apb bridges and apb peripherals
– ahb2 peripherals
– fsmc
,只能通過cpu來訪問.
匯流排結構圖:
在stm32中提供了兩個位帶操作域以及對應的位帶別名域
位帶操作域
位帶別名域
sram的低1m位元組 : 0x2000 0000~0x200f ffff
0x2200 0000~0x23ff fffc
外設的低1m位元組 : 0x4000 0000~0x400f ffff
0x4200 0000~0x43ff fffc
bit_word_addr =bit_band_base + (byte_offset x 32) + (bit_number × 4)
0x22006008 = 0x22000000 + (0x300*32) + (2*4)
/* 對0x22006008的讀寫就實現了對0x2000 0300處第2個bit的讀寫 */
/* 同理,若要對0x40000000位址塊進行位操作,需要把上面式子右邊的0x22000000換成0x42000000 */
以後我們想直接操作某個暫存器的某一位的時候,只需要找到這一位對應的別名位址,然後對別名位址進行讀寫即可實現對這一位的讀寫。如果想實現這中操作的話,只需要定義巨集即可,例如下面的:
#define register_bit_band(ofs, bit_num) (0x22000000 + (ofs << 5) + (bit_num << 2))
#define write_r_bit_band(ofs, bit_num, stat) (*((volatile unsigned int *)register_bit_band(ofs, bit_num)) = stat)
//上面兩個巨集可以實現對暫存器位帶域的操作
核心程式設計手冊給出的m系列4gb記憶體分布
我的板子啟動是在main flash memory,由前面的arm編譯工具一節可以知道**從0x08000000開始執行,這個也是由分散載入檔案指定的,也是板子上面main flash實際位址
-main
flash memory
-system memory
-embedded
sram1 (112
kb)-fsmc bank 1 (nor/psram
1and
2)
對映表為
對映到0x00000000位址處的記憶體塊可以由syscfg控制器的(syscfg_memrmp)暫存器低二位決定,如下表所示
bit1
bit0
memory selected00
0110
11可以看出來從main flash啟動的時候flash memory會被重新對映到0位址開始處,大小為1mb
,但是我的板子依然是從0x08000000位址處執行**的,現在由表中資料可以看出來從0位址開始執行也是可以的,可能是為了適應不同的啟動方式,所以才從0x08000000位址處開始執行系統**的。
低電量模式
vos 在 pwr_cr 暫存器的 bit15 位被設定
當 vos = 『0』, fhclk 最大為 144 mhz.等待週期指的是cpu訪問flash的等待時間,cpu訪問flash的週期就是等待週期加上1,這個與flash的硬體效能有關當 vos = 『1』, fhclk 最大為 168 mhz.
STM32之記憶體
記憶體的分類 1 動態記憶體 dram。為什麼稱之為動態記憶體呢?是與他的硬體構成有關。動態隨機儲存器dram 的記憶體單元是以電容的電荷來表示資料。有電荷表示1,無電荷表示0,但是隨著時間的推移,代表1的電荷會放電,代表0的電荷會吸收電荷,因此它需要定期重新整理,所以就有了動態記憶體之稱。重新整理...
STM32的匯流排AMBA AHB APB
一 匯流排的簡單介紹 處理器無疑是計算機中最重要的部件,但並不是唯一的部件。一台計算機也需要隨機訪問儲存器 ram 來存放機器碼指令以便讓處理器執行。計算機還必須有一些方法使這些指令進入ram 輸入裝置 以及一些方法使程式執行結果得以看見 輸出裝置 ram是易失性的,當斷電時,它的內容就會丟失。所以...
STM32匯流排架構筆記
amba是一種soc system of chip 匯流排標準,有amba1.0 2.0 3.0標準。利用amba定義的一款匯流排架構 ahb advanced high performance bus 高階高效能匯流排 asb advanced system bus 高階系統匯流排 apb adv...