工具/软件:
您好:
我的 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
此值是否会导致问题?
或者是否需要在某些寄存器中设置任何其他设置?
谢谢。