uboot1.1.4与NAND FLASH(k9f2g08u0a)

原创 2011年01月08日 23:21:00

    k9f2g08u0a(NAND FLASH)一页大小虽为2KB+64B,但却占用了4KB地址空间.(也就是 实际写入/读取NAND的地址=程序中给定地址/2,这里程序中给定地址就是写到s3c2440的nand地址寄存器的值,实际写入/读取NAND的地址是指:将NAND看作一个只有有效数据(不包括spare区)的连续存储体)
举个例子:假设内存0x32000000开始有2KB数据,要将其写入到NAND(k9f2g08u0a)的第2页(按页号从0开始):
则认为 实际写入NAND的地址=3*2048=6144=0x1800,但在程序中我们给NAND的地址应该为=2*0x1800=0x3000,这样才能将这2KB写入NAND的第2页.

    在uboot1.1.4中的NAND驱动,是按照 实际写入/读取NAND的地址=程序中给定地址,假设内核启动代码中有这样几行:
Creating 3 MTD partitions on "NAND 256MiB 3,3V 8-bit":
0x00000000-0x00080000 : "u-boot"
0x00080000-0x00280000 : "kernel"
0x00280000-0x10000000 : "yaffs"
那么我用uboot的命令nand read将内核(由内核启动信息看到内核在NAND中地址为0x00080000-0x00280000)从NAND读到内存时,就应该这么读nand read 0x32000000 0x100000 0x200000
其中0x32000000是指读到内存中的首地址,0x100000是内核在NAND中首地址(这个地址可以理解为程序中给定地址)=2*0x80000,0x200000为读取数据大小.
也就是说内核启动信息中给定的0x00000000,0x00080000,0x00280000,0x10000000是指实际写入/读取NAND的地址.

    用nand write写同理.

    因为uboot1.1.4中nand在1 block中连续写/读页时换页是通过page++实现的,所以只要给定正确的起始地址,在起始地址所在的这1 block中不会产生上述错误的页起始地址.但是因为每次最多通过page++机制写/读1 block的数据,在需要写/读紧接着的下1 block时,nand_rw函数通过start  += n来改变block起始地址,如果之前读了一整块(1 block),那么这里的n指的是1 block大小,即0x20000,由上面可以看出start  += n会得到错误的下一块的起始地址,应改为start  += 2*n.

    k9f2g08u0a的spare区数据写/读和uboot1.1.4中spare区数据写/读写区别较大,就不写了.

相关文章推荐

u-boot移植总结(三)(转)S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)

S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A) S3C2440内部集成了一个Nand flash控制器。S3C2440的Nand flash控制器包含了如下的特性...

S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)

S3C2440内部集成了一个Nand flash控制器。S3C2440的Nand flash控制器包含了如下的特性:l        一个引导启动单元l        Nand Flash存储器接口,...

NAND FLASH K9F2G08U0M.pdf

  • 2011年09月17日 16:32
  • 600KB
  • 下载

[smart210] Nand Flash K9F4G08U0B 的配置与读写控制(二)

int copy_nand_to_sdram(unsigned char *sdram_addr, unsigned long nand_addr, unsigned long length) { ...

s3c2440 nand 控制器(以对K9F2G08U0A 256M读操作为例)

2010-01-08 22:10:48|  分类: arm|字号 订阅 s3c2440 nand 控制器(以对K9F2G08U0A 256M读操作为例) (1)...

analyse K9F2G08X0A nand flash

First. you need to know the G M KB B unit. 1G = 1024M 1M = 1024KB 1KB = 1024Byte, are not bits. whe...
  • wcqys
  • wcqys
  • 2017年02月15日 15:43
  • 139

51单片机控制K9K8G08U0C NAND Flash读写程序

网上看到这个源代码,虽然感觉51用到nandflash的情况不多,但是可以借鉴理解nandflash的读写流程 #include #include #include /***********...

MSP430F149嵌入式系统中FLASH K9F1G08U0M的应用

关键词:NAND Flash,存储器,MSP430 时间:2011-10-11 11:00:05      来源:中电网 NAND Flash是采用NAND结构技术的非易失存储器,具有ROM存储器...
  • LOV2031
  • LOV2031
  • 2015年07月13日 14:46
  • 1084

改编版K9F2G08U0A程序

根据韦东山老师教材编写的K9F2G08U0A的驱动程序编写方法 ,改编K9F2G08U0A驱动代码,在天嵌开发板上验证成功,下面给出关键代码截图,附录部分是完整工程。芯片datasheet详见:htt...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:uboot1.1.4与NAND FLASH(k9f2g08u0a)
举报原因:
原因补充:

(最多只允许输入30个字)