rtems 文件系统(15)-jffs2 研究(3)

本文档详细探讨了在RTEMS中遇到的JFFS2文件系统错误,即节点totlen在闪存与节点引用中的值不匹配。通过调试,追踪了从mkdir命令到jffs2_reserve_space函数的调用路径,发现可能的问题在于写入擦除mark时未正确写入,导致读取到的数据全是FF。经过单独测试驱动函数,确认驱动本身无问题,进一步分析JFFS2源码以定位具体错误原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面考虑第一个问题

JFFS2: Node totlen on flash (0xFFFFFFFF) != totlen from node ref (0x0000000C)

这部分在jffs2_mark_node_obsolete中打印,因为调用这个函数的太多了,没法一个个打断点,所以我在报错的地方打个断点,然后看看能不能向后追溯。

输入建立文件夹的命令,然后看打印信息向后追溯

[/flash] # mkdir data
jffs2_lookup()
<7>JFFS2: jffs2_reserve_space(): Requested 0x44 bytes
<7>JFFS2: jffs2_reserve_space(): alloc sem got
<7>JFFS2: jffs2_find_nextblock(): new nextblock = 0x01FE0000     
<7>JFFS2: Obsoleting node at 0x01FE0000 of len #x: <7>JFFS2: Wasting
<7>JFFS2: Not moving nextblock 0x01FE0000 to dirty/e

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值