1. 程式人生 > >驅動開發必備硬體知識

驅動開發必備硬體知識

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