Chinaunix首页 | 论坛 | 博客
  • 博客访问: 316172
  • 博文数量: 101
  • 博客积分: 2428
  • 博客等级: 大尉
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-24 13:16
文章分类

全部博文(101)

文章存档

2012年(3)

2011年(90)

2010年(8)

分类: LINUX

2011-03-01 15:01:52

1、不同容量的nandflash命令是有差异的。。
2、对于超过4k的程序必须有程序copy程序。。。。
3、对于mini2440来说
col = addr & NAND_BLOCK_MASK_LP;
        page = addr / NAND_SECTOR_SIZE_LP;

        *p = col & 0xff;                        /* Column Address A0~A7 */
        for(i=0; i<10; i++);
        *p = (col >> 8) & 0x0f;        /* Column Address A8~A11 */
        for(i=0; i<10; i++);
        *p = page & 0xff;                      /* Row Address A12~A19 */
        for(i=0; i<10; i++);
        *p = (page >> 8) & 0xff;        /* Row Address A20~A27 */
        for(i=0; i<10; i++);
        *p = (page >> 16) & 0x03;      /* Row Address A28~A29 */
        for(i=0; i<10; i++);
这个注释中表的三个行地址分别是A12~A19, A20~A27, A28~A29。但实际代码中给的却是A11~A18,A19~A26,A27~A28。因为NAND_SECTOR_SIZE_LP等于2048,所以page就等于addr右移了11位,所以这个行地址的第一位就是A11
nand要求cpu必须把输入给它的地址中的A0~A10放到它自己的的A0~A11中,而把cpu输入的A11~A27地址放到自己的A12~A28中。所以上面代码中移位后的地址对应着cpu发出的地址,而注解中对应的却是nand自己的地址,之所以出现cpu发出的A11也输入到nand的A0~A11中,A28输入到A28~A29中(实际上是cpu的A27输入到nand的A28中),是因为资料手册中说的,cpu发出的多余地址,nand会自动把它省略掉
 
阅读(1485) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~