1總線的由來
很多人對總線和地址映射的概念都是一頭霧水,但是我們如果知道為何需要總線和地址映射,他們是在什么背景下被衍化出來的,自然而然對此概念就清清楚楚了。
我們知道CPU都是通過總線訪問外設,例如STM32使用AMBA規范的總線和外設進行交互,那么在總線的概念沒有被提出來的時候,外設是怎樣被訪問的呢?
其實在最早期還沒有總線概念的時候,CPU設計者會直接把CPU內核和各種接口控制器設計到一起,如果要訪問一個硬件,直接在內核里面對各種接口控制器進行操作,從而操作相應的硬件。我們看下圖。
后來設計者發現如果每添加一個外設都要修改CPU內核,這樣不具有很好的擴展性,為了使得外設的改變(增加、刪除、修改)不影響CPU內核架構,衍化出了總線的概念,CPU內核可以通過總線訪問各種各樣外設,新的外設只需要掛接到總線上,就可被CPU內核訪問控制。有了總線,CPU可以用統一的訪問方式訪問任何外設,實現了CPU內核和外設分開設計和維護。
如下圖所示,下圖和CPU內核交互的只有地址總線接口、數據總線接口、控制總線接口,這三個接口一個提供地址、一個提供數據,一個提供控制信息(讀、寫、其他控制信息),所有的外設連接到總線矩陣上。
2 STM32/CPU地址映射
外設怎么知道CPU內核發出的操作是給自己的呢?
其實每一個外設都具有自己的地址空間,當CPU內核通過總線訪問外設時,對應地址空間的外設就知道CPU內核是在操作自己(外設被命中),然后外設去操作連接的硬件,如上圖ROM控制器操作Flash設備。
外設的地址控制怎么分配呢?
答案就是地址映射,地址映射這個過程是在設計芯片的時候就要進行考慮的,地址總線接口如果是32位,則內核可訪問的外設空間最大就是4Gbit,芯片設計者為每一個外設會映射一段地址空間,比如GPIOA映射到0x0000000-0x0000FFFF,則CPU在訪問0x0000000-0x0000FFFF地址空間時會被GPIOA外設捕獲到,至于外設想做什么由外設的硬件設計者來決定。地址總線接口如果是64位,則內核可訪問外設的地址空間為2^64bit。
3 STM32的外設地址映射表
STM32地址總線接口為32位,則可以訪問4Gbit的外設空間,下面為STM32F10X外設地址映射表。有很多還沒有被映射的地址空間,ST公司后期可能用來擴展新外設,而擴展過程Cortex內核是不需要進行任何修改的。
-
cpu
+關注
關注
68文章
10901瀏覽量
212703 -
STM32
+關注
關注
2271文章
10923瀏覽量
357128 -
總線
+關注
關注
10文章
2900瀏覽量
88293 -
地址映射
+關注
關注
0文章
6瀏覽量
2071
發布評論請先 登錄
相關推薦
評論