嵌入式系统开发_4 S3C2410主要外设功能部件.ppt

嵌入式系统开发_4 S3C2410主要外设功能部件.ppt

  1. 1、本文档共75页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统开发_4 S3C2410主要外设功能部件

NAND FLASH CONFIGURATION (NFCONF) REGISTER NAND Flash的地址组成 正如硬盘的盘片被分为磁道,每个磁道又分为若干扇区,一块Nand flash也分为若干block,每个block分为如干page。一般而言,block、page之间的关系随着芯片的不同而不同,典型的分配是这样的: 1block = 32page 1page = 512bytes(datafield) + 16bytes(oob) NandFlash以页为单位读写数据,而以块为单位擦除数据。按照k9f1208的组织方式可以分四类地址: Column Address、halfpage pointer、Page Address 、Block Address。 A[0:25]表示数据在64M空间中的地址。 Column Address表示数据在半页中的地址,大小范围0-255,用A[0:7]表示;halfpage pointer表示半页在整页中的位置,即在0-255空间还是在256-511空间,用A[8]表示;Page Address表示页在块中的地址,大小范围0-31,用A[13:9]表示; Block Address表示块在flash中的位置,大小范围0~4095,A[25:14] 表示。 以K9F1208为例 注意:容量倍增以后,并不是简单的地址扩展问题,A8也不是所有的Flash芯片中都不使用,K9F1G08中就完全不同。 读写示例: NAND Flash寻址方式: A[7:0]组成的column address(列地址)访问页, 配合地址指针命令来选择特定区域。在进行擦除操作时不需要列地址。 A[13:9]访问32个page,即某page在块内的相对地址。Block的地址是由A14以上的bit来表示。 以K9F1208为例: 第1 步是传递column address,就是NAND_ADDR[7:0],不需移位即可传递到I/O[7:0]上。 第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步。 需要注意: 对于flash的读写都是以一个page开始的,但是在读写之前必须进行flash的擦写,而擦写则是以一个block为单位的。 Nand Flash芯片每一位只能从1变为0,而不能从0变为1,所以在对其进行写入操作之前一定要将相应块擦除(擦除就是将相应块的位全部变为1)。 OOB部分的第六字节(即517字节)标志是否坏块,如果不是坏块该值为FF,否则为坏块;除第六字节外,通常至少把其前3字节存放Nand Flash硬件ECC码。 当得到一个Nand Flash地址srcaddr时候,我们可以这样分解出Column Address和Page Address: columnaddr=srcaddr%512 //column address pageaddr=srcaddr9 //page address 也可以这么认为,一个Nand Flash地址的A0~A7是它的column_addr,A9~A25是它的Page Address。 #define rNFCONF (*(volatile unsigned *)0x4e000000) //nand flash configuration #define rNFCMD (*(volatile char *)0x4e000004 //nand flash command #define rNFADDR (*(volatile char *)0x4e000008 //nand flash address #define rNFDATA (*(volatile char *)0x4e0

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档