Linux驅動設計硬體基礎(二)

2021-08-19 16:56:54 字數 2625 閱讀 3072

2.2 儲存器

儲存器主要可分為唯讀儲存器(rom)、快閃儲存器(flash)、隨機訪問儲存器(ram)、光/磁介質儲存器。

rom還可再細分為不可程式設計rom、可程式設計rom(prom)、可擦除可程式設計rom(eprom)和電可擦除可程式設計rom(e2prom),e2prom完全可以用軟體來擦寫,已經非常方便了。

nor(或非)和nand(與非)是市場上兩種主要的flash快閃儲存器技術。intel於2023年首先開發出nor flash技術,徹底改變了原先由eprom和eeprom一統天下的局面。2023年,東芝公司發表了nand flash結構,每位的成本被大大降低。

nor flash和cpu的介面屬於典型的類sram介面(如圖2.5所示),不需要增加額外的控制電路。nor flash的特點是可晶元內執行,程式可以直接在nor內執行。而nand flash和cpu的介面必須由相應的控制電路進行轉換,也可以通過位址線或gpio產生nand flash介面的訊號。nand flash以塊方式進行訪問,不支援晶元內執行。

圖2.5 典型的類sram介面 

公共快閃儲存器介面(common flash inte***ce,cfi)是乙個從nor flash器件中讀取資料的公開、標準介面。它可以使系統軟體查詢已安裝的flash器件的各種引數,包括器件陣列結構引數、電氣和時間引數以及器件支援的功能等。如果晶元不支援cfi,需使用jedec(

joint electron device engineering council,電子電器裝置聯合會)了。jedec規範的nor無法直接通過命令來讀出容量等資訊,需要讀出製造商id和裝置id,以確定flash的大小。

與nor flash的類sram介面不同,乙個nand flash的介面主要包含如下訊號:

i/o匯流排:位址、指令和資料通過這組匯流排傳輸,一般為

8位或16位。

晶元啟動(chip enable,ce):如果沒有檢測到ce訊號,nand器件就保持待機模式,不對任何控制訊號做出響應。

讀使能(read enable,re):re允許資料輸出。

指令鎖存使能(command latch enable,cle):當cle為高電平時,在we訊號的上公升沿,指令將被鎖存到nand指令暫存器中。

就緒/忙(ready/busy,r/b):如果nand器件忙,r/b訊號將變為低電平。該訊號是漏極開路,需要採用上拉電阻。

nand flash較nor flash容量大,**低;nand flash中每個塊的最大擦寫次數是100萬次,而nor flash的擦寫次數是10萬次;nand flash的擦除、程式設計速度遠超過nor flash。

由於flash固有的電器特性,在讀寫資料過程中,偶然會產生1位或幾位資料錯誤,即位反轉,nand flash發生位反轉的概率要遠大於nor flash。位反轉無法避免,因此,使用nand flash的同時,應採用錯誤探測/錯誤更正(edc/ecc)演算法。

flash的程式設計原理都是只能將1寫為0,而不能將0寫為1。因此,在flash程式設計之前,必須將對應的塊擦除,而擦除的過程就是把所有位都寫為1的過程,塊內的所有位元組變為0xff。另外,flash還存在乙個

負載均衡的問題,不能總是在同一塊位置進行擦除和寫的動作,這樣容易導致壞塊。

目前,nor flash可以使用spi介面進行訪問以節省引腳。相對於傳統的並行nor flash而言,spi nor flash只需要6個引腳就能實現單i/o、雙i/o和4個i/o口的介面通訊,有的spi nor flash還支援ddr模式,能進一步提高訪問速度到80mb/s。

ide(integrated drive electronics)介面可連線硬碟控制器或光碟機,ide介面的訊號與sram類似。通常也把ide介面稱為ata(advanced technology attachment)介面,不過,從技術角度而言,這並不準確。其實,ata介面發展至今,已經經歷了ata-1(ide)、ata-2(enhanced ide/fast ata,eide)、ata-3(fastata-2)、ultra ata、ultra ata/33、ultra ata/66、ultra ata/100及serial ata(sata)的發展過程。

很多soc整合了乙個efuse電程式設計熔絲作為otp(one-time programmable,一次性可程式設計)儲存器。efuse可以通過計算機對晶元內部的引數和功能進行配置,這一般是在晶元出廠的時已經設定好了。

以上所述的各種rom、flash和磁介質儲存器都屬於非易失性儲存器(nvm)的範疇,掉電時資訊不會丟失,而ram則與此相反。

ram也可再分為靜態ram(sram)和動態ram(dram)。dram以電荷形式進行儲存,資料儲存在電容器中。由於電容器會因漏電而出現電荷丟失,所以dram器件需要定期重新整理。sram是靜態的,只要供電它就會保持乙個值,sram沒有重新整理周期。每個sram儲存單元由6個電晶體組成,而dram儲存單元由1個電晶體和1個電容器組成。

通常所說的sdram、ddr sdram皆屬於dram的範疇,它們採用與cpu外存控制器同步的時鐘工作(注意,不是與cpu的工作頻率一致)。與sdram相比,ddr sdram同時利用了時鐘脈衝的上公升沿和下降沿傳輸資料,因此在時鐘頻率不變的情況下,資料傳輸頻率加倍。此外,還存在使用rsl(rambus signaling level,rambus發信電平)技術的rdram(rambus dram)和direct rdram。

linux驅動設計的硬體基礎

一。處理器 微處理器 mpu 通常代表乙個cpu,而微控制器 mcu 則強調把 處理器 儲存器,和外圍電路整合在乙個晶元中 cpld 複雜可程式設計邏輯器件 fpga 現場可程式設計門列陣 二。儲存器 flash的程式設計原理都是只能將 1 寫成 0 三。介面和匯流排 串列埠 cpu ab,db,c...

linux硬體驅動層

1.make menuconfig scripts kconfig lxdialog menubox.o in function print buttons menubox.c text 0x4b1 undefined reference to wrefresh collect2 ld 返回 1 m...

硬體設計基礎步驟

1 總體思路。設計硬體電路,大的框架和架構要搞清楚,但要做到這一點還真不容易。有些大框架也許自己的老闆 老師已經想好,自己只是把思路具體實現 但也有些要自己設計框架的,那就要搞清楚要實現什麼功能,然後找找有否能實現同樣或相似功能的參考電路板 要懂得盡量利用他人的成果,越是有經驗的工程師越會懂得借鑑他...