嵌入式開發硬件相關的概念知識分享
發布者:網上發布
??做嵌入式系統開發,經常要接觸硬件。做嵌入式開發對數字電路和模擬電路要有一定的了解。這樣才能深入的研究下去。下面我們簡單的介紹嵌入式開發中的一些硬件相關的概念。
??總線(Bus)
??在嵌入式系統中一定會有一塊處理器芯片,此外,還有其它的芯片作為外部設備(后面簡稱外設),這些芯片與處理器協作實現產品的功能。復雜的產品往往是由大量的芯片組成的。那么不可避免的是我們需要將所有的外設與處理器進行相連,*為簡單的是將所有的外設都采用獨立(注意是獨立)的信號線連接至處理器,這樣的好處是容易理解,但問題是:不可行。
??因為處理器芯片需要引出太多的線了,從芯片的生產和產品的生產角度來看都不實際。加之,處理器(在此我們假設處理器是單核的,而不是多核的)處理事務在微觀上是串行的,也就是說在某一時刻如果要對外設進行讀寫操作,那只可能是對大量外設中的一個進行,即多個外設不可能在微觀上被處理器同時訪問。
??需要注意的是,這里提出了微觀這一概念,這是為了區別于宏觀。從宏觀上來講,一個處理器中可以有多個任務同時運行,但這些任務在微觀上卻是一個一個運行的(后面會用串行來描述這里所說的“一個一個”),多任務的串行運行實現是由操作系統扮演著重要的角色來實現的。
??回到我們的話題,即然將每個外設采用獨立的信號線連到處理器不可行,且處理器在單一時間內只會對一個外設進行訪問,那我們能不能采用共享的信號線將所有的芯片連在一起呢?這就是總線概念的由來。通俗的說,如果我們周圍有十個家庭,為了讓這十個家庭每兩個之間都能往來,我們并不需要為每兩個家庭修一條單獨(注意是單獨)的路(如果這樣,要修45條路),而是可以修一條大路,然后,每個家都與大路相連。
??對于總線,我們往往說總線是處理器的,而其它的外設是掛在總線上的。那有一個問題,我們每一時間只能訪問掛在總線上的一個外設,那如何區分這些外設呢?和我們的路一樣,我們需要用地址來區分每一個家庭,在總線上,也是采用地址來進行區分的。
??這樣,總線就根據其功能分為兩類了。一類是地址總線,這一總線上的數據只會是從處理器向外設“流”,是單向的。另一類則是數據總線,用來將數據從處理器傳送到外設(從處理器的角度來說是寫操作)或者是將數據從外設傳送到處理器(從處理器的角度來說是讀操作),顯然,數據總線是雙向的。也就是說,在我們的嵌入式系統中同時存在地址總線和數據總線將所有需要與處理器進行通訊的芯片連在一起的。
??總線是有寬度的,正如我們的路分為“三車道”或是“四車道”,我們說32位處理器,是指其數據總線寬度是32位,也就是“有32輛車能同時跑”,顯然,寬度越是寬我們的處理器速度就越是快,因為我們從外設芯片存取數據的速度會更快,這就是為什么我們的計算機向64位發展的原因。同樣的,地址總線也是有寬度的,對于32位處理器其*大寬度也就是32位。