首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
嵌入式技术
» SEP4O20的Linux NandFlash驱动设计 01
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
SEP4O20的Linux NandFlash驱动设计 01
发短消息
加为好友
samwalton
当前离线
UID
872238
帖子
6518
精华
0
积分
3259
阅读权限
90
在线时间
309 小时
注册时间
2012-3-1
最后登录
2014-7-5
论坛元老
UID
872238
1
#
打印
字体大小:
t
T
samwalton
发表于 2013-8-19 07:59
|
只看该作者
SEP4O20的Linux NandFlash驱动设计 01
微处理器
,
文件管理
,
东南大学
,
嵌入式
,
Linux
摘要:本文首先给出了NandFlash的硬件特点,分析了Linux MTD层(Memow Technology Device)的特性,基于东南大学国家ASIC中心自主设计的嵌入式微处理器芯片SEP4020,给出了Linux下NandFlash驱动的详细设计方案。实验结果表明,基于这种驱动方案的NandFlash能进行有效的文件管理和稳定、快速的读写功能,非常适合于嵌入式产品的应用。
0 引言
NandFlash是一种非易失性的存储介质,它以极高的存储密度,快速的读写速度以及低廉的价格,成为在嵌入式领域应用极为广泛的存储介质。但同时NandFlash更大的存储容量以及更复杂的硬件接口也为软件的设计提出了更高的要求。为了有效地管理复杂的存储硬件以及提供更可靠高效的存储环境,文章给出了在嵌入式Linux下的NandFlash的驱动设计,利用嵌入式Linux系统的高效完善以及Linux MTD子系统的对存储介质的高度兼容,大大提高了NandFlash的使用效率,并降低了驱动开发的难度。
本文以东南大学自主设计的东芯SEP4020微处理器的为基础,分析NandFlash的内部结构和Linux MTD层的框架,并基于这些研究提出了NandFlash驱动的设计和实现。
1 NandFlash的硬件特点
NAND器件是基于I/O接口的,这点不同于NOR闪存,基于Bus的RAM接口。NAND芯片以页为单位读写,以块为单位擦除,通过多个引脚传送命令地址数据,使用较复杂的I/O接口来控制。以本文使用的东芝TC58512FT(64MNand)为例,分为4096块,每块有32页,每页有512B的数据区+16B的OOB(out of band)区。(4096×32×512B=64MB),均通过8跟IOM线串行控制,如图l所示。
同时由于工艺限制,NAND闪存中允许存在坏块。NAND闪存的每一页有16B(页长度512B)的OOB区用来存放ECC校验数据,ECC有效标志,坏块标志等。所有这些决定了于NAND的存储系统设计需要处理不同于其它类型闪存特有问题。
2 MTD的NAND结构
Linux MTD层是Linux操作系统和存储介质之间的一个适配层。MTD是Linux的一个子集,用来作为具体的硬件设备驱动和上层文件系统的桥梁。MTD层有两个非常显着的优异点:
(1)简化驱动的开发。设计基于MTD的驱动,所需要做的事情就是按照标准的公共接口函数的接口,根据微处理器NandFlash控制器的不同做适当的修改,而无需去理会字符(块)设备驱动设计标准,因为所有这些复杂的与内核的交互接口机制mtd已经做好了,开发行的精力只需要集中在实现对物理设备的范围控制。
(2)NandFlash使用环境的独立性。上层应用只需要访问mtd抽象层提供的字符设备方式或者块设备方式来访问mtd设备,因此具体驱动对于上层应用来说是具有独立性的,即使底层驱动修改了,上层拥有也不需要改动。并且由于mtd抽象层,上层应用就可以避免直接对具体硬件操作,而是对mtd操作,这样,这些应用就不是建立在某个具体的设备上,更好地实现了通用性和兼容性。
mtd抽象层用一个数组struct mtd_info*mtd_table[MAX_MTD_DEVICES]保存系统中所有的设备,mtd设备利用struct mtd_info这个结构来描述,该结构中描述了存储设备的基本信息和具体操作所需要的内核函数,mtd系统的那个机制主要就是围绕这个结构来实现的。
下面简单介绍下这个结构:
3 基于SEP4020的NandFlash驱动的实现
SEP4020由东南大学国家专用集成电路系统工程技术研究中心设计,使用0.18μm标准CMOS的工艺设计,内嵌arm720T内核,带8kB指令数据Cache和全功能MMU,采用冯诺依曼结构的微处理。支持NandFlash的硬件ecc和软件ecc,支持3级到5级地址,并提供512byte和2k bytes的页支持(本文以3级地址,一页为512byte为实现目标)。根据。NandFlash实际使用中大量操作均为对整页的处理,本文利用片内dma搬运技术,提高对NandFlash的读写速度。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议