1.nand如何读取
NAND型闪存】内存和NOR型闪存的基本存储单元是bit,用户可以随机访问任何一个bit的信息。而NAND型闪存的基本存储单元是页(Page)(可以看到,NAND型闪存的页就类似硬盘的扇区,硬盘的一个扇区也为512字节)。每一页的有效容量是512字节的倍数。所谓的有效容量是指用于数据存储的部分,实际上还要加上16字节的校验信息,因此我们可以在闪存厂商的技术资 Sandisk
料当中看到“(512+16)Byte”的表示方式。目前2Gb以下容量的NAND型闪存绝大多数是(512+16)字节的页面容量,2Gb以上容量的NAND型闪存则将页容量扩大到(2048+64)字节。 NAND型闪存以块为单位进行擦除操作。闪存的写入操作必须在空白区域进行,如果目标区域已经有数据,必须先擦除后写入,因此擦除操作是闪存的基本操作。一般每个块包含32个512字节的页,容量16KB;而大容量闪存采用2KB页时,则每个块包含64个页,容量128KB。 每颗NAND型闪存的I/O接口一般是8条,每条数据线每次传输(512+16)bit信息,8条就是(512+16)*8bit,也就是前面说的512字节。但较大容量的NAND型闪存也越来越多地采用16条I/O线的设计,如三星编号K9K1G16U0A的芯片就是64M*16bit的NAND型闪存,容量1Gb,基本数据单位是(256+8)*16bit,还是512字节。 寻址时,NAND型闪存通过8条I/O接口数据线传输地址信息包,每包传送8位地址信息。由于闪存芯片容量比较大,一组8位地址只够寻址256个页,显然是不够的,因此通常一次地址传送需要分若干组,占用若干个时钟周期。NAND的地址信息包括列地址(页面中的起始操作地址)、块地址和相应的页面地址,传送时分别分组,至少需要三次,占用三个周期。随着容量的增大,地址信息会更多,需要占用更多的时钟周期传输,因此NAND型闪存的一个重要特点就是容量越大,寻址时间越长。而且,由于传送地址周期比其他存储介质长,因此NAND型闪存比其他存储介质更不适合大量的小容量读写请求
越大容量闪存的页越多、页越大,寻址时间越长。但这个时间的延长不是线性关系,而是一个一个的台阶变化的。譬如128、256Mb的芯片需要3个周期传送地址信号,512Mb、1Gb的需要4个周期,而2、4Gb的需要5个周期。
页容量
每一页的容量决定了一次可以传输的数据量,因此大容量的页有更好的性能。前面提到大容量闪存(4Gb)提高了页的容量,从512字节提高到2KB。页容量的提高不但易于提高容量,更可 8gbit闪存
以提高传输性能。我们可以举例子说明。以三星K9K1G08U0M和K9K4G08U0M为例,前者为1Gb,512字节页容量,随机读(稳定)时间12μs,写时间为200μs;后者为4Gb,2KB页容量,随机读(稳定)时间25μs,写时间为300μs。假设它们工作在20MHz。
NAND型闪存的读取步骤分为:发送命令和寻址信息→将数据传向页面寄存器(随机读稳定时间)→数据传出(每周期8bit,需要传送512+16或2K+64次)。 K9K1G08U0M读一个页需要:5个命令、寻址周期*50ns+12μs+(512+16)*50ns=38.7μs;K9K1G08U0M实际读传输率:512字节÷38.7μs=13.2MB/s;K9K4G08U0M读一个页需要:6个命令、寻址周期*50ns+25μs+(2K+64)*50ns=131.1μs;K9K4G08U0M实际读传输率:2KB字节÷131.1μs=15.6MB/s。因此,采用2KB页容量比512字节也容量约提高读性能20%。
写入性能
NAND型闪存的写步骤分为:发送寻址信息→将数据传向页面寄存器→发送命令信息→数据从寄存器写入页面。其中命令周期也是一个,我们下面将其和寻址周期合并,但这两个部分并非连续的。 K9K1G08U0M写一个页需要:5个命令、寻址周期*50ns+(512+16)*50ns+200μs=226.7μs。K9K1G08U0M实际写传输率:512字节÷226.7μs=2.2MB/s。K9K4G08U0M写一个页需要:6个命令、寻址周期*50ns+(2K+64)*50ns+300μs=405.9μs。K9K4G08U0M实际写传输率:2112字节/405.9μs=5MB/s。因此,采用2KB页容量比512字节页容量提高写性能两倍以上。
2.如何实现nand flash的读,写,擦除操作
Fisrt part : NAND flash和NOR flash的不同 NOR flash采用位读写,因为它具有sram的接口,有足够的引脚来寻址,可以很容易的存取其内部的每一个字节。
NAND flash使用复杂的I/O口来穿行地存取数据。8个引脚用来传送控制、地址和数据信息。
NAND的读和写单位为512Byte的页,擦写单位为32页的块。 ● NOR的读速度比NAND稍快一些。
● NAND的写入速度比NOR快很多。 ● NAND的4ms擦除速度远比NOR的5s快。
● 大多数写入操作需要先进行擦除操作。 ● NAND的擦除单元更小,相应的擦除电路更少。
在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。 ---------摘抄自网上流传很广的《NAND 和 NOR flash的区别》 Second part: NAND Flash结构与驱动分析 一、NAND flash的物理组成 NAND Flash 的数据是以bit的方式保存在memory cell,一般来说,一个cell 中只能存储一个bit。
这些cell 以8个或者16个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device的位宽。这些Line会再组成Page,(NAND Flash 有多种结构,我使用的NAND Flash 是K9F1208,下面内容针对三星的K9F1208U0M),每页528Bytes(512byte(Main Area)+16byte(Spare Area)),每32个page形成一个Block(32*528B)。
具体一片flash上有多少个Block视需要所定。我所使用的三星k9f1208U0M具有4096个block,故总容量为4096*(32*528B)=66MB,但是其中的2MB是用来保存ECC校验码等额外数据的,故实际中可使用的为64MB。
NAND flash以页为单位读写数据,而以块为单位擦除数据。按照这样的组织方式可以形成所谓的三类地址: Column Address:Starting Address of the Register. 翻成中文为列地址,地址的低8位 Page Address :页地址 Block Address :块地址 对于NAND Flash来讲,地址和命令只能在I/O[7:0]上传递,数据宽度是8位。
二、NAND Flash地址的表示 512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1st half Page Register和2nd half Page Register,各自的访问由地址指针命令来选择,A[7:0]就是所谓的column address(列地址),在进行擦除操作时不需要它,why?因为以块为单位擦除。32个page需要5bit来表示,占用A[13:9],即该page在块内的相对地址。
A8这一位地址被用来设置512byte的1st half page还是2nd half page,0表示1st,1表示2nd。Block的地址是由A14以上的bit来表示。
例如64MB(512Mb)的NAND flash(实际中由于存在spare area,故都大于这个值),共4096block,因此,需要12个bit来表示,即A[25:14],如果是128MB(1Gbit) 的528byte/page的NAND Flash,则block address用A[26:14]表示。而page address就是blcok address|page address in block NAND Flash 的地址表示为: Block Address|Page Address in block|halfpage pointer|Column Address 地址传送顺序是Column Address,Page Address,Block Address。
由于地址只能在I/O[7:0]上传递,因此,必须采用移位的方式进行。 例如,对于512Mbit x8的NAND flash,地址范围是0~0x3FF_FFFF,只要是这个范围内的数值表示的地址都是有效的。
以NAND_ADDR 为例: 第1 步是传递column address,就是NAND_ADDR[7:0],不需移位即可传递到I/O[7:0]上,而halfpage pointer即A8 是由操作指令决定的,即指令决定在哪个halfpage 上进行读 写,而真正的A8 的值是不需程序员关心的。 第2 步就是将NAND_ADDR 右移9位,将NAND_ADDR[16:9]传到I/O[7:0]上; 第3 步将NAND_ADDR[24:17]放到I/O上; 第4步需要将NAND_ADDR[25]放到I/O上; 因此,整个地址传递过程需要4 步才能完成,即4-step addressing。
如果NAND Flash 的容量是32MB(256Mbit)以下,那么,block adress最高位只到bit24,因此寻址只需要3步。 下面,就x16 的NAND flash 器件稍微进行一下说明。
由于一个page 的main area 的容量为256word,仍相当于512byte。但是,这个时候没有所谓的1st halfpage 和2nd halfpage 之分了,所以,bit8就变得没有意义了,也就是这个时候 A8 完全不用管,地址传递仍然和x8 器件相同。
除了,这一点之外,x16 的NAND使用方法和 x8 的使用方法完全相同。 三、NAND flash驱动解读 以前由于做移植多一些,那些工作很简单(现在看来),从来都不用去关心驱动里面到底怎么实现的,这几次面试才发现真的是学的太浅了,似乎我还在学习仰泳而那些牛人基本都属于潜水级的了,潜的不知有多深。
我对照着开发板所带的NAND flash驱动和k9f1208的芯片资料把这些代码通读了一遍,终于明白了NAND flash的读写过程是如何实现的了。我所参考的驱动是mizi公司为三星芯片所写的,我看看了,大概和官方2.4.18内核的nand.c差不多。
在s3c2410处理器中有专门的NAND flash控制器,他们位于SFR区,具体可以参看s3c2410用户手册。以下的这些代码均可以在vivi或者kernel里面找到,文中会标明程序出自何处。
在vivi中,有关。
3.nandflash什么刷写
step1:由于按键组合为更新模式,首先挂载SD卡
step2:在卡里搜索文件u-boot-aml-ucl.bin是否存在,如果存在,进入step3,否则进入step6
step3: 擦写(scrub)整个flash(nand_erase_nand()函数), 包括OOB区,也就是有可能把本来保存在flash里的厂商提供的坏块标志刷掉。擦写的过程中,如果发现擦写失败(失败检测标志推断为判>;断erase fail的管脚,这里需确认),那么就运行aml_nand_block_markbad(),把坏快标志写到数据结构体aml_chip->block_status里。这个结构体为内核申请的一块非易失性空间(可能为sram,也可>;能是flash里的第一个扇区,要确认)。
step4:把u-boot-aml-ucl.bin刷写到flash里,并且把启动配置(env)也写到flash里
step5: 软复位系统,重启
step6: 跑flash里的uboot程序
step7:在卡里寻找uImage_recovery,进入kernel恢复模式
step8: kernel恢复模式会根据卡里的更新脚本(factory_update_param.aml )或根据手动操作重新刷写系统等操作
由上可知,该系统方案的nand flash的坏块管理是用非易失性内存数据结构保留坏块信息的方式。当更新系统时,如果需要更新uboot程序,则会进行flash的全面擦写及坏块表的全面更新,如果不需要更新
uboot程序,只更新系统,则不会进行擦写操作。
4.留言条格式怎么写
留言条是指找人没有找到,又没有时间等候,只能留给对方一个简短而明了的条据。
留言条的格式也分三部分:称呼、正文、署名和日期。
称呼要顶格写,条子留给谁就称呼谁。
在称呼下一行空二格写正文,简单明了的把你要给对方说的事情写清楚。
在正文下面写清楚谁留的条子,并在署名的下一行写清 年、月、日。
称 呼:
正 文:
署名和日期:
范例:
刘磊同学:
原定星期日的春游改在星期六了。原因是气象台预报星期日有中雨。上午八时在校门口集合,请你准时参加。
同学:王明
1995年3月31日
5.linux下怎样写数据到nandflash
您好,我在别的论坛也看到了您的提问,很高兴为您解答:
如果你确定这些是norFlash的话,那么你的nandflash的驱动就没有被编译进kernel。
看看Device Drivers=>Memory Technology Device (MTD) support=>NAND Device Support下面的相关选项选中了吗
内核配置项目中有个对该nandflash的配置项目:把这些配置项目贴出来看看
如果我的回答没帮助到您,请继续追问。
6.信得格式怎么写
(1)称呼 写一封信,先要把收信人的称呼顶格写在第一行,然后,再在后面加上冒号,表示下面有话要说。
(2)问候语 问候语要写在称呼的下一行,空两格。它可以独立成为一段。
(3)正文 正文一般分为连接语、主体文、总括语三个部分。每一个部分开头都应另起一行,空两格落笔。
(4)祝颂语 祝颂语是表示致敬或祝贺一类的话,如“此致”、“祝”等。它可以紧接着正文写,也可以独占一行,空两格写。另外,在写与“此致”和“祝”相配套的“敬礼”、“健康”一类表示祝愿的话语时,一般要另起一行顶格写。
(5)署名 写完信之后,在信的右下角写上发信人的姓名叫做署名。在署名的前面一般还要加上合适的称谓,如“同学”、“好友”,“弟”“妹”等。
(6)日期
发信的日期可写在具名的后边,也可以另起一行。
示例一篇【□=空格】:
亲爱的老师: □□您好! □□
【内容…… …… …… …… ……】
祝 身体健康!
□□□□□□□□□□□□□□□□□□□□□□□□□您的学生:xxx
□□□□□□□□□□□□□□□□□□□□□□□□□x年x月x日
7.memo英文格式怎么写
memo,意思为备忘录,英文格式如下:
1. TO: (readers' names and job titles)
2. FROM: (your name and job title)
3. DATE: (complete and current date)
4. SUBJECT: (what the memo is about, highlighted in some way)
memo,读音为:英 [ˈmeməʊ] 美 [ˈmemoʊ] 。释义:n.备忘录;(美)内部通知。
例句如下:
1. She penned a short memo to his private secretary.
她给他的私人秘书写了一份简短的备忘录。
2. The entire memo took up all of two pages
整个备忘录写了满满两页纸。
3. The memo ends: 'Please give this matter your most urgent attention.'
备忘录的结尾写道:“请将此事作为亟待处理事项。”
4. With a memo, you will not forget useful words and grammar.
有了备忘录,你就不会忘记有用的单词和语法了。
5. It's okay, memo. I'm here.
好了迈我在这。
6. He wrote down a telephone number on a memo pad.
他在记事簿上写下了一个电话号码。
7. I told my secretary to send you a memo six weeks ago.
六个星期前我就让我的秘书给你送了备忘录的。
8. Read the memo and advertisement below.
阅读下面的备忘录和广告
9. I need you to type up this memo.
我需要你帮我打这份备忘录。
10. So I put two things in the memo already.
所以我已经在memo中存储了两个东西。
8.卜告的书写格式怎么写
讣告的格式:一般式讣告。这种讣告是人们常用的讣告。讣告的写法格式及范文。
写法是:
①在开头一行中间写“讣告”二字,或在“讣告”前冠上死者的姓名,如“XXX讣告”。字体要大于正文的字体;
②写明死者的姓名,身份,因何逝世,逝世的日期、地点、终(享)年岁数;
③简介死者生平,着重简略介绍死者生前具有代表性的经历;
④通知吊唁,开追悼会的时间、地点;
⑤署明发讣告的团体或个人的名称,以及发讣告的年月日。