A. 內存問題 請問內存就一定是RAM嗎 SDRAM有什麼區別 像EEPROM 和nandflash或者norflash可以作為內存嗎
先說RAM吧!!
由字面意思就可以理解,SDRAM SRAM DRAM都可以統稱RAM,random access memory的縮寫,只是前面加了幾個修飾詞而已。
SRAM:靜態隨機存儲器,就是它不需要刷新電路,不像動態隨機存儲器那樣,每隔一段時間就要刷新一次數據。但是他集成度比較低,不適合做容量大的內存,一般是用在處理器的緩存裡面。像S3C2440的ARM9處理器裡面就有4K的SRAM用來做CPU啟動時用的。
SDRAM:同步動態隨機存儲器,像電腦的內存就是用的這種RAM叫DDR SDRAM。其集成度非常高,因為是動態的,所以必須有刷新電路,每隔一段時間必須得刷新數據。其存儲單元不是按線性排列的,是分頁的。一般的嵌入式產品裡面的內存都是用的SDRAM。
DRAM:動態隨機存儲器,SDRAM只是其中的一種吧,沒用過,不怎麼清楚。
ROM:只讀存儲器的總稱。
PROM:可編程只讀存儲器,只能寫一次,寫錯了就得報廢,現在用得很少了,好像那些成本比較低的OPT單片機裡面用的就是這種存儲器吧。
EPRM:沒見過,不知道什麼東西。網上也找不到相關的東西。是EPROM吧?
EPROM:可擦除可編程存儲器,這東西也比較古老了,是EEPROM的前身,在晶元的上面有個窗口,通過紫外線的照射來擦除數據。非常之麻煩。
EEPROM:電可擦除可編程只讀存儲器,比之EPROM就先進點了,可以用電來擦除裡面對數據,也是現在用得比較多的存儲器,比如24CXX系列的EEPROM。
NANDFLASH和NORFLASH都是現在用得比較多的非易失性快閃記憶體。NOR採用的並行介面,其特點讀取的速度比之NAND快樂很多倍,其程序可以直接在NOR裡面運行。但是它的擦除速度比較慢,集成度低,成本高的。現在的NOR的容量一般在2M左右,一般是用在代碼量小的嵌入式產品方面。還有就是在ARM9的開發板上可以看見。
而NAND呢,採用的是串列的介面,CPU從裡面讀取數據的速度很慢,所以一般用NAND做快閃記憶體的話就必須把NAND裡面的數據先讀到內存裡面,然後CPU才能夠執行。就跟電腦的硬碟樣的。但是它的集成度很高,我的ARM9的開發板上面一塊256M的NAND還沒有一塊2M的NOR的一半大,所以成本很低。還有就是它的擦除速度也的NOR要快。要不然的話那就真的悲劇了,假如擦除一塊2M的NOR要一分鍾,如果NAND的擦除速度比NOR還要慢,那擦除一塊256M的NAND不是要幾個小時。NAND一般是用在那些要跑大型的操作系統的嵌入式產品上面,比如linux啊,WINCE啊。NOR可是可以跑,可以把LINUX操作系統剪裁到2M以內,一個產品難道只去跑系統嗎?用戶的應用程序呢!其實很多時候,一個嵌入式產品裡面,操作系統占的存儲空間只是一小部分,大部分都是給用戶跑應用程序的。就像電腦,硬碟都是幾百G,可是WINDOWNS操作系統所佔的空間也不過幾G而已。
我知道的都說了,忘採納
B. Linux 內核驅動解析 - UBI壞塊預留大小
在處理ubifs相關bug的過程中,學習了ubi驅動對壞塊保留分區的處理方式。ubi是Unsorted Block Image的簡稱,構建於MTD之上,可操控大容量的Nand flash。mtd是用於訪問內存設備(如RAM, Flash)的Linux 子系統。在嵌入式linux設備中,每個分區對應一個/dev/mtdxx文件。對於數據分區,即mtd20,學習了其對壞塊的保留處理。UBI headers在每個非壞塊物理擦除塊的開頭存儲了兩個小的64位元組頭部。在內核UBI驅動的build.c/ubi_attach_mtd_dev函數中列印了UBI設備的載入信息。通過console log,可以獲取掛載的分區名稱、PEB和LEB大小、UBI共包含的LEBs數量及剩餘LEBs數量、無壞塊數量以及用於壞塊處理的保留部分大小。開機過程中自動列印的UBI信息可以通過手動運行ubinfo命令獲取。用戶空間的ubi-utils代碼庫中的ubinfo.c/print_dev_info函數列印保留大小,值來源於/sys/class/ubi/ubi0/reserved_for_bad文件。內核空間的ubi_attach_mtd_dev函數用於附加MTD設備到UBI並分配@ubi_num給新創建的UBI設備,在此過程中列印了UBI設備的相關信息。通過函數ubi_calculate_reserved計算beb_rsvd_pebs,即為壞塊預留的大小。bad_peb_limit的計算考慮了最壞情況,即所有壞塊都出現在附加了ubi的MTD分區,因此使用的是整個flash大小。最終計算得到的bad_peb_limit為20 PEBs,與ubinfo -a中的結果一致。整個過程從console log分析、用戶空間和內核空間的追蹤,清晰地解析了ubi驅動對壞塊保留分區的處理方式。
C. 適用於RAM、NOR FLASH和NAND FLASH的文件系統有那些適用於RAM、NOR FLASH和NAND FLASH的文件系統有那些
1、適用於RAM的一般是虛擬文件系統,Linux引入了虛擬文件系統VFS(Virtual File System),為各類文件系統提供統一的操作界面和應用編程介面,/proc/下就是這樣的文件系統,掉電會丟失;
2、NOR FLASH:JFFS主要用於NOR型快閃記憶體,基於MTD驅動層,JFFS是可讀寫的、支持數據壓縮的、基於哈希表的日誌型文件系統,並提供了崩潰/掉電安全保護,提供「寫平衡」支持等功能,但是缺點:當文件系統已滿或接近滿時,因為垃圾收集的關系而使jffs2的運行速度大大放慢,不適合NAND FLASH上使用;
3、NAND FLASH: yaffs/yaffs2是專為嵌入式系統使用NAND型快閃記憶體而設計的一種日誌型文件系統。與jffs2相比,它減少了一些功能(例如不支持數據壓縮),所以速度更快,掛載時間很短,對內存的佔用較小。yaffs是跨平台的文件系統,除了Linux和eCos,還支持WinCE, pSOS和ThreadX等;yaffs與yaffs2的主要區別在於:前者僅支持小頁(512 Bytes) NAND快閃記憶體,後者則可支持大頁(2KB) NAND快閃記憶體。與JFFS相比,yaffs2在內存空間佔用、垃圾回收速度、讀/寫速度等方面均有大幅提升。
希望這個答案能夠使你滿意!