Linux存储器接口软硬件设计_第1页
Linux存储器接口软硬件设计_第2页
Linux存储器接口软硬件设计_第3页
Linux存储器接口软硬件设计_第4页
Linux存储器接口软硬件设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux存储器接口软硬件设计1.嵌入式系统上常用的存储媒体Flash芯片Flash媒质存储器:SD/MMC卡、CF卡、SM卡、U盘、DOCIC卡、SIM卡硬盘:CF接口、IDE接口…2.Linux对存储设备的管理块设备->文件系统字符设备也可以完成简单的存储工作嵌入式Linux的存储通常通过MTD设备3.MTD设备驱动MTD(memorytechnologydevice)是用于访问memory设备〔ROM、flash〕的Linux子系统在硬件和上层之间提供了一个抽象的接口,MTD把文件系统和Flash设备相隔离4.MTD与文件系统5.Flash硬件驱动层在init时驱动Flash硬件,NAND型Flash的驱动程序那么位于

/drivers/mtd/nand子目录下MTD原始设备有两局部组成MTD原始设备的通用代码,各个特定的Flash的数据,例如分区。mtd_info、mtd_table〔mtdcore.c〕、mtd_part〔mtd_part.c〕MTD设备层linux系统定义出MTD的块设备〔主设备号31〕和字符设备〔设备号90〕。设备节点:通过mknod在/dev子目录下建立MTD字符设备节点〔主设备号为90〕和MTD块设备节点〔主设备号为31〕,通过访问此设备节点即可访问MTD字符设备和块设备。根文件系统在Bootloader中将文件系统映像烧录到flash的某一个分区中,在启动的时候,将该分区作为根文件系统挂载。文件系统:内核启动后,mount6.NAND和NOR——性能比较NOR和NAND是现在市场上两种主要的非易失闪存技术NOR的读速度比NAND稍快一些NAND的写入速度比NOR快很多NAND的擦除速度远比NOR的快大多数写入操作需要先进行擦除操作NAND的擦除单元更小,相应的擦除电路更少7.接口差异NORflash带有SRAM接口,线性寻址,可以很容易地存取其内部的每一个字节NANDflash使用复用接口和控制IO屡次寻址存取数据NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作易于取代硬盘等类似的块设备8.容量和本钱NANDflash生产过程更为简单,本钱低常见的NORflash为128KB~16MB,而NAND

flash通常有8~128MBNOR主要应用在代码存储介质中,NAND适合于数据存储NAND在CompactFlash、SecureDigital、PCCards和MMC存储卡市场上所占份额最大9.可靠性和耐用性在NAND中每块的最大擦写次数是100万次,而NOR的擦写次数是10万次位交换的问题NANDflash中更突出,需要

ECC纠错NANDflash中坏块随机分布,需要通过软件标定——产品量产的问题10.更新MTD设备驱动程序MTD的补丁:///新的MTD驱动程序针对Linux2.6支持2kpageflash、DOC、SSDFC等新特性参考:TheLinuxMTD,JFFSHOWTO11.NandFlash连接原理12.PXA270上扩展Nandflash13.移植代码建议先给内核打补丁有的linux内核带的MTD驱动程序有严重的问题nandflash相关代码在/drivers/mtd/nand/目录下添加自己的驱动程序,可以从/drivers/mtd/nand/spia.c派生〔pxa27x_nand.c〕修改drivers/mtd/nand/config.in配置菜单修改/drivers/mtd/nand/Makefile添加

obj-$(CONFIG_MTD_NAND_ARM) +=pxa27x_nand.o14.解读pxa27x_nand.c模块入口:pxa27x_init函数ioremap的作用pxa27x_IO_init,初始化Nandflash所用端口module_init宏定义了linux加载的模块——启动的时候加载或者通过模块加载nand_scan确定设备及其类型,挂载相应的驱动程序add_mtd_partitions函数注册MTD分区,add_mtd_device注册MTD设备15.MTD上的Norflash驱动使用CFI接口的flashIntelAMD驱动程序自动挂接、自动检测16.PXA270上Norflash设备驱动添加驱动程序

drivers/mtd/maps/uptechpxa27x-flash.c主要的工作在pxa27x_flash_probe函数中完成。查找分区17.测试MTD设备〔1〕正确加载了设备,使用命令

cat/proc/mtd,可以显示MTD设备信息:dev:sizeerasesizenamemtd0:00e0000000004000"Nandflashpartition“创立节点〔如果不是用devfs〕在hostlinux上的romfs/dev目录创立

@mtd0,c,90,0、@mtdblock0,b,31,0文件用mkfs.jffs2〔或者mkfs.yaffs〕生成文件系统映象〔比方jffs2.img〕18.测试MTD设备〔2〕目标板启动以后cpjffs2.img/dev/mtd0注意:这里使用的/dev/mtd0是字符设备mount–tjffs2/dev/mtdblock0/var/jffs2需要在编译内核的时候包含jffs2文件系统使用块设备在文件系统上进行其他测试:[/var/jffs2]cp/root/hello.19.嵌入式linux下常见的文件系统RomFS:只读文件系统,可以放在ROM空间,也可以在系统的RAM中,嵌入式linux中常用来作根文件系统RamFS:利用VFS自身结构而形成的内存文件系统,使用系统的RAM空间JFFS/JFFS2:为Flash设计的日志文件系统Yaffs:专门为NandFlash设计proc:为内核和内核模块将信息发送给进程提供一种机制,可以查看系统模块装载的信息devFS:设备文件系统20.Linux上的Ext2fs支持4TB存储、文件名称最长1012字符可选择逻辑块快速符号链接Ext2不适合flash设备是为象IDE设备那样的块设备设计的,逻辑块大小必须是512byte、1KB、2KB等没有提供对基于扇区的擦除/写操作的良好管理如果在一个扇区中擦除单个字节,必须将整个扇区复制到

RAM,然后擦除,再重写入在出现电源故障时,Ext2fs是不能防止崩溃的文件系统不支持损耗平衡,缩短了flash的寿命21.jffs/jffs2文件系统的优缺点日志文件系统提供了更好的崩溃、掉电平安保护jffs2支持对flash的均匀磨损在扇区级别上执行闪存擦除/写/读操作要比Ext2文件系统好文件系统接近满时,JFFS2会大大放慢运行速度——垃圾收集22.Nand上yaffs文件系统的优势专门为Nandflash设计的日志文件系统jffs/jffs2不适合大容量的Nandflashjffs的日志通过jffs_node建立在RAM中,占用

RAM空间:对于128MB的Nand大概需要4MB的空间来维护节点启动的时候需要扫描日志节点,不适合大容量的NandflashFAT系统没有日志23.编译yaffs文件系统mtd的最新补丁升级?接口更新,适合与yaffs与原有的mtd驱动程序不兼容,需要重写如果使用旧mtd驱动需要定义Makefile中MTD_OLD=-DCONFIG_YAFFS_USE_OLD_MTD参考文档:yaffs-rootfs-howto最新版的yaffs网站:

://aleph1.co.uk/armlinux/projects/yaffs24.使用yaffs文件系统通过cat/proc/yaffs命令可以看到yaffs系统的相关信息mount-tyaffs/dev/mtdblock/0/mnt/yaffsyaffs做root的问题,如何处理坏块?25.IDE接口软硬件设计26.IDE接口简介IntegratedDriveElectronics〔IDE〕本意是指把控制器与盘体集成在一起的硬盘驱动器。通常说的IDE接口,称之为ATA〔AdvancedTechnologyAttachment〕接口分类:ATA-1〔IDE〕、ATA-2〔EIDE〕、ATA-3〔FastATA-2〕、UltraATA、UltraATA/33、UltraATA/66、UltraATA/100及SerialATA27.IDE接口标准CSEL电缆主从选择DMARQDMA请求CS0片选0INTRQ中断请求CS1片选1IOR读取IO口D[15:0]数据线IORDYIO就绪DASP驱动器有效IOW写入IO口A[2:0]地址PDIAG通过检测DMACKDMA应答RESET复位低电平有效28.IDE设备存放器CS1CS0A2A1A0读取写入位10000数据寄存器数据寄存器1610001错误寄存器特征寄存器810010扇区数寄存器扇区数寄存器810011扇区号寄存器扇区号寄存器810100柱面号(低字节)柱面号(低字节)810101柱面号(高字节)柱面号(高字节)810110驱动器/磁头驱动器/磁头810111状态寄存器命令寄存器801110可选状态寄存器设备控制寄存器801111驱动器地址寄存器保留829.嵌入式处理器上

扩展IDE接口的考虑电平标准是否满足?IDE接口为5V逻辑,与3.3V逻辑如何接口总线时序如何满足?读写时序和SRAM类似,通过组合逻辑即可满足30.UP-NETARM2410-S上IDE接口逻辑原理图FPGA内部逻辑nGCSF信号地址译码的结果偏移地址0x80000031.IDE接口的驱动程序在driv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论