230 likes | 369 Views
The success's road. 嵌入式 Linux 的存储技术. www.farsight.com.cn. 今天的内容. 嵌入式存储的发展与挑战 嵌入式 Linux 存储方式的介绍 嵌入式 Linux 对流行存储设备的支持 嵌入式 Linux 存储方案的选择策略. 嵌入式存储的发展与挑战. 当前 flash 芯片特点 写入 flash 采用 program 操作 , 可以以字为最小单位 擦除 flash 采用 erase 操作,最小擦除单位一般是 有限的擦除 / 编程循环寿命 10k-100k 低功耗,高密度,大容量的 flash 芯片得到广泛使用
E N D
The success's road 嵌入式Linux的存储技术 www.farsight.com.cn
今天的内容 • 嵌入式存储的发展与挑战 • 嵌入式Linux存储方式的介绍 • 嵌入式Linux对流行存储设备的支持 • 嵌入式Linux存储方案的选择策略
嵌入式存储的发展与挑战 • 当前flash芯片特点 • 写入flash采用program操作,可以以字为最小单位 • 擦除flash采用erase操作,最小擦除单位一般是 • 有限的擦除/编程循环寿命10k-100k • 低功耗,高密度,大容量的flash芯片得到广泛使用 • 其中按照实现技术不同,flash又分为nor flash和nand flash两种 • nor flash提供线性访问接口 • nand flash提供基于命令的访问端口
MTD 驱动程序简介 • MTD——memory technology device • MTD驱动程序提供了以标准设备形式访问flash芯片的机制 • Mtd提供以下几个驱动接口 • 字符设备驱动 • 块设备驱动 • Flash translation layer(FTL) • NFTL/INFTL • JFFS2
MTD字符设备驱动 • MTD字符设备驱动不提供任何高级特性,直接让应用软件访问flash • 一般用来 • 擦除flash • 格式化文件系统 • 拷贝整个分区
MTD块设备驱动 • MTD块设备提供抽象接口让flash芯片可以作为磁盘驱动器来访问 • 利用MTD块设备驱动,我们可以在flash芯片上使用通常的文件系统 • fat16,fat32文件系统 • ext2文件系统
MTD翻译层 • MTD提供的翻译层FTL/NFTL • 翻译层是实现MTD块设备驱动的软件层 • FTL/NFTL不提供wear leveling • 不保证power fail安全 • 没有坏块管理
JFFS2文件系统 • JFFS2文件系统是专门为flash设计的完整的文件系统,而不仅仅是把flash模拟成一个块设备 • JFFS2文件系统可以避免power failure等可能造成数据破坏的现象 • JFFS2文件系统可以使擦除和编程操作均匀分布到所有block上,避免影响期间寿命
jffs2 文件系统压缩 • jffs2 支持即时压缩,加以将通常的文件系统大小缩小50%以上,类似于NTFS提供的压缩功能 • jffs2 即时压缩速度很快,不会对系统性能造成大的影响
nand flash文件系统 • nand flash文件系统需要考虑一些nand flash特点 • nand flash使用页面来操作整块数据,包括读取操作 • nand flash有可能出现随机的坏块。这些坏块可能在出厂时就存在,也有可能在使用过程中产生,所以对数据的校验是必须的 • nand flash芯片擦除操作相对nor flash较快,这一点可以用来实现很高的写入和垃圾搜集速度
YAFFS文件系统 • YAFFS文件系统是为nand flash器件优化的文件系统 • 和jffs2对比,yaffs在nand flash上提供了更好的性能,包括 • 小得多的内存消耗 • 更快速的文件系统加载
YAFFS2文件系统 • YAFFS2文件系统是YAFFS的一个升级 • 消除了partial program • 在某些芯片上支持连续页面编程 • 进一步减小了内存消耗 • 很多性能改进,在新的8bit nand flash芯片上,可以达到以下性能 • 读取 8.7MB/S • 写入 3MB/S • 删除 62.5MB/S • 垃圾整理 5.4MB/S
Disk on Chip简介 • DOC是一种嵌入式存储器 • DOC控制器将控制电路,buffer ram以及部分算法集成到芯片当中 • buffer提高了性能 • 加上软件支持,就可以实现XIP • 控制器提供了一定的wear leveling • DOC存储数据采用nand flash • 最新的MTD驱动可以将DOC作为nand flash来使用,可以使用flash专有的文件系统
Secure Digital简介 • 由松下电器Matsushita Electric Industrial Co., Ltd、东芝Toshiba Corp.和SanDisk联合推出,1999年8月首次发布 • 2000年2月1日发起成立了SD协会(Secure Digital Association简称SDA) • SD存贮卡的详细规范并没有公开,只有SDA会员或签定了保密协议才能获得
SD卡接口简析 • SD协议分SD memory 卡和SDIO卡 • SD操作分1-bit模式和4-bit模式 • MMC规范当中规定了7根信号 • RSV • CMD • VSS1 • VDD • CLK • VSS2 • DAT • SD规范添加了2根线,增加到了4根数据线
在Linux下使用SD卡 • SD卡控制器隐藏了flash存储芯片的细节 • 控制器内部将flash芯片的操作翻译成SD卡的操作 • 在内核当中MMC/SD子系统提供翻译机制,可以将SD卡模拟成驱动器 • 在SD卡上建立通常的分区和文件系统
CompactFlash简介 • 为了推动CompactFlash标准的设立和应用,1995年10月,主要的生产厂商成立了CompactFlash协会(CompactFlash Association简称CFA),这个非赢利性的组织成员包括3COM,Canon,Eastman Kodak Company,Hewlett-Packard,Hitachi,IBM,Matsushita (Panasonic),Motorola,SanDisk,Seiko Epson等巨头
CF卡接口简析 • CF存储卡内部包括了flash存储器,一般是nand flash和一个控制芯片 • 接口的控制信号包括 • nCE1,nCE2,nREG,nIORD,nIOWR,nOE,nWE,RESET • 状态信号 • READY,nINPACK,nWAIT,nWP • 地址线 A[11:0] • 数据线 D[15:0] • 卡检测 nCD[2:1] • 电压检测 nVS1, nVS2 • 电池检测 BVD[2:1]
在Linux下使用CF卡 • CF存储卡控制器提供了硬件的翻译层,将flash芯片模拟成IDE接口设备 • 系统将CF卡作为PIO模式的ATA硬盘来访问 • 在CF卡上建立通常的分区和文件系统 • CF卡文件系统的性能取决于卡本身 • 与之类似的还有DOM
在Linux下的读卡器 • 只简单介绍一下USB读卡器 • USB驱动程序将读卡器作为可移动存储设备 • usb-storage驱动将存储卡虚拟成scsi磁盘 • 使用时在虚拟盘上创建分区,格式化普通的文件系统
嵌入式Linux存储方案选择 • mtd字符设备驱动 • 适合存储不经常修改的少量数据 • 系统配置参数 • 密钥,证书 • 块设备/翻译层+fat32 • 在windows系统和嵌入式系统共同使用的移动存储器 • 存储卡硬件提供了翻译层 • 适用于常见的存储卡(不包括SMC卡) • 专门的flash文件系统 • 嵌入式系统独自使用的存储器 • 对性能,健壮性有较高要求的存储器
成功之路 www.TopSight.com.cn谢谢!