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在内存空间占用、垃圾回收速度、读/写速度等方面均有大幅提升。
希望这个答案能够使你满意!