Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1339982
  • 博文数量: 198
  • 博客积分: 1629
  • 博客等级: 上尉
  • 技术积分: 2743
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-01 15:41
文章分类
文章存档

2023年(6)

2022年(20)

2021年(8)

2020年(3)

2018年(17)

2017年(3)

2016年(3)

2015年(9)

2014年(13)

2013年(17)

2012年(77)

2011年(22)

分类:

2012-05-29 17:38:34

1. 1G NAND FLASH K9K8G08U0A  特点 :大页面 1页大小 2K ,oob 大小64Byte,大容量 1G
  
1 Page = (2K + 64)Bytes
1 Block = (2K + 64)B x 64 Pages
        = (128K + 4K) Bytes
1 Device = (2K+64)B x 64Pages x 8,192 Blocks
         = 8,448 Mbits
 
以上特点 区别与常见的 三星 nand flash k91208
 
2.linux内核版本2.6.9   交叉编译器gcc-3.4.6-glibc-2.3.6
 
3.CPU PXA270
 
4.试验箱 PXA270RP
 
 
重点修改linux目录  /linux/drivers/mtd/nand 下pxa27x_nand.c 和nand_base.c
 
移植过程中做的修改
在nand_base.c 中
1.

printk (KERN_WARNING "Reading data from NAND FLASH without ECC is not recommended\n");
注释掉
2.在nand_command_lp 中加了延时
 case NAND_CMD_PAGEPROG:
 /*add by gulaignzeng*/            
                 udelay(200);
                 return;

 case NAND_CMD_READ0:
  /* Begin command latch cycle */
  this->hwcontrol(mtd, NAND_CTL_SETCLE);
  /* Write out the start read command */
  this->write_byte(mtd, NAND_CMD_READSTART);
          /* End command latch cycle */
  this->hwcontrol(mtd, NAND_CTL_CLRCLE);
  /* Fall through into ready check */
 //add by gulaingzeng
        
             udelay(20);
详见数据手册 P24 P31
在 pxa27x_nand.c 中
3.nand flash物理地址
#define pxa27x_NAND_PHY_BASE            0x08004000
4.Busy信号
#define NAND_RB         (GPIO_IN |17)           //GPIO17

及相关寄存器配置
5.相关分区 信息
6. ECC 校验配置 改为 无校验 ,这很重要,否则没法用
 this->eccmode = NAND_ECC_NONE;
 
 
 
使用说明:[root@Intel nand]#cat /proc/partitions
major minor  #blocks  name
  31     0        256 mtdblock0
  31     1       2048 mtdblock1
  31     2      13312 mtdblock2
  31     3      14080 mtdblock3
  31     4     524288 mtdblock4
  31     5     524288 mtdblock5
[root@Intel nand]#cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00040000 "Bootloader"
mtd1: 00200000 00040000 "Kernel"
mtd2: 00d00000 00040000 "Filesystem"
mtd3: 00dc0000 00040000 "Junk"
mtd4: 20000000 00020000 "Wince nand flash"
mtd5: 20000000 00020000 "Linux nand flash"
[root@Intel nand]#ls /dev/mtdblock*
/dev/mtdblock0  /dev/mtdblock2  /dev/mtdblock4
/dev/mtdblock1  /dev/mtdblock3  /dev/mtdblock5
 
在这里我对 1G NAND FLASH 进行了分区 ,分了两个区 各为512M 
mtd4: 20000000 00020000 "Wince nand flash"
mtd5: 20000000 00020000 "Linux nand flash
 
我们这里使用 第二个分区 即mtd5
 
1.挂载 mount -t ext3 /dev/mtdblock5 /mnt/yaffs/
 
【 /]#mount -t ext3 /dev/mtdblock5 /mnt/yaffs/
kjournald starting.  Commit interval 5 seconds
EXT3 FS on mtdblock5, internal journal
EXT3-fs: recovery complete.
EXT3-fs: mounted filesystem with ordered data mode.
[root@Intel /]#df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/mtdblock2           13.0M      7.1M      5.9M  54% /
/dev/mtdblock5          495.8M      8.1M    462.1M   2% /mnt/yaffs
 
2.如果挂载失败 ,则应先对其 格式化 :mkfs.ext3 /dev/mtdblock5
 
文件系统格式为 ext3
 
 
并上传一些相关文件
文件: nand-ok.tar.bz2
大小: 216KB
下载: 下载
文件: nand-ok.zip
大小: 328KB
下载: 下载
文件: pxa27x_nand.c.rar
大小: 2KB
下载: 下载
阅读(1878) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~