在嵌入式領(lǐng)域,可分為硬件開發(fā)和軟件開發(fā)。對于軟件開發(fā)又可分為底層開發(fā)(模塊驅(qū)動編寫,uboot,內(nèi)核),上層開發(fā)(應(yīng)用,QT)。 作為一名軟件驅(qū)動開發(fā)的工程師,我們不需要去設(shè)計硬件的原理圖,PCB。我們只需看懂硬件開發(fā)人員提供的硬件模塊時序就行了,但是我們應(yīng)該也需了解如下硬件知識。
一)處理器
1,可分為通用處理器(單片機,ARM),數(shù)字處理器(DSP),其他專用處理器(FPGA)
在通用處理器領(lǐng)域中,采用的內(nèi)核有51,AVR,PIC,ARM。在當今通用處理器芯片大多數(shù)采用ARM架構(gòu)并且多采用SOC的芯片設(shè)計方法,集成了各種功能模塊(圖形處理器,視頻解碼器,浮點協(xié)處理器,GPS,WIFI等),每一種功能都是由硬件描述語言設(shè)計程序,然后在Soc內(nèi)由電路連接實現(xiàn)。
主流的ARM移動處理芯片供應(yīng)商有:高通,三星,英偉達,美滿,聯(lián)發(fā)科,海思(哪個國家的?尷尬了)。
中央處理器的體系結(jié)構(gòu):馮.諾依曼結(jié)構(gòu)(程序指令存儲器和數(shù)據(jù)存儲器合并在一起的存儲結(jié)構(gòu)),哈佛結(jié)構(gòu)(程序指令存儲器和數(shù)據(jù)存儲器分開的存儲結(jié)構(gòu))。
指令集:RISC(精簡指令集計算機)和CISC(復(fù)雜指令集計算機)。CISC強調(diào)增強指令的能力,減少目標代碼數(shù)量,但指令復(fù)雜,指令周期長。RISC強調(diào)盡量減少指令集,指令單周期執(zhí)行,但是目標代碼會更大。ARM,MIPS等內(nèi)核CPU都采用了RISC指令集。
2,數(shù)字信號處理器:針對通信,圖像,語音,視頻處理等領(lǐng)域的算法設(shè)計。它包含的硬件乘法器,DSP的乘法指令一般在單周期內(nèi)完成,且優(yōu)化了卷積,數(shù)字濾波,F(xiàn)FT,相關(guān)矩陣運算等算法中的大量重復(fù)乘法。
德州儀器(TI),美國模擬器件公司(ADI)是全球DSP的兩大主廠商。
3,其他專用處理器:為某種應(yīng)用的特定設(shè)計。采用ASIC,CPLD/FPGA等實現(xiàn)。 在實際項目的硬件方案中,往往會根據(jù)應(yīng)用的需求方案選擇通用處理器,數(shù)字處理器,特定領(lǐng)域處理器,CPLD/FPGA或ASIC之一的解決方案,在復(fù)雜系統(tǒng)中,這些芯片可同時存在,協(xié)同合作,各自發(fā)揮自己的長處。(ARM+DSP+FPGA)。
二 存儲器
存儲器主要可分為只讀存儲器(ROM),閃存(Flash),隨機存取存儲器(RAM)。
1,ROM在可細分為:不可編程ROM ,可編程ROM,電可擦除可編程ROM(E2PROM),它可完全用軟件來擦寫。
2,F(xiàn)LASH可分為NOR(或非),NAND(與非)兩種,Intel于1988年首先開發(fā)出Nor flash 技術(shù),緊接著1989年,東芝發(fā)表了NAND flash結(jié)構(gòu),徹底改變了原先的EPROM,EEPROM壟斷的地位。
Nor Flash:程序可直接在nor中執(zhí)行,支持位擦寫,支持SPI接口,存儲量小。
Nand Flash:儲存量大,頁擦除,占用的I/O多。
3,RAM可分為靜態(tài)RAM和動態(tài)RAM。動態(tài)RAM儲存在電容中,擦寫速度快,由于電容器有漏電現(xiàn)象,因此需要定期刷新。靜態(tài)RAM不需要定期刷新電路,儲存速度慢。(好壞,快慢都是相比較而言的)
4,其他 嵌入式系統(tǒng)中往往還有些特定類型的RAM
雙端口RAM:具有兩套完全獨立的地址,數(shù)據(jù)總線,用于兩個處理器之間的數(shù)據(jù)交互,具有同時讀寫的的功能。
內(nèi)容尋址RAM(CAM):以內(nèi)容進行尋址的存儲器,是一種特殊的存儲陣列RAM,它的主要工作機制就是同時將一個輸入的數(shù)據(jù)與存儲在CAM中的所有數(shù)據(jù)自動進行比較,判斷該輸入數(shù)據(jù)項與CAM中存儲單元的數(shù)據(jù)項是否相匹配,并輸出該數(shù)據(jù)項對應(yīng)的匹配信息。
FIFO:先進先出隊列:特點是先進先出,進出有序,FIFO多用于數(shù)據(jù)緩沖。
三 接口與總線
1,串口:RS-232是一種單機發(fā)送,多機接收的單向,平衡傳輸規(guī)范,后來發(fā)展的RS-422改進了RS232通信距離短,通信速度慢的特點,在RS-485中,又增加了多點,雙向通信能力,即允許多個發(fā)送器連接在一條總線上。串口電路組成部分:CPU---UART--RS-232芯片---連接器(接口芯片)。
2,I2C
I2C總線是由Philips公司開發(fā)的兩線式串行總線,產(chǎn)生于20世紀80年代,用于連接微控制器及外圍設(shè)備。I2C總線支持多主控,但需要注意的是在任意時刻只能有一個主控。
相應(yīng)時序:當SCL穩(wěn)定在高電平時,SDA由高向低的變化將產(chǎn)生一個開始位,而且由低到高變化,則產(chǎn)生一個停止位。(都有注主設(shè)備產(chǎn)生)
在選擇設(shè)別時:主設(shè)備需要首先發(fā)送一個字節(jié)的地址信息,前7位代表地址信息,最后一位代表讀寫信息。
數(shù)據(jù)通信:在第9個上升沿來到之前,從設(shè)備應(yīng)該發(fā)出一個ACK位。結(jié)束時,SCL穩(wěn)定保持在高電平期間,SDA從低向高,產(chǎn)生停止信號。
3 SPI
SPI總線系統(tǒng)是一種同步串行外設(shè)接口,它可以使CPU與各種外圍設(shè)別以串行的方式進行通信。SPI接口一般使用4條線,串行時鐘線,主機輸入/從機輸出數(shù)據(jù)線(MOSI),主機輸出/叢機輸入線(MOSI),和低電平有效的數(shù)據(jù)選擇線(SS)。
4 USB
USB:具有數(shù)據(jù)傳輸高,易擴展,支持熱插拔等特點。在USB1.1中傳輸速度有12Mbit/s,在USB2.0中,傳輸速率達到480Mbit/s。在USB3.0中,傳輸速率甚至高達5.0Gbit/s。在USB2.0總線的機械連接非常簡單,采用4芯的屏蔽線,一對差分線(D+,D-)傳輸信號,另一對(VBUS,電源地)傳送+5v的直流電。
5 以太網(wǎng)接口
以太網(wǎng)接口由MAC(以太網(wǎng)媒體接入控制器)和PHY(物理接口收發(fā)器)組成。以太網(wǎng)MAC由IEEE802.3以太網(wǎng)標準定義,實現(xiàn)數(shù)據(jù)鏈路層。常用的MAC支持10Mbit/s和100Mbit/s兩種速率。吉比特網(wǎng)是快速以太網(wǎng)的下一代,速度將高達1000Mbit/s.
6 PCI和PCI-E
PCI是一種局部總線,作為一種通用的總線接口標準,它目前在計算機系統(tǒng)中得到了非常廣泛的應(yīng)用。
7 SD和SDIO
SD是一種關(guān)于FLASH的儲存卡的標準,也就是一般常見的SD記憶卡,在設(shè)計上與MMC保持兼容。
SDIO在SD標準的基礎(chǔ)上,定義了儲存卡以外的外設(shè)接口。
四 CPLD和FPGA
CPLD由完全可編程的與或門陣列以及宏單元構(gòu)成。 與CPLD不同,F(xiàn)PGA(現(xiàn)場可編程門陣列)基于LUT(查找表)工藝。CPLD和FPGA的主要廠商有Altera,Xilinx和Lattice等,它們專門的開發(fā)流程,在設(shè)計階段使用HDL編程。它們可實現(xiàn)許多復(fù)雜功能,如實現(xiàn)USART,I2C等I/O控制芯片,通信算法,音視頻解碼算法等。甚至還可以直接集成ARM等CPU內(nèi)核和外圍電路。對于驅(qū)動工程師而言,我們就直接把它看成由很多邏輯門(與 或 非)組成的可完成一系列功能的芯片。如果完成的功能是CPU,我們就直接把它看成是CPU。驅(qū)動工程師眼里的硬件要比IC設(shè)計師要宏觀。