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