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.

[参考译文] AM625:jff2 CRC 错误

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1561458/am625-jff2-crc-error

器件型号:AM625


工具/软件:

您好:

我的 SDK 版本是  10.01.10.04。

我们使用 jffs2 来装载一些 MTD、但在装载时、它总是显示 CRC 错误。

测试命令为:

   MTD_debug 擦除/dev/mtd1 0x0 0x300000

   mount -t jffs2 /dev/mtd1 /mnt

   echo “1234">“>/mnt/test.txt

   umount /mnt

   mount -t jffs2 /dev/mtd1 /mnt

当 I dmesg 时、它显示我 CRC 错误:节点标头 CRC 在 0x360080 (FFFF、FFFF、fff、FFFF) 失败

代码位于 readinode.c jffs2_get_inode_nodes 中、它执行 U.HDR_CRC 检查。

然后、我在 jffs2 CRC 校验和 cqspi dma 中添加一些调试日志

我发现当它读取某个位置时、DMA 完成后的数据为 0xFF。

我还使用逻辑分析仪捕获数据。 数据或闪存发送是正确的、不是 0xFF。  我将数据转储到闪存上的同一偏移量、也不能转储 0xFF

因此,在闪存上的数据和发送到 soc 是正确的,但有时在 DMA 传输后,在 buf 中的数据将是 0xFF。

 

如果我再次添加 Read、buf 的 DMA 传输将获得正确的数据。

我上传的日志是我添加的日志、显示了执行  U.HDR_CRC 检查时我添加两次读取的日志。

但您可以看到、当它读取 0x330080 fisrt 时间时、jffs2 缓冲区中的数据为 0xFF。 我还转储缓冲区完成 DMA 传输中的数据为 0xFF。

但当再次读取时,它会得到正确的数据。

内核中 jffs2 的配置如下:
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
未设置#CONFIG_JFFS2_FS_WRITEBUFFER

未设置#CONFIG_JFFS2_FS_WBUF_VERIFY

未设置#CONFIG_JFFS2_SUMMARY

CONFIG_JFFS2_FS_xattr=y

CONFIG_JFFS2_COMPENSATION_OPTIONS = y

CONFIG_JFFS2_ZLIB=y

CONFIG_JFFS2_RTIME=y

您能帮助我们检查这些配置是否导致了问题吗?

此外、在 DTS 中、我在闪存的节点中找到了一个值@0

CDN、;延迟=<2>μ s

此值是否会导致问题?

或者是否需要在某些寄存器中设置任何其他设置?

谢谢。

e2e.ti.com/.../jffs2_5F00_error.zip