首页 > 嵌入式硬件 > 驱动开发

  摘要:本文简明阐述了NAND 驱动在嵌入式ARM平台的实现。分析了NAND 的数据存储结构,并从物理层,逻辑层和文件系统驱动接口层三个方面具体分析了NAND 驱动程序的实现。本文重点讨论了在驱动逻辑层中为了实现磨损均衡如何创建坏块处理表,并对基于uC/FS文件系统的驱动接口进行了分析。该嵌入式NAND FLASH驱动具有存取数据快,数据准确度高等特点。

  1 引言

  随着U盘、数码相机、mp3音乐播放器等移动设备的广泛应用,FLASH存储器已经逐步取代其它半导体存储元件,成为嵌入式系统中主要数据和程序的载体。NAND FLASH是一种可在线多次擦除的非易失性存储器,其结构提供了极高的单元密度,可以达到数据的高密度存储,并且写入和擦除的速度也很快,所以 NAND FLASH是高密度数据存储的理想[2] 。本文主要从物理层,逻辑层和驱动文件系统接口层三个方面具体分析NAND FLASH驱动程序的实现。

  2 物理层驱动实现

  NAND芯片的存储空间是按照块和页的概念来组织的。现在市面上的NAND主要按大页和小页两种存储类型来进行数据管理。本文采用的NAND型号是K9F1G08X0A,该NAND为大页结构,即芯片每块()有64页(Page),每页有2K 的数据存储区和64的冗余数据区(用来存放ECC校验码)。2K 的数据存储区作为数据缓冲单元,用来实现I/0缓冲和存储器之间的数据传输。芯片的存储阵列组织如图1所示。

图1 128M X NAND 的存储空间结构

  NAND FLASH的物理层驱动主要涉及到:NAND的初始化(ID以及相关属性信息的读取)、擦除(以块作为单位),数据读写(以页作为基本单位)。在这一系列的过程中,会涉及到NAND命令的发送以及NAND地址的发送。其中地址的发送会因NAND型号的不同而有所区别。一般来说,小页的NAND其地址周期通常为4个:1个列地址(Column Address)和3个行地址(Row Address),而对大页的NAND来说,列地址至少是2个周期,行地址会因芯片的容量大小而有所区别。本文采用的三星NAND芯片是2个列地址和2个行地址。对于NAND FLASH 来讲,地址和命令只能在I/O[7:0]上并行传递。NAND FLASH 以页为单位读写数据,而以块为单位擦除数据。NAND的数据传输方式有基本的I/O传输方式,即在I/O[7:0]数据线上进行的数据传输。这种操作的缺点是系统CPU要频繁参与控制数据的传输,会影响到数据传输速度。本文采用DMA传输方式,数据宽度是8/16/32bit,通过中断的形式通知CPU数据的传输情况,DMA传输主要涉及DMA 控制器的配置以及通道的选择。

  3 逻辑层驱动实现以及坏块管理机制

  3.1 逻辑基本读写操作

  驱动逻辑层的主要任务是整合物理层的驱动,并为文件系统驱动层提供接口。在该层中主要涉及的操作包括NAND 的逻辑读、写以及擦除。逻辑层对NAND 的操作都是以块()作为单位来进行操作的。因此须在逻辑层中构建一个块缓存( Buffer)来临时存放读出/写入NAND 的数据。这样,NAND 的读取机制分为两种:页读取(Page )和块读取(Block)。在页读取时,通过坏块表进行索引指定块(Block)和页(Page)来进行数据读操作,而块读取时则是通过整合页读取时的缓存数据,把NAND 的数据以块的形式进行缓存(BlockBuffer)。NAND 的写入机制不像其它的FLASH 器件,NAND 要求在写入数据时,首先必须进行数据的擦除。因此我们在写数据的时候,先把将要被写入的数据块的内容读出到块缓存,然后再把要写入NAND 的数据以页为单位的形式写入块缓存(Block Buffer)中的对应地址。接着把以前存放数据的块进行擦除操作,最后把更新的数据写到NAND 去。经过这一系列的操作,实现了NAND 数据的逻辑写入。图2 说明了一次写操作的具体流程。

图 2 NAND 块写数据的示意图

  3.2 坏块管理机制的原理及实现

  NAND 由于采用了高密集的存储单元,在使用过程中难免会损坏一些存储单元,这就是我们所说的坏块[3]。数据操作时应该避免对这些坏块进行操作,否则会引起数据的错误。

  一般而言,NAND 的第0 块常被用来作为程序的引导区,因此NAND 芯片厂商会保证第0块不会成为坏区。而作为0 块以后的数据存储块,当坏块产生时,系统级的设计必须能够用地址映射把这些坏块屏蔽掉。芯片在出厂时,除保存坏块信息的区域外,部分一律被擦除(值为0xFF),对坏块的读操作是允许的,但不推荐进行写和擦除操作,以免由于结构方面的原因使邻近的块也失效。系统设计时必须根据初始的坏块信息识别出坏块,并建立坏块列表。进行写或擦除操作时将欲操作块的地址与坏块地址表的地址相比较,若是坏块则应跳过。芯片在使用过程中,可能有新坏块的产生,为了系统的可靠性,必须对此情况加以考虑。

  在数据写入或块擦除操作后,如果读状态寄存器出现错误,则表示块内有坏页存在,也即表明此块已坏,因为块内坏页的存在并不影响页的读写,这时可采用块操作来把页内有用数据转移到空闲块内,并把坏块信息存入坏块表中。因此,当我们在格式化NAND的时候,要给出一定的区域用来存放坏块索引表和坏块表。考虑到一个块(Block)的大小为128KB,而现在市面上的一般的NAND的容量大小为128MB-2GB不等。故分配10 个块(Block)来进行存储。由于第0 块为用户不可见块,实际要求为1-11 块作为存储空间。图 3 表明了如何建立坏块索引表和坏块表的流程。

图 3 坏块索引和坏块表建立流程

  其中,在坏块索引(BBTINDEX)中,整型变量bitIsBadBlock 中的每一个bit,标记一个块的状态(1 表示坏块,0 表示好块),在ARM 体系中,可以标记32 个块。该区域被称为一个索引区域。整型变量mPosInBBT 表示如果有坏块,则表示索引区域在坏块表中的偏移。

  这样通过定义一个索引tableTopPos 变量,来指示下一个坏块在数组中的位置。同样在坏块表(BBTENTRY)中,整型变量mBadBlock 标志块是坏块,而mReplaceBlock 变量则表示该坏块在备份区中对应的可以的好块。这样通过定义一个索引bakupTopPos 变量,来指示下一个坏块在备用区的位置。通过结合坏块索引和坏块表,可以对数据进行准确的操作,而每次对NAND 操作完成后,及时地更新坏块索引和坏块表。

  4 文件系统层的接口实现

  现在一般对NAND 支持的文件系统用的最多的是YAFFS 文件系统。本文由于基于的操作系统平台是uC/OS,故采用了uC/FS 文件系统作为NAND 的文件驱动接口,uC/FS 文件系统进行的操作都是基于FAT 文件格式的。对用户来说,所用对NAND 的操作,都是通过文件接口层来完成的。文件接口层对数据的操作都是以扇区(Sector)来进行的。因此,文件接口层的主要任务是把从逻辑层的逻辑操作转化为以扇区(Sector)为单位的操作,文件系统的接口函数主要通过一个结构体 (FS___)来进行描述[4],该结构体包含了驱动设备的名称以及4 个基本的驱动设备挂接函数的函数指针。

  在这几个函数中,dev_status()函数主要实现FAT 表状态信息的读取,并表明该NAND 设备可以使用;dev_()函数实现对NAND 进行文件系统块数据的读取;dev_write()函数实现对NAND 进行文件系统块数据的写入;dev_()函数则主要实现文件操作的相关指令,包括文件格式化,数据cache 回写等操作。通过这几个文件接口函数,用户可以实现对NAND 进行的数据基本操作。

 其中,mCache 数组大小为数据读取时的存储大小,由NAND 的文件系统遵循 标准决定,大小为512Byte;mTimes 表示被Cache 的块(Sector)的命中次数,反映了数据块的存取几率;mSectorId 表示被Cache 块(Sector)的序号,通过该序号来对Cache 的数据块进行索引。

  5 总结

  对大容量的 NAND FLASH 进行数据操作,坏块处理机制是很重要的,通过建立坏块处理表,避免了对无效块进行的操作,提高了数据的准确性。另外,ECC 作为NAND 纠错机制,在NAND 驱动中也广泛运用,本文的NAND 驱动中也加入了ECC 机制,由于篇幅有限,不对其进行深入探讨。

本文引用地址: http://www.21ic.com/embed/hardware/drivers/201811/76718.html

换一批

延伸阅读

[行业资讯] 新突思电子科技发布业内首个边缘智能系统级芯片

新突思电子科技发布业内首个边缘智能系统级芯片

这套基于边缘计算的智能解决方案,能凭借较短的响应时间和更强的稳健性,实现更佳的用户体验。例如,语音识别(ASR)和自然语言理解(NLU)功能可以嵌入芯片内部,在本地运行时确保在网络信号不佳或中断时,智能家居的语音控制功能受到较少影响。SyN......

关键字:芯片 语音识别 嵌入式芯片

[行业资讯] 明年首季或再度跌价10%,三大主因导致NAND闪存旺季不旺

明年首季或再度跌价10%,三大主因导致NAND闪存旺季不旺

TrendForce存储器研究(DRAMeXchange)分析,中美贸易冲击升温、英特尔CPU缺货、苹果新机出货量不如预期等3大因素冲击,造成NAND Flash旺季不旺,展望明年上半年供过于求的情况恐更加显著,价格跌势难止,预估第1季NA......

关键字:存储器 NAND Flash CPU

[行业资讯] 3D封装/GPU/CPU架构尽现 Intel六大领域战略力拓市场

3D封装/GPU/CPU架构尽现 Intel六大领域战略力拓市场

英特尔(Intel)日前举办「架构日」(Architecture Day 2018)活动,除了于会中展示多样基于10奈米系统,用于PC,数据中心和网络的解决方案之外,更于会中宣布未来将聚焦于六个工程领域的技术策略, 分别为先进制程和封装、加......

关键字:英特尔 嵌入式 多芯片

[行业资讯] 赛普拉斯进入中国20周年庆典在北京举行

赛普拉斯进入中国20周年庆典在北京举行

全球领先的嵌入式解决方案供应商赛普拉斯半导体公司(Cypress Semiconductor Corp.)(纳斯达克代码:CY)近日在北京举办“芯动中国”20周年庆典。活动上,赛普拉斯回顾了过去二十年间,为中国相关行业发展所做出的贡献;同时......

关键字:嵌入式 赛普拉斯 半导体

[行业资讯] 中国存储芯片自主研发技术交流峰会成功举办!国内首颗自研嵌入式40nm工规级存储芯片HC5001震撼发布

中国存储芯片自主研发技术交流峰会成功举办!国内首颗自研嵌入式40nm工规级存储芯片HC5001震撼发布

2018年11月21日,中国·南京 ICTECH 2018中国存储芯片自主研发技术交流峰会在南京举行。作为南通市第一家高阶存储产品主控设计公司——江苏华存电子科技有限公司(以下简称“江苏华存”),会上发布了国内自研第一颗嵌入式40纳米工规级......

关键字:存储芯片 嵌入式 HC5001

[真心话] 裁员23%,VR市场转冷让HTC压力山大

裁员23%,VR市场转冷让HTC压力山大

在经历了连续几个季度的亏损后,7月2日晚间,HTC宣布启动组织优化政策,将于今年9月底之前裁员1500人。HTC表示,此项优化台湾制造部门的计划将使公司得以进行更加有效和灵活的资源管理,这次裁员是为了确保产能与市......

关键字:VR HTC 虚拟现实

[趣科技] 谷歌惊天预言:人类将在2029年开始实现远距离性爱与永生

谷歌惊天预言:人类将在2029年开始实现远距离性爱与永生

作家、发明家、计算机科学家、谷歌首席未来学家雷·库兹韦尔(Ray Kurzweil)在接受《花花公子》杂志专访时表示,在不远的将来,技术将让我们变得更聪明、更健康,人类将在2029年开始实现永生,远距离的性爱将发生。......

关键字:谷歌 人类 永生

[真心话] 资深硬件研发工程师:抄袭可耻!但产品抄袭可用,资料抄袭可笑

资深硬件研发工程师:抄袭可耻!但产品抄袭可用,资料抄袭可笑

硬件研发一般是指电子产品硬件研发,是一种看得见实物的电子产品研发,比如我们所说的手机、鼠标、键盘、音响都是硬件,硬件开发也就是在这些方面进行的一系列研究。本文分享一位资深工程师对硬件研发的一些看法,希望能对大家有所帮助。......

关键字:硬件研发 抄袭 生产体系

[趣科技] 让普通物体秒变智能!加州大学展示一款基于 WiFi的便携贴产品

让普通物体秒变智能!加州大学展示一款基于 WiFi的便携贴产品

“智能”联网设备可以让日常生活变得更加轻松,但它们通常需要搭配电池来使用。好消息是,加州大学圣迭戈分校的研究团队,刚刚展示了一款基于 WiFi、名叫 LiveTag 的解决方案。其采用低成本的标签打印方......

关键字:智能设备 WIFI
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi®和蓝牙®combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14