This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3358:硬编码 UBIFS NAND 地址的引导错误

Guru**** 2546490 points
Other Parts Discussed in Thread: TPS65910

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/609390/linux-am3358-boot-errors-with-hardcoded-ubifs-nand-addresses

器件型号:AM3358
主题中讨论的其他器件: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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否有任何进展?

    在 AM335x EVM 上查看这一点、我们无法确定如何将 u-boot mtdparts 命令连接到 Linux 内核所看到的内容。 即使使用 saveenv 或重置、mtdparts 更改也不会保持永久或传递到内核。

    我们 是否必须以某种方式在器件树文件中进行硬编码?

    请参阅 下面的 b-boot 日志和内核引导错误

    U-Boot# mtdparts del nand0.9.

    U-Boot# mtdparts 添加 nand0 0x0f500000@0x00a20000 NAND.file-system

    U-Boot# mtdparts

     

    器件 nand0 ,#部件= 10

    #:名称               大小           偏移         MASK_FLAGS

    0:NAND.SPL           0x00020000     0x00000000     0

    1:NAND.SPL.Backup1   0x00020000     0x00020000     0

    2:NAND.SPL.Backup2   0x00020000     0x00040000     0

    3:NAND.SPL.backup3   0x00020000     0x00060000     0

    4:NAND.U-BOOT-SPL-OS 0x00040000     0x00080000     0

    5:NAND.U-boot        0x00100000     0x000c0000     0

    6:NAND.u-boot-env    0x00020000     0x001c0000     0

    7:NAND.u-boot-env.backup10x00020000  0x001e0000     0

    8:NAND.kernel        0x00800000     0x00200000     0

    9:NAND.FILE-SYSTEM   0x0f500000      0x00a20000     0

    未传递到内核(甚至是后续 uboot):

    [1.851992]   在 MTD 器件 OMAP2-nand.0上找到10个部件分区

    [1.858115]   在"OMAP2-nand.0"上创建10个 MTD 分区:

    [1.86351]   0x0000000000000000 0x000000020000:“NAND.SPL”

    [1.870792]   0x00000002000-0x000000040000:“NAND.SPL.Backup1”

    [1.878452]   0x000000040000-0x000000060000:“NAND.SPL.Backup2”

    [1.885994]   0x000000060000-0x000000080000:"NAND.SPL.backup3"

    [1.893521]   0x000000080000-0x0000000c0000:“NAND.u-boot-spl-OS”

    [1.901348]   0x0000000c0000-0x0000001c0000:“NAND.u-boot”

    [1.909143]   0x0000001c0000-0x0000001e0000:“NAND.u-boot-env”

    [1.916621]   0x0000001e0000-0x000000200000:“NAND.u-boot-env.Backup1”

    [1.924822]   0x000000200000-0x000000a00000:“NAND.kernel”

    [1.938457]0x000000a00000-0x000010000000   :“NAND.file-system”

    [2.150387]   tps65910 0-002D:无中断支持、无内核 IRQ

     

     

    内核错误:

    [2.371653]   UBI:将 mtd9连接到 ubi0

    [3.568885]   UBI 错误:SCAN_PEB:PEB 中的错误图像序列编号1420516448

    1961年,预期为275294271

    [3.578183]   擦除计数器标头转储:

    [3.581962]    魔法         0x55424923

    [3.585723]    版本       1

    [3.588700]    EC            0

    [3.591690]    vid_hdr_offset 2048

    [3.594928]    DATA_OFFSET   4096

    [3.598165]    图像序列     1420516448

    [3.601936]    HDR_CRC       0x9d364c14

    [3.605700]   擦除计数器标头 hexdump:

    [3.610443]   UBI 错误:ubi-attach_MTD_dev:无法连接 mtd9、错误-22

    [3.617474]   UBI 错误:ubI_init:无法连接 mtd9

     

     

    [3.761689]   VFS:无法打开根设备"ubi0:rootfs"或未知块(0,0):错误-19

    [3.769761]   请附加正确的"root="引导选项;以下是可用分区:

    [3.778203]   1f00            128 mtdblock0 (驱动程序?)

    [3.783324]   1f01            128 mtdblock1 (驱动程序?)

    [3.788418]   1f02            128 mtdblock2 (驱动程序?)

    [3.793524]   1f03            128 mtdblock3 (驱动程序?)

    [3.798619]   1f04            256 mtdblock4 (驱动程序?)

    [3.803727]   1f05           1024 mtdblock5 (驱动程序?)

    [3.808820]   1f06            128 mtdblock6 (驱动程序?)

    [3.813930]   1f07            128 mtdblock7 (驱动程序?)

    [3.819026]   1f08           8192 mtdblock8 (驱动程序?)

    [3.824132]   1f09         251904 mtdblock9 (驱动程序?)

    [3.829228]   内核严重错误-未同步:VFS:无法在 unkno 上安装根 FS

    WN 块(0、0)

    [3.837530]   DRM_kms_helper:发生紧急情况、切换回文本控制台

    [7.600297]   random:非阻塞池已初始化

      

    不需要?

    setenv bootargs 'console=ttyO0、115200n8 noinitrd ip=off mem=256M rootwait=1 rw ubi.mtd=9、2048 rootfstype=ubifs root=ubi0:rootfs init=/init'

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Joe、

    Linux 分区在 GPMC 节点下的 AM335x-3vm.dts 文件中设置。 显然、这些与 U-Boot 中设置的内容相匹配是有道理的、但它们确实需要在两个位置都进行设置。