芯片是:AM3352,一开始使用的NAND falsh是K9F1G08U0D,linux内核能正常启动,ubifs文件系统也能正常挂载,重启也没有什么问题。
但是K9F1G08U0D停产了,所以使用了新的FLASH,更换为:K9F1G08U0E。
使用新的FLASH之后,烧写内核,文件系统一切正常。第一次启动的时候,内核正常启动,ubifs文件系统也能正常挂载。但是重启之后,也就是第二次启动的时候,文件系统就挂载不上了。
下面的第二次启动的时候,出现的问题。
[ 4.277457] omap_rtc am33xx-rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
[ 4.443370] UBIFS error (pid 1): ubifs_recover_master_node: failed to recover master node
[ 4.452376] List of all partitions:
[ 4.456069] 1f00 2048 mtdblock0 (driver?)
[ 4.461392] 1f01 8192 mtdblock1 (driver?)
[ 4.466693] 1f02 8192 mtdblock2 (driver?)
[ 4.471996] 1f03 112640 mtdblock3 (driver?)
[ 4.477289] 1f04 98456 mtdblock4 (driver?)
[ 4.482588] No filesystem could mount root, tried: ubifs
[ 4.488250] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[ 4.496910] Backtrace:
[ 4.499507] [<c0018e54>] (dump_backtrace+0x0/0x110) from [<c0432ee0>] (dump_stack+0x18/0x1c)
[ 4.508351] r7:c05f880c r6:ce17d000 r5:c05f880c r4:c066c948
[ 4.514318] [<c0432ec8>] (dump_stack+0x0/0x1c) from [<c0432f58>] (panic+0x74/0x1b8)
[ 4.522357] [<c0432ee4>] (panic+0x0/0x1b8) from [<c05c6edc>] (mount_block_root+0x208/0x240)
[ 4.531111] r3:00000029 r2:ce01df60 r1:ce01df60 r0:c0526dd0
[ 4.537058] [<c05c6cd4>] (mount_block_root+0x0/0x240) from [<c05c7080>] (prepare_namespace+0x90/0x1e8)
[ 4.546819] [<c05c6ff0>] (prepare_namespace+0x0/0x1e8) from [<c05c6324>] (kernel_init+0x120/0x13c)
[ 4.556210] r6:c06045d8 r5:c0604ba0 r4:c0604ba0
[ 4.561080] [<c05c6204>] (kernel_init+0x0/0x13c) from [<c0044328>] (do_exit+0x0/0x6d0)
[ 4.569371] r7:00000013 r6:c0044328 r5:c05c6204 r4:00000000
而查阅了相关芯片手册后,发现两个FLASH差别不是很大,引脚兼容,只是时序稍微不太一样。还有就是Nop(Number of Partial Program Cycles )这个参数不不样。U0D的这个参数是4,而U0E的这个参数是1.
有人说是ubifs文件系统制作不对,有人说时序不对。
如果ubifs文件系统不对,那应该会一次都不能挂载,如果时序不对,那读FLASH的应该也会出错,也会一次都不能挂载文件系统。
估计是在第一次启动的时候,有对FLASH的写操作,一开始也以为是ECC的错误,但使用的方式是NONE ECC,所以,ECC的错误就排除了。
而且也有不少人遇到这个问题,第一次启动的时候,能正常启动,在第二次的时候,就不行了。
我在一个论坛上也看到了同样的错误,可以参看下这个帖子,问题还是没有解决。
www.amobbs.com/thread-5576903-1-1.html
这个帖子问的还是比较清楚的,可以更好地看到问题的所在。
谢谢。