免费注册 查看新帖 |

Chinaunix

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

[BootLoader] 关于uboot中nand 的操作 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-27 08:59 |只看该作者 |倒序浏览

目前我一直在移植uboot的nand驱动,处理器用的是s5pv210,板子用的tiny210V2,我的nand是K9GAG08U0F,它是一个8K/PAGE,2G大小MLC的NAND ,(8k+512)/PAGE.目前我的uboot能从nand启动了,但存在一个很严重的问题,就是执行nand erase.chip,会报告出很多坏块,因为在在对nand操作的时候,例如nand 擦除,写,读,我全部用的4k/page,因为只有这样我烧进去的uboot它才能启动,因为s5pv210在uboot启动的第一阶段会执行ECC校验,它用的16bit,4K/PAGE,这也是我为什么设置为4K/page的原因。出现坏块很多的原因,我后面也想了一下,可能是因为芯片本身支持的是8k/PAGE,而我用的4K/PAGE,所以才会出现很多坏块。所以后面我将nand的读,写擦除全部换为8K/page,然后我重新烧写以前的uboot,它启动不了,因为可能210执行的ecc校验在BL1阶段,它通不过。所以启动失败。于是我用4K/PAGE的烧写工具,烧写BL1,区间是0~4000,然后我用8K/page的烧写uboot的bl2,烧写区间起始地址为4000,大小为40000,然后还是启动不了,于是我去就看nand中我烧写的数据,是不是对的,读page 0,发现我开始烧写的数据已经发生变化。这是什么原因?按道理我在烧写第二阶段的时候,只是烧写了4000地址以后的区间,0~4000区间的数据是没有变的啊,为什么前面的数据也跟着发生了变化。这里我说一下,我的烧写工具,也是用的uboot,只是这个Uboot是从SD卡启动的而已.
还有一个问题,我分别进行了测试,如果我用支持4K/page,去擦除,然后去写,去读,这其中是不会有数据错误的,然如果用8K、page去擦除,然后4K去操作,就会出错了.

目前我的想法是,如果能再前面16K实现按4K/PAGE写入bl1,后面的按8K操作,可能就能解决坏块问题了。请大家出点主意

论坛徽章:
0
2 [报告]
发表于 2013-06-18 10:13 |只看该作者
,我全部用的4k/page,因为只有这样我烧进去的uboot它才能启动,因为s5pv210在uboot启动的第一阶段会执行ECC校验,它用的16bit,4K/PAGE,这也是我为什么设置为4K/page的原因

上面是你才是要解决的问题。让UBoot在使用8K/page时启动
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP