u(boot中NANDflash的MTD驱动移植)-
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
u(boot中NANDflash的MTD驱动移植)-
u-boot
u-boot中的“与非”闪存的MTD驱动程序迁移移植了linux中的MTD 驱动程序源代码,以支持“与非”闪存擦除、刻录写入和读取驱动程序内存技术设备内存技术设备是Linux的一个子系统,用于访问闪存设备MTD的主要目的是简化新存储设备的驱动,并提供通用接口功能。MTD驱动可以支持CFI接口的非闪存驱动和非闪存驱动。众所周知,“与非”闪存的访问接口不像“非”闪存那样提供标准的CFI访问接口,但“与非”闪存制造商已经对不同品牌和型号的“与非”闪存芯片的访问接口制定了一些常规规定,如命令字、地址序列、命令序列、坏块标记位置、oob区域格式等。
值得注意的是,在工艺方面有两种类型的“与非”闪存:MLC和SLCMLC和SLC属于两种不同类型的NAND闪存SLC的全称是单级单元,即单级单元闪存,而MLC的全称是多级单元,即多级单元闪存。它们的区别在于,SLC的每个单元只能存储一位数据,而MLC 的每个单元只能存储两位数据,MLC的数据密度是SLC的两倍。就页容量而言,还有两种类型的与非:大页与非闪存(例如HY27UF082G2B)和小页与非闪存(例如K9F1G08U0A)这两种类型在页面容量、命令序列、地址序列、页面内访问和坏块识别方面非常不同,并且遵循不同的约定,因此在移植驱动程序时应该特别注意。在下,以大页面NAND flash: HY27UF082G2B为例,介绍NAND flash 的一些基本情况,然后介绍MTD驱动程序的基本结构和流程分析。
最后,介绍了在u-boot中迁移MTD驱动程序的详细步骤:
3 .
4 . 1)nandflash的一些基本信息
fl2400开发板上的NAND Flash芯片型号是现代HY27UF082G2B。英特尔于1988年首次开发了或非闪存技术。它最重要的特点是支持片上执行,彻底改变了EPROM和EEPROM主宰非易失性闪存世界的局面。然后,在1989年,东芝发布了NAND闪存结构,它具有较低的单位成本、较高的容量,并且可以像磁盘一样通过接口轻松升级。“或非”闪存更适合存储少量的关键代码和数据,而“与非”闪存更适合存储大量的高密度数据。
下表说明了非闪存与非闪存的区别:非闪存非闪存性能项目的容量通常为1~4MB,片上支持的最大容量为32MB 8MB~512MB。它可以直接在芯片上启动。它不受支持,需要驱动读取。只有三星芯片支持步进式引导加载器技术,其他芯片必须配备norflash以启动具有较高可靠性、较低位反转概率、常见位反转的引导加载器,并且必须采取验证措施。ECC椭圆曲线算法被推荐用于错误检查和恢复,这导致1/10的非闪存使得非闪存的管理和驱动程序写入更加复杂。存取接口与随机存取存储器和可编程只读存储器相同。地址线地址、数据和命令通过每个使能引脚区和输入/输出线与数据线分开。访问接口可分为地址、数据和命令以及串行访问。随机存取8K-64K块大小(擦除64K~128K单位)必须按顺序存取。擦除时间为5S,慢3毫秒,快速读写速度慢。快速读取,快速读取,刻录和写入可以快速擦除10 ~ 100,000次和100 ~ 100万次。主要用途保存代码和关键数据保存大
量高密度数据Jffs2 yaffs文件系统支持价格高低下面我们将根据HY27UF082G2B数据表从以下几个方面详细说明:3..)HY27UF082G2B概述
HY27UF082G2B,48引脚TSOP1封装,2G位(256MB)容量,8位宽,地址、数据和命令多路复用输入/输出0~7芯片封装图如下(HY27UF082G2B数据手册截图):
从上图可以看出,48个引脚大部分是无用的(NC)。由于数据线路复用,hy27uf082g2b没有太多真正需要的连接引脚下表是HY27UF082G2B连接引脚功能表:
引脚名称引脚功能输入/输出0 ~输入/输出7数据输入/输出CLE命令锁存使能ALE数据锁存使能CE芯片选择使能WE写使能RE读使能WP写保护R/B就绪/繁忙信号输出的NC VCC电源VSS未连接到。从上表可以看出,HY27UF082G2B和S3C2440之间的连接相对较小:8个输入/输出引脚、5个使能引脚(CLE、ALE、CE、we、RE)、1个写保护引脚(WP)和1个状态引脚(R/B)地址、数据和命令通过8个输入/输出引脚与这些使能信号协同传输。当写入地址、数据和命令时,CE和WE信号必须为低电平,并在WE信号的上升沿锁存命令锁存使能信号CLE和
(总数据锁存信号ALE用于区分命令或地址是否在输入/输出引脚上传输其它总线操作
线操作)在数据表的第11页有详细描述,在此不再重复。
从上面可以看出,芯片的总线操作必须有各种使能信号的配合,但是这些使能信号的控制不需要用户驱动器的干预。S3C2440中的“与非”闪存控制器将根据用户对“与非”闪存控制寄存器(写命令寄存器NFCMD、地址寄存器NFADDR、读数据寄存器NFDATA等)的读写,在“与非”闪存控制相关的引脚上自动输出正确的使能信号。)。用户只需将S3C2440上的与非门闪光控制相关引脚正确连接到HY27UF082G2B的使能引脚。S3C2440上的与非闪存控制相关引脚见下图:
除了5个使能信号外,HY27UF082G2B的状态引脚也应连接到s3c2440上的与非闪存控制相关引脚FRnB“与非”闪存芯片与S3C2440之间的硬件连接如下图所示。凌飞提供的官方硬件连接示意图如下:
。这里,还介绍了与S3C2440的与非门闪存控制器相关的寄存器:1。NFCONF:与非门闪存配置寄存器1
设置时序参数TACLS、TWRPH0、TWRPH0;2.ONT:与非门闪存配置寄存器2
使能禁用与非门控制器,使能禁用引脚信号nFCE,初始化纠错码;;
3.写寄存器时,“与非”闪存命令寄存器
向“与非”闪存芯片发送命令信号;4.写该寄存器时,“与非”闪存地址寄存器
向“与非”闪存芯片发送地址信号;5.nfdata:当读取和写入寄存器时,与非门闪存数据寄存器
读取或写入数据信号到与非门闪存芯片;6.NFS状态:与非门闪存状态寄存器
仅用于位0,0:忙碌,1:读取
。这里只简要介绍一些重要的寄存器,而没有介绍许多其他寄存器例如,与非闪存控制器提供的纠错码硬件生产功能相关的寄存器,请参考S3C2440数据表了解详情。
3..HY27UF082G2B的存储单元
与非闪存的组织结构不同于非闪存,因为与非闪存是基于页来读取和烧录的,而非基于字节或字。擦除以块为单位
与非门闪存由块组成,块的基本单位是页每页还包含一个数据区和一个备用区。小页NAND闪存设备在每页中包含512字节的数据区和16字节的备用区。大页面NAND闪存设备在每页中包含2048字节的数据区和64字节的备用区。HY27UF082G2B是一个大页面的nandfast。下图显示了HY27UF082G2B存储单元的组织结构:HY27UF082G2B存储单元的组织结构在
图中的红线处为8位宽。可以看出,一个芯片包含2048个块,一个块包含64个页面,一个页面包含2048字节的数据存储区和64字节