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.

[参考译文] PROCESSOR-SDK-AM335X:将 JFFS 2 安装在 NAND 闪存上。

Guru**** 2416110 points
Other Parts Discussed in Thread: AM3359

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1518992/processor-sdk-am335x-mount-jffs-2-on-nand-flash

器件型号:PROCESSOR-SDK-AM335X
《Thread 中讨论的其他器件:AM3359》

工具/软件:

尊敬的 TI 团队:


我们使用的是 Linux 4.19.5 版本、AM3359 连接到 NAND 闪存。
能够在 DTS 中创建 MTD 分区,需要在 NAND 闪存上安装 JFFS2 文件系统。
目标是通过 JFFS 从 NAND 闪存引导应用程序。

查询:
Linux 是否支持 JFFS 2 for NAND 闪存,我们是否应该使用 UBIFS?
我们能否获得有关如何继续在 NAND 闪存上安装文件系统的任何文档。

谢谢、
Venkat Vellanki。

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

    大家好、我将在接下来的两周内离职。 请期待响应延迟。  

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

    尊敬的 Venkat:

    是的、SDK 中放弃了 JFFS2 支持、并替换为 UBIFS。

    有关在 NAND 上使用 UBIFS 的信息、请参阅以下文档。

    https://software-dl.ti.com/processor-sdk-linux/esd/AM335X/09_03_05_02/exports/docs/linux/Foundational_Components /U-Boot/UG-NAND.html

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

    很抱歉延迟的回复。
    我们已经开始进行 JFFS2 的工作,并在我们的实施阶段结束,以便转向 UBIFS。  请帮助解决 JFFS2 问题

    我们能够使用以下命令创建 JFF2 映像并在 NAND 闪存上安装 JFFS2。
      mkfs.jffs2 -e 0x20000 -ln -r ./jffs2 -o /images/user.jffs2
      根据数据表、NAND 闪存块大小/擦除大小为 128KiB。
    第一次刷新 JFFS2 时,我们没有遇到任何问题。
    在内核中传输了几次 TFTP 后、从下一次电源循环中、我们遇到了以下问题。
    [  6.773210] jffs2:0x01eb4064 处的空闪存在 0x01eb4800 处结束
    [  7.170317] jffs2:jffs2_scan_dirent_node ():名称 CRC 在地址为 0x059a47d4 的节点上失败:读取 0x247964c3、计算值为 0x0d44b065
    [  7.197081] jffs2:0x059a4810 处的空闪存在 0x059a5000 处结束

    问题是,它们不是 JFFS2 文件系统分区的一部分,并发生在 NAND 闪存的随机地址,如内核分区。
    我们如何解决随机出现的警告?   
    我们已经尝试了填充,压缩方法和没有改进已经观察.
    如果我们遗漏了任何信息、请告知我们。

    编辑:请查找与 JFFS2 相关的内核配置
    CONFIG_JFFS2_FS=y
    CONFIG_JFFS2_FS_DEBUG=0
    CONFIG_JFFS2_FS_WRITEBUFFER=y
    未设置# CONFIG_JFFS2_FS_WBUF_VERIFY
    # CONFIG_JFFS2_SUMMARY 未设置
    # CONFIG_JFFS2_FS_xattr 未设置
    # CONFIG_JFFS2_COMPENSATION_OPTIONS 未设置
    CONFIG_JFFS2_ZLIB=y
    CONFIG_JFFS2_RTIME=y
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Venkat:

    抱歉、JFFS2 多年来未在 SDK 中得到验证和支持、这超出了此论坛的支持范围。

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

    我们在 AM3359 上使用以下版本。

    U-Boot:U-Boot 2013.10.

    Linux  : Linux 4.19.59-g5f8c1c6121.

    NAND 闪存: s25fl256.

    我们试图在 NAND 闪存上安装 UBIFS、但在目前的图像中没有 MTD-utils 支持。

    从之前的论坛研究中、启用了 U-boot 中的 UBIFS 支持  

    #define CONFIG_CMD_UBI
    #define CONFIG_CMD_UBIFS
    #define CONFIG_RBTREE
    #define CONFIG_MTD_DIAGNOSTICS
    #define CONFIG_CMD_MTDPARTS
    #define CONFIG_LZO
    #define CONFIG_MTD_DEVICE
    #define CONFIG_CMD_NAND_TRIMFFS
    #define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE +(1024 << 10))

    能够获得 MTD、UBIFS 的命令行功能、但没有 ubifort 功能。


    在 Linux 中、对 ARM 的 MTD-utils 进行交叉编译、并通过 TFTP 将映像加载到目标中 (JFFS2 用作默认文件系统 mtd8)。

    在 DTS 中为 UBIFS 配置了 mtd9 分区、无法使用 ubifort、并观察到以下错误。

    [ 2025年06月19日 14:52:53.043] ROOT@RCU:~#./ubifort /dev/mtd9 -f rootfs.ubi
    [ 2025年06月19日 14:53:09.474]./ubifformat:第 2 行:语法错误:未端接的引号字符串
    [RCU:@2025年06月19日 14:53:09.484] ROOT~ RCU: #

    1) 在 u-boot 中仍有任何要配置的内容?

    2) 我们能得到一个正确交叉编译 MTD-utils 的程序吗?

    我们的最终目标是使用 UBIFS 而不是 JFFS2。

    期待快速响应、任何改进都将更新。

    谢谢、

    Venkat Vellanki。

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

    尊敬的 Bin Liu:

    我们在 AM3359 上使用以下版本。

    U-Boot:U-Boot 2013.10.

    Linux  : Linux 4.19.59-g5f8c1c6121.

    NAND 闪存: s25fl256.

    我们试图在 NAND 闪存上安装 UBIFS、但在目前的图像中没有 MTD-utils 支持。

    从之前的论坛研究中、启用了 U-boot 中的 UBIFS 支持  

    #define CONFIG_CMD_UBI
    #define CONFIG_CMD_UBIFS
    #define CONFIG_RBTREE
    #define CONFIG_MTD_DIAGNOSTICS
    #define CONFIG_CMD_MTDPARTS
    #define CONFIG_LZO
    #define CONFIG_MTD_DEVICE
    #define CONFIG_CMD_NAND_TRIMFFS
    #define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE +(1024 << 10))

    能够获得 MTD、UBIFS 的命令行功能、但没有 ubifort 功能。


    在 Linux 中、对 ARM 的 MTD-utils 进行交叉编译、并通过 TFTP 将映像加载到目标中 (JFFS2 用作默认文件系统 mtd8)。

    在 DTS 中为 UBIFS 配置了 mtd9 分区、无法使用 ubifort、并观察到以下错误。

    [ 2025年06月19日 14:52:53.043] ROOT@RCU:~#./ubifort /dev/mtd9 -f rootfs.ubi
    [ 2025年06月19日 14:53:09.474]./ubifformat:第 2 行:语法错误:未端接的引号字符串
    [RCU:@2025年06月19日 14:53:09.484] ROOT~ RCU: #

    1) 在 u-boot 中仍有任何要配置的内容?

    2) 我们能得到一个正确交叉编译 MTD-utils 的程序吗?

    我们的最终目标是使用 UBIFS 而不是 JFFS2。

    期待快速响应、任何改进都将更新。

    谢谢、

    Venkat Vellanki。

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

    尊敬的 Venkat:

    内核 4.19 和 u-boot 2013.10 是多年前发布的、此论坛不再支持。

    您可以尝试在使用最新的 AM335x SDK (v9.3) 时重现此问题吗?

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

    ubifs 的安装已成功完成。

    但是、如果对文件系统进行了任何更改、则需要一些时间才能在闪存中更新这些更改。

    如果进行了修改并保存了文件、则电路板会立即断电并导通、该修改不会反映出来。

    如果我们在关闭和打开电源之前等待大约一分钟、则可以看到修改。

    请帮助减少同步时间。

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

    尊敬的 Venkat:

    这可能存在于通用 Linux 文件系统中、而不是特定于 TI 平台、并且超出了此论坛的支持范围。

    我不知道我头上的解决方案,但我们可能会在互联网上搜索一个回合,看看是否有其他人已经谈论过它。

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

     感谢您的宝贵反馈!