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