论文研究-嵌入式外部存储器接口设计和驱动移植 .pdf

所需积分/C币:9 2019-08-15 13:46:05 309KB .PDF
收藏 收藏
举报

嵌入式外部存储器接口设计和驱动移植,许力,,本文针对嵌入式系统应用环境和存储芯片的特点,对NandFlash的接口电路进行了设计。并且详细介绍了在嵌入式linux操作系统环境下实现Nand
山国利技记文在线 http://www.paper.edu.cn MTD驱动程序是在 linux卜专门为嵌入式环境应用而川发的·类驱动程序。相对于常规 的块设备驱动程序,MI驱动的主要优点在于,它主要是专门针对各种非易失性存储器而 设计的,所以它对 Flash有更好的支持、管理和基于扇区的擦除、读/操作接口。 VFS Yaffs,iffs2等 Flash文件系统 EXT2等磁盘文件系统 mtd adblock只读的 FTL NFTL 字符设各块设备 块设备 JEDEC 非CFI NAND RAM/ ROM DiskOnChip Fl Flash Flash h|等芯片 存储介质 图3MTD系统接口 NandFlash的驱动必须向MID系统注册,通过结构体 mtd info给 add device函数提供 组缺省的冋调函数和属性。MTD驱动必须实现这些回调函数,让MTD系统能够通过函 数调用执行删除、读出、写入和同步等操作。 般而言,有两类MTD驱动程序。一类驱动程序是MTD设备地址空间的映射,提供 直接访问设备的操作,属于字符型设备驱动;为一类驱动程序则是为建立文件系统提供了基 础,属于块设备驱动。 32 Linux下的 NandFlash驱动 在 Linux2.6的内核里已经为很多厂家生产的处理器提供了一个标准平台,这样人人的 方便了驱动稈序的移植和编写。在目录 drivers/mtd/nand中就为好多种平台提供了 NandFlash 驱动叫的支持。其中就包括S3C2410,对应的文件是s3c2410.c。该驱动首先用 module_init(s3c2410 nand init来向内核注册一个 Nandflash的驱动然后开始设备的探测执 行s3c2410 nand probe()函数完成为 Nand flash寄存器区申请IO内存地址空间区,及通 过 foreman(把它映射到虚拟地址空间。再调用s3c2410 nand inithw()初始化 Nand flash控制 器,为mtd设备分配设备信息的存储空间。之后s3c2410 nand init chip(对当前mtd设备进 行初始化。 nand scan0检测 NandFlash芯片。最后对当前mtd设备,加入其分区信息。 因而移植的主要工作是针对特定的 NandFlash芯片,向 linux的 mtd info填充相应的数据 以K9F1208U0M为例,在 arch/ arm/machs3c2410devs.c文件中,1)建立 NandFlash分Ⅹ表。 添加 static struct mtd partition结构体数组,并向其中制定分区名称和大小;2)加入 Nand flash 分区。添加 struct s3c2410 nand set结构体指明分区的个数和第一步中分区表名字;3)建立 Nand flash芯片支持。添加 struct s3c2410 platform nand结构体,根据芯片时序设置恰当的 山国武技文在线 http://www.paper.edu.cn 吋间参数。修改 arch/arm/ machs3c2410/ machsmdk2410.c文件,并且在 static struct platform device*smdk2410 devices initdata结构中添加&s3 c device nand表示在 linux启 动时将对分区进行初始化。 YAFFS文件系统 41 YAFFS文件系统特点 YAffS( Yet Another Flash Filing System)是 Aleph One公司设计开发的,它是第一种专 门为 Nand flash设计的文件系统。 YAFFS是基于日志的文件系统,提供磨损平衡和调电恢 复的鲁棒性。它还为大容量的 Flash芯片作了很好的调整,针对启动时间和RAM的使用做 了优化,因而适用合用于大容量的存储设备。它还充分的考虑了 NandFlash根据以贞面为单 位的存取特点,将文件组织成固定大小的数据段。利用每个页面16位的备用存储空间来存 放ECC( Error Correction code)和文件系统的组织信息,不仪能够实现错误检测和坏块处 理,也能够提高文件系统的加载速度 YAFFS将文件组织成固定大小(512B)的数据段。每个文件都有一个页面专门存放的 文件头,头文件保存了文件的模式、所有者ID、组ID、长度、文件名等信息。为了提高文 件数据块的查找速度,文件的数据段被组织成树型结构。 YAFFS在文件进行改写时总是先 写入新的数据块,然后将旧的数据块从文件中删除。由于这些特性它已经在 Linux和 Wince 的商业产品中得到了使用。 42 YAFFS文件系统的编译 YAFFS相关文档和源码可在网上下载到。但是它不提供对 Linux内核的补丁。因而需 要手工添加相应的文件和内核一起编泽后加载到系统中。 首先在内核代码树中创建fs/yaff目录,复制下载的 YAFFS相关的头文件和代码文件 到该文件夹下。然后再参照 YAFFS文档在 fs/yaffs下创建 Makefile,和 Kconfig。进行编译 通过后可用命令 mount- yaffs / dev/ mid/ 1/ mnt/yaMs便叫挂在yas文件系统了。 5.总结 本文通过对嵌入式外部存储器接口设计和驱动移植阐述,详细的描述了 NandFlash接口 设计和驱动的移植,并且还简要的概述Yafs文件系统的特点和移植方法。这为开发 Linux 下的和存储相关的模块提供了一条途径。 山国武技文在线 http://www.paper.edu.cn 参考文献 [1] SAMSUNG ELECTRONICS INC. S3C2410 USER GUIDE [Z]. 200 12 SAMSUNGI ELECTRONICS INC. K9F1208UOM DATA SHEETS LZ].2005 3」孙纪坤,张小全.《嵌入式inux系统开发技术详—星于ARM》[M].北京:人民邮电出版社, 2006 4] Alessandro Rubini. <Linux Device Drivers )[M]. USA: O'Reily Assouiales, 2006 [5]刘尛,《嵌入式系统接口设计与Iinuⅸx驱动程序川发》[M].北京:北京航大航空大学出版社,2006 The Design of Interface Driver in Embedded memory XU li College of Information Enginerring, Wuhan University of Technology, WuHan, PRC (430063) Abstract This paper introduces the developing methods and technologies of Nand Flash interface and driver Nand lash is one of the core module in embedded operation system. In order to improve application's efficiency, the key technology is how to make good use of file system, It also introduces Yaffs Keywords: Nand Flash, Driver, yaffs 作者简介:许力,1981年生,硕士研究生,主要研究方向是嵌入式系统及其应用。

...展开详情
试读 5P 论文研究-嵌入式外部存储器接口设计和驱动移植 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    img

    关注 私信 TA的资源

    上传资源赚积分,得勋章
    最新推荐
    论文研究-嵌入式外部存储器接口设计和驱动移植 .pdf 9积分/C币 立即下载
    1/5
    论文研究-嵌入式外部存储器接口设计和驱动移植 .pdf第1页
    论文研究-嵌入式外部存储器接口设计和驱动移植 .pdf第2页

    试读已结束,剩余3页未读...

    9积分/C币 立即下载 >