嵌入式系統(tǒng),應(yīng)該是后PC時(shí)代的重要特征。其概念,一句話就是:軟件加硬件的系統(tǒng)。當(dāng)我們?cè)跒殡娔X的超強(qiáng)分析和處理能力驚嘆不已的時(shí)候,在本質(zhì)上具備這種能力,但價(jià)格低廉且具有很強(qiáng)針對(duì)性的嵌入式系統(tǒng),已慢慢滲透到我們的日常生活當(dāng)中了。因?yàn)閮r(jià)格低廉,所以這種系統(tǒng),可以大量生產(chǎn),到處都可以存在。因?yàn)橛泻軓?qiáng)的針對(duì)性,所以這種系統(tǒng)總是以不同的表現(xiàn)形式、不同的功能出現(xiàn)。但嵌入式系統(tǒng),也有一些共同點(diǎn),比如都有核心處理單元、都有存儲(chǔ)單元,更重要的是都需要電才能工作。
核心處理器
嵌入式系統(tǒng)的核心處理器真的很多很多,估計(jì)超過1000多種,最常見的是ARM系列,ARM7、ARM9、ARM11、Cortex-A8等。當(dāng)剛剛接觸ARM7的時(shí)候,覺得ARM9是很高檔的了,根本不敢去想ARM11會(huì)是一個(gè)什么樣的高度。于是拼命地去熟悉ARM7的系統(tǒng)架構(gòu),寄存器設(shè)置,匯編指令,覺得很復(fù)雜。但還是要下決心要搞懂細(xì)節(jié),因?yàn)橛X得懂得越多,使用此款處理器就可以越靈活,越有信心。現(xiàn)在ARM9使用還沒回過神來的時(shí)候,立刻就用上了ARM11 8級(jí)流水線的CPU,只是覺得ARM11處理速度快了一些,但其它的區(qū)別還是一無所知。其實(shí)慢慢也明白了,我們是在搞嵌入式系統(tǒng)開發(fā),而不是搞CPU研發(fā),有些技術(shù)細(xì)節(jié)是不一定要很清楚的。只要知道這一款處理器的基本架構(gòu),知道到哪里查找此處理器的相關(guān)資料就足夠了。一般CPU提供商,都會(huì)提供初始化代碼、啟動(dòng)代碼和編譯器的對(duì)應(yīng)編譯選項(xiàng),我們就放心編譯使用吧。
存儲(chǔ)設(shè)備
嵌入式系統(tǒng)的存儲(chǔ)設(shè)備也很多,有ROM、SRAM、SDRAM、DDR、NandFlash、NorFlash等。通常一個(gè)復(fù)雜的嵌入式設(shè)備可以同時(shí)具備幾種類型的存儲(chǔ)設(shè)備,如一個(gè)系統(tǒng)同時(shí)具備SRAM、DDR、NorFlash、NandFlash,不像個(gè)人電腦都只要內(nèi)存條(DDR)就夠了。不同的存儲(chǔ)設(shè)備,雖然都是為了存取數(shù)據(jù),但操作起來完全不一樣。有些很簡單 如SRAM 送地址取數(shù)據(jù)就行了,有些比較復(fù)雜 如DDR 既要行列地址分開送,還要不斷地發(fā)送刷新命令。才能取到正確的數(shù)據(jù),有些更復(fù)雜 如 NandFlash 發(fā)送的是Fash內(nèi)部的塊地址、頁地址,讀取時(shí)要一頁一頁讀取,而擦除的時(shí)候卻是一個(gè)塊一個(gè)塊地擦。且出廠的時(shí)候是允許存在壞塊的現(xiàn)象,讀取數(shù)據(jù)的時(shí)候,可能會(huì)出現(xiàn)bit(位)錯(cuò)誤,需要ECC校驗(yàn)糾正過來。以前我一直想不明白,為什么嵌入式系統(tǒng)有這么多五花八門的存儲(chǔ)設(shè)備。難道是像手機(jī)電池那樣,因?yàn)闆]有統(tǒng)一的標(biāo)準(zhǔn),而導(dǎo)致的。其實(shí)各種各樣的存儲(chǔ)設(shè)備出現(xiàn),一切都是為了容量和價(jià)格的平衡。簡單方便的存儲(chǔ)設(shè)備當(dāng)然好用,但bit(位)價(jià)格不菲,而復(fù)雜不是很穩(wěn)定的存儲(chǔ)設(shè)備,容量大價(jià)格便宜。嵌入式系統(tǒng)特點(diǎn)就是產(chǎn)量大、價(jià)格低廉、功能對(duì)應(yīng),如果能用便宜代替高價(jià)的實(shí)現(xiàn)同樣效果,技術(shù)上復(fù)雜一點(diǎn)又何妨。同一個(gè)設(shè)備,掛接不同的存儲(chǔ)設(shè)備,也是為了價(jià)格、速度、容量的平衡。對(duì)于老板來說,可能是繁瑣了一點(diǎn),但便宜能賺錢,就是好方案。
芯片內(nèi)部的設(shè)備
嵌入式系統(tǒng),有個(gè)顯著的特點(diǎn),就是高集成度。通常芯片內(nèi)部,除了有處理器外,還有集成了很多設(shè)備,如LCD控制器、USB控制器、RTC、SPI、IIC等,如果一些高級(jí)一點(diǎn)的嵌入式芯片,內(nèi)部可能還集成了3D加速、JPEG解碼 等。這些設(shè)備一般都是通過內(nèi)部總線連接起來,并通過對(duì)應(yīng)的寄存器進(jìn)行控制。所以我們要使用芯片內(nèi)部的某個(gè)設(shè)備,其實(shí)也不是很復(fù)雜。一般是先找到芯片內(nèi)部的電源控制寄存器(或設(shè)備使能寄存器)打開該設(shè)備的電源(使能該設(shè)備),然后找到該設(shè)備的相關(guān)寄存器,復(fù)位設(shè)備,使能相應(yīng)的功能,就可以使用了。