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