Chinaunix首页 | 论坛 | 博客
  • 博客访问: 795374
  • 博文数量: 81
  • 博客积分: 612
  • 博客等级: 中士
  • 技术积分: 1216
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-03 14:38
个人简介

蝴蝶翅膀的力量,也许能够改变这个世界。

文章分类

全部博文(81)

文章存档

2020年(2)

2019年(2)

2018年(6)

2017年(2)

2016年(5)

2015年(7)

2014年(20)

2013年(12)

2012年(25)

分类: 嵌入式

2014-10-29 16:55:17

某块单板在linux内核启动过程中出现异常,定位下来是访问/dev/console时出现错误,最后出错在fs/squashfs/lzma_wrapper.c->unlzma()函数。
该单板的rootfs为squashfs,而flash是NAND芯片。

定位思路:
将squashfs_fs.h pr_xx改为printk,这样对squashfs的访问都可以打印出来。
#define TRACE(s, args...)     pr_debug("SQUASHFS: "s, ## args)
#define ERROR(s, args...)     pr_err("SQUASHFS error: "s, ## args)
#define WARNING(s, args...)   pr_warning("SQUASHFS: "s, ## args)

根据打印的信息,了解从NAND flash读出的数据解压出错,于是将解压前的数据打印出来,和烧flash的文件做对比,发现3k的数据里面有一个byte有错误。因此怀疑芯片厂商的NAND驱动有bug。和芯片厂商联系后,他们确认booter和kernel的NAND的ECC算法是不一致的,发来了新的booter,重烧bin文件,解决。
阅读(2929) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~