- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Nandflash的寻址 以SAMSUNG的K9F1208U0B的 NandFlash读取操作的为例。 这个NAND是有4096个block,每个block 分32page, 每个page是512Byte大小(不包括Spare Field)。 Nand Flash的寻址: Nand Flash的地址寄存器把一个完整的 Nand Flash地址分解成Column Address 与Page Address 进行寻址。 Column Address其实就是指定Page上 的某个Byte,指定这个Byte其实也就是指定此页的读写起始地址。 Page Address:页地址。由于页地址总是以512Bytes对齐的,所以它的低9位总是0。确定读写操作是在Flash上的哪个页进行的。 Read1命令:当我们得到一个Nand Flash地址src_addr时,我们可以分解出Column Address和Page Address。 板子上使用的是SAMSUNG的K9F1208U0B,下面我将对此型号的NandFlash读取操作做一个讲解。首先我们先从物理结构上来了解这颗芯片,结构图如下所示: 正如硬盘的盘片被分为磁道,每个磁道又被分为若干扇区,一块Nand Flash被分为若干Block, 每个Block又被分为若干Page。由上图我们可以知道Flash中Byte(字节),Page(页),Block(块)3个单位之间的关系为: 1 Page = 512 Bytes Data Field + 16 Bytes Spare Field 1 Blcok = 32 Pages。 K9F1208U0B总共有4096 个Blocks,故我们可以知道这块Flash的容量为: 4096 *(32 *528) =Bytes = 66 MB 。 其中每个Page上的最后16 Bytes是用于存贮检验码用的,并不能存放实际的数据,所以实际上我们可以操作的芯片容量为: 4096 *(32 *512) =Bytes = 64 MB 由上图所示,1个Page总共由528 Bytes组成,这528个字节按顺序由上而下以列为单位进行排列(1列代表一个Byte。第0行为第0 Byte,第1行为第1 Byte,以此类推,每个行又由8个位组成,每个位表示1个Byte里面的1bit)。 这528 Bytes按功能分为两大部分: 分别是Data Field和Spare Field。 其中Spare Field占528 Bytes里的16 Bytes, 这16 Bytes是用于在读写操作的时候存放校验码用的,一般不用做普通数据的存储区。 剩下的512Bytes便是我们用于存放数据用的Data Field。 Data Field按位置关系又可分为两个部分: 分别称为1st half与2nd half;每个half各占256个bytes。 对K9F1208U0B的操作是通过向Nand Flash命令寄存器(对于s3c2410来说此寄存器为NFCMD,内存映射地址为0x4e000004)发送命令队列进行的(连续几条命令或是一条命令加几个参数)。 K9F1208U0B的操作命令集:? 读命令有两个,分别是 Read1,Read2。其中Read1用于读取Data Field的数据; 而Read2则是用于读取Spare Field的数据。 对于Nand Flash来说,读操作的最小操作单位为Page,也就是说当我们给定了读取的起始位置后,读操作将从该位置开始,连续读取到本Page的最后一个Byte为止(可以包括Spare Field)。 确定读写操作是在Flash上的哪个页进行的。Read1命令:当我们得到一个Nand Flash地址src_addr时,我们可以这样分解出Column Address和Page Address。 column_addr=src_addr%512;? // column address page_address=(src_addr9);? ?// page address 也可以这么认为,一个Nand Flash地址的A0~A7是它的column_addr,A9~A25是它的Page Address。(注意地址位A8并
原创力文档


文档评论(0)