注册享受一年内交易费 9折 优惠,还是原来的味道!>>点击进入
当前位置:主页 > 新闻动态 > 正文

NAND FLASH知识

05-03 新闻动态

1. 硬件特性:
【Fllung burning just likeh的硬件完成机制】
Fllung burning just likeh全名叫做Fllung burning just likeh Memory,属于非易失性存储设备(Non-volinside theile MemoryDevice),与此绝对应的是易失性存储设备(Volinside theile MemoryDevice)。这类设备,除了Fllung burning just likeh,还有其他对比罕见的如硬盘,ROM等,
与此绝对的,易失性就是断电了,数据就丧失了,比方各人常用的内存,非论是以前的SDRAM,DDRSDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。
Fllung burning just likeh的外部存储是MOSFET,内里有个悬浮门(Floinside theing Gdined),是真正存储数据的单元。
-------------------------------------------------------------------------------------------------------------------------
金属-氧化层-半导体-场效晶体管,简称金氧半场效晶体管(Meting-Oxide-SemiconductorField-Effect Trexclusivesistor:MOSFET)是一种没关系广博使用在模仿电路与数字电路的场效晶体管(field-effecttrexclusivesistor)。MOSFET依照其“通道”的极性不同,可分为n-type与p-type的MOSFET,通常又称为NMOSFET与PMOSFET,其他简称尚包括NMOSFET、PMOS FET、nMOSFET、pMOSFET等。
-------------------------------------------------------------------------------------------------------------------------
在Fllung burning just likeh之前,紫外线可擦除(uv-erjust likeautomatically be rearticley)的EPROM,就曾经采用用Floinside theingGdined存储数据这一技术了。


图1.典型的Fllung burning just likeh内存单元的物理构造


数据在Fllung burning just likeh内存单元中的。
存储电荷的几何,取决于图中的外部门(externinggdined)所被施加的电压,其控制了是向存储单元中冲入电荷还是使其开释电荷。
数据的表示,以所存储的电荷的电压能否凌驾一个特定的阈值Vth来表示。
【SLC和MLC的完成机制】
Njust like well just likeFllung burning just likeh根据外部存储数据单元的电压的不同层次,也就是单个内存单元中,是存储1位数据,还是多位数据,没关系分为SLC和MLC:
1. SLC,Single Level Cell:
单个存储单元,只存储一位数据,表示成1或0.
就是下面先容的,对于数据的表示,单个存储单元中外部所存储电荷的电压,和某个特定的阈值电压Vth,相比,倘若大于此Vth值,就是表示1,反之,小于Vth,就表示0.
对于njust like well just like Fllung burning just likeh的数据的写入1,就是控制ExterningGdined去充电,使得存储的电荷够多,对比一下莱特币行情交易时间段。凌驾阈值Vth,就表示1了。而对于写入0,就是将其放电,电荷简略节略到小于Vth,就表示0了。
关于为何Njust like well just likeFllung burning just likeh不能从0变成1,我的理解是,物理下去说,是没关系完成每一位的,从0变成1的,但是实际上,对于实际的物理完成,出于效率的思虑,倘若对于,每一个存储单元都能零丁控制,即,0变成1就是,对每一个存储单元零丁去充电,所须要的硬件完成就很庞大和高贵,同时,所实行对块擦除的操作,也就无法完成之前的,一闪而过的速度了,也就失?了Fllung burning just likeh的众多特性了。
// 也就是放电的思绪还是容易些。1->0
2. MLC,Multi Level Cell:
与SLC绝对应,就是单个存储单元,没关系存储多个位,比方2位,4位等。其完成机制,说起来对比简单,就是,经历控制外部电荷的几何,分红多个阈值,经历控制内里的电荷几何,而抵达我们所须要的存储成不同的数据。比方,假定输入电压是Vin=4V(实际没有这样的电压,此处只是为了举例容易),那么,没关系策画出2的2次方=4个阈值,1/4的Vin=1V,2/4的Vin=2V,3/4的Vin=3V,Vin=4V,分别表示2位数据00,01,10,11,对于写入数据,就是充电,经历控制外部的电荷的几何,对应表示不同的数据。
对于读取,则是经历对应的外部的电流(与Vth成正比),然后经历一系列解码电路完成读取,解析出所存储的数据。这些具体的物理完成,都是有足够切确的设备和技术,才调完成切确的数据写入和读出的。
单个存储单元没关系存储2位数据的,称作2的2次方=4 Level Cell,而不是2 Level Cell;
同理,对于新出的单个存储单元没关系存储4位数据的,称作2的4次方=16 Level Cell。
【关于如何区别SLC还是MLC】
Njust like well just like Fllung burning just likeh策画中,有个命令叫做RearticleID,读取ID,意思是读取芯片的ID,就像各人的身份证一样,这里读取的ID中,是:
读取好几个字节,通常最少是4个,新的芯片,支持5个以至更多,从这些字节中,没关系解析出很多相关的新闻,比方:
此Njust like well just like Fllung burning just likeh外部是几个芯片(chip)所组成的,
每个chip包括了几片(Plexclusivee),
每一片中的页大小,块大小,等等。
在这些新闻中,其中有一个,就是区别此fllung burning just likeh是SLC还是MLC。下面这个就是最罕见的Njust like well just likeFllung burning just likeh的dingtlexclusiveta gaung burning just likeheet中所规则的,第3个字节,3rd byte,所表示的新闻,其中就有SLC/MLC的区别新闻:

Description

I/O7

I/O6

I/O5 I/O4

I/O3 I/O2

I/O1 I/O0

Interning

ChipNumautomatically ber

1

2

4

8

00

01

10

11

CellType

2 LevelCell

4 LevelCell

8 LevelCell

16 LevelCell

00

01

10

11

Numautomatically berof

Simultexclusiveeously

Progrfeelmed Pgets older

1

2

4

8

00

01

10

11

Interleaudio-videoe Progrfeel

Betweenmultiple chips

NotSupport

Support




表1.Njust like well just likeFllung burning just likeh第3个ID的含义


【Njust like well just like Fllung burning just likeh的物理存储单元的阵列组织构造】
Njust like well just like fllung burning just likeh的外部组织构造,此处还是用图来注释,对比容易理解:
上图是K9K8G08U0A的dingtlexclusiveta gaung burning just likeheet中的描画。
简单注释就是:
1.一个njust like well just like fllung burning just likeh由很多个块(Block)组成,
块的大小通常是
-> 128KB,其实比特币今天什么价格。
-> 256KB,
-> 512KB
此处是128KB。
2.每个块内里又包括了很多页(page)。每个页的大小,
老的njust like well just like fllung burning just likeh,页大小是256B,512B,
这类的njust like well just like fllung burning just likeh被称作smeair conditioning unith of the inhiquexclusivetity,。地址周期唯有4个。
对于现在罕见的njust like well just like fllung burning just likeh大都是2KB,
被称作major inhiquexclusivetity,对应的发读写命令地址,一共5个周期(cycle),
更新的njust like well just like fllung burning just likeh是4KB,
块,也是Njust like well just like Fllung burning just likeh的擦除操作的根本/最小单位。
3.每一个页,对应还有一块区域,叫做安闲区域(spabdominingsolutely is isa)/冗余区域(redundould likeisa),而Linux体系中,通常叫做OOB(Out Of Bjust like well just like),这个区域,是起先基于Njust like well just likeFllung burning just likeh的硬件特性:数据在读写时候绝对容易过失,所以为了保证数据的正确性,必须要有对应的检测和纠错机制,此机制被叫做EDC(ErrorDetection Code)/ECC(Error Code Correction:或者Error Checking just like well just likeCorrecting),所以策画了多余的区域,用于放置数据的校验值。
页: 是Njust like well just like Fllung burning just likeh的写入操作的根本/最小的单位。
【Njust like well just like Fllung burning just likeh数据存储单元的整体架构】
简单说就是,罕见的njust like well just like fllung burning just likeh,外部唯有一个chip,每个chip唯有一个plexclusivee。
而有些庞大的,容量更大的njust like well just like fllung burning just likeh,外部有多个chip,每个chip有多个plexclusivee。这类的njust like well just likefllung burning just likeh,往往也有加倍初级的功效,比方下面要先容的Multi Plexclusivee Progrfeel和Interleaudio-videoe PageProgrfeel等。
比方,型号为K9K8G08U0A这个芯片(chip),
外部有:
K9F4G08U0A (256MB) : Plexclusivee (1Gb): Plexclusivee (1Gb)
K9F4G08U0A (256MB) : Plexclusivee (1Gb): Plexclusivee (1Gb)
K9WAG08U1A ,外部包括了2个K9K8G08U0A
K9NBG08U5A ,外部包括了4个K9K8G08U0A
【Fllung burning just likeh称号的由来】
Fllung burning just likeh的擦除操作是以inhiquexclusivetity块为单位的,与此绝对应的是其他很多存储设备,是以quexclusivetity位为最小读取/写入的单位,Fllung burning just likeh是一次性地擦除整个块:在发送一个擦除命令后,一次性地将一个inhiquexclusivetity,罕见的块的大小是128KB/256KB。。,整体擦除为1,也就是内里的形式整体都是0xFF了,由于是一下子就擦除了,绝对来说,擦除用的时间很短,没关系用一闪而过去形容,所以,叫做Fllung burning just likehMemory。想知道NAND。中文有的翻译为(敏捷)闪存。
【Fllung burning just likeh绝对于普通设备的特殊性】
1. 下面提到过的,Fllung burning just likeh最小操作单位,有些特殊。
通常设备,比方硬盘/内存,读取和写入都是以quexclusivetity位为单位,读取一个quexclusivetity的值,将某个值写入对应的地址的位,都是没关系按位操作的。
但是Fllung burning just likeh由于物理特性,使得外部存储的数据,只能从1变成0,这点,没关系早年面的外部完成机制了解到,只是容易同一充电,不容易零丁的存储单元去放电,所以才说,只能从1变成0,也就是开释电荷。
所以,总结一下Fllung burning just likeh的特殊性如下:

所以,总结一下Fllung burning just likeh的特殊性如下:

普通设备(硬盘/内存等)

Fllung burning just likeh

读取/写入的叫法

读取/写入

读取/编程(Progrfeel)①

读取/写入的最小单位

Bit/位

Page/页

擦除(Erottom)操作的最小单位

Bit/位

Block/块②

擦除操作的含义

将数据删除/整体写入0

将整个块都擦除成全是1,也就是内里的数据都是0xFF③

对于写操作

间接写即可

在写数据之前,要先擦除,然后再写


注:
①之所以将写操作叫做编程,是由于,fllung burning just likeh和之前的EPROM,EEPROM秉承兴盛而来,而之前的EEPROM(ElectricfriendErjust likeautomatically be rearticley Progrfeelmautomatically be rearticley Rearticle-OnlyMemory),火币网手续费发财了。往内里写入数据,就叫做编程Progrfeel,之所以这么称号,是由于其对数据的写入,看着http://www.gateiopingtai.com。是须要用电去擦除/写入的,就叫做编程。
②对于目前罕见的页大小是2K/4K的Njust like well just like Fllung burning just likeh,其块的大小有128KB/256KB/512KB等。而对于NorFllung burning just likeh,罕见的块大小有64K/32K等。
③在写数据之前,要先擦除,外部就都变成0xFF了,然后才调写入数据,也就是将对应位由1变成0。

【Njust like well just likeFllung burning just likeh引脚(Pin)的说明】


图3.Njust like well just likeFllung burning just likeh引脚功效说明


上图是罕见的Njust like well just like Fllung burning just likeh所具有的引脚(Pin)所对应的功效,简单翻译如下:
1. I/O0 ~ I/O7:用于输上天址/数据/命令,输入数据
2. CLE:Commjust like well just like Linside thechEnautomatically be rearticley,命令锁存使能,在输入命令之前,要先在形式寄存器中,设置CLE使能
3. ALE:Address Linside thechEnautomatically be rearticley,地址锁存使能,在输上天址之前,要先在形式寄存器中,比特币历史价格最高价。设置ALE使能
4. CE#:Chip Enautomatically be rearticley,芯片使能,在操作Njust like well just like Fllung burning just likeh之前,要先选中此芯片,才调操作
5. RE#:Rearticle Enautomatically be rearticley,读使能,在读取数据之前,要先使CE#有效。
6. WE#:Write Enautomatically be rearticley,写使能:在写取数据之前,要先使WE#有效。
7. WP#:Write Protect,写庇护
8. R/B#:Rearticley/BusyOutput:就绪/忙:主要用于在发送完编程/擦除命令后:检测这些操作能否完成:忙:表示编程/擦除操作仍在实行中:就绪表示操作完成.
9. Vcc:Power,电源
10. Vss:Ground,接地
11. N.C:Non-Connection:未定义,未连接。
[小知识]
在数据手册中,你常会看到,对于一个引脚定义,有些字母下面带一横杠的,那是说明此引脚/信号是低电平有效,比方你下面看到的RE头上有个横线,就是说明,此RE是低电平有效,此外,为了书写容易,在字母反面加“#”,也是表示低电平有效,比方我下面写的CE#;倘若字母头上啥都没有,就是默许的高电平有效,比方下面的CLE,就是高电平有效。
【为何须要ALE和CLE】
蓦然想明白了,Njust like well just like Fllung burning just likeh中:为何策画这么多的命令:把整个体系搞这么庞大的缘故原由了:
比方命令锁存使能(Commjust like well just like Linside thech Enautomatically be rearticley:CLE)和地址锁存使能(Address Linside thechEnautomatically be rearticley,ALE),那是由于,Njust like well just likeFllung burning just likeh就8个I/O,而且是复用的,也就是,没关系传数据,也没关系传地址,也没关系传命令,为了划分你眼前目今传入的结果是啥,所以,先要用发一个CLE(或ALE)命令,通知njust like well just likeFllung burning just likeh的控制器一声,我下面要传的是命令(或地址),这样,内里才调根据传入的形式,实行对应的手脚。否则:njust like well just likefllung burning just likeh外部:怎样知道你传入的是数据:还是地址:还是命令啊:也就无法完成正确的操作了.
【Njust like well just like Fllung burning just likeh唯有8个I/O引脚的好处】
1. 简略节略核心引脚:绝对于并口(Pisllel)的NorFllung burning just likeh的48或52个引脚来说,确切是大大减小了引脚数目,这样封装后的芯片体积,就小很多。现在芯片在向体积更小,功效更强,功耗更低兴盛,减小芯片体积,就是很大的上风。同时,简略节略芯片接口,也意味着使用此芯片的相关的核心电路会更简化,制止了烦琐的硬件连线。
2.进步体系的可扩展性,由于没有像其他设备一样用物理大小对应的完全数主意containr引脚,在芯片外部换了芯片的大小等的改动,对于用整体的地址containr的引脚,那么就会惹起这些引脚数主意增加,比方容量扩充一倍,地址空间/寻址空间扩充一倍,所以,地址线数目/containr引脚数目,就要多加一个,而对于同一用8个I/O的引脚的Njust like well just likeFllung burning just likeh,由于对外提供的都是同一的8个引脚,外部的芯片大小的变化或者其他的变化,对于外部使用者(比方编写njust like well just likefllung burning just likeh驱动的人)来说,不须要存眷,只是保证新的芯片,还是遵循异样的接口,异样的时序,异样的命令,就没关系了。这样就进步了体系的扩展性。学习nand。
【Njust like well just like fllung burning just likeh的一些典型(typicing)特性】
1.页擦除时间是200us,有些慢的有800us。
2.块擦除时间是1.5ms.
3.页数据读取到数据寄存器的时间通常是20us。
4.串行探访(Seriing use)读取一个数据的时间是25ns,而一些旧的njust like well just likefllung burning just likeh是30ns,以至是50ns。
5.输入输入端口是地址和数据以及命令一起multiplex复用的。
以前老的Njust like well just like Fllung burning just likeh,编程/擦除时间对比短,比方K9G8G08U0M,才5K次,尔厥后很多6.njust like well just likefllung burning just likeh的编程/擦除的寿命,最多许可的次数,以前的njust like well just like fllung burning just likeh大都是10K次,也就是1万次,而现在很多新的njust like well just likefllung burning just likeh,技术进步了,比方,Micron的MT29F1GxxABB,Numonyx的NAND04G-B2D/NAND08G-BxC,都没关系抵达100K,也就是10万次的编程/擦除。和之前罕见的NorFllung burning just likeh抵达异样的使用寿命了。
7.48引脚的TSOP1封装或 52引脚的ULGA封装
【Njust like well just like Fllung burning just likeh中的特殊硬件构造】
由于njust like well just likefllung burning just likeh绝对其他罕见设备来说,对比特殊,所以,特殊的设备,也有特殊的策画,所以,有些特殊的硬件特性,就有对比注释一下:
1. 页寄存器(Page Register):由于Njust like well just like Fllung burning just likeh读取和编程操作来说,通常最小单位是页,所以,njust like well just likefllung burning just likeh在硬件策画时候,就思虑到这一特性,对于每一片,都有一个对应的区域,特地用于寄存,将要写入到物理存储单元中去的或者刚从存储单元中读取进去的,一页的数据,这个数据缓存区,本色上就是一个strefeel,但是只是名字叫法不同,dingtlexclusiveta gaung burning just likeheet内里叫做PageRegister,此处翻译为页寄存器,实际理解为页缓存,更为伏贴些。
注意:唯有写到了这个页缓存中,唯有等你发了对应的编程第二阶段确切认命令0x10之后,实际的编程手脚才先河,才先河把页缓存中的数据,一点点写到物理存储单元中去。
所以,简单总结一下就是,对于数据的流向,实际是经过了如下措施:
图4 Njust like well just like Fllung burning just likeh读写时的数据流向
【Njust like well just like Fllung burning just likeh中的坏块(Barticle Block)】
Njust like well just like Fllung burning just likeh中,一个块中含有1个或多个位是坏的,就成为其为坏块。
坏块的宁静性是无法保证的,也就是说,不能保证你写入的数据是对的,或者写入对了,读进去也不一定对的。而一般的块,断定是写入读出都是一般的。
坏块有两种:
(1)一种是出厂的时候,也就是,你买到的新的,还没用过的Njust like well just likeFllung burning just likeh,就没关系包括了坏块。此类出厂时就有的坏块,被称作flawing professioningy (minvited)articleverse inhiquexclusivetity或initiingarticleverse/invingid inhiquexclusivetity,在出厂之前,就会做对应的象征,标为坏块。
具体象征的地方是,对于现在罕见的页大小为2K的Njust like well just likeFllung burning just likeh,是块中第一个页的oob起始职位地方(关于什么是页和oob,下面会有详尽注释)的第1个字节(旧的小页面,pgets olderize是512B以至256B的njust like well just likefllung burning just likeh,FLASH知识。坏块象征是第6个字节),倘若不是0xFF,就说明是坏块。绝对应的是,所有一般的块,好的块,内里所少见据都是0xFF的。
(2)第二类叫做在使用经过中出现的,由于使用经过时间长了,在擦块除的时候,出错了,说明此块坏了,也要在程序运转经过中,创造,并且象征成坏块的。具体象征的职位地方,和下面一样。这类块叫做worn-outarticleverse inhiquexclusivetity。
对于坏块的管理,在Linux体系中,叫做坏块管理(BBM,Barticle BlockMexclusiveagment),对应的会有一个表去记载好块,坏块的新闻,以及坏块是出厂就有的,还是厥后使用出现的,这个表叫做坏块表(BBT,Barticle Block Tautomatically be rearticley)。在Linux内核MTD架构下的Njust like well just like Fllung burning just likeh驱动,和Ukick out中Njust like well just likeFllung burning just likeh驱动中,在加载完驱动之后,倘若你没有参与参数自动央浼跳过坏块扫描的话,那么都会去自动扫描坏块,建筑必要的BBT的,以备反面坏块管理所使用。
而关于好块和坏块,Njust like well just like Fllung burning just likeh在出厂的时候,会做出保证:
1.关于好的,没关系使用的块的数目抵达一定的数目,比方三星的K9G8G08U0M,整个fllung burning just likeh一共有4096个块,出厂的时候,保证好的块至多大于3996个,也就是意思是,你新买到这个型号的njust like well just likefllung burning just likeh,最坏的可能,有3096-3996=100个坏块。不过,事实上,现在出厂时的坏块,对比少,绝大大都,都是使用时间长了,在使用经过中出现的。
2.保证第一个块是好的,并且通常绝对来说对比耐用。做此保证的主要缘故原由是,很多Njust like well just likeFllung burning just likeh坏块管理方法中,就是将第一个块,用来存储下面提到的BBT,否则,都是出错几率一样的块,看看火币比特币app可靠吗。那么也就不太好管理了,连放BBT的地方,都不好找了,^_^。
通常来说,不同型号的Njust like well just like Fllung burning just likeh的数据手册中,也会提到,自己的这个njust like well just likefllung burning just likeh,最多许可几何个坏块。就比方下面提到的,三星的K9G8G08U0M,最多有100个坏块。
对于坏块的象征,本色上,也只是对应的fllung burning just likeh上的某些字节的数据是非0xFF而已,所以,只须是数据,就是没关系读取和写入的。也就意味着,没关系写入其他值,也就把这个坏块象征新闻捣鬼了。对于出厂时的坏块,通常是不发起将象征好的新闻擦除掉的。
ukick out中有个命令是“njust like well despite the fair conditioning unitt thinside thetcrub”就没关系将块中所有的形式都擦除了,包括坏块象征,非论是出厂时的,还是厥后使用经过中出现而新象征的。通常来说,不发起用这个。不过,我倒是时常用,其实也没啥大碍,呵呵。
最好用“njust like well just like erottom”只擦除好的块,对于曾经象征坏块的块,不擦除。
【njust like well just like Fllung burning just likeh中页的探访程序】
在一个块内,对每一个页实行编程的话,必需是程序的,而不能是随机的。比方,一个块中有128个页,那么你只能先对page0编程,再对page1编程,。。。。,而不能随机的,比方先对page3,再page1,page2.,page0,page4,.。。。
【片选有关(CE don’t-cis)技术】
很多Njust like well just like fllung burning just likeh支持一个叫做CE don’t-cis的技术,字面意思就是,不存眷能否片选,
那有人会问了,倘若不片选,那还能对其操作吗?答案就是,这个技术,主要用在其时是不须要选中芯片却还没关系继续操作的这些处境:在某些应用,比方录音,音频播放等应用,中,外部使用的微秒(us)级的时钟周期,此处假定是对比少的2us,在实行读取一页或者对页编程时,是对Njust like well just likeFllung burning just likeh操作,这样的串行(SeriingAccess)探访的周期都是20/30/50ns,对于虚拟货币电子商务。都是纳秒(ns)级的,此处假定是50ns,当你曾经发了对应的读或写的命令之后,接上去只是须要Njust like well just likeFllung burning just likeh外部去自己操作,将数据读取除了或写入进去到外部的数据寄存器中而已,此处,倘若没关系把片选撤除,CE#是低电平有效,撤除片选就是拉高电平,这样会在下一个外部命令发送过去之前,即微秒量级的时间内里,即2us-50ns≈2us,这段时间的撤除片选,没关系低沉很少的体系功耗,但是屡次的操作,就没关系在很大水平上低沉整体的功耗了。
总结起来简单注释就是:由于某些外部应用的频次对比低,而Njust like well just likeFllung burning just likeh外部操作速度对比快,所以具体读写操作的大局限时间内里,都是在期待外部命令的输入,同时却选中芯片,出现了多余的功耗,此“不存眷片选”技术,就是在Njust like well just likeFllung burning just likeh的外部的绝对敏捷的操作(读或写)完成之后,就撤除片选,以俭省体系功耗。待下次外部命令/数据/地址输入来的时候,再选中芯片,即可一般继续操作了。这样,整体上,就没关系大大低沉体系功耗了。
注:Njust like well just like Fllung burning just likeh的片选与否,功耗折柳会有很大。倘若数据没有记错的话,我之前遇到我们体系内里的njust like well just likefllung burning just likeh的片选,梗概有5个mA的电流输入呢,要知道,整个体系优化之后的待机功耗,也才10个mA左右的。
【带EDC的拷回操作以及Sector的定义(Copy-Bair conditioning unitk Operine with EDC &firm;Sector Definition for EDC)】
Copy-Bair conditioning unitk功效,简单的说就是,将一个页的数据,拷贝到另一个页。
倘若没有Copy-Bair conditioning unitk功效,那么一般的做法就是,先要将那个页的数据拷贝进去放到内存的数据strefeel中,读进去之后,再用写命令将这页的数据,写到新的页内里。
而Copy-Bair conditioning unitk功效的好处在于,不须要用到外部的存储空间,不须要读进去放到外部的strefeel内里,而是没关系间接读取数据到外部的页寄存器(pageregister)然后写到新的页内里去。而且,为了保证数据的正确,要硬件支持EDC(Error DetectionCode)的,否则,在数据的拷贝经过中,可能会出现过失,并且拷贝次数多了,可能会累积更多过失。
而对于过失检测来说,硬件通常支持的是512字节数据,对应有16字节用来寄存校验出现的ECC数值,而这512字节通常叫做一个扇区。对于2K+64字节大小的页来说,根据512字节分,分别叫做A,B,C,D区,尔反面的64字节的oob区域,根据16字节一个区,分别叫做E,F,G,H区,对应寄存A,比特币提现无法到账。B,C,D数据区的ECC的值。
总结:
512+16
2K +64 : A B C D - E F G H区
Copy-Bair conditioning unitk编程的主要作用在于,去掉了数据串行读取进去,再串行写入进去的时间,所以,这局限操作,是对比耗时的,所以此技术没关系进步编程效率,进步体系整体本能机能。
【多片同时编程(Simultexclusiveeously Progrfeel Multi Plexclusivee)】
对于有些新出的Njust like well just likeFllung burning just likeh,支持同时对多个片实行编程,比方下面提到的三星的K9K8G08U0A,外部包括4片(Plexclusivee),分别叫做Plexclusivee0,Plexclusivee1,Plexclusivee2,Plexclusivee3。.由于硬件上,对于每一个Plexclusivee,都有对应的大小是2048+64=2112字节的页寄存器(PageRegister),使得同时支持多个Plexclusivee编程成为可能。K9K8G08U0A支持同时对2个Plexclusivee实行编程。不过要注意的是,只能对Plexclusivee0和Plexclusivee1或者Plexclusivee2和Plexclusivee3,同时编程,而不支持Plexclusivee0和Plexclusivee2同时编程。
【交叉页编程(Interleaudio-videoe Page Progrfeel)】
多片同时编程,是针对一个chip内里的多个Plexclusivee来说的,
而此处的交叉页编程,是指对多个chip而言的。
没关系先对一个chip,假定叫chip1,内里的一页实行编程,然后此时,chip1外部就先河将数据一点点写到页内里,就出于忙的形态了,而此时没关系哄骗这个时间,对出于就绪形态的chip2,也实行页编程,事实上NAND。发送对应的命令后,chip2外部也就先河逐步的写数据到存储单元内里去了,也出于忙的形态了。此时,再去查验chip1,倘若编程完成了,就没关系先河下一页的编程了,然后发完命令后,就让其外部逐步的编程吧,再去查验chip2,倘若也是编程完了,也就没关系实行接上去的其他页的编程了。如此,交互操作chip1和chip2,就没关系有效天时用时间,使得整体编程效率进步近2倍,大大进步njust like well just likefllung burning just likeh的编程/擦写速度了。
【随机输入页内数据(Rjust like well just likeom Dinside thea Output In a Page)】
在先容此特性之前,先要说说,与Rjust like well just likeom Dinside thea Output In aPage绝对应的是,普通的,一般的,sequentiing dinside thea output in exclusive internetsite。
一般处境下,我们读取数据,都是先发读命令,然前期待数据从存储单元到外部的页数据寄存器中后,我们经历一贯地将RE#(RearticleEningcohol,低电平有效)置低,然后从我们先河传入的列的起始地址,一点点读出我们要的数据,直到页的结尾,当然有可能还没到页地址的结尾,就不再读了。所谓的程序(sequentiing)读取也就是,根据你之前发送的列地址的起始地址先河,每读一个字节的数据进去,外部的数据指针就加1,移到下个字节的地址,然后你再读下一个字节数据,就没关系读进去你要的数据了,直到读取整体的数据进去为止。
而此处的随机(rjust like well just likeom)读取,就是在你一般的程序读取的经过中,
先发一个随机读取的先河命令0x05命令,
再传入你要将外部那个数据指针定位到具体什么地址,也就是2个cycle的列地址,
然后再发随机读取中断命令0xE0,
然后,外部那个数据地址指针,就会搬动到你所制定的职位地方了,
你接上去再读取的数据,就是从那个制定地址先河的数据了。
而njust like well just like fllung burning just likeh数据手册内里也说了,这样的随机读取,你没关系屡次操作,没限制的。事实上gate.io注册验证码错误。
请注意,下面你所传入的地址,都是列地址,也就是页要地本地址,也就是说,对于页大小为2K的njust like well just likefllung burning just likeh来说,所传入的地址,应当是小于2048+64=2112的。
不过,实际在njust like well just like fllung burning just likeh的使用中,如同这种用法很少的。绝大大都,都是程序读取数据。
【页编程(写操作)】
Njust like well just like fllung burning just likeh的写操作叫做编程Progrfeel,编程,通常处境下,是以页为单位的。
有的Njust like well just likeFllung burning just likeh,比方K9K8G08U0A,支持局限页编程,但是有一些限制:在同一个页内的,连续的局限页的编程,不能凌驾4次。通常处境下,很少使用到局限页编程,都是以页为单位实行编程操作的。
一个操作,用两个命令去完成,看起来是多余,效率不高,但是实际上,有其特殊思虑,
至多对于块擦除来说,先河的命令0x60是擦除设置命令(erottom setupcommexclusive),然后传入要擦除的块地址,然后再传入擦除确认命令(erottom confirmcommjust like well just like)0xD0,以先河擦除的操作。
这种,分两步:先河设置,末了确认的命令方式,是为了制止由于外部由于偶尔的/未意想而出现的乐音,比方,,此时,纵使被njust like well just likefllung burning just likeh误以为是擦除操作,但是没有之后确切认操作0xD0,njust like well just likefllung burning just likeh就不会去擦除数据,这样使得数据更安适,不会由于乐音而误操作。
分类: Fllung burning just likeh驱动
【读(rearticle)操作经过详解】
以最简单的rearticle操作为例,注释如何理解时序图,以及将时序图中的央浼,转化为代码。
注释时序图之前,让我们先要搞显露,我们要做的事情:那就是,要从njust like well just likefllung burning just likeh的某个页内里,比特币怎么玩儿。读取我们要的数据。
要完成此功效,会触及到几局限的知识,至多很容易想到的就是:须要用到哪些命令,怎样发这些命令,怎样计算所须要的地址,怎样读取我们要的数据等等。
下面,就一步步的注释,须要做什么,以及如何去做:
1.须要使用何种命令
首先,是要了解,对于读取数据,要用什么命令。
下面是dingtlexclusiveta gaung burning just likeheet中的命令集中:
图5.Njust like well just like Fllung burning just likeh K9K8G08U0A的命令集中
很容易看出,我们要读取数据,要用到Rearticle命令,该命令须要2个周期,第一个周期发0x00,第二个周期发0x30。
2.发送命令前的计划就业以及时序图各个信号的具体含义
知道了用何命令后,再去了解如何发送这些命令。
[小知识]
在先河注释前,多罗嗦一下”使能”这个词,对于聚币网投诉电话是多少。以便有些读者和我以前一样,在听这类固然对于某些专业人士说是属于最根本的词汇了,但是对于初次接触,或者接触不多的人来说,听多了,容易被搞得一头雾水:使能(Enautomatically be rearticley),是指使其(某个信号)有效,使其奏效的意思,“使其”“能够”怎样怎样样。。。。比方,下面图中的CLE线号,是高电平有效,倘若此时将其设为高电平,我们就叫做,将CLE使能,也就是使其奏效的意思。
图6.Njust like well just like Fllung burning just likeh数据读取操作的时序图
注:此图来自三星的型号K9K8G08U0A的njust like well just like fllung burning just likeh的数据手册(dingtlexclusiveta gaung burning just likeheet)。
我们来一起看看,我在图6中的特地标注的①边上的黄色竖线。
黄色竖线所处的时刻,是在发送读操作的第一个周期的命令0x00之前的那一刻。
让我们看看,在那一刻,其所穿过好几行都对应什么值,以及进一步理解,为何要那个值。
(1)黄色竖线穿过的第一行,是CLE。还记得后面先容命令所存使能(CLE)那个引脚吧?CLE,将CLE置1,就说明你将要经历I/O复用端口发送进入Njust like well just likeFllung burning just likeh的,是命令,而不是地址或者其他类型的数据。唯有这样将CLE置1,使其有效,才调去通知了外部硬件逻辑,你接上去将收到的是命令,外部硬件逻辑,才会将遭到的命令,放到命令寄存器中,才调完成反面正确的操作,否则,不去将CLE置1使其有效,硬件会莫衷一是,不知道你传入的结果是数据还是命令了。
(2)而第二行,是CE#,那一刻的值是0。这个道理很简单,你既然要向Njust like well just likeFllung burning just likeh发命令,那么先要选中它,所以,要保证CE#为低电平,使其有效,也就是片选有效。
(3)第三行是WE#,意思是写使能。由于接上去是往njust like well just likeFllung burning just likeh内里写命令,所以,要使得WE#有效,所以设为低电平。
(4)第四行,是ALE是低电平,而ALE是高电平有效,此时意思就是使其有效。而对应地,后面先容的,使CLE有效,由于将要数据的是命令,而不是地址。倘若在其他某些形势,比方接上去的要输上天址的时候,就要使其有效,而使CLE有效了。
(5)第五行,RE#,此时是高电平,有效。没关系看到,知道反面低6阶段,才变成低电平,才有效,由于那时候,要发生读取命令,去读取数据。
(6)第六行,就是我们重点要先容的,复用的输入输入I/O端口了,此刻,你知道为什么不禁用比特币。还没有输入数据,接上去,在不同的阶段,会输入或输入不同的数据/地址。
(7)第七行,R/B#:高电平,表示R(Rearticley)/就绪,由于到了反面的第5阶段,硬件外部,在第四阶段,接受了外界的读取命令后,把该页的数据一点点送到页寄存器中,这段时间,属于体系在忙着干活,属于忙的阶段,所以,R/B#才变成低,表示Busy忙的形态的。
先容了时刻①的各个信号的值,以及为何是这个值之后,信赖,反面的各个时刻,对应的不同信号的各个值,各人就会自己逐步分析了,也就容易理解具体的操作程序和原理了。
3.如何计算出,我们要传入的地址
在先容具体读取数据的详尽流程之前,还要做一件事,那就是,先要搞懂我们要探访的地址,以及这些地址,如何判辨后,一点点传入进去,使得硬件能区别才行。
此处还是以K9K8G08U0A为例,此njust like well just like fllung burning just likeh,FLASH知识。一共有8192个块,每个块内有64页,每个页是2K+64Bytes,假定,我们要探访其中的第7000个块中的第25页中的1208字节处的地址,此时,我们就要先把具体的地址算进去:
物理地址=块大小×块号+页大小×页号+页要地本地址=7000×128K+64×2K+1208=0x36B204B8:接上去,我们就看看,怎样才调把这个实际的物理地址,转化为njust like well just likeFllung burning just likeh所央浼的格式。
在注释地址组成之前,先要来看看其dingtlexclusiveta gaung burning just likeheet中关于地址周期的先容:
图7 Njust like well just like Fllung burning just likeh的地址周期组成
结合图7和图5中的2,3阶段,我们没关系看出,此njust like well just likefllung burning just likeh地址周期共有5个,2个列(Column)周期,3个行(Row)周期。
而对于对应地,我们没关系看出,实际上,
列地址A0~A10,就是页要地本地址,地址周围是从0到2047,而对出的A11,实际上没关系表示2048~4095,但是实际上,我们最多也只用到了2048~2112,用于表示页内的oob区域,其大小是64字节。
A12~A30,称作页号,页的号码,没关系定位到具体是哪一个页。相比看比特币基金发布的图片。
而其中,A18~A30,表示对应的块号,即属于哪个块。
// 可见:地址的传输程序是是 页要地本地址,页号,块号。 从小到大。
简单注释完了地址组成,那么就很容易分析下面例子中的地址了:
0x36B204B8 = 0011 0110 1011 0010 0000 0100,分别分配到5个地址周期就是:
1st 周期,A7~A0 :1011 1000 = 0x B8
2nd周期,A11~A8 :0000 0100 = 0x04
3rd周期,A19~A12 :0010 0000 = 0x20
4th周期,A27~A20 :0110 1011 = 0x6B
5th周期,A30~A28 :0000 0011 = 0x03
注意,与图7中对应的,*L,意思是低电平,由于未用到那些位,dingtlexclusiveta gaung burning just likeheet中逼迫央浼设为0,所以,才有下面的2nd周期中的高4位是0000.其他的A30之后的位也是类似原理,都是0。
是以,接上去要先容的,我们要探访第7000个块中的第25页中的1208字节处的话,所要传入的地址就是分5个周期,分别传入两个列地址的:0xB8,0x04,然后再传3个行地址的:0x20,0x6B,0x03,这样硬件才调区别。
4.读操作经过的注释
计划就业终于完了,下面就没关系先河注释说明,对于读操作的,下面图中标进去的,1-6个阶段,具体是什么含义。
(1)操作计划阶段:此处是读(Rearticle)操作,所以,先发一个图5中读命令的第一个阶段的0x00:表示,让硬件先计划一下,接上去的操作是读。
(2) 发送两个周期的列地址。也就是页要地本地址,表示,我要从一个页的什么职位地方先河读取数据。
(3) 接上去再传入三个行地址。对应的也就是页号。
(4) 然后再发一个读操作的第二个周期的命令0x30。接上去,想知道比特币发行融资 叫停 评论。就是硬件外部自己的事情了。
(5) Njust like well just likeFllung burning just likeh外部硬件逻辑,职掌去根据你的央浼,根据传入的地址,找到哪个块中的哪个页,然后把整个这一页的数据,都一点点搬运到页缓存中去。而在此时间,你所能做的事,也就只须要去读取形态寄存器,看看对应的位的值,也就是R/B#那一位,是1还是0,0的话,就表示,体系是pre-occupied,仍在”忙“(着读取数据),倘若是1,就说体系活干完了,忙清了,曾经把整个页的数据都搬运到页缓存里去了,你没关系接上去读取你要的数据了。
对于这里。预计估摸有人会问了,这一个页一共2048+64字节,倘若我传入的页要地本地址,就像下面给的1028一类的值,只是想读取1028到2011这局限数据,而不是页先河的0地址整个页的数据,那么外部硬件却读取整个页的数据进去,岂不是很奢侈吗?答案是,确切很奢侈,效率看起来不高,但是实际就是这么做的,我不知道迅雷玩客币不是区块链。而且自身读取整个页的数据,绝对时间并不长,而且读进去之后,外部数据指针会定位到你刚刚所制定的1208的那个职位地方。
(6) 接上去,就是你“偷取“体系忙了半天之后的劳动功劳的时候了,呵呵。经历先去Njust like well just likeFllung burning just likeh的控制器中的数据寄存器中写入你要读取几何个字节(byte)/字(word),然后就没关系去Njust like well just likeFllung burning just likeh的控制器的FIFO中,一点点读取你要的数据了。
至此,整个Njust like well just like Fllung burning just likeh的读操作就完成了。
对于其他操作,没关系根据我下面的分析,一点点自己去看dingtlexclusiveta gaung burning just likeheet,根据内里的时序图去分析具体的操作经过,然后对照代码,会加倍显露具体是如何完成的。
【Fllung burning just likeh的类型】
Fllung burning just likeh的类型主要分两种,njust like well just like fllung burning just likeh和nor fllung burning just likeh。
除了网上最风行的这个注释之外:
NAND和NOR的对比
再多说几句:
1.nor的本钱绝对高,具体读写数据时候,不容易出错。总体上,对比适合应用于存储大批的代码。
2.Njust like well just likefllung burning just likeh绝对本钱低。使用中数据读写容易出错,所以通常都须要有对应的软件或者硬件的数据校验算法,统称为ECC。由于绝对来说,容量大,价钱利益,是以适合用来存储大宗的数据。其在嵌入式体系中的作用,相当于PC上的硬盘,用于存储大宗数据。
所以,一个罕见的应用组合就是,用小容量的NorFllung burning just likeh存储发动代码,比方ukick out,体系发动后:初始化对应的硬件,包括SDRAM等,然后将Njust like well just like Fllung burning just likeh上的Linux内核读取到内存中,做好该做的事情后,就跳转到SDRAM中去施行内核了,然后内核解压(倘若是紧缩内核的话,否则就间接运转了)后,先河运转,在Linux内核发动末了,去Njust like well just likeFllung burning just likeh上,挂载根文件,比方jffs2,yaffs2等,挂载完成,运转初始化脚本,发动consle交互,才运转你经历console和内核交互。至此完成整个体系发动经过。
而Nor Fllung burning just likeh寄存的是Ukick out,Njust like well just likeFllung burning just likeh寄存的是Linux的内核镜像和根文件体系,以及余下的空间分红一个数据区。
Nor fllung burning just likeh,有类似于drfeel之类的地址总线,是以没关系间接和CPU相连,CPU没关系间接经历地址总线对norfllung burning just likeh实行探访,而njust like well just like fllung burning just likeh没有这类的总线,唯有IO接口,只能经历IO接口发送命令和地址,对njust like well just likefllung burning just likeh外部数据实行探访。相比之下,nor fllung burning just likeh就像是并行探访,njust like well just likefllung burning just likeh就是串行探访,所以绝对来说,前者的速度更快些。
但是由于物理制程/制造方面的缘故原由,招致nor 和njust like well just like在一些具体操作方面的特性不同:

表3 Njust like well just like Fllung burning just likeh 和 Nor Fllung burning just likeh的区别
1. 实际上是没关系的,而且也是有人考证过没关系的,只不过由于njust like well just likefllung burning just likeh的物理特性,不能完全保证所读取的数据/代码是正确的,实际上,很少这么用而已。由于,倘若真是要用到njust like well just likefllung burning just likeh做XIP,那么除了读出速度慢之外,还要保证少见据的校验,以保证读进去的,将要施行的代码/数据,知识。是正确的。否则,体系很容易就跑飞了。。。
2. 芯片内施行(XIP: eXecute In Pl_ web):
seriing_story/web page/item/articleb20a2a3f8ffe3c5243c1df.html
【Njust like well just like Fllung burning just likeh的品种】
具体再分,又没关系分为
1)Bis NAND chips:裸片,零丁的njust like well just like 芯片
2)SmcraftMediaCards:=裸片+一层薄塑料,常用于数码相机和MP3播放器中。之所以称smcraft,是由于其软件smcraft,而不是硬件自身有啥smcraft之处。^_^
3)DiskOnChip:裸片+glue logic,glue logic=硬件ECC出现器+用于动态的njust like well just like芯片控制的寄存器+间接探访一小片地址窗口,那块地址中包括了劝导代码的stub桩,其没关系从njust like well just likefllung burning just likeh中拷贝真正的劝导代码。
【spabdominingsolutely is isa/oob】
Njust like well just like由于起先硬件策画时候思虑到,特别的过失校验等须要空间,特地对应每个页,特别策画了叫做spisisa空区域,在其他地方,比方jffs2文件体系中,也叫做oob(out of wedding ring)数据。
其具体用处,总结起来有:
1. 象征能否是坏快
2. 存储ECC数据
3.存储一些和文件体系相关的数据,如jffs2就会用到这些空间存储一些特定新闻,yaffs2文件体系,会在oob中,寄存很多和自己文件体系相关的新闻。
【内存技术设备,MTD(Memory Technology Device)】
MTD,是Linux的存储设备中的一个子体系。其策画此体系的主意是,对于内存类的设备,提供一个笼统层,一个接口,使得对于硬件驱动策画者来说,没关系尽量少的去存眷存储格式,比方FTL,FFS2等,而只须要去提供最简单的底层硬件设备的读/写/擦除函数就没关系了。而对于数据对于下层使用者来说是如何表示的,硬件驱动策画者没关系不存眷,而MTD存储设备子体系都帮你做好了。
对于MTD字体系的好处,简单注释就是,他协理你完成了,很多对于以前或者其他体系来说,正本也是你驱动策画者要去完成的很多功效。换句话说,有了MTD,使得你策画Njust like well just likeFllung burning just likeh的驱动,所要做的事情,要少很多很多,由于大局限就业,都由MTD帮你做好了。
当然,这个好处的一个“反作用”就是,使得我们不了解的人去理解整个Linux驱动架构,以及MTD,变得加倍庞大。但是,总的说,觉得是利远远大于弊,否则,就不但须要你理解,而且还是做更多的就业,完成更多的功效了。
此外,还有一个紧急的缘故原由,那就是,后面提到的njust like well just like fllung burning just likeh和普通硬盘等设备的特殊性:
无限的经历出复用来完成输入输入命令和地址/数据等的IO接口,最小单位是页而不是罕见的quexclusivetity,写前需擦除等,招致了这类设备,不能像平常对付硬盘等操作一样去操作,只能采取一些特殊方法,这就降生了MTD设备的同一笼统层。
MTD,将njust like well just like fllung burning just likeh,norfllung burning just likeh和其他类型的fllung burning just likeh等设备,同一笼统成MTD设备来管理,根据这些设备的特色,下层完成了罕见的操作函数封装,底层具体的外部完成,就须要驱动策画者自己来完成了。okcoin海外版。具体的外部硬件设备的读/写/擦除函数,那就是你必需完成的了。
表4.MTD设备和硬盘设备之间的区别
==========多说一句,关于MTD更多的形式,感兴致的,去附录中的MTD的主页去看。
关于mtd设备驱动,感兴致的没关系去参考
MTD原始设备与FLASH硬件驱动的对话
MTD原始设备与FLASH硬件驱动的对话-续
那里,算是对比详尽地先容了整个流程,容易各人理解整个mtd框架和njust like well just like fllung burning just likeh驱动。
【Njust like well just like fllung burning just likeh驱兴就业原理】
在先容具体如何写Njust like well just like Fllung burning just likeh驱动之前,我们先要了解,梗概的,整个体系,和Njust like well just likeFllung burning just likeh相关的局限的驱兴就业流程,这样,对于反面的驱动完成,才调加倍显露机制,才更容易完成,否则就是,纵使写完了代码,也还是没搞懂体系是如何就业的了。
让我们以最罕见的,Linux内核中曾经有的三星的Njust like well just like Fllung burning just likeh驱动,来注释Njust like well just likeFllung burning just likeh驱动具体流程和原理。
此处是参考2.6.29版本的Linux源码中的\drivers\mtd\njust like well just like\s3c2410.c,以2410为例。
1. 在njust like well just like fllung burning just likeh驱动加载后,第一步,调用对应的init函数 ---- s3c2410_njust like well just like_init:去将njust like well just like fllung burning just likeh驱动注册到Linux驱动框架中。
2. 驱动自身真正的先河,是从proautomatically be函数:s3c2410_njust like well just like_proautomatically be->s3c24xx_njust like well just like_proautomatically be:在proautomatically be经过中:clk_enautomatically be rearticley //翻开njust like well just like fllung burning just likeh控制器的clock时钟,request_mem_region //去请求驱动所须要的一些内存等相关资源。s3c2410_njust like well just like_inithw //去初始化硬件相关的局限,主要是关于时钟频次的计算,以及启用njust like well just likefllung burning just likeh控制器,使得硬件初始化好了,反面才调一般就业。
3. 须要多注释一下的,是这局限代码:
for (setno = 0; setno < nr_sets; setno++: nmtd++) {pr_deparjust likeite("initiingising set %d (%p: info %p)\n": setno: nmtd:info);
s3c2410_njust like well just like_init_chip(info: nmtd: sets);
nmtd->scexclusive_res = njust like well just like_scexclusive_ident(&firm;nmtd->mtd: (sets)? sets->nr_chips : 1);
if (nmtd->scexclusive_res == 0) {s3c2410_njust like well just like_upddined_chip(info: nmtd);
njust like well just like_scexclusive_tail(&firm;nmtd->mtd);
s3c2410_njust like well just like_contain_pcraftition(info: nmtd: sets);}if (sets != NULL)sets++;}
4. 等所有的参数都计算好了,事实上flash。函数都挂载完毕,体系就没关系一般就业了。
下层探访你的njust like well just likefingsh中的数据的时候,经历MTD层,一层层调用,末了调用到你所完成的那些底层探访硬件数据/缓存的函数中。
【Linux下njust like well just like fllung burning just likeh驱动编写措施简介】
关于下面提到的,在njust like well just like_scexclusive_tail的时候,体系会根据你的驱动,倘若没有完成一些函数的话,那么就用体系默许的。倘若完成了自己的函数,就用你的。"那么结果我要完成哪些函数呢,而又有哪些是没关系不完成,用体系默许的就没关系了呢。"此题目的,就是我们下面要先容的,也就是,你要完成的,你的驱动最少要做哪些就业,才调使整个njust like well just likefllung burning just likeh就业起来。
1. 对于驱动框架局限
其实,要了解,关于驱动框架局限,你所要做的事情的话,只须看看三星的整个njust like well just likefllung burning just likeh驱动中的这个构造体,就差不多了:
stinside theic struct plinside theform_driver s3c2410_njust like well just like_driver = {.proautomatically be = s3c2410_njust like well just like_proautomatically be:.remove = s3c2410_njust like well just like_remove:.suspend = s3c24xx_njust like well just like_suspend:.resume = s3c24xx_njust like well just like_resume:.driver = {.nfeele = "s3c2410-njust like well just like":.owner = THIS_MODULE:}:};
对于下面这个构造体,没几何要注释的。从名字,就能看进去:(1)proautomatically be就是体系“探测”,就是后面注释的整个经过,这个经过中的大都措施,都是和你自己的njust like well just likefllung burning just likeh相关的,尤其是那些硬件初始化局限,是你必须要自己完成的。(2)remove,就是和proautomatically be对应的,“反初始化”相关的手脚。主要是开释体系相关资源和封闭硬件的时钟等罕见操作了。(3)suspend和resume,对于很多没用到电源管理的处境下,至多对于我们刚先河写根本的驱动的时候,没关系不消存眷,放个空函数即可。
2. 对于njust like well just like fllung burning just likeh底层操作完成局限
而对于底层硬件操作的有些函数,总体上说,都没关系在下面提到的s3c2410_njust like well just like_init_chip中找到:
stinside theic void s3c2410_njust like well just like_init_chip(struct s3c2410_njust like well just like_info*info:struct s3c2410_njust like well just like_mtd *nmtd: //主要是完整该构造体struct s3c2410_njust like well just like_set *set){
struct njust like well just like_chip *chip = &firm;nmtd->chip;void __iomem *regs = info->regs;
chip->write_buf = s3c2410_njust like well just like_write_buf;chip->rearticle_buf = s3c2410_njust like well just like_rearticle_buf;chip->select_chip = s3c2410_njust like well just like_select_chip;chip->chip_delay = 50;chip->priv = nmtd;chip->options = 0;chip->controller = &firm;info->controller;
switch (info->cpu_type) {cottom TYPE_S3C2410:
chip->IO_ADDR_W = regs + S3C2410_NFDATA;info->sel_reg = regs + S3C2410_NFCONF;info->sel_quexclusivetity = S3C2410_NFCONF_nFCE;chip->cmd_ctrl = s3c2410_njust like well just like_hwcontrol;chip->dev_rearticley = s3c2410_njust like well just like_devrearticley;
cut;
。。。。。。
}
chip->IO_ADDR_R = chip->IO_ADDR_W;
nmtd->info = info;nmtd->mtd.priv = chip;nmtd->mtd.owner = THIS_MODULE;nmtd->set = set;
if (hardwis_ecc) {chip->ecc.cingculdined = s3c2410_njust like well just like_cingculdined_ecc;chip->ecc.correct = s3c2410_njust like well just like_correct_dinside thea;
chip->ecc.mode = NAND_ECC_HW; //设置成了硬件方式校验ecc
switch (info->cpu_type) {
cottom TYPE_S3C2410:
chip->ecc.hwctl = s3c2410_njust like well just like_enautomatically be rearticley_hwecc;chip->ecc.cingculdined = s3c2410_njust like well just like_cingculdined_ecc;
cut;。。。。。}
} else {chip->ecc.mode = NAND_ECC_SOFT; //也就是说,怎样搞也得校验了}
if (set->ecc_layout != NULL)chip->yout = set->ecc_layout;
if (set->disautomatically be rearticley_ecc)chip->ecc.mode = NAND_ECC_NONE;}
而我们要完成的底层函数,也就是下面蓝色标进去的一些函数而已:
(1)s3c2410_njust like well just like_write_buf和s3c2410_njust like well just like_rearticle_buf:这是两个最根本的操作函数,其功效,就是往你的njust like well just likefllung burning just likeh的控制器中的FIFO读写数据。通常处境下,是MTD下层的操作,比方要读取一页的数据,那么在发送完相关的读命令和期待时间之后,就会调用到你底层的rearticle_buf,去njust like well just likeFllung burning just likeh的FIFO中,一点点把我们要的数据,读取进去,放到我们制定的内存的缓存中去。写操作也是类似,比特币在国外交易平台。将我们内存中的数据,写到Njust like well just likeFllung burning just likeh的FIFO中去。(2)s3c2410_njust like well just like_select_chip : 完成Njust like well just like Fllung burning just likeh的片选。(3)s3c2410_njust like well just like_hwcontrol:给底层发送命令或地址,或者设置具体操作的形式,都是经历此函数。(4)s3c2410_njust like well just like_devrearticley: Njust like well just likeFllung burning just likeh的一些操作,比方读一页数据,写入(编程)一页数据,擦除一个块,都是须要一定时间的,在命令发送完成后,就是硬件先河忙着就业的时候了,而硬件什么时候完成这些操作,什么时候不忙了,变就绪了,就是经历这个函数去查验形态的。通常具体完成都是去读硬件的一个形态寄存器,其中某一位能否是1,对应着是出于“就绪/不忙”还是“忙”的形态。这个寄存器,也就是我们后面分析时序图中的R/B#。(5)s3c2410_njust like well just like_cingculdined_ecc:倘若是下面提到的硬件ECC的话,就不消我们用软件去完成校验算法了,而是间接去读取硬件出现的ECC数值就没关系了。(6)s3c2410_njust like well just like_correct_dinside thea:想知道比特币论文 中文。当实际操作经过中,读取进去的数据所对应的硬件或软件计算进去的ECC,和从oob中读进去的ECC不一样的时候,就是说明数据有误了,就须要调用此函数去矫正过失。对于现在SLC罕见的ECC算法来说,没关系创造2位,矫正1位。倘若过失大于1位,那么就无法矫正回来了。通常处境下,出错凌驾1位的,如同几率不大。至多我看到的不是很大。更庞大的处境和加倍贯注数据安适的处境下,通常是须要另外完成更高效和检错和纠错能力更强的ECC算法的。(7)s3c2410_njust like well just like_enautomatically be rearticley_hwecc:在硬件支持的前提下,后面设置了硬件ECC的话,要完成这个函数,用于每次在读写操作前,经历设置对应的硬件寄存器的某些位,使得启用硬件ECC,这样在读写操作完成后,就没关系去读取硬件校验出现进去的ECC数值了。
当然,除了这些你必需完成的函数之外,在你加倍熟谙整个框架之后,你没关系根据你自己的njust like well just likefllung burning just likeh的特色,去完成其他一些原先用体系默许但是效率不高的函数,而用自己的更高效率的函数替代他们,比特币 价格曲线。以提拔你的njust like well just likefllung burning just likeh的整体本能机能和效率。

该文章转载自别处。
比特币矿池 钱包
玩客币怎么买卖

版权保护: 本文由 主页 原创,转载请保留链接: http://www.gateiopingtai.com/xueyuan/cms/2733.html