- 1
- 0
- 约3.69万字
- 约 46页
- 2017-02-05 发布于辽宁
- 举报
基于mtd的nand驱动开发本科毕业设计
基于MTD的NAND驱动开发说明
?
大约用了两个礼拜不到的时间为公司的IPcamera系统写了基于MTD的NAND驱动(linux-0内 核),目前已可以在该驱动的支持下跑cramfs和jffs2文件系统,另 外,该驱动也可以同时支持small page(每页512 Byte)和big page(每页2048 Byte)两种NAND芯片。在此整理一下与NAND驱 动相关的概念,结构体,驱动框架和流程,同时分析一下基于MTD的NAND驱动的部分函数,尤其是其中的nand_scan()函数。(涉及到具体NAND芯片时,若不做说明,将以small page的NAND芯片为例。)
?
注:个人理解,有误难免!—— 笔者:曹荣荣
?
?
MTD 驱动程序是专门针对嵌入式Linux的 一种驱动程序,相对于常规块设备驱动程序(比如PC中 的IDE硬盘)而言,MTD驱动程序能更好的支持和管理闪存设备,因为它本身就是专为闪存设备 而设计的。
具体地讲,基于MTD的FLASH驱动,承上可以很好地支持cramfs,jffs2和yaffs等文件系统,启下也能对FLASH的擦除,读写,FLASH坏块以及损耗平衡进行很好的管理。所谓损耗平衡,是指对NAND的擦写不能总是集中在某一个或某几个block中,这是由NAND芯片有限的擦写次数的特性决定的。
总之,在现阶段,要为FLASH设备开发Linux下的驱动程序,那么基于MTD的开发将几乎是省时又省力的唯一选择!
?
一、NAND和NOR的区别
?
Google “Nand Flash和Nor Flash的区别”。
?
简单点说,主要的区别就是:
?
1、? NAND比NOR便宜;NAND的容量比NOR大(指相同成 本);NAND的擦写次数是NOR的十倍;NAND的擦除和写入速度比NOR快,读取速度比NOR稍 慢;
?
2、? NAND和NOR的读都可以以字节为单位,但NAND的写以page为 单位,而NOR可以随机写每一个字节。NAND和NOR的擦除都以block为单位,但一般NAND的block比NOR的block小。另外,不管是NAND还 是NOR,在写入前,都必须先进行擦除操作,但是NOR在擦除前要先写0;
?
3、? NAND不能在片内运行程序,而NOR可以。但目前很多CPU都可以在上电时,以硬件的方式先将NAND的第一个block中的内容(一般是程 序代码,且也许不足一个block,如2KB大小)自动copy到ram中,然后再运行,因此只要CPU支持,NAND也可以当成启动设备;
?
4、? NAND和NOR都可能发生比特位反转(但NAND反转的几率远大于NOR), 因此这两者都必须进行ECC操作;NAND可能会有坏块(出厂时厂家会对坏块做标记),在使用过程中也还有可能会出现新的坏块,因此NAND驱动必须对坏块进行管理。
?
二、内 核树中基于MTD的NAND驱动代码的布局
?
在Linux内 核中,MTD源代码放在linux-0/driver/mtd目录中,该目录中包含chips、devices、maps、nand、onenand和ubi六 个子目录。
?
其中只有nand和onenand目录中的代码才与NAND驱动相关,不过nand目录中的代码比 较通用,而onenand目录中的代码相对于nand中的代码而言则简化了很多,它是针对三星公司开发的另一类Flash芯片,即 OneNAND Flash。我尚未对OneNand FLASH有过研究,只是通过网上资料得知,OneNand FLASH克服了传统NAND Flash接口复杂的缺点,具有接口简单、读写速度快、容量大、寿命长、成本低等优点,因此应该是一种较常用NAND先进的FLASH吧,只是目前似乎普 及率并不高,本文也将不做讨论。
?
因此,若只是开发基于MTD的NAND驱动程序,那么我们需要关注的 代码就基本上全在linux-0/drivers/mtd/nand目 录中了,而该目录中也不是所有的代码文件都与我们将要开发的NAND驱动有 关,除了Makefile和Kconfig之外,其中真正与NAND驱动有 关的代码文件只有6个,即:
?
1、? nand_base.c:
定义了NAND驱 动中对NAND芯片最基本的操作函数和操作流程,如擦除、读写page、读写oob等。 当然这些函数都只是进行一些default的操作,若你的系统在对NAND操作时有一些特殊的动作,则需要在你自己的驱动代码中进行定义,然后Replace这些default的 函数。
?
2、? nand_bbt.c:
定义了NAND驱 动中与坏块管理有关的函数和结构体。
?
3、? nand_ids.c:
定义了两个全局类型的结构体:struct nand_flash_dev
您可能关注的文档
- 活性污泥法的二级污水厂 本科毕业设计.doc
- 活塞设计 本科毕业设计.doc
- 机床数控改造机械系统设计(微型计算机)本科毕业设计.doc
- 机床安装用起重机的设计本科毕业设计.doc
- 机电一体化单片机的汉子显示屏设计本科毕业设计.doc
- 机电一体化技术气动冲击扳手的结构设计本科毕业设计.doc
- 机场前泵站及配水管网工程节能分析评估报告 本科毕业设计.doc
- 机电一体化专业机械手控制系统设计本科毕业设计.doc
- 机电一体化自动分选称的系统设计本科毕业设计.doc
- 机动车检测服务有限公司质量记录表格 (空) 本科毕业设计.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 中国心律失常护理专家共识(2025版).docx
- 审计模拟实训教程 第5版 参考答案汇总 马春静.pdf
- 迷宫挑战级难度挺大80个.pdf VIP
- 铁路技术规章:客车统计规则.pdf VIP
- 6~23月婴幼儿辅食喂养指南解读.pptx VIP
- 幼儿教育政策与法规教学案例.pdf VIP
- 具身智能 智能化发展阶段分级指南V6.pdf VIP
- 渔夫和他的灵魂TheFishermanandhisSoul(可编辑).pdf VIP
- 核电站主设备结构2012年11月27日.pdf VIP
- 电机学(第七版)(修订版)习题答案 刘新正 ElectricMachineryEdition7Solutions.pdf
原创力文档

文档评论(0)