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/OMAP-L138:从 Linux shell 脚本重新刷写 U-Boot 分区

Guru**** 2535880 points
Other Parts Discussed in Thread: OMAP-L138, FLASHTOOL

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/668676/linux-omap-l138-re-flashing-u-boot-partition-from-a-linux-shell-script

器件型号:OMAP-L138
主题中讨论的其他器件: FLASHTOOL

工具/软件:Linux

您好!

我们部署了两款使用 OMAP-L138处理器的产品。  问题是、其中许多(不幸的是、其中许多)安装了非常旧版本的 U-Boot、其中包含非常旧的 NAND 闪存驱动程序、当 NAND 器件产生位错误时、会导致现场单元变成砖型。

挑战在于、由于这些单元位于数百个位置、因此需要通过 Linux shell 脚本实现。  如果能从 Linux 中通过 U-Boot 分区进行写操作、我将不胜感激。

非常感谢、

Bill

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

    我们将对此进行研究。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否检查了以下 e2e 主题:
    e2e.ti.com/.../1259113

    您是否还尝试仅启用 u-boot 映像或 AIS 生成的文件? 我不确定您是否可以从 Linux 更新 AIS 签名映像...

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

    大家好、是的、这是我4年前的老线程!

    不幸的是、我从未真正能够使这个旧解决方案可靠地工作。  但是、当我开始阅读时、这个问题已经成为一个问题、我们必须解决这个问题、并尝试提出一个解决方案、以便现场的单元可以重新编程、并且不必通过 RMA 来重新刷写。  

    因此、我现在尝试使用构建最新的 U-Boot、而不需要单独的 UBL。  我从您提到的最后一个线程获得了代码基础 URL (我在下面粘贴了它、但出于某种原因、粘贴后、它被下面的大图标"覆盖")。  URL 仍在主题中列出: e2e.ti.com/.../1259113

     

    下面是我尝试构建它时发生的情况: 我将在以下 VM 上构建它:

    $ uname -a
    Cygwin_NT-6.1 Volga-Win7 2.10.0 (0.35/3) 2018-02-02 15:16 x86_64 Cygwin

    bgoetz@Volga-Win7 ~/AP4/board-support/u-boot-2017.01+gitAUTOINC+340fb36f04-g340fb36f04
    $

    以下是我尝试在其基础上进行构建时的输出:

    bgoetz@Volga-Win7 ~/AP4/board-support/u-boot-2017.01+gitAUTOINC+340fb36f04-g340fb36f04
    $ make cross_compile=arm-linux-gnueabi- distclean
    /home/bgoetz/ap4/gcc-linaro-6.2.1-ti2017.01-armv5-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc:/home/bgoetz/ap4/gcc-linaro-6.2.1-ti2017.01-armv5-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc:无法执行二进制文件
    /bin/sh:/home/bgoetz/ap4/gcc-linaro-6.2.1-ti2017.01-armv5-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc:无法执行二进制文件:EXEC 格式错误
    dirname:操作数丢失
    请尝试'irname --help'获取更多信息。
    make:***[Makefile:1455:_clear_drivers]中断


    bgoetz@Volga-Win7 ~/AP4/board-support/u-boot-2017.01+gitAUTOINC+340fb36f04-g340fb36f04
    $ objdump -f /home/bgoetz/ap4/gcc-linaro-6.2.1-ti2017.01-armv5-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc

    /home/bgoetz/ap4/gcc-linaro-6.2.1-ti2017.01-armv5-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc:文件格式 elf64-x86-64
    架构:i386:x86-64、标志0x00000112:
    Exec_P、has、Syms、D_Paged
    起始地址0x0000000000403040


    bgoetz@Volga-Win7 ~/AP4/board-support/u-boot-2017.01+gitAUTOINC+340fb36f04-g340fb36f04
    $这几个 ls
    /usr/bin/ls

    bgoetz@Volga-Win7 ~/AP4/board-support/u-boot-2017.01+gitAUTOINC+340fb36f04-g340fb36f04
    $ objdump -f /usr/bin/ls

    /usr/bin/ls:文件格式 PEI-x86-64
    体系结构:i386:x86-64、标志0x0000010a:
    Exec_P、has 调试、D_分 页
    起始地址0x0000000100401000


    bgoetz@Volga-Win7 ~/AP4/board-support/u-boot-2017.01+gitAUTOINC+340fb36f04-g340fb36f04
    $

    如果我想构建 U-Boot、我应该在 PC 上安装什么版本的虚拟机?

    非常感谢、

    Bill

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    下面是当前分区在我们的方框中的外观:
    如果可能、希望使用新的 AIS 格式组合 UBL 和 U-Boot 分区。

    #以下是分区的外观:

    root@Arago:~# cat /proc/partitions
    主要次要#blocks 名称

    31. 0 128 mtdblock0
    31. 1 128 mtdblock1.
    31. 2. 512 mtdblock2.
    31. 3. 2048 mtdblock3.
    31. 4. 16384 mtdblock4.
    31. 5. 16384 mtdblock5.
    31. 6. 487424 mtdblock6.
    根部@Arago:~#
    根部@Arago:~#
    root@Arago:~# cat /proc/mtd
    DEV:size erasesize 名称
    mtd0:00020000 00020000 "u-boot env"
    mtd1:00020000 00020000 "UBL"
    mtd2:00080000 00020000 "u-boot"
    mtd3:00200000 00020000“内核”
    mtd4:01000000 00020000 "文件系统"
    mtd5:01000000 00020000 "AP4_FS"
    mtd6:1dc00000 00020000 "filesystem 大型"
    根部@Arago:~#
    根部@Arago:~#
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么、这里是一些更多信息。 仔细观察闪存的内容、我们实际上不使用 MTD2。 分区 MTD1实际上是"UBL"+"U-boot"的串联。 下面是该分区的内容:(我已经将其缩短了)。

    所以问题是(细节会回来...) 该分区的 OOB 格式(具有 UBL + U-Boot 的格式)实际上与所有其他分区中的 OOB 格式不同! (其中为每个扇区存储了坏位表。)

    因此、我相信、当 Linux 尝试使用标准命令覆盖此分区时:
    flash_eraseall /dev/mtd1
    nandwrite -p /dev/mtd1

    使用错误的 OOB 映射写入文件!

    这会导致框出现错误:

    OMAP-L138初始化已通过!
    启动 TI 用户启动加载程序
    UBL 版本:1.65
    UBL Flashtype:NAND
    正在启动 NAND 复制...
    未找到有效的引导映像!
    NAND 启动失败。
    正在中止...



    根部@Arago:~#
    根部@Arago:~#
    root@Arago:~# nanddump -l 0x47f0 -p /dev/mtd1
    ECC Failed (ECC 失败):216
    ECC 被校正:0
    坏块数:0
    BBT 块数:0
    块大小131072、页大小2048、OOB 大小64
    正在转储数据、从0x00000000开始、到0x000047f0结束...
    ECC:3个不可纠正的位翻转、偏移量0x00000000
    0x00000000:54 49 50 41 01 59 53 58 00 00 80 e0 2e 00
    0x00000010:00 00 0f E1 1f 00 c0 E3 D3 00 80 E3 00 f0 29 E1
    0x00000020:10 0f 11 ee 33 0c c0 E3 87 00 c0 E3 02 00 80 E3
    0x00000030:01 0A 80 E3 10 0f 01 ee 18 00 9f E5 18 10 9f E5
    0x00000040:01 00 80 e0 04 d0 40 E2 07 d0 CD E3 0c 00 9f E5
    0x00000050:00 f0 a0 e1 ff ea e0 2e 00 80 00 08 00
    0x00000060:54 00 00 80 70 40 2D E9 00 00 a0 E3 5e 04 00 EB
    0x00000070:CC 02 00 EB 00 50 E3 2D 00 1a 02 00 80 E2
    0x00000080:AD 01 00 EB b4 30 9f E5 02 00 a0 E3 00 10 93 E5
    0x00000090:DD 03 00 EB A8 50 9f E5 00 85 E5 A4 00 9f E5
    0x000000a0:47 04 00 EB a0 00 9f E5 45 04 00 EB 9c 00 9f E5
    0x000000b0:43 04 00 EB 98 00 9f E5 41 04 00 EB 94 00 9f E5
    0x000000c0:3F 04 00 EB 90 00 9f E5 3D 04 00 EB 8c 00 9f E5
    0x000000d0:3B 04 00 EB 13 0b 00 EB 00 00 50 E3 02 00 0A
    0x000000e0:7C 00 9f E5 36 04 00 EB 11 00 ea 74 40 9f E5
    0x000000f0:74 00 9f E5 32 04 00 EB 70 00 9f E5 30 04 00 EB
    0x00000100:00 00 94 E5 21 04 00 EB 64 00 9f E5 2c 04 00 EB
    0x00000110:60 00 9f E5 5d 04 00 EB 00 95 E5 b4 03 00 EB
    0x00000120:00 20 94 E5 50 30 9f E5 00 20 83 E5 32 ff 2f E1
    0x00000130:70 80 BD e8 44 00 9f E5 21 04 00 EB ff ff ea
    0x00000140:D4 2f 00 80 D4 32 00 80 AD 2f 00 80 e0 2e 00 80
    0x00000150:FA 2e 00 80 18 2f 00 80 27 2f 00 80 2c 2f 00 80
    0x00000160:3F 2f 00 80 46 2f 00 80 D8 32 00 80 5a 2f 00 80
    0x00000170:62 2f 00 80 89 2f 00 80 10 27 00 00 cc 32 00 80
    0x00000180:7F 2f 00 80 0c 30 9f E5 24 00 93 E5 30 00 E2
    0x00000190:20 02 a0 e1 ff 2f E1 00 40 C1 01 00 50 E3
    0x000001a0:10 40 2D E9 80 00 9f 05 01 40 a0 E1 03 10 a0 E1
    0x000001b0:02 00 0A 01 00 50 E3 10 80 BD 18 6c 00 9f E5
    0x000001c0:01 30 a0 E3 13 C2 a0 E1 28 31 90 E5 03 00 1c E1
    0x000001d0:FC ff 1a 02 3c 84 E2 03 31 90 E7 1f 30 03 E2
    0x000001e0:01 00 53 E1 10 80 BD 08 0A 3D 84 E2 03 21 90 E7
    0x000001f0:1F 20 C2 E3 01 20 82 E1 03 21 80 E7 20 31 90 E5
    0x00000200:03 30 8c E1 20 31 80 E5 28 31 90 E5 03 00 1c E1
    0x00000210:FC ff 1a 02 3c 84 E2 03 31 90 E7 1f 30 03 E2
    0x00000220:01 00 53 E1 ff 1a 10 80 BD e8 00 C1 01
    0x00000230:00 70 E2 01 18 c0 9f E5 48 00 80 E2 00 31 9c E7

    (笑声)

    0x00000780:0C 10 a0 E3 00 20 a0 E3 03 30 a0 E3 82 fe ff EB
    0x00000790:04 00 a0 E3 ff 14 a0 E3 22 24 a0 E3 A4 Fe ff EB
    0x000007a0:00 00 a0 E3 10 80 BD e8 03 30 a0 E3 01 00 a0 E3
    0x000007b0:0D 10 a0 E3 00 20 a0 E3 77 fe ff EB 04 00 a0 E3
    0x000007c0:FF 18 a0 E3 22 28 a0 E3 99 Fe ff EB 00 a0 E3
    0x000007d0:10 80 BD e8 01 00 50 E3 10 40 2D E9 00 40 a0 E1
    0x000007e0:14 00 00 8a 00 00 50 E3 02 00 0A 01 00 50 E3
    0x000007f0:10 00 00 1a 05 00 ea 04 00 a0 E3 ff 1c a0 E3
    OOB 数据:FF 关断 FF 46 F9 a0 b4 bf DE 2e B7 53 B6
    OOB 数据:FF 关断 FF 85 02 1b F5 0A 59 fa d0 43 4e
    OOB 数据:FF 关断 FF fb f3 04 7d 02 F5 430A A7 6e
    OOB 数据:FF 关断 FF AB C6 E7 b9 FD 4b 86 62 9b
    ECC:3个不可纠正的位翻转、偏移量0x00000800
    0x00000800:22 2c a0 E3 8a fe ff EB 04 00 a0 e1 10 80 BD e8
    0x00000810:0b 10 a0 E3 00 20 a0 E3 03 30 a0 E3 5e FE ff EB
    0x00000820:04 00 a0 E3 ff 18 a0 E3 11 27 a0 E3 80 Fe ff EB
    0x00000830:00 a0 E3 10 80 BD e8 01 00 a0 E3 10 80 BD e8
    0x00000840:01 00 50 E3 10 40 2D E9 00 40 a0 E1 20 00 8a
    0x00000850:00 00 50 E3 02 00 0A 01 00 50 E3 1c 00 00 1a
    0x00000860:0D 00 ea 03 30 a0 E3 00 20 a0 e1 05 10 a0 E3
    0x00000870:49 Fe ff EB 0A 00 a0 E3 00 10 e0 E3 58 20 9f E5
    0x00000880:6B Fe ff EB 0b 00 a0 E3 ff 10 a0 E3 22 20 a0 E3
    0x00000890:67 Fe ff EB 04 00 a0 E1 10 80 BD e8 03 30 a0 E3

    (笑声)

    0x00000f60:00 50 E3 00 40 a0 03 01 40 04 12 00 54 E3
    0x00000f70:F6 ff 1a 00 50 E3 01 00 1a 02 00 80 E2
    0x00000f80:F0 81 BD e8 05 30 d6 E7 01 50 85 E2 00 30 88 E5
    0x00000f90:07 00 55 E1 EC ff BA 00 a0 E3 f0 81 BD e8
    0x00000fa0:1F 40 2D e9 1c c0 a0 e3 00 20 a0 e3 31 3c a0 e1
    0x00000fb0:0f 30 03 E2 09 00 53 E3 07 30 83 82 07 e0 8d E2
    0x00000fc0:30 83 E2 02 30 ce E7 01 20 82 E2 08 00 52 E3
    0x00000fd0:04 c0 4c E2 ff ff 1a 00 30 a0 E3 0e 10 a0 e1
    0x00000fe0:03 20 a0 e1 0f 30 CD E5 C9 ff EB 14 d0 8d E2
    0x00000ff0:00 80 BD e8 04 20 90 E5 08 00 9f E5 00 30 a0 E3
    OOB 数据:FF 关断 FF 79 7c 18 f0 0d AB E6 10 66 0d
    OOB 数据:FF 关断 FF 1c F1 A3 D7 cc A6 55 5d 5a bc.
    OOB 数据:FF 关断 FF 53 4D 0d F6 53 63 95 18 5a 50
    OOB 数据:FF 关断 FF 1c 74 f2 b4 AB 52 20 80 68 48
    ECC:3个不可纠正的位翻转、偏移量0x00001000
    0x00001000:30 82 E5 A1 00 ea 10 27 00 70 40 2D E9
    0x00001010:00 40 a0 e1 0c 00 a0 E3 01 50 a0 e1 76 00 EB
    0x00001020:0C 31 9f E5 00 40 80 E5 04 21 93 E7 00 60 a0 E1
    0x00001030:04 20 80 E5 14 30 92 E5 40 00 13 E3 fc ff 0A
    0x00001040:00 55 E3 EC 30 9f 05 08 50 86 15 04 50 96 E5
    0x00001050:08 30 86 05 06 00 a0 E1 E5 ff EB 30 95 E5
    0x00001060:08 20 96 E5 02 39 C3 E3 30 85 E5 30 95 E5
    0x00001070:00 20 92 E5 02 39 83 E3 02 00 52 E3 30 85 E5
    0x00001080:01 30 a0 03 02 00 0A 01 00 52 E3 26 00 1a
    0x00001090:00 30 a0 E3 34 30 85 E5 0c 30 95 E5 64 00 a0 E3
    0x000010a0:80 30 83 E3 0c 30 85 E5 78 00 EB 08 30 96 E5
    0x000010b0:00 40 a0 E3 0e 30 D3 E5 64 00 a0 E3 20 30 C5 E5

    (笑声)

    0x00001750:02 00 0A 00 54 E3 00 50 13 f0 ff 0A
    0x00001760:00 a0 E3 3e 80 BD e8 10 40 2D E9 10 a0 E3
    0x00001770:FF 20 a0 E3 00 40 a0 E1 2a ff EB 04 00 a0 E1
    0x00001780:02 1c a0 E3 10 40 BD e8 E1 ff ea 13 40 2D E9
    0x00001790:00 40 a0 e1 04 10 8d E5 10 a0 E3 70 20 a0 E3
    0x000017a0:04 00 a0 e1 ff ff EB 04 00 a0 e1 32 ff ff ff EB
    0x000017b0:04 30 9d E5 01 30 43 E2 04 30 8d E5 04 30 9d E5
    0x000017c0:00 00 53 E3 01 00 0A 40 00 10 E3 f1 ff 0A
    0x000017d0:04 30 9d E5 00 53 E3 01 00 a0 03 01 00 12
    0x000017e0:1C 80 BD e8 70 40 2D E9 60 20 a0 E3 00 50 a0 E1
    0x000017f0:01 40 a0 e1 10 a0 E3 0A ff EB b0 31 D5 e1
    OOB 数据:FF 关断 FF 0A E1 2f 85 97 A2 7e 09 bb ed
    OOB 数据:FF 关断 FF 87 D5 95 5e A4 93 56 16 FD 0d
    OOB 数据:FF 关断 FF 68 9b 2D 52 93 D9 36 22 E4 Ed
    OOB 数据:FF 关断 FF 49 90 F8 B5 0A 70 32 bc EB
    ECC:3个不可纠正的位翻转、偏移量0x00001800
    0x00001800:05 00 a0 e1 93 04 01 e0 39 ff EB 05 00 a0 e1
    0x00001810:10 a0 E3 d0 20 a0 E3 02 ff EB 05 00 a0 e1
    0x00001820:0A 1b a0 E3 BA ff EB 00 50 E3 01 00 0A
    0x00001830:01 00 a0 E3 70 80 BD e8 05 00 a0 E1 0A 1b a0 E3
    0x00001840:70 40 BD e8 d0 ff ea 70 40 2D E9 00 60 a0 e1
    0x00001850:01 30 41 E2 01 00 a0 E1 0c 10 96 E5 02 50 83 e0
    0x00001860:01 00 55 E1 01 00 a0 23 00 40 a0 31 01 00 3a
    0x00001870:70 80 BD e8关闭 EB 05 00 54 E1 04 10 a0 E1
    0x00001880:06 00 a0 e1 00 20 a0 E3 01 40 84 E2 F8 ff 9a

    (笑声)

    0x00001f20:08 f0 93 E5 00 80 50 E2 02 00 0A B8 72 C4 E1
    0x00001f30:01 00 a0 E3 17 00 ea b0 32 D4 E1 00 53 E3
    0x00001f40:0D 00 0A b0 21 D4 E1 05 10 a0 E1 01 20 42 E2
    0x00001f50:0D 30 a0 e1 04 00 a0 e1 6F ff EB 0d 10 a0 e1
    0x00001f60:34 30 94 E5 04 00 a0 E1 0f e0 a0 e1 08 f0 93 E5
    0x00001f70:00 50 E3 B8 82 C4 11 EC ff 1a 01 30 a0 E3
    0x00001f80:B8 32 C4 E1 00 a0 E3 02 00 ea B8 32 D4 E1
    0x00001f90:01 00 73 E2 00 a0 33 01 dc 8d E2 f0 81 BD e8
    0x00001fa0:F0 41 2D E9 11 DE 4D E2 00 60 a0 E1 03 80 a0 E1
    0x00001fb0:0D 30 a0 e1 50 a0 e1 02 40 a0 e1 56 ff EB
    0x00001fc0:06 00 a0 e1 10 a0 E3 00 20 a0 E3 15 FD ff EB
    0x00001fd0:00 10 a0 E3 01 20 a0 E1 06 00 a0 E1 2D Fe ff EB
    0x00001fe0:00 70 a0 e1 07 10 a0 E1 06 00 a0 e1 67 FD ff EB
    0x00001ff0:B0 31 d6 e1 06 00 a0 e1 93 45 21 e0 3c fd ff ff ff ff EB
    OOB 数据:FF 关断 FF b0 7f CD 35 18 21 D4 0A 8d 89
    OOB 数据:FF 关断 FF 38 12 2a CB 84 39 73 0e 03 25
    OOB 数据:FF 关断 FF 1b 56 07 E2 E9 54 fb 98 5F C4
    OOB 数据:FF 关断 FF 32 D7 A7 fa D5 31 ce 62 11 2b
    ECC:3个不可纠正的位翻转、偏移量0x00002000
    0x00002000:be 31 d6 e1 00 53 E3 03 00 0A 06 00 a0 e1
    0x00002010:10 a0 E3 30 20 a0 E3 02 FD ff EB 06 00 a0 e1
    0x00002020:0A 1b a0 E3 BA FD ff EB 00 40 50 E2 42 00 1a
    0x00002030:30 96 E5 06 00 a0 E1 0f e0 a0 e1 14 f0 93 E5
    0x00002040:04 50 a0 e1 34 00 ea 30 96 E5 0f e0 a0 e1
    0x00002050:10 f0 93 E5 B6 31 d6 E1 06 00 a0 E1 03 20 a0 E1
    0x00002060:93 85 21 e0 83 FD ff EB 06 00 a0 E1 30 96 E5
    0x00002070:0f e0 a0 e1 14 f0 93 E5 ff 20 05 E2 04 30 a0 e1
    0x00002080:06 00 a0 e1 0d 10 a0 e1 30 c0 96 E5 0f e0 a0 e1
    0x00002090:18 f0 9c E5 B6 31 d6 E1 04 20 a0 E1 93 85 21 e0

    (笑声)

    0x00002780:00 30 a0 E3 B8 32 C6 E1 06 30 d0 E5 06 00 a0 E1
    0x00002790:1D 30 C6 E5 04 30 D2 E5 08 30 C6 E5 F1 fb ff EB
    0x000027a0:00 00 50 E3 07 00 1a 06 00 a0 e1 9c fe ff EB
    0x000027b0:00 00 50 E3 03 00 1a 06 00 a0 e1 fb ff EB
    0x000027c0:00 00 50 E3 00 00 0A 00 60 a0 E3 06 00 a0 E1
    0x000027d0:70 80 BD e8 8c 30 00 80 60 30 00 80 30 00 80
    0x000027e0:E4 30 00 80 1a 03 a0 E3 c0 30 90 E5 2c 10 9f E5
    0x000027f0:01 30 03 e0 00 30 82 E5 C4 30 90 E5 01 30 03 e0
    OOB 数据:FF 关断 FF 19 61 09 1f 60 73 8d 23 65 1f
    OOB 数据:FF 关断 FF 06 42 25 80 E2 E1 3f bc EC 96
    OOB 数据:FF 关断 FF ea 8e 42 46 82 12 D3 ea ef 9d
    OOB 数据:FF 关断 FF 6e 6d da 54 df be 52 43 46 A9
    ECC:3个不可纠正的位翻转、偏移量0x00002800
    0x00002800:04 30 82 E5 C8 30 90 E5 01 30 03 e0 08 30 82 E5
    0x00002810:CC 30 90 E5 01 30 03 e0 0c 30 82 E5 1e ff 2f E1
    0x00002820:FF 03 ff 03 f0 4F 2D E9 2c d0 4D E2 04 00 8d E5
    0x00002830:01 b0 a0 e1 02 90 a0 e1 03 00 a0 e1 00 10 a0 E3
    0x00002840:01 20 d0 E7 0c 30 8d E2 01 20 C3 E7 01 10 81 E2
    0x00002850:10 00 51 E3 F9 ff 1a 10 70 9d E5 14 10 9d E5
    0x00002860:18 80 9d E5 01 2b a0 e1 0c a0 9d E5 07 3b a0 e1
    0x00002870:9C c0 9f E5 23 3b a0 E1 22 2b a0 e1 0c 60 a0 e1
    0x00002880:03 48 07 E2 0c c0 01 e0 03 3a a0 E1 02 24 a0 E1
    0x00002890:3F 1e 08 E2 0A 0b a0 E1 06 50 a0 E1 0c 21 82 E1
    0x000028a0:04 37 83 E1 B6 C2 dd E1 20 0b a0 e1 06 60 08 e0

    (笑声)

    0x00002f70:65 64 2e 0d 0A 00 20 20 44 4F 4e 45 00 0d 0A
    0x00002f80:4A 75 6d 70 69 6e 67 20 74 6F 20 65 6e 74 72 79
    0x00002f90:20 70 6F 69 6e 74 20 61 74 20 00 41 62 6F 72 74
    0x00002fa0:69 6e 67 2e 2e 2e 0d 0A 00 0c 0d 02 05 0e
    0x00002fb0:0f 07 0A 06 09 09 03 04 00 08 0b 12 aa 10.
    0x00002fc0:11 13 16 17 14 15 01 00 4F 4D 41 50 2D 4c 31
    0x00002fd0:33 38 00 00 20 C4 01 00 c0 d0 01 00 d0 d0 01
    0x00002fe0:01 00 00 01 00 00 01 00 00 00 08 00 51 00
    0x00002ff0:C4 2f 00 80 02 00 00 01 00 01 00 00 00
    OOB 数据:FF 关断 FF 0e bf 74 31 2b 89 E5 26 82 d0
    OOB 数据:FF 关断 FF A6 4D A3 79 A6 83 70 AD A9 0b
    OOB 数据:FF 关断 FF 95 1c 64 f0 B3 91 2b 4D 0b 78
    OOB 数据:FF 关断 FF 11 64 BA D8 4e 0c 29 D4 45 ed
    ECC:3个不可纠正的位翻转、偏移量0x00003000
    0x00003000:08 00 12 00 D8 2f 00 80 30 78 00 00 00 00 00 00 60
    0x00003010:00 00 62 00 00 64 00 00 66 00 00 02
    0x00003020:00 00 00 02 00 00 02 00 00 00 02 01 00 00 00
    0x00003030:00 00 68 04 00 00 00 f0 2f 00 80 00 30 00 80
    0x00003040:01 00 00 10 30 00 80 a0 13 00 80 00 14 00 80
    0x00003050:20 42 61 64 20 62 6c 6F 63 6B 20 61 74 20 62 6c
    0x00003060:6F 63 6B 20 00 2e 20 45 72 61 73 69 6e 67 20 69

    (笑声)

    0x000037a0:20 01 80 04 82 04 00 60 80 00 00 00 00 22 00
    0x000037b0:00 00 09 00 00 08 01 40 80 00 00 00 00 00 00 00 00
    0x000037c0:08 00 82 40 00 20 00 00 00 40 40 40 40 00
    0x000037d0:00 02 20 00 80 00 00 00 00 01 00 23 00 10 80
    0x000037e0:12 02 01 00 40 42 00 40 01 80 00 04 10 08
    0x000037f0:80 08 85 01 0A 88 20 00 01 00 02 40 04 00 40 40
    OOB 数据:FF 关断 FF 61 ff d6 5b 6B 0b 7e 22 00 db
    OOB 数据:FF 关断 FF 13 14 70 4b fc E9 ed 88 1D 97
    OOB 数据:FF 关断 FF fc D7 56 4b 17 B2 67 6A 0A 3D
    OOB 数据:FF 关断 FF 9d c0 5c 14 B6 AD F5 8c 32 CD
    ECC:3个不可纠正的位翻转、偏移量0x00003800
    0x00003800:4A 00 81 40 00 00 a0 00 10 81 00 80 00
    0x00003810:02 80 00 80 42 60 00 40 00 11 00 02 01 00
    0x00003820:00 20 00 48 00 40 01 00 00 00 00 00 02 00 20
    0x00003830:00 a0 00 04 01 40 01 08 00 02 00 00 20 00
    0x00003840:00 20 01 41 00 80 00 00 08 40 00 40 50 00
    0x00003850:88 00 00 01 40 20 00 80 20 44 00 40 80
    0x00003860:02 00 05 00 82 02 22 00 00 00 00 00 00 80 00
    0x00003870:00 C2 20 00 00 08 02 00 00 00 00 00 00 00 04 01 40

    (笑声)

    0x00003f40:00 20 00 10 00 90 00 05 00 28 40 02 00 41
    0x00003f50:00 80 00 01 00 01 00 40 42 10 60 00 04
    0x00003f60:08 82 01 00 84 40 00 88 01 00 02 04 00 00 00
    0x00003f70:00 38 40 01 40 01 00 01 91 a0 80 00 82 00
    0x00003f80:00 40 00 80 0A 40 00 01 00 01 00 26 84 00
    0x00003f90:04 00 02 40 00 44 02 00 00 00 00 08 84 08 41
    0x00003fa0:40 40 41 02 81 00 40 00 50 00 62 40 04 02 00
    0x00003fb0:00 80 08 00 80 00 81 44 00 00 00 00 00 00 02 10 42
    0x00003fc0:00 05 00 84 00 40 80 06 40 00 04 88 40 00 80 00
    0x00003fd0:00 02 20 00 A4 04 00 20 40 00 80 50 40 00 21
    0x00003fe0:00 00 88 80 02 20 06 00 10 00 40 00 00 00
    0x00003ff0:00 00 40 00 00 00 00 44 02 21 45 00 80 40
    OOB 数据:FF 关断 FF 33 ff af 12 61 C7 F1 4D D2 D8
    OOB 数据:FF 关断 FF a0 54 36 8e 6d b0 54 42 26 5a
    OOB 数据:FF 关断 FF D8 33 94 89 03 5a b9 79 4c 0b
    OOB 数据:FF 关断 FF A6 99 02 30 79 0d A3 b9 54 92
    0x00004000:FF 关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    0x00004010:FF 关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    0x00004020:FF 关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    0x00004030:FF 关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    0x00004040:FF 关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    0x00004050:FF 关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF

    (笑声)

    0x000047c0:FF 关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    0x000047d0:FF 关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    0x000047e0:FF 关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    0x000047f0:FF 关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    OOB 数据:FF 关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    OOB 数据:FF 关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    OOB 数据:FF 关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    OOB 数据:FF 关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    根部@Arago:~#



    现在、看看 BAD 位表是如何存储在以下 MTD 分区的 OOB 中的:
    请注意、以下是 Linux 器件驱动程序将数据写入 NAND 的方式:

    下面是 U-Boot 环境变量的存储方式:
    请注意、OOB 数据中的前24个字节为0xff:

    root@Arago:~# nanddump -l 0x7f0 -p /dev/mtd0
    ECC 失败:0
    ECC 被校正:0
    坏块数:0
    BBT 块数:0
    块大小131072、页大小2048、OOB 大小64
    正在转储数据、从0x00000000开始、到0x000007f0结束...
    0x00000000:15 af 7c 6F 62 61 75 64 72 61 74 65 3D 31 35
    0x00000010:32 30 00 62 6F 6F 74 64 65 6c 61 79 3D 33 00
    0x00000020:62 6F 6F 74 66 69 6c 65 3D 75 49 6d 61 67 65 5F
    0x00000030:32 2e 36 2e 33 00 65 74 68 61 63 74 3D 44 61
    0x00000040:56 69 6e 63 69 2D 45 4D 41 43 00 65 74 68 61 64
    0x00000050:64 72 3D 32 38 3a 63 37 3a 31 38 3a 30 3a 30 30
    0x00000060:65 3a 32 39 00 67 61 74 65 77 61 79 69 70 3D 31
    0x00000070:36 39 2e 32 35 34 2e 31 30 30 2e 31 00 68 77 5F
    0x00000080:76 65 72 73 69 6F 6e 3D 31 2e 33 00 68 77 63 6F
    0x00000090:6e 66 69 67 3D 64 73 70 3a 77 61 6B 65 3D 79 65
    0x000000a0:73 00 69 70 61 64 72 3D 31 36 39 2e 32 35 34
    0x000000b0:2E 31 30 30 2e 32 30 31 00 6e 65 74 6d 61 73 6B
    0x000000c0:3D 32 35 35 2e 32 35 35 2e 32 35 35 2e 30 00 6e
    0x000000d0:66 73 68 6F 73 74 3D 31 36 39 2e 32 35 34 2e 31
    0x000000e0:30 2e 31 00 73 65 72 76 65 72 69 70 3D 31 36
    0x000000f0:39 2e 32 35 34 2e 31 30 30 2e 31 00 73 74 64 65
    0x00000100:72 3D 73 65 72 69 61 6c 00 73 74 64 69 6e 3D
    0x00000110:73 65 72 69 61 6c 00 73 74 64 6F 75 74 3D 73 65
    0x00000120:72 69 61 6c 00 76 65 72 3D 55 2D 42 6F 6F 74 20
    0x00000130:32 30 31 32 2e 30 34 2e 30 31 2D 30 30 32 35
    0x00000140:2D 67 39 66 34 35 32 35 37 2D 64 69 72 74 79 20
    0x00000150:28 4a 75 6c 20 32 39 20 32 30 31 34 20 2D 20 31
    0x00000160:32 3a 31 32 3a 35 30 29 00 62 6F 6F 74 63 6d 64
    0x00000170:3D 6e 61 6e 64 20 72 65 61 64 2e 65 20 30 78 63
    0x00000180:31 38 30 30 30 30 20 30 78 34 30 30 30 30 30 30 30 30 30
    0x00000190:20 30 78 34 30 30 30 30 3b 20 6e 62 6F 6F 74
    0x000001a0:2E 65 20 30 78 63 30 37 30 30 30 30 20 30 20
    0x000001b0:30 78 32 30 30 30 30 3b 20 62 6F 6F 74 6d 00
    0x000001c0:62 6F 6F 74 61 72 67 73 3D 64 61 76 69 6e 63 69
    0x000001d0:5F 65 6d 61 63 2e 65 74 68 3D 32 38 3a 63 37 3a
    0x000001e0:31 38 3a 30 3a 30 3a 30 65 3a 32 39 20 6d 65 6d 3D
    0x000001f0:31 32 38 4D 20 63 6F 6e 73 6F 6c 65 3D 74 79
    0x00000200:53 32 2c 31 35 32 30 6e 38 20 72 6F 6F 74
    0x00000210:3D 2f 64 65 76 2f 6d 74 64 62 6c 6F 63 6B 34 20
    0x00000220:72 77 20 72 6F 6F 74 66 73 74 79 70 65 3D 6a 66
    0x00000230:66 73 32 00 20 62 6F 6F 74 6d 00 00 00 00 00
    0x00000240:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000250:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000260:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000270:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000280:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000290:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    (笑声)

    0x00000710:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000720:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000730:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000740:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000750:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000760:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000770:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000780:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000790:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x000007a0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x000007b0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x000007c0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x000007d0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x000007e0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x000007f0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    OOB 数据:FF 关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    OOB 数据:FF 关断 FF ff ff E5 A6 33 7c C4 43 5c 54
    OOB 数据:9B 57 ef 7a b0 59 7b 2e 72 C1 D5 00 00 00
    OOB 数据:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    根部@Arago:~#


    以下是 Linux 本身的存储方式:
    同样、OOB 数据中的前24个字节为0xff:

    root@Arago:~# nanddump -l 0x7f0 -p /dev/mtd3
    ECC 失败:0
    ECC 被校正:0
    坏块数:0
    BBT 块数:0
    块大小131072、页大小2048、OOB 大小64
    正在转储数据、从0x00000000开始、到0x000007f0结束...
    0x00000000:27 05 19 56 bb 52 A5 C9 4D 27 8b B3 00 1e B1 14
    0x00000010:C0 00 80 00 c0 00 80 00 B8 C4 11 D1 05 02 00
    0x00000020:4C 69 6e 75 78 2D 32 2e 36 2e 33 2D 72 63 34
    0x00000030:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000040:00 00 a0 E1 00 a0 E1 00 a0 E1 00 a0 E1 00 a0 E1 00 a0 E1
    0x00000050:00 00 a0 E1 00 a0 E1 00 a0 E1 00 a0 E1 00 a0 E1 00 a0 E1
    0x00000060:02 00 ea 18 28 6F 01 00 00 00 14 B1 1e 00
    0x00000070:01 70 a0 E1 02 80 a0 E1 00 20 0f E1 03 00 12 E3
    0x00000080:01 00 1a 17 00 a0 E3 56 34 12 ef 00 20 0f E1
    0x00000090:C0 20 82 E3 02 f0 21 E1 00 00 00 00 00 00 00 00
    0x000000a0:D4 00 8f E2 7e 30 90 e8 01 00 50 e0 0A 00 0A
    0x000000b0:00 50 85 e0 00 60 86 e0 00 c0 8c e0 00 20 82 e0
    0x000000c0:00 30 83 e0 00 d0 8d e0 00 10 96 E5 00 10 81 e0
    0x000000d0:04 10 86 E4 0c 00 56 E1 ff 3a 00 a0 E3
    0x000000e0:04 00 82 E4 04 00 82 E4 04 00 82 E4 04 00 82 E4
    0x000000f0:03 00 52 E1 F9 ff 3a 28 00 EB 0d 10 a0 E1
    0x00000100:01 28 8d E2 02 00 54 E1 17 00 2a 05 30 4D e0
    0x00000110:03 01 84 e0 05 00 50 E1 13 00 9a 02 50 a0 E1

    (笑声)

    0x00000720:1F 1f 07 ee 9a 1f 07 ee 0e f0 a0 e1 B1 af 10 ee
    0x00000730:0f 08 1a E3 00 a0 a0 E3 01 00 0A 1e af 07 ee
    0x00000740:23 00 ea BA af 07 ee ff 0e 2D E9 30 0f 30 ee
    0x00000750:07 34 10 E2 3b a0 E1 1a 00 0A 00 a0 a0 e3
    0x00000760:AA 20 8a e0 30 12 a0 E1 07 10 01 E2 02 00 51 E3
    0x00000770:11 00 BA 10 af 40 ee 95 af 07 ee 10 1f 30 ee
    0x00000780:07 20 01 E2 04 20 82 E2 dc 40 9f E5 A1 41 14 e0
    0x00000790:14 5F 6F E1 D4 70 9f E5 A1 76 17 e0 04 90 a0 E1
    0x000007a0:19 B5 8a E1 17 B2 8b E1 5e bf 07 ee 01 90 59 E2
    0x000007b0:FA ff ff aa 01 70 57 E2 F7 ff ff aa 02 a0 8a E2
    0x000007c0:0A 00 53 E1 E5 ff coff ca ff 0e BD e8 00 a0 a0 e3
    0x000007d0:10 af 40 ee 9a af 07 ee 15 af 07 ee 9a af 07 ee
    0x000007e0:95 af 07 ee 0e f0 a0 e1 7e ff 17 ee FD ff ff ff 1a
    0x000007f0:15 0f 07 ee 9a 0f 07 ee 0e f0 a0 e1 28 a0 E3
    OOB 数据:FF 关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    OOB 数据:FF 关断 FF ff F6 fe ad 7a d6 43 8f 3e
    OOB 数据:9F 18 D9 45 A1 66 80 06 E2 78 14 D3 87 53 09 A7
    OOB 数据:C6 b9 34 E7 96 77 A2 8f 7c 72 58 83 1D BA 96 35
    根部@Arago:~#


    这是文件系统:

    root@Arago:~# nanddump -l 0x7f0 -p /dev/mtd4
    ECC 失败:0
    ECC 已更正:12.
    坏块数:0
    BBT 块数:0
    块大小131072、页大小2048、OOB 大小64
    正在转储数据、从0x00000000开始、到0x000007f0结束...
    0x00000000:85 19 01 e0 2b 00 00 E6 6e 26 7d 01 00 00
    0x00000010:00 00 00 02 00 00 00 00 00 00 00 00 00 03 04 00 00
    0x00000020:EB A2 e0 9c ff 83 66 55 62 69 6e ff 85 19 02 e0
    0x00000030:44 00 00 00 1D fb F7 98 02 00 00 01 00 00
    0x00000040:ED 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000050:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000060:00 00 00 00 00 00 00 00 00 00 00 00 00 7f 02 93 49

    (笑声)

    0x00000740:07 0A 00 00 1e 86 8a 5c C5 D2 C1 7e 61 64 64 75
    0x00000750:73 65 72 ff 85 19 02 e0 4D 00 00 97 b4 ff E5
    0x00000760:12 00 00 01 00 00 00 ff A1 00 00 00 00 00 00 00 00 00 00 00
    0x00000770:09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x00000780:00 00 00 09 00 00 09 00 00 00 00 00 00 00 00 00
    0x00000790:F5 7e 65 F9 CD 6e 2b 2a 74 69 6e 79 6c 6F 67 69
    0x000007a0:6e ff ff 85 19 01 e0 2b 00 00 E6 6e 26 7d
    0x000007b0:02 00 00 11 00 00 13 00 00 00 00 00 00 00 00 00
    0x000007c0:03 0A 00 00 B7 cc 25 E6 48 62 6e 0e 61 73 68 ff
    0x000007d0:85 19 02 e0 4b 00 00 4b EB 94 c0 13 00 00
    0x000007e0:01 00 00 ff A1 00 00 00 00 00 00 00 00 00 07 00 00 00 00
    0x000007f0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    OOB 数据:FF 关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    OOB 数据:FF 关断 FF ff 16 58 C1 34 E5 A9 7c 21
    OOB 数据:54 ce 72 71 C4 63 d6 82 3a 01 1D 15 48 3b D9 E2
    OOB 数据:1A 78 E3 9d 52 72 E7 A5 E5 e0 F9 22 56 08 cc 92
    根部@Arago:~#

    这里是我们的分区之一:(FWiw、我们使用的是 JFFS2):

    root@Arago:~# nanddump -l 0x17f0 -p /dev/mtd5
    ECC 失败:0
    ECC 已更正:3.
    坏块数:0
    BBT 块数:0
    块大小131072、页大小2048、OOB 大小64
    正在转储数据、从0x00000000开始、到0x000017f0结束...
    0x00000000:85 19 02 e0 dc 04 00 8a 9a 0A E7 77 00 00
    0x00000010:97 00 00 00 A4 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 09 00
    0x00000020:DD 46 8b 4b dd 46 8b 4b dd 46 8b 4b 68 0b 09 00
    0x00000030:98 04 00 98 04 00 00 00 00 00 00 00 00 67 C4 2f E2
    0x00000040:8D BA 04 b0 ff 35 17 F6 D8 CF e8 36 d6 7e B1 bf
    0x00000050:4F E7 5e 10 dd A9 10 FD EC fc af 1e 9b 76 24 6F
    0x00000060:70 99 AD ef 3D 2D be 00 1c 43 54 E9 b9 73 7a

    (笑声)

    0x00000f80:1E 98 f4 ff 9d 29 ca 7f 9c b1 70 25 d1 2e fb e1
    0x00000f90:88 8a A3 9b 33 C1 e8 1b 38 F7 CD 03 E6 3e db 06
    0x00000fa0:E2 36 ea 53 23 64 bc 90 B3 85 76 49 AC dd B3 01
    0x00000fb0:3D 97 23 64 2e bb ec f3 9d b9 94 ba da 6a 2e 25
    0x00000fc0:26 ea f2 83 99 F8 27 C6 33 b9 99 27 26 C4 F8 4F
    0x00000fd0:65 27 61 7f DE 38 43 ed 69 5c f0 69 bf 3f d0 C2
    0x00000fe0:6F 2a 1b E1 03 A4 47 E1 7e fa E7 D8 2b f3 01 87
    0x00000ff0:59 a0 6F 25 02 7b 1c d0 9d 0e E4 0d 84 ff 2D 1a
    OOB 数据:FF 关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    OOB 数据:FF 关断 FF ff A7 7f 4c C7 6d 98 1c 3c
    OOB 数据:82 f2 e8 0f 68 44 CB 0e C7 27 43 9a 72 19 f3 ee
    OOB 数据:0f 76 B5 73 bb 19 93 32 D5 ce 6d 7c 4c 83 F4
    0x00001000:FE 21 0d ff 90 86 ff A9 43 c0 bf 21 5F F9 59 91
    0x00001010:4e 31 af F6 CB 05 86 C8 00 3f fc A6 ce A1 56 af
    0x00001020:EB C8 0b dd B8 46 7c fc 5d 92 2f 8d 76 09 C8 F5
    0x00001030:81 E5 52 6B 2D 3f b0 A4 B8 28 d0 56 EC 92 BD
    0x00001040:A8 F8 23 05 9d FD 4b 2D C7 9a a0 87 45 d0 F1 B7
    0x00001050:99 1b 12 15 c0 A3 8a 02 95 3f E6 7f 30 8e 39 BD
    0x00001060:93 A5 7c 1e fa df 6B C3 0d 91 19 57 C9 F5
    0x00001070:45 dc 60 cd 85 6d E6 CB 89 D5 C1 25 76 45 0c E7
    0x00001080:61 C8 54 05 ed B6 3b d0 F6 59 BE B1 dc 66 6c 19
    0x00001090:E7 30 b4 47 F9 F5 15 1a C6 D3 8d 23 EB 53 27 65
    0x000010a0:72 86 4D 93 dc 97 6c 97 72 e8 4e 81 D1 86 D4 4e
    0x000010b0:C0 68 20 ed 7b D4 56 72 D7 22 E5 3b 24 B1 76 CD
    0x000010c0:F6 7b 交流4D 65 31 E7 7b B3 5d D9 DE 6c 5b D1 66
    0x000010d0:7B b0 CF 91 92 bf 14 CD A6 9c F9 A4 D1 6d 33 B7

    (笑声)

    0x00001760:4F 1e F4 0c fe 3f A3 ed D1 6F 7f EB 80 e8 48 ac
    0x00001770:EF 72 05 9e ed E6 bb D1 0e fb B7 7e 43 F6 14 69
    0x00001780:1B CF D8 8a 31 0f D4 D1 48 B7 67 a0 ef 46 D9 52
    0x00001790:dB 2f BA 05 C6 61 2a 5a 4e fb bb 92 FD 57 da E5
    0x000017a0:22 67 84 3e 56 4F 6c 03 4F C8 5a 7b 39 58 7b
    0x000017b0:2E A9 01 b9 8e B2 fc cc C7 30 0f f3 db 6c ae E9
    0x000017c0:C3 E2 A6 ce 8f 52 f0 7f 11 37 D9 77 7e 8f 7d 27
    0x000017d0:0D 33 24 8f 92 B1 8e 31 90 F4 F5 27 1D F7 1D 48
    0x000017e0:2B BA A7 f3 C1 AB BD bb 41 b4 af 8A b4 af D1 2e
    0x000017f0:AA 1a 88 4b 16 74 AB C9 d0 AD 68 53 9f 4b F8 63
    OOB 数据:FF 关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    OOB 数据:FF 关断 FF ff e8 16 49 3D 2e 2b 7e b9
    OOB 数据:37 F8 53 fa 9c b4 D4 96 A3 4D 65 27 A5 83 CD
    OOB 数据:0f D7 9d CF 7f 38 A8 3b 75 cd 3f ff 8c 37 ce 52
    根部@Arago:~#
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    以上都说过、我相信如果有任何修复的希望、我将不得不编写一个基本上可以实现"非编写"当前功能的"特殊"程序、 不同之处在于、它以 OMAP L-138在启动时理解的格式将 BBT 存储在 OOB 中。

    它是该应用程序的特殊版本、可能称为'nandwrite_partition1'、其中它将使用以下 OOB 格式将"UBL + U-Boot"文件写入该分区、其中有6个字节的0xff、然后是10个字节的数据、共4次。

    OOB 数据:FF 关断 FF 46 F9 a0 b4 bf DE 2e B7 53 B6
    OOB 数据:FF 关断 FF 85 02 1b F5 0A 59 fa d0 43 4e
    OOB 数据:FF 关断 FF fb f3 04 7d 02 F5 430A A7 6e
    OOB 数据:FF 关断 FF AB C6 E7 b9 FD 4b 86 62 9b

    Yordan、或者可能会使用此线程的任何其他专家、您能否验证这是我从 Linux 成功重新写入 UBL + U-Boot 分区所需要做的事情?

    是否有人知道该版本的 OOB 存储在何处??

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

    很抱歉耽误你的时间。 我们将对此进行研究。

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

    非常感谢 Yordan!

    如果有任何帮助、我们将不胜感激!

    此致、

    Bill

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

    我在/dev/mtd1上对 NAND 数据进行了解密:
    只需获取一份副本、并使用相同的 OOB 格式从 Linux 中以完全相同的方式写入。

    #这是/dev/mtd1的内容、OMAP L-138首先在其中读取并开始执行

    0x00000000:54 49 50 41 - AIS 魔术字(0x41504954)

    01 59 53 58 - AIS 段加载命令(0x58535901)
    00 00 00 00 80 -将数据加载到的地址:0x800000
    E0 2e 00 -大小0x00002ee0 (12000字节)

    0x00000010:00 00 0f E1 1f 00 c0 E3 D3 00 80 E3 00 f0 29 E1
    0x00000020:10 0f 11 ee 33 0c c0 E3 87 00 c0 E3 02 00 80 E3
    0x00000030:01 0A 80 E3 10 0f 01 ee 18 00 9f E5 18 10 9f E5
    0x00000040:01 00 80 e0 04 d0 40 E2 07 d0 CD E3 0c 00 9f E5
    0x00000050:00 f0 a0 e1 ff ea e0 2e 00 80 00 08 00
    0x00000060:54 00 00 80 70 40 2D E9 00 00 a0 E3 5e 04 00 EB
    0x00000070:CC 02 00 EB 00 50 E3 2D 00 1a 02 00 80 E2
    0x00000080:AD 01 00 EB b4 30 9f E5 02 00 a0 E3 00 10 93 E5
    0x00000090:DD 03 00 EB A8 50 9f E5 00 85 E5 A4 00 9f E5
    0x000000a0:47 04 00 EB a0 00 9f E5 45 04 00 EB 9c 00 9f E5
    0x000000b0:43 04 00 EB 98 00 9f E5 41 04 00 EB 94 00 9f E5
    0x000000c0:3F 04 00 EB 90 00 9f E5 3D 04 00 EB 8c 00 9f E5
    0x000000d0:3B 04 00 EB 13 0b 00 EB 00 00 50 E3 02 00 0A
    0x000000e0:7C 00 9f E5 36 04 00 EB 11 00 ea 74 40 9f E5
    0x000000f0:74 00 9f E5 32 04 00 EB 70 00 9f E5 30 04 00 EB
    0x00000100:00 00 94 E5 21 04 00 EB 64 00 9f E5 2c 04 00 EB
    0x00000110:60 00 9f E5 5d 04 00 EB 00 95 E5 b4 03 00 EB
    0x00000120:00 20 94 E5 50 30 9f E5 00 20 83 E5 32 ff 2f E1
    0x00000130:70 80 BD e8 44 00 9f E5 21 04 00 EB ff ff ea
    0x00000140:D4 2f 00 80 D4 32 00 80 AD 2f 00 80 e0 2e 00 80
    0x00000150:FA 2e 00 80 18 2f 00 80 27 2f 00 80 2c 2f 00 80
    0x00000160:3F 2f 00 80 46 2f 00 80 D8 32 00 80 5a 2f 00 80
    0x00000170:62 2f 00 80 89 2f 00 80 10 27 00 00 cc 32 00 80
    0x00000180:7F 2f 00 80 0c 30 9f E5 24 00 93 E5 30 00 E2
    0x00000190:20 02 a0 e1 ff 2f E1 00 40 C1 01 00 50 E3
    0x000001a0:10 40 2D E9 80 00 9f 05 01 40 a0 E1 03 10 a0 E1
    0x000001b0:02 00 0A 01 00 50 E3 10 80 BD 18 6c 00 9f E5
    0x000001c0:01 30 a0 E3 13 C2 a0 E1 28 31 90 E5 03 00 1c E1
    0x000001d0:FC ff 1a 02 3c 84 E2 03 31 90 E7 1f 30 03 E2
    0x000001e0:01 00 53 E1 10 80 BD 08 0A 3D 84 E2 03 21 90 E7
    0x000001f0:1F 20 C2 E3 01 20 82 E1 03 21 80 E7 20 31 90 E5
    0x00000200:03 30 8c E1 20 31 80 E5 28 31 90 E5 03 00 1c E1
    0x00000210:FC ff 1a 02 3c 84 E2 03 31 90 E7 1f 30 03 E2
    0x00000220:01 00 53 E1 ff 1a 10 80 BD e8 00 C1 01
    0x00000230:00 70 E2 01 18 c0 9f E5 48 00 80 E2 00 31 9c E7

    (笑声)

    0x00002740:05 10 a0 e1 03 00 a0 E3 d8 fa ff EB 00 30 e0 E3
    0x00002750:24 30 86 E5 78 30 9f E5 00 86 2c E5 30 86 E5
    0x00002760:70 30 9f E5 04 50 86 E5 30 86 E5 68 30 9f E5
    0x00002770:00 20 a0 e1 34 30 86 E5 60 30 9f E5 38 30 86 E5
    0x00002780:00 30 a0 E3 B8 32 C6 E1 06 30 d0 E5 06 00 a0 E1
    0x00002790:1D 30 C6 E5 04 30 D2 E5 08 30 C6 E5 F1 fb ff EB
    0x000027a0:00 00 50 E3 07 00 1a 06 00 a0 e1 9c fe ff EB
    0x000027b0:00 00 50 E3 03 00 1a 06 00 a0 e1 fb ff EB
    0x000027c0:00 00 50 E3 00 00 0A 00 60 a0 E3 06 00 a0 E1
    0x000027d0:70 80 BD e8 8c 30 00 80 60 30 00 80 30 00 80
    0x000027e0:E4 30 00 80 1a 03 a0 E3 c0 30 90 E5 2c 10 9f E5
    0x000027f0:01 30 03 e0 00 30 82 E5 C4 30 90 E5 01 30 03 e0
    OOB 数据:FF 关断 FF 19 61 09 1f 60 73 8d 23 65 1f
    OOB 数据:FF 关断 FF 06 42 25 80 E2 E1 3f bc EC 96
    OOB 数据:FF 关断 FF ea 8e 42 46 82 12 D3 ea ef 9d
    OOB 数据:FF 关断 FF 6e 6d da 54 df be 52 43 46 A9
    ECC:3个不可纠正的位翻转、偏移量0x00002800
    0x00002800:04 30 82 E5 C8 30 90 E5 01 30 03 e0 08 30 82 E5
    0x00002810:CC 30 90 E5 01 30 03 e0 0c 30 82 E5 1e ff 2f E1
    0x00002820:FF 03 ff 03 f0 4F 2D E9 2c d0 4D E2 04 00 8d E5
    0x00002830:01 b0 a0 e1 02 90 a0 e1 03 00 a0 e1 00 10 a0 E3
    0x00002840:01 20 d0 E7 0c 30 8d E2 01 20 C3 E7 01 10 81 E2
    0x00002850:10 00 51 E3 F9 ff 1a 10 70 9d E5 14 10 9d E5
    0x00002860:18 80 9d E5 01 2b a0 e1 0c a0 9d E5 07 3b a0 e1
    0x00002870:9C c0 9f E5 23 3b a0 E1 22 2b a0 e1 0c 60 a0 e1
    0x00002880:03 48 07 E2 0c c0 01 e0 03 3a a0 E1 02 24 a0 E1
    0x00002890:3F 1e 08 E2 0A 0b a0 E1 06 50 a0 E1 0c 21 82 E1
    0x000028a0:04 37 83 E1 B6 C2 dd E1 20 0b a0 e1 06 60 08 e0
    0x000028b0:21 12 a0 E1 00 30 83 E1 05 50 0A e0 26 15 81 E1
    0x000028c0:08 2e 82 E1 ff 77 07 E2 0c 18 81 E1 25 33 83 E1
    0x000028d0:27 29 82 E1 24 10 8d E5 1c 30 8d E5 20 20 8d E5
    0x000028e0:00 10 a0 E3 04 30 9d E5 B8 21 D3 E1 01 30 8b e0
    0x000028f0:99 32 22 e0 1c 30 8d E2 01 30 D3 E7 01 10 81 E2
    0x00002900:0A 00 51 E3 06 30 C2 E5 F5 ff 1a 2c d0 8d E2
    0x00002910:F0 8f BD e8 00 ff 03 1a 23 a0 E3 60 30 92 E5
    0x00002920:08 d0 4D E2 30 C3 E3 60 30 82 E5 1D 30 d0 E5
    0x00002930:60 10 92 E5 03 32 a0 E1 30 03 E2 01 30 83 E1
    0x00002940:60 30 82 E5 60 30 92 E5 01 3a 83 E3 60 30 82 E5
    0x00002950:00 30 92 E5 04 30 8d E5 08 d0 8d E2 1e ff 2f E1
    0x00002960:1D 30 d0 E5 04 20 90 E5 03 00 53 E3 Fe 34 82 02
    0x00002970:02 34 82 12 00 30 93 E5 08 d0 4D E2 04 30 8d E5
    0x00002980:1A 33 a0 E3 c0 30 93 E5 04 30 8d E5 08 d0 8d E2
    0x00002990:1E ff 2f e1 f0 47 2D E9 00 c0 a0 E3 20 d0 4D E2
    0x000029a0:02 40 a0 e1 03 90 a0 e1 B8 21 d0 e1 0c 30 81 e0
    0x000029b0:92 34 23 e0 06 20 D3 E5 14 30 8d E2 0c 20 C3 E7
    0x000029c0:01 c0 8c E2 0A 00 5c E3 ff 1a 18 a0 9d e5
    0x000029d0:1C 30 9d E5 14 40 9d E5 8c 00 9f E5 8c 50 9f E5
    0x000029e0:3F 10 03 E2 88 80 9f E5 ff 20 0A E2 84 60 9f E5
    0x000029f0:84 70 9f E5 05 50 03 e0 02 29 a0 E1 00 0A e0
    0x00002a00:01 12 a0 E1 04 CB a0 E1 03 31 04 E2 23 27 82 E1
    0x00002a10:06 60 04 e0 05 15 81 E1 08 80 04 e0 2c CB a0 E1
    0x00002a20:07 70 0A e0 20 01 a0 E1 26 2a 82 E1 08 C3 8c E1
    0x00002a30:27 04 80 E1 2a 1e 81 E1 08 20 8d E5 04 c0 8d E5
    0x00002a40:0C 00 8d E5 10 8 d E5 00 20 a0 E3 04 30 8d E2
    0x00002a50:02 30 D3 E7 02 30 C9 E7 01 20 82 E2 10 00 52 E3
    0x00002a60:F9 ff 1a 20 d0 8d E2 f0 87 BD e8 00 fc 0f
    0x00002a70:C0 ff 00 00 fc 0f 00 00 f0 3f 00 ff 03 00
    0x00002a80:1F 40 2D E9 02 c0 a0 E1 01 40 a0 E1 02 10 a0 E1
    0x00002a90:be 20 D1 E1 10 30 4c E2 02 10 41 E2 02 2b a0 E1
    0x00002aa0:22 2b a0 e1 1a 03 a0 E3 03 00 51 e1 bc 20 80 E5
    0x00002ab0:F6 ff 1a 00 30 90 E5 0c 30 8d E5 c0 20 90 E5
    0x00002ac0:C4 30 90 C8 E5 10 90 E5 02 30 83 E1 cc 20 90 E5
    0x00002ad0:01 30 83 E1 02 30 83 E1 3f 33 C3 E3 3f 3b C3 E3
    0x00002ae0:0C 30 8d E5 0c 30 9d E5 00 53 E3 71 00 0A
    0x00002af0:60 30 90 E5 02 3a 83 E3 60 30 80 E5 1a 33 a0 E3
    0x00002b00:64 30 93 E5 0f 3c 03 E2 23 34 a0 E1 08 30 8d E5
    0x00002b10:08 30 9d E5 03 00 53 F7 ff 9a 0A 2b a0 E3
    0x00002b20:1A 33 a0 E3 64 30 93 E5 01 20 52 E2 0f 3c 03 E2
    0x00002b30:23 34 a0 e1 08 30 8d E5 02 00 0A 08 30 9d E5
    0x00002b40:03 00 53 E3 F5 ff 8a 08 30 9d E5 01 00 53 E3
    0x00002b50:02 00 0A 08 30 9d E5 03 00 53 E3 03 00 9a
    0x00002b60:1A 33 a0 E3 D8 30 93 E5 01 00 a0 E3 04 00 ea
    0x00002b70:08 00 9d E5 00 00 50 E3 03 00 1A 33 a0 E3
    0x00002b80:D8 30 93 E5 0c 30 8d E5 4D 00 ea 1a 33 a0 e3.
    0x00002b90:64 30 93 E5 03 38 03 E2 23 38 a0 E1 04 30 8d E5
    0x00002ba0:04 30 9d E5 03 00 53 E3 03 F1 9f 97 41 00 ea
    0x00002bb0:6C 2c 00 80 28 2c 00 80 F4 2b 00 80 b0 2b 00 80
    0x00002bc0:1A 13 a0 E3 D4 30 91 E5 fc 20 9f E5 02 20 03 e0
    0x00002bd0:22 28 a0 e1 81 2f 62 E2 03 20 82 E2 EC 30 9f E5
    0x00002be0:02 08 a0 e1 20 08 53 e1 34 00 3a dc 30 91 E5
    0x00002bf0:D4 20 9f E5 20 18 D4 E7 02 20 03 e0 22 18 21 e0
    0x00002c00:20 18 C4 E7 1a 23 a0 E3 D4 30 92 E5 3f 3b C3 E3
    0x00002c10:81 3f 63 E2 03 30 83 E2 03 18 a0 E1 AC 30 9f E5
    0x00002c20:21 08 53 E1 25 00 3a dc 30 92 E5 21 28 D4 E7
    0x00002c30:02 30 23 e0 21 38 C4 E7 1a 13 a0 E3 d0 30 91 E5
    0x00002c40:84 20 9f E5 02 20 03 e0 22 28 a0 E1 81 2f 62 E2
    0x00002c50:03 20 82 E2 74 30 9f E5 02 08 a0 E1 20 08 53 E1
    0x00002c60:16 00 3a D8 30 91 E5 5c 20 9f E5 20 18 D4 E7
    0x00002c70:02 20 03 e0 22 18 21 e0 20 18 C4 E7 1a 23 a0 E3
    0x00002c80:d0 30 92 E5 3f 3b C3 E3 81 3f 63 E2 03 30 83 E2
    0x00002c90:03 18 a0 e1 34 30 9f E5 21 08 53 e1 07 00 3a
    0x00002ca0:D8 30 92 E5 21 28 D4 E7 00 a0 E3 02 30 23 e0
    0x00002cb0:21 38 C4 E7 02 00 ea 00 a0 e3 00 ea
    0x00002cc0:01 00 a0 E3 10 d0 8d E2 10 80 BD e8 00 ff 03
    0x00002cd0:FF 01 00 30 40 2D E9 00 40 a0 E1 01 50 a0 E1
    0x00002ce0:00 00 a0 E3 09 00 ea 00 c0 a0 E3 B8 31 D4 E1
    0x00002cf0:0C 10 85 e0 93 00 02 e0 01 c0 8c E2 00 30 a0 E3
    0x00002d00:06 00 5c E3 02 30 C1 F7 ff 1a 01 00 80 E2
    0x00002d10:1A 30 D4 E5 03 00 50 E1 f2 ff 3a 30 80 BD e8
    0x00002d20:00 a0 E3 1e ff 2f E1 F8 4F 2D E9 90 31 9f E5
    0x00002d30:A3 B1 a0 e1 0b 00 a0 e1 2f f9 ff EB 00 50 a0 e1
    0x00002d40:80 01 9f E5 1e F9 ff EB 7c 31 9f E5 0c 30 93 E5
    0x00002d50:04 40 93 E5 CD F5 ff EB ff 10 00 E2 04 00 a0 E1
    0x00002d60:6F Fe ff EB 00 90 50 E2 60 01 9f 05 60 a0 11
    0x00002d70:06 70 a0 13 00 a0 a0 13 26 00 1a 28 00 ea
    0x00002d80:09 00 a0 e1 07 10 a0 e1 00 20 a0 E3 06 30 a0 e1
    0x00002d90:82 fc ff EB 00 50 E3 1D 00 1a 00 40 96 E5
    0x00002da0:2C 31 9f E5 03 00 54 E1 19 00 1a 24 01 9f E5
    0x00002db0:03 F9 ff EB 04 00 a0 E1 F4 F8 ff EB 18 01 9f E5
    0x00002dc0:FF F8 ff EB 07 00 a0 E1 f0 F8 ff EB 0c 01 9f E5
    0x00002dd0:FB F8 ff EB 04 30 96 E5 04 21 9f E5 04 30 82 E5
    0x00002de0:08 30 96 E5 08 30 82 E5 0c 30 96 E5 0c 30 82 E5
    0x00002df0:10 30 96 E5 10 30 82 E5 14 30 96 E5 14 30 82 E5
    0x00002e00:14 60 92 E5 F4 ff EB 00 6B e0 F6 F8 ff EB
    0x00002e10:06 00 ea 01 70 87 E2 32 00 57 E3 D7 ff 9a
    0x00002e20:C0 00 9f E5 E6 ff EB 01 00 a0 E3 F8 8f BD e8
    0x00002e30:AC 30 9f E5 00 50 a0 E3 0c 80 93 E5 10 40 93 E5
    0x00002e40:15 00 ea b0 31 D9 E1 03 00 54 E1 B2 31 D9 E1
    0x00002e50:01 80 88 22 00 40 a0 23 04 20 a0 E1 95 63 23 e0
    0x00002e60:08 10 a0 e1 4D fc ff EB 00 50 E3 08 00 0A
    0x00002e70:00 5a E3 01 a0 8a 02 EC ff 0A 01 70 87 E2
    0x00002e80:33 00 57 E3 01 a0 a0 E3 E2 ff 1a 0A 00 a0 e1
    0x00002e90:F8 8f BD e8 01 40 84 E2 01 50 85 E2 40 20 9f E5
    0x00002ea0:09 00 a0 e1 08 30 92 E5 03 00 55 E1 ff 3a
    0x00002eb0:04 20 92 E5 30 9 f E5 00 a0 E3 00 20 83 E5
    0x00002ec0:F8 8f BD e8 00 00 10 44 32 00 80 10 30 00 80
    0x00002ed0:5C 32 00 80 bb 4c 42 55 89 32 00 80 9a 32 00 80
    0x00002ee0:89 2f 00 80 dc 32 00 80 ac 32 00 80 d8 32 00 80

    #上面的结束内容读入0x8000000
    #此块的 OOB 数据如下所示

    0x00002ef0:01 59 53 58 -下一个 AIS 命令:段加载命令(0x58535901)

    E0 2e 00 80 -要加载到的地址:0x80002ee0
    EC 03 00 00 -大小:0x000003ec (1004字节)

    第1个数据字从0x00002efc 开始:20 69 6e 69
    下一个 AIS 命令从:0x00002efc + 0x000003ec = 0x000032E8开始

    0x00002f00:74 69 61 6c 69 7a 61 74 69 6F 6e 20 70 61 73 73
    0x00002f10:65 64 21 0d 0A 00 42 6F 6F 74 69 6e 67 20 54 49
    0x00002f20:20 55 73 65 72 20 42 6F 6F 74 20 4c 6F 61 64 65
    0x00002f30:72 0d 0A 00 09 55 42 4c 20 56 65 72 73 69 6F 6e
    0x00002f40:3A 20 00 31 2e 36 35 00 0d 0A 09 55 42 4c 20 46
    0x00002f50:6C 61 73 68 74 79 70 65 3a 20 00 4e 41 4e 44 0d
    0x00002f60:0A 00 4e 41 4e 44 20 42 6F 6F 74 20 66 61 69 6c
    0x00002f70:65 64 2e 0d 0A 00 20 20 44 4F 4e 45 00 0d 0A
    0x00002f80:4A 75 6d 70 69 6e 67 20 74 6F 20 65 6e 74 72 79
    0x00002f90:20 70 6F 69 6e 74 20 61 74 20 00 41 62 6F 72 74
    0x00002fa0:69 6e 67 2e 2e 2e 0d 0A 00 0c 0d 02 05 0e
    0x00002fb0:0f 07 0A 06 09 09 03 04 00 08 0b 12 aa 10.
    0x00002fc0:11 13 16 17 14 15 01 00 4F 4D 41 50 2D 4c 31
    0x00002fd0:33 38 00 00 20 C4 01 00 c0 d0 01 00 d0 d0 01
    0x00002fe0:01 00 00 01 00 00 01 00 00 00 08 00 51 00
    0x00002ff0:C4 2f 00 80 02 00 00 01 00 01 00 00 00
    OOB 数据:FF 关断 FF 0e bf 74 31 2b 89 E5 26 82 d0
    OOB 数据:FF 关断 FF A6 4D A3 79 A6 83 70 AD A9 0b
    OOB 数据:FF 关断 FF 95 1c 64 f0 B3 91 2b 4D 0b 78
    OOB 数据:FF 关断 FF 11 64 BA D8 4e 0c 29 D4 45 ed
    ECC:3个不可纠正的位翻转、偏移量0x00003000
    0x00003000:08 00 12 00 D8 2f 00 80 30 78 00 00 00 00 00 00 60
    0x00003010:00 00 62 00 00 64 00 00 66 00 00 02
    0x00003020:00 00 00 02 00 00 02 00 00 00 02 01 00 00 00
    0x00003030:00 00 68 04 00 00 00 f0 2f 00 80 00 30 00 80
    (笑声)
    0x000032e0:64 21 0d 0A 00 00 00 00

    0x000032e8:06 59 53 58 - AIS 跳转和关闭命令(0x58535906)

    跳转至以下地址并开始执行:00 00 00 80 - 0x8000000

    我们已完成阅读!!



    0x000032f0:00 00 08 81 06 00 02 00 80 00 44 00 84 00
    0x00003300:08 00 04 02 01 10 02 40 41 80 00 40 60 C2 40
    0x00003310:00 40 00 00 60 01 02 01 00 00 00 02 80 06 02
    0x00003320:00 02 00 01 00 44 02 01 00 00 00 00 00 40
    0x00003330:40 80 01 40 00 02 00 00 80 01 00 00 01
    0x00003340:00 80 00 80 01 00 40 00 80 01 82 02 04 80 00
    0x00003350:06 13 A4 00 02 00 80 00 01 00 00 42 00 01 00
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    结果是(4年前忘记了这个小问题...) /dev/mtd1被锁定在 Linux 中硬编码的 NAND 分区表中(请记住这样做。 (无论如何,我可以使用未使用的分区/dev/mtd6来存储 UBL + U-Boot,然后使用 Linux 升级 shell 脚本中的'fw_setenv'更改'bootcmd'参数以加载该分区,而不是加载/dev/mtd1分区。

    希望这不会是太大的问题...

    那么、您是否有预构建的 UBL + U-Boot (或 AIS + U-Boot)映像、我只需写入/dev/mtd6并尝试即可?
    这将是一个巨大的帮助。 Linux 位于/dev/mtd3中,文件系统位于/dev/mtd4中。

    在我们的系统上、这最初是使用'shf_omap-L138.exe'文件进行编程的。 当我查找它的源代码时、我在下载 OMAP-L138_FlashAndBootUtils_2_40.tar.gz 文件后发现了一组 code composer 文件。 我不使用 Code Composer、因此我没有浏览这些文件以了解它们是如何工作的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,我又来了

    因此、如果我刚刚拥有了'nandwrite.c'的源代码、我可能可以解决这个问题!

    我可以从工作设备(使用正常工作的 U-Boot 刷写的设备、在 NAND 驱动程序中没有错误)读取/dev/mtd1、并将其存储到文件中。 然后、如果我在/dev/mtd1中将该文件扫描到具有真正旧的 U-Boot 的 AP 上、我可以擦除/dev/mtd6、然后使用我从工作设备复制的文件对其进行编程。 除了 OOB 之外、结果非常完美:

    将新的 U-Boot 编程到/dev/mtd1中的原始器件从/dev/读取

    0x000007e0:14 00 00 8a 00 00 50 E3 02 00 0A 01 00 50 E3
    0x000007f0:10 00 00 1a 05 00 ea 04 00 a0 E3 ff 1c a0 E3
    OOB 数据:FF 关断 FF 46 F9 a0 b4 bf DE 2e B7 53 B6
    OOB 数据:FF 关断 FF 85 02 1b F5 0A 59 fa d0 43 4e
    OOB 数据:FF 关断 FF fb f3 04 7d 02 F5 430A A7 6e
    OOB 数据:FF 关断 FF AB C6 E7 b9 FD 4b 86 62 9b
    0x00000800:22 2c a0 E3 8a fe ff EB 04 00 a0 e1 10 80 BD e8
    0x00000810:0b 10 a0 E3 00 20 a0 E3 03 30 a0 E3 5e FE ff EB


    写入/dev/mtd6的相同数据、唯一的区别是 OOB 的格式:

    0x000007e0:14 00 00 8a 00 00 50 E3 02 00 0A 01 00 50 E3
    0x000007f0:10 00 00 1a 05 00 ea 04 00 a0 E3 ff 1c a0 E3
    OOB 数据:FF 关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
    OOB 数据:FF 关断 FF ff 46 F9 a0 b4 bf de 2e B7
    OOB 数据:53 B6 85 02 1b F5 0A 59 fa d0 43 4e fb f3 04 7d
    OOB 数据:02 F5 430A A7 6e AB C6 E7 E6 b9 FD 4b 86 62 9b
    0x00000800:22 2c a0 E3 8a fe ff EB 04 00 a0 e1 10 80 BD e8
    0x00000810:0b 10 a0 E3 00 20 a0 E3 03 30 a0 E3 5e FE ff EB

    OOB 数据是相同的、只是0xff 字节位于不同的位置!

    那么、您能不能告诉我'nandwrite.c'的位置?

    我只想对其进行修改、以便 OOB 数据使用原始格式写回该分区。

    非常感谢!
    Bill
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从 GitHub 中找到了 nandwrite.c 的版本、希望能正常工作!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    实际上、考虑一下、如果我可以将实际源代码用于 nandwrite 可执行文件、而不是仅使用我在某人的 git 在线存储库中找到的源代码、这对我更有好处。

    我注意到该可执行文件不是 busybox 的一部分。  该可执行文件是使用 Code Composer 编译的、还是仅使用.c 文件中的普通交叉编译器编译的?  您能给我指一下我可以在早上下载并编译它的位置吗?

    再次感谢 Bill

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

    所以这个图变得更浓...

    我能够从 git 下载 MTD 实用程序。  然后能够对其进行交叉编译和链接、然后在我们的目标器件上运行。  这是一个稍旧的版本、但我认为它应该足够了。

    因此,当我查看代码并一直跟踪代码的实际写入 OOB 数据的位置时,调用  MTD_WRITE_OOB (),然后调用 DO_OOB_OP()。  

    在该例程中,它调用 ioctl(),因此需要更改的代码(以不同的格式编写 OOB)实际上位于 Linux 内部。 哦...!

    建立与设备驱动程序连接的调用为:

    如果((FD =开路(MTD_DEVICE、O_RDWR))=-1)
    SYS_errmsg_die ("%s"、MTD_DEVICE);

    其中 MTD_DEVICE 为"/dev/mtd1。

    在 DO_OOB_OP()中,写入 OOB 的调用为:

    RET = ioctl (fd、cmd、&OOB);

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

    您能否查看为 U-Boot 编写的以下链接、看看该链接是否提供了可帮助您了解 Linux 的任何见解?

    git.denx.de/

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

    尊敬的 Ron:

    感谢您提供的信息!

    因此、我面临的问题是、我无法在客户站点上当前安装的这些设备上"按原样"运行'shf_omap-L138.exe'文件。  我需要能够在当前已启动并正在运行的系统上运行该程序。  也就是说、我需要能够从 Linux 运行它。  如下所示:

    Linux 下

    串行闪存器可在安装了最新开源 Mono Framework 的 Linux 计算机上运行。 除以下命令外,这些步骤与 Windows 环境相同:

    • Mono ./sfh_OMAP-L138.exe [选项]


    以上内容将直接在其上有 L-138的 Linux 系统上运行!  换句话说、在器件本身上、U-Boot 需要重写。  因此、我似乎可以对单声道实用程序进行交叉编译、使其在与我们的运输系统相同的操作系统下运行。  我需要对其进行修改、以便它不是通过 UART 连接加载程序、而是将其从 NAND 闪存加载到 RAM 中。  加载到 RAM 中后、跳转到它以某种方式执行它。  完成后、继续并重新引导系统。  系统启动时、将运行最新的 UBL/U-Boot。

    那么、这是有道理的、这是可能的吗?

    非常感谢、

    Bill

     

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

    我发现'nandwrite'实用程序使用 ioctl()命令在 Linux 内实际执行写入函数。 器件驱动程序最终驻留在文件"nand/Davinci_nand.c"中。 在 OOB 数据中存储 ECC 布局的实际结构如下所示:

    /*一种 ECC 布局,用于将4位 ECC 与大页(2048b)闪存配合使用,
    *存储10个 ECC 字节以及制造商坏块标记字节、
    并且不会与默认的 BBT 标记重叠。
    *
    静态结构 nand_ecclaoup hwecc4_2048 __initconst ={
    eccbytes = 40、
    eccpos ={
    /*在备用部门结束时*/
    24、25、26、27、28、 29、30、31、32、33、
    34、35、36、37、38、 39、40、41、42、43、
    44、45、46、47、48、 49、50、51、52、53、
    54、55、56、57、58、 59、60、61、62、63、
    }、
    .oobfree ={
    /*偏移处2个字节0保持制造商徽标块标记*/
    {.offset = 2、.length = 22、}、
    /* 5字节偏移8保持 BBT 标记*/
    /*偏移处8个字节16保持 JFFS2清洁标记*/
    }、
    };

    您可以看到、数据的 ECC 位置从 OOB 中的字节24开始。 遗憾的是、我无法将其更改为与加载 UBL 和 U-Boot 时 OMAP L-138似乎所需的内容相匹配(其中 ECC 映射在每个 OOB 的四个32字节值中没有使用前8个字节)。 我已在上面的注释中对此进行了说明。

    遗憾的是、上述结构用于所有 NAND 分区、而不仅仅是问题所在的 MTD1。 似乎我必须以某种方式修改此结构在设备驱动程序中使用的位置的用法。 器件驱动程序必须使用上述映射或另一个映射、根据该映射、MTD 器件将被写入或读取。

    我不想添加这个 hack、但是如果我无法从 Linux 中获得"SFH_OMAP-L138.exe"可执行文件、这可能是我唯一的选择。

    由于这是一种黑客攻击、并且有很大的错误可能性、因此我们希望获得任何其他建议...

    再次感谢、
    Bill
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还有一件事、那么我几年前尝试过、当时我尝试了这种做法、 实际上、我提出了一个解决方案、该解决方案实际上使用 U-Boot 来更新 UBL + U-Boot 分区、方法是使用'FW_setenv'修改 U-Boot 'bootcmd'环境变量以重新对 U-Boot 分区进行编程。 U-Boot 实际上会将正确的 OOB 格式写入 NAND 中、至少是读取 UBL + U-Boot 时 L-138所需的格式。

    客户遇到的问题是旧 U-Boot 被用来写入新的 U-Boot! 由于旧的 U-Boot NAND 驱动程序中存在错误、因此使用它写入新 U-Boot 的过程中的故障率约为15-20%。 这对于客户来说被认为是高电平、因此放弃了解决方案。

    不错的建议!

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

    那么、进度!

    我已经能够解锁 U-Boot 分区、现在、当我按照  mdeneen 的建议使用工具 github.com/.../flashtool 时(谢谢您 BTW!) 我可以使用以下命令写入 UBL + U-Boot 分区:

    root@Arago:~#./flashtool - legacy /dev/mtd2 -s 0 -ubi mtd1.hex

    实际上、这几乎可以正常工作、写入数据和 OOB 数据、但 OOB 数据会写入错误的位置:

    它写入:

    0x00000200:FF 关断关断 FF 46 F9 a0 b4 bf DE 2e B7 53 B6

    0x00000410:FF 关断关断 FF 85 02 1b F5 0A 59 fa d0 43 4e

    0x00000620:FF 关断关断 FF fb f3 04 7d 02 F5 430A A7 6e

     OOB 数据:FF 关断 FF AB C6 E6 b9 FD 4b 86 62 9b (这是来自 nanddump 输出的第四条 OOB 数据线)

    等等   

    因此、它会正确跳过前6个字节、并写入10个正确的字节、但是、它不是在块的末尾写入它、而是写入0x200字节。   

    以下是它的预期外观:

    0x000007e0:14 00 00 8a 00 00 50 E3 02 00 0A 01 00 50 E3
    0x000007f0:10 00 00 1a 05 00 ea 04 00 a0 E3 ff 1c a0 E3


    OOB 数据:FF 关断 FF 46 F9 a0 b4 bf DE 2e B7 53 B6
    OOB 数据:FF 关断 FF 85 02 1b F5 0A 59 fa d0 43 4e
    OOB 数据:FF 关断 FF fb f3 04 7d 02 F5 430A A7 6e
    OOB 数据:FF 关断 FF AB C6 E7 b9 FD 4b 86 62 9b


    0x00000800:22 2c a0 E3 8a fe ff EB 04 00 a0 e1 10 80 BD e8
    0x00000810:0b 10 a0 E3 00 20 a0 E3 03 30 a0 E3 5e FE ff EB

    请注意、OOB 数据是正确的!

    关闭!

    我猜我需要修改 flashtool.c 并确定如何获取实际块大小(或者只需对其进行硬编码、因为我只需要正确写入、然后再也不使用它、因为问题将得到解决。)

    再次感谢、

    Bill

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

    更新了...

    flashtool.c 正常工作、无需更改!

    只需将其与以下选项配合使用:

    /flashtool -w -s 0 --DM365-RBL --ubi /dev/mtd1 uboot_and_ubl.bin

    再次感谢 Mark Deneen 的建议。  用于解锁所有块的器件驱动程序以及闪存工具都非常出色!

    Bill