UBIFS error调试总结
来源:互联网 发布:分区软件哪个好 编辑:程序博客网 时间:2024/06/06 09:46
原文地址: http://bbs.21ic.com/icview-464754-1-1.html
前几天写了一份AM335x的硬件问题分享,这几天把操作系统也搞定了,所以再写一篇操作系统的问题分享。其中修改内核的部分是网上的资料,并非我的原创,但是我都验证过,特此说明。
问题一:第一次加载有效,第二次就不行了,错误打印如下
UBIFS: recovery needed
UBIFS error (pid 1): replay_log_leb: log error detected while replaying the log at LEB 3:0
这个错误的原因是'fixup_free_space()中计算空空间开始地址为c->lhead_offs。正确的应该为一直是0
解决方案一:
只有在第一次启动过程中突然断电才会引起此问题,只要正常启动过一次UBIfs的文件系统(进入文件系统之后稍微等待几秒钟)即可解决此问题。
解决方案二(推荐):
修改 linux 内核代码
FILE_PATH: fs/ubifs/sb.c : fixup_free_space()
//修改前
err = fixup_leb(c, c->lhead_lnum, c->lhead_offs);
//修改后
err = fixup_leb(c,c->lhead_lnum,ALIGN(UBIFS_CS_NODE_SZ, c->min_io_size));
问题二:随机出现无法加载的情况,错误打印如下
UBIFS: read-only UBI device
UBIFS error (pid 1): mount_ubifs: cannot mount read-write - read-only media
而且随着使用时间的增加,nand flash的坏块会越来越多
解决方案一:
更换nand flash,把K9F2G08改为MT29F2G08即可,其实就是换一家,呵呵。
解决方案二:
修改 linux 内核代码
FILE_PATH: drivers/mtd/nand/omap2.c : omap_wait()
//修改前
if (state == FL_ERASING)
timeo += (HZ * 400) / 1000;
else
timeo += (HZ * 20) / 1000;
//修改后
if (state == FL_ERASING)
timeo += (HZ * 4000) / 1000;
else
timeo += (HZ * 1000) / 1000;
注:例子中把时间增加的比较多,可根据自己的实际情况减小到适当的值。
解决方案三(推荐):
修改 linux 内核代码
FILE_PATH: drivers/mtd/nand/omap2.c : omap_wait()
//修改前
while (time_before(jiffies, timeo)) {
status = __raw_readb(this->IO_ADDR_R);
if (status & NAND_STATUS_READY)
break;
cond_resched();
}
//修改后
while (time_before(jiffies, timeo)) {
status = __raw_readb(this->IO_ADDR_R);
if (status & NAND_STATUS_READY)
break;
cond_resched();
}
if (!(status & NAND_STATUS_READY)) {
status = __raw_readb(this->IO_ADDR_R);
}
问题三:K9F2G08不支持sub page结构(在内核中使用硬件ECC没有此问题,使用软件ECC才有,因为我使用了硬件ECC,所以不用改内核)
解决方案一:在制作ubi.img时,把原指令
sudo ubinize -o ubi.img -m 2048 -p 128KiB -s 512 -O 2048 ubinize.cfg
改为
sudo ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 -O 2048 ubinize.cfg
注:实际测试时发现使用原先的指令也没有问题,不过从ubinize的参数说明来看-s应该填写2048,所以还是建议使用下一句指令。
阅读全文
0 0
- UBIFS error调试总结
- UBIFS error调试总结
- ubifs 调试
- UBIFS
- UBIFS
- ubifs
- UBIFS
- ubifs
- ubifs?
- ubifs
- ubifs
- UBIFS
- stm32调试问题总结 打印"ERROR!!!问题"
- cp & vfs & ubifs & ubi & mtd & nand driver 总结贴
- UBIFS error(pid 0):ubifs_get_sb:cannot open "ubi:nrootfs",error -19
- ubifs烧写遇到《UBI error: ubi_io_read: error -1 while reading 64 bytes from PEB》
- ubifs文件系统的制作过程&&遇到的问题及解决方案总结---之一“uboot中添加对UBIFS文件系统的支持”
- ubifs文件系统的制作过程&&遇到的问题及解决方案总结---之三“UBIFS镜像的制作&&烧写”
- 拦截导弹
- java数组和字符串相互转换
- Android测试框架
- Linux中如何产生core文件?
- 百度富文本器ueditor的使用的一些总结和使用方法
- UBIFS error调试总结
- 华为软件开发云测评报告三:测试管理
- 联想拯救者r720自带win10安装linux(ubuntu)双系统
- treelist上下节点上下移动
- BootStrap 模态框禁用ESC关闭、禁用点击空白处关闭
- TCP的四种定时器
- Oracle 解锁用户
- 彩色电子表
- 【Android日记】Android环境搭建