Host:Ubuntu-12.04
Target:Tiny6410
简介:移植linux-3.2.4时遇到的错误,由NAND ECC引起,导致Oops - undefined instruction的错误。
错误提示:No oob scheme defined for oobsize 436
kernel BUG at drivers/mtd/nand/nand_base.c:3268!
通常Oops错误提示会告诉我们错误发生的位置(PC值)、错误所处的函数(nand_scan_tail)以及函数的调用关系。不过这段函数中恰好有BUG()函数的存在,它赤裸裸告诉我们错误就发生在nand_base.c的第3268行。所以直接去跟踪源码好了。源码跟踪如下
1、nand_scan_tail(&nmtd->mtd)部分源码
/*
* If no default placement scheme is given, select an appropriate one
*/
if (!chip->ecc.layout) {
switch (mtd->oobsize) {
case 8:
chip->ecc.layout = &nand_oob_8;
break;
case 16:
chip->ecc.layo

在Ubuntu-12.04上移植Linux-3.2.4到Tiny6410时,遇到由NAND ECC引起的Oops错误。错误源于缺失的oob方案定义。通过源码分析,发现在没有硬件ECC支持的情况下,尝试使用软件ECC导致问题。解决方案是确保在配置内核时启用硬件ECC。
最低0.47元/天 解锁文章
822

被折叠的 条评论
为什么被折叠?



