免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6462 | 回复: 1
打印 上一主题 下一主题

[BootLoader] 请教:u-boot无法读nand flash问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-13 18:33 |只看该作者 |倒序浏览
我移植的版本是2010.06,错误如下:
  1. [u-boot@lhc2440] # nand read 0x32000000 0x0 0x40000
  2. NAND read: device 0 offset 0x0, size 0x40000data abortpc : [<320082d0>]           lr : [<320082cc>]sp : 31fd1a74  ip : 00000003         fp : 32028800r10: 00000051  r9 : 00000001         r8 : 31fd3fe0r7 : 32028758  r6 : ffffffff         r5 : 00000000  r4 : 00000000r3 : 00000051  r2 : 00000083         r1 : 00000000  r0 : 32028758Flags: nzcv  IRQs on  FIQs off  Mode SVC_32Resetting CPU ...
复制代码



read的时候提示data abort,要不就是NAND read: device 0 offset 0x0, size 0x40000后就不动了。

nand erase 倒是没问题,但有个警告,例如saveenv的时候:好像是定义的size 48K小于擦除的最小块单位。但环境变量是写进去了,重启就没有
*** Warning - bad CRC or NAND, using default environment这样的警告了。

  1. [u-boot@lhc2440] # saveenv Saving Environment to NAND...Erasing Nand...Warning: Erase size 0x0000c000 smaller than one erase block 0x00020000         Erasing 0x00020000 insteadErasing at 0x4000000000002 --   0% complete.
复制代码




nand write同样失败,这个很莫名其妙的:
  1. [u-boot@lhc2440] # nand write 0x32000000 0x24c000 0x100000
  2. NAND write: device 0 offset 0x24c000, size 0x100000Writing at 0x26000000020000 -- NAND write to offset 260000ffffffff failed 0 81920 bytes written: ERROR
复制代码




我是按照黄刚大哥的文章做的http://blog.chinaunix.net/u3/101649/showart.php?id=2119943
之前按照s3c2440的手册添加了/arch/arm/include/asm/arch‐s3c24x0/s3c24x0.h中的s3c2440_nand
  1. struct s3c2440_nand {        u32        NFCONF;        u32        NFCONT;        u32        NFCMD;        u32        NFADDR;        u32        NFDATA;        u32        NFMECCD0;        u32        NFMECCD1;        u32        NFSECCD;        u32        NFSTAT;        u32        NFESTAT0;        u32        NFESTAT1;        u32        NFMECC0;        u32        NFMECC1;        u32        NFSECC;        u32        NFSBLK;        u32        NFEBLK;};
复制代码


谢谢各位!

论坛徽章:
0
2 [报告]
发表于 2012-01-08 12:42 |只看该作者
hbhuanggang老师的NAND FLASH是小页的   也就是1page = 512+16B;
从你上边的警告:Warning: Erase size 0x0000c000 smaller than one erase block 0x00020000
你的block大小是 20000,是这样算出来的 pagesize x 64页;
所以你的页大小是2048+64    是大页的NAND FLASH;  
huanggang老师的代码你不能抄;
我是学了tekkaman的代码:
所以这一节你要重做了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP