天嵌 ARM开发社区

 找回密码
 注册
查看: 4744|回复: 14

难道是天嵌3358提供uboot中nand驱动问题?

[复制链接]
iceofwater 发表于 2013-7-8 12:10:52 | 显示全部楼层 |阅读模式
天嵌提供的uboot烧写nand有问题
我烧写一个文件到nand,0xB34B0个字节,烧写到nand的0x0的位置
我的文件中包含MLO部分,并且被编译在开始的位置,能够正确执行
然后我要读取nand,而nand从0x40000到0x60000是坏块,也跳过了,可是读从0xC0000直到最后0xD34B0读的内容,完全都是错的,只有0xC0000之前是正确的,请你们看看你们读取nand的驱动是否正确
以上我无论是通过自己写的nand驱动读取,还是通过天嵌自己的uboot读取,现象都是一样的
我的操作过程是板子运行在SD卡启动方式,运行天嵌自带的uboot,执行以下写nand的操作:
tftp 0x87C00000 bootrom.binnand erase 0x0 $(ROM_SIZE) nandecc hw 2nand write.i 0x87C00000 0x0 $(ROM_SIZE)$(ROM_SIZE)为文件大小,这里是指0xB34B0附带烧写的该文件,将该文件按上述步骤烧写到nand上去之后,再从nand上读取,看读到0xC0000的位置,其实是对应文件中的0xA0000位置,看内容是否一致(之所以两个地址不同,是因为nand上有坏块)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
亚瑟王 发表于 2013-7-8 15:16:01 | 显示全部楼层
TQ3358# tftp 0x82000000 bootrom_uncmp.bin ; nandecc hw 2;                                                            
link up on port 0, speed 100, full duplex
Using cpsw device
TFTP from server 192.168.1.46; our IP address is 192.168.1.47
Filename 'bootrom_uncmp.bin'.
Load address: 0x82000000
Loading: ###################################################
done
Bytes transferred = 734384 (b34b0 hex)
TQ3358# nand erase 0x0 0xC0000

NAND erase: device 0 offset 0x0, size 0xc0000
Erasing at 0xa0000 -- 100% complete.
OK
TQ3358# nand write.i 0x82000000 0x0 0xB34B0

NAND write: device 0 offset 0x0, size 0xb34b0
734384 bytes written: OK


TQ3358# nand read.i 0x83000000 0x0 0xb34b0

NAND read: device 0 offset 0x0, size 0xb34b0
734384 bytes read: OK



TQ3358# md 0x83000000
83000000: 00006650 40300000 e51ff004 40303000    Pf....0@.....00@
83000010: 00000000 00000000 0000c08f b0cc0a00    ................
83000020: 00680000 00000000 00000000 00000000    ..h.............
83000030: 00000000 00000000 00000000 00000000    ................
83000040: 00000000 00000000 00000000 00000000    ................
83000050: 00000000 00000000 00000000 00000000    ................
83000060: 00000000 00000000 00000000 00000000    ................
83000070: 00000000 00000000 00000000 00000000    ................
83000080: 00000000 00000000 00000000 00000000    ................
83000090: 00000000 00000000 00000000 00000000    ................
830000a0: 00000000 00000000 00000000 00000000    ................
830000b0: 00000000 00000000 00000000 00000000    ................
830000c0: 00000000 00000000 00000000 00000000    ................
830000d0: 00000000 00000000 00000000 00000000    ................
830000e0: 00000000 00000000 00000000 00000000    ................
830000f0: 00000000 00000000 00000000 00000000    ................
TQ3358# md 0x83000100
83000100: 00000000 00000000 00000000 00000000    ................
83000110: 00000000 00000000 00000000 00000000    ................
83000120: 00000000 00000000 00000000 00000000    ................
83000130: 00000000 00000000 00000000 00000000    ................
83000140: 00000000 00000000 00000000 00000000    ................
83000150: 00000000 00000000 00000000 00000000    ................
83000160: 00000000 00000000 00000000 00000000    ................
83000170: 00000000 00000000 00000000 00000000    ................
83000180: 00000000 00000000 00000000 00000000    ................
83000190: 00000000 00000000 00000000 00000000    ................
830001a0: 00000000 00000000 00000000 00000000    ................
830001b0: 00000000 00000000 00000000 00000000    ................
830001c0: 00000000 00000000 00000000 00000000    ................
830001d0: 00000000 00000000 00000000 00000000    ................
830001e0: 00000000 00000000 00000000 00000000    ................
830001f0: 00000000 00000000 00000000 00000000    ................
TQ3358# md 0x830b0000
830b0000: 00000000 44e00144 00000002 00000000    ....D..D........
830b0010: 00000000 44e000ec 00000002 00030000    .......D........
830b0020: 00000000 44e000f0 00000002 00030000    .......D........
830b0030: 00000000 810a907c 810a907c 7ec25000    ....|...|....P.~
830b0040: 5000a0cc a2cc7ec2 00000000 80000000    ...P.~..........
830b0050: 80000000 00000000 1fc00000 000fffff    ................
830b0060: 00008147 00000000 80000000 00000000    G...............
830b0070: 00100000 000fffff 00008147 44e00000    ........G......D
830b0080: 44e00000 00000000 00002000 00000fff    ...D..... ......
830b0090: 000006c7 44e10000 44e10000 00000000    .......D...D....
830b00a0: 00002000 00000fff 000006c7 8fc00000    . ..............
830b00b0: 8fc00000 00000000 00400000 000fffff    ..........@.....
830b00c0: 00008147 48200000 48200000 00000000    G..... H.. H....
830b00d0: 00001000 00000fff 000006c7 44e09000    ...............D
830b00e0: 44e09000 00000000 00002000 00000fff    ...D..... ......
830b00f0: 000006c7 48024000 48024000 00000000    .....@.H.@.H....
TQ3358# md 0x82000000
82000000: 00006650 40300000 e51ff004 40303000    Pf....0@.....00@
82000010: 00000000 00000000 0000c08f b0cc0a00    ................
82000020: 00680000 00000000 00000000 00000000    ..h.............
82000030: 00000000 00000000 00000000 00000000    ................
82000040: 00000000 00000000 00000000 00000000    ................
82000050: 00000000 00000000 00000000 00000000    ................
82000060: 00000000 00000000 00000000 00000000    ................
82000070: 00000000 00000000 00000000 00000000    ................
82000080: 00000000 00000000 00000000 00000000    ................
82000090: 00000000 00000000 00000000 00000000    ................
820000a0: 00000000 00000000 00000000 00000000    ................
820000b0: 00000000 00000000 00000000 00000000    ................
820000c0: 00000000 00000000 00000000 00000000    ................
820000d0: 00000000 00000000 00000000 00000000    ................
820000e0: 00000000 00000000 00000000 00000000    ................
820000f0: 00000000 00000000 00000000 00000000    ................
TQ3358# md 0x82000100
82000100: 00000000 00000000 00000000 00000000    ................
82000110: 00000000 00000000 00000000 00000000    ................
82000120: 00000000 00000000 00000000 00000000    ................
82000130: 00000000 00000000 00000000 00000000    ................
82000140: 00000000 00000000 00000000 00000000    ................
82000150: 00000000 00000000 00000000 00000000    ................
82000160: 00000000 00000000 00000000 00000000    ................
82000170: 00000000 00000000 00000000 00000000    ................
82000180: 00000000 00000000 00000000 00000000    ................
82000190: 00000000 00000000 00000000 00000000    ................
820001a0: 00000000 00000000 00000000 00000000    ................
820001b0: 00000000 00000000 00000000 00000000    ................
820001c0: 00000000 00000000 00000000 00000000    ................
820001d0: 00000000 00000000 00000000 00000000    ................
820001e0: 00000000 00000000 00000000 00000000    ................
820001f0: 00000000 00000000 00000000 00000000    ................
TQ3358# md 0x820B0000
820b0000: 00000000 44e00144 00000002 00000000    ....D..D........
820b0010: 00000000 44e000ec 00000002 00030000    .......D........
820b0020: 00000000 44e000f0 00000002 00030000    .......D........
820b0030: 00000000 810a907c 810a907c 7ec25000    ....|...|....P.~
820b0040: 5000a0cc a2cc7ec2 00000000 80000000    ...P.~..........
820b0050: 80000000 00000000 1fc00000 000fffff    ................
820b0060: 00008147 00000000 80000000 00000000    G...............
820b0070: 00100000 000fffff 00008147 44e00000    ........G......D
820b0080: 44e00000 00000000 00002000 00000fff    ...D..... ......
820b0090: 000006c7 44e10000 44e10000 00000000    .......D...D....
820b00a0: 00002000 00000fff 000006c7 8fc00000    . ..............
820b00b0: 8fc00000 00000000 00400000 000fffff    ..........@.....
820b00c0: 00008147 48200000 48200000 00000000    G..... H.. H....
820b00d0: 00001000 00000fff 000006c7 44e09000    ...............D
820b00e0: 44e09000 00000000 00002000 00000fff    ...D..... ......
820b00f0: 000006c7 48024000 48024000 00000000    .....@.H.@.H....
TQ3358#
亚瑟王 发表于 2013-7-8 15:18:58 | 显示全部楼层
上面红色部分是我操作的命令,0x82000000是tftp读到内存的开始地址,0x83000000是写后读nand到内存的开始地址。两部分内容完全一样。至于原始文件的数据自行打开二进制文件对比一下吧。
没有出现你说的那种情况。
我认为天嵌提供的nand驱动是没有问题的。
 楼主| iceofwater 发表于 2013-7-8 17:20:33 | 显示全部楼层
亚瑟王 发表于 2013-7-8 15:16
TQ3358# tftp 0x82000000 bootrom_uncmp.bin ; nandecc hw 2;                                            ...

大哥,您最后一步TQ3358# md 0x820B0000这个干啥呢,这个是直接从tftp传过来的啊,肯定没有问题
您要看TQ3358# md 0x830B0000出来的是什么东西
我现在对比TQ3358# md 0x820B0000和TQ3358# md 0x830B0000东西就是不一样
很明显的东西,粗心了吧!!
 楼主| iceofwater 发表于 2013-7-8 17:43:29 | 显示全部楼层
iceofwater 发表于 2013-7-8 17:20
大哥,您最后一步TQ3358# md 0x820B0000这个干啥呢,这个是直接从tftp传过来的啊,肯定没有问题
您要看TQ33 ...

其实是从TQ3358# md 0x820A0000和TQ3358# md 0x830A0000就开始东西都出错了!
nand驱动里通过nand read.i 时,倒是跳过坏块了,0x83040000内容都是连续的,这个没有问题!
亚瑟王 发表于 2013-7-8 19:01:30 | 显示全部楼层
iceofwater 发表于 2013-7-8 17:20
大哥,您最后一步TQ3358# md 0x820B0000这个干啥呢,这个是直接从tftp传过来的啊,肯定没有问题
您要看TQ33 ...

我贴出来的md 0x82xxxxx和0x83xxxxx的内容,完全一样,我刚刚对比过了。不是我粗心,而是你粗心了。
亚瑟王 发表于 2013-7-8 19:20:20 | 显示全部楼层
iceofwater 发表于 2013-7-8 17:43
其实是从TQ3358# md 0x820A0000和TQ3358# md 0x830A0000就开始东西都出错了!
nand驱动里通过nand read.i ...

附件中的有两个文件,01就是我楼上贴出来的。
02是刚刚做的,完全是从电脑minicom中直接复制出来,未经过任何加工的。
结论就是Nand驱动没有问题。
其中前面部分是只用tftp读镜像到0x82000000开始的地方,然后分别读了0x820A(B)0000和0x830A(B)0000的数据,可以看到0x83开头的全是ff,0x82的完全和实际镜像的二进制相同。
后面(执行nand read.i之后),0x83开头的和0x82开头的数据完全相同了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| iceofwater 发表于 2013-7-8 21:53:36 | 显示全部楼层
见鬼了...我也按照你的记录文件中的步骤重新操作了一遍,发现结果还是跟之前一样,在此我将我的板子用CCS截图内存给你看,另外我的串口打印输出的东西很奇怪,每次读取时都会打印奇怪的信息,但是看你的记录上没有啊,你看看我的记录,看看到底是驱动问题,还是我上面的nand flash有问题啊??

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
亚瑟王 发表于 2013-7-9 09:25:42 | 显示全部楼层
iceofwater 发表于 2013-7-8 21:53
见鬼了...我也按照你的记录文件中的步骤重新操作了一遍,发现结果还是跟之前一样,在此我将我的板子用CCS截图 ...

先运行命令9,彻底格式化一下吧。
 楼主| iceofwater 发表于 2013-7-9 13:42:28 | 显示全部楼层
本帖最后由 iceofwater 于 2013-7-9 13:49 编辑
亚瑟王 发表于 2013-7-9 09:25
先运行命令9,彻底格式化一下吧。


早就试过了,试了好几次了,仍然这样,咋办!?
而且在我的串口工具上,打印报错的这些信息,又是怎么回事呢??
亚瑟王 发表于 2013-7-9 14:31:02 | 显示全部楼层
iceofwater 发表于 2013-7-9 13:42
早就试过了,试了好几次了,仍然这样,咋办!?
而且在我的串口工具上,打印报错的这些信息,又是怎么 ...

我这边换了几个TQ3358的板子测试都没有这个问题。
因为你的板子ecc出错导致nand写不进数据,从而引起读出来的数据和实际数据不相同的情况。
天嵌科技提供的3358的u-boot中的Nand驱动是改进后的驱动,未改进前会有这个ecc的错误的。改进后就没有这个错误了。
 楼主| iceofwater 发表于 2013-7-10 08:30:18 | 显示全部楼层
亚瑟王 发表于 2013-7-9 14:31
我这边换了几个TQ3358的板子测试都没有这个问题。
因为你的板子ecc出错导致nand写不进数据,从而引起读出 ...

那就是说我的这个出ecc错误的情况,是u-boot中的nand驱动未改进?
那不还是驱动问题么,我们又看不到源码,只能这么认为!
还有通过这个nand驱动烧写时,有什么需要注意的吗,比如在写的时候大小要按照page页?
因为我看你的例子中都是烧写0xC0000,而我一直都是用0xB34B0。
如果有新的改进版的uboot,请上传至此!
亚瑟王 发表于 2013-7-10 09:25:46 | 显示全部楼层
iceofwater 发表于 2013-7-10 08:30
那就是说我的这个出ecc错误的情况,是u-boot中的nand驱动未改进?
那不还是驱动问题么,我们又看不到源码 ...

我也是用光盘里面的镜像测试的。没有发现这个问题;并且你烧写uboot和kernel之后也能够正常运行,那么我可以认为Nand Flash驱动是OK的,读写都正常。
至于烧写地址的问题:因为Nand Flash的读写都是整块整页操作的,所以我在取值时都是采用的整数取值的。也推荐这样做。
 楼主| iceofwater 发表于 2013-7-10 11:52:22 | 显示全部楼层
亚瑟王 发表于 2013-7-10 09:25
我也是用光盘里面的镜像测试的。没有发现这个问题;并且你烧写uboot和kernel之后也能够正常运行,那么我可 ...

行吧,那以后我就整页的操作,另外为什么每次都非常规律性的,ECC出错总是在nand上的0xA0000处开始,是跟我烧写镜像是没有用页的倍数来写导致的吗?
亚瑟王 发表于 2013-7-10 12:30:03 | 显示全部楼层
iceofwater 发表于 2013-7-10 11:52
行吧,那以后我就整页的操作,另外为什么每次都非常规律性的,ECC出错总是在nand上的0xA0000处开始,是跟 ...

你那边的操作我就不清楚了,给你的附件中有操作指令的。也验证了天嵌科技的驱动的正确性。
亲,建议你把标题改了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-26 04:28 , Processed in 1.078132 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表