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.

[参考译文] DM385:ubifs 代码中的某个位置存在错误

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/656189/dm385-bug-somewhere-in-ubifs-code

器件型号:DM385

我正在使用 IPNC RDK 3.9.1并尝试从 NAND 中运行、但每次刷写文件系统后、它都无法在启动时安装。  例如、我的 Ubuntu 主机上的文件系统当前为189 MIB、当我对其进行二进制化时、生成的文件为 101248 KiB、这表明文件系统正在以某种方式进行压缩。  在我将其写入208 MIB NAND 分区后、当它尝试装载时、它在 PEB 791上写入失败、PEB 791的大小为128 KiB、恰好与 ubbinized 文件的大小匹配。  

[1.207155]   在 MTD 器件8000000.nand 上找到8个部件分区
[1.213190]   在"8000000.nand"上创建8个 MTD 分区:
[1.218558]   0x000000000000-0x000000020000:“NAND.SPL”
[1.226324]   0x00000002000-0x000000420000:“NAND.U-boot”
[1.234410]0x00000042000-0x000000440000   :“NAND.u-boot-env”
[1.241474]   0x000000440000-0x000000a40000:“NAND.kernel”
[1.250268]   0x000000a40000-0x00000d240000:“NAND.FILE-SYSTEM”
[1.327504]   0x00000d240000-0x00000d280000:“NAND.u-boot-spl-OS”
[1.334902]   0x00000d280000-0x00000de80000:“NAND.DATA”
[1.345724]   0x00000de80000-0x000010000000:“NAND.RESERVED”
[1.364721]   ubi0:连接 mtd4
[1.646141]   ubi0警告:SCAN_PEB:有效的 VID 标头、但 PEB 791处的 EC 标头损坏

对我来说、这意味着 ubbinize 中的错误、文件系统被压缩时、或者文件系统应该被解压缩时。  是写入闪存时(我使用的是来自 uboot 的 nandwrite)、还是在安装时由驱动程序执行?  有什么想法吗?

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

    没关系。  我现在意识到这是用户错误;我对刷写过程不够仔细:在对其他分区进行编程时,u-boot 命令如下所示:

    fatload MMC 0 0x82000000 dm38x-csk.dtb
    NAND 擦除0x0DA40000 0x40000
    NAND 写入0x82000000 0x0DA40000 0x40000

    其中擦除的大小和写入的大小相等、因为文件的大小完全适合分区、最高为 PEB 边界。  但是、在对文件系统分区进行编程时、我需要注意查看 ubbinized 文件的大小(以字节为单位)(自动舍入为 PEB 大小的倍数)、虽然我应该擦除整个分区、但我应该只写入实际的文件大小、例如:

    ##我们将 ubifs_csk.bin 写入208 MIB 文件系统分区,
    ##首先擦除整个分区,然后填充该分区。
    Fatload MMC 0 0x82000000 ubifs_csk.bin
    NAND 擦除0x00A40000 0x0D000000

    ##注意:编写时、需要计算 ubifs_csk.bin 的大小、
    ##、以十六进制表示;它将是 PEB 大小的倍数、因此无需舍入。
    NAND 写入0x82000000 0x00A40000 0x061C0000

    如果有关 IPNC RDK 的任何 TI 文档能更详细地解释该过程、我会很高兴、这样可以对其进行修改以反映生成的软件中的更改。  我很想在这里回答我自己的问题、以帮助可能遇到此问题的任何其他人。

    BTW、因为它在其他地方没有详细记录:

    • 0x82000000是指 RAM 中用于临时存储的已用地址、因此 fatload MMC 0 0x82000000 这意味着我们将从第0个 MMC 单元(即 SD 卡)读取给定的文件到该地址的 RAM 中
    • 0x00A40000是 NAND 分区的起始地址
    • 0x0D000000是分区的物理大小
    • 0x061C0000是 ubbinized 文件系统的实际大小(以字节为单位)。  注意:此大小由 fatload 命令报告、因此只需转换为十六进制。

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