主题中讨论的其他器件:TPS65910
工具/软件:Linux
在 AM335x 上从 SDK6转到 ProcessorSDK 1.03时、客户将旧板文件中的 UBIFS 的 NAND MTD 分区表(例如文件系统)硬编码为器件树.dtsi 文件:
分区@8{
标签="NAND.File-System";
REG =<0x00C80000 0x06000000>;
};
当 rootfs 分区的前两个物理块是坏块时,U-boot 会在刷写 rootfs 时识别这一点并跳过它们。 但是,当内核刚刚启动并首次尝试装入 rootfs 时,它甚至看不到有效的 ubi 文件系统,并显示错误:
>[1.077744] UBI 错误:SCAN_PEB:PEB 766中的错误图像序列编号529790210、预期为1116986266
是否有办法使用此方法跳过坏块并成功引导内核? 这里出了什么问题?
以下是控制台日志(我们用于 rootfs 的 bootargs 为: root=ubi0:rootfs ro ubi, MTD=8,2048 noinitrd rootfstype=ubifs rootwait=1):
正在启动内核...
[0.305420] pinctrl-single:ioremap base 为 f9e10800 phys 44e10800
[1.077744] UBI 错误:SCAN_PEB:PEB 766中的错误图像序列编号529790210,预期为1116986266
[1.087337] 擦除计数器报头转储:
[1.091261] 魔术 0x55424923
[1.095182] 版本 1
[1.098295] EC 1.
[1.101398] vid_hdr_offset 2048
[1.104773] DATA_OFFSET 4096
[1.108160] image_seq 529790210
[1.111990] HDR_CRC b1cc42f3
[1.11591] 擦除计数器头 hexdump:
[1.120406] UBI 错误:ubi-attach_MTD_dev:无法连接 mtd8、错误-22
[1.127762] UBI 错误:ubi_init:无法连接 mtd8
[1.13777777] UBIFS 错误(pid 1):ubifs_mount:无法打开"ubi0:rootfs"、错误-19
[1.145961] 内核严重错误-未同步:VFS:无法在未知块(0、0)上安装根 FS
[1.154625] CPU:0 PID:1 Comm:swapper 未被污染3.14.43+#136
[1.161004] 回溯:
[1.163593] [ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
[1.171518] R6:c5b51000 R5:c051e804 R4:c061bfa8 R3:00000000
[1.177471][ ](show_stack)从[ ](dump_stack+0x20/0x28)
[1.185052] [ ](dump_stack)从[ ](紧急+ 0x84/0x1d4)
[1.192271][ ](紧急)、从[ ](LOAD_BLOCK_ROOT+0x194/0x240)
[1.200108] R3:00000004 R2:00000000 R1:c5879ee0 r0:c051e804
[1.206048] r7:c05d3a04
[1.208708][ ](mount_block_root)从[ ](Prepare_namespace +0x94/0x1cc)
[1.217543] R10:c05d39d8 R9:c05d39d0 R8:c05a74d0 r7:00000092 R6:c061b200 R5:c05d3a04
[1.225761] R4:c05d39f8
[1.228420] [ ](Prepare_namespace)、来自[ ](kernel_init_freeed+0x174/0x1b8)
[1.237711] R5:00000007 R4:c05db7dc
[1.241465] [ ](kernel_init_freable)从[ ](kernel_init+0x14/0xf4)
[1.250028] R10:00000000 R9:00000000 R8:00000000 r7:00000000 R6:00000000 R5:c0437058
[1.258245] R4:c061b200
[1.260916] [ ](kernel_init)、来自[ ](RET_FANK_F叉+0x14/0x3c)
[1.26840] R4:00000000 R3:c5878000