linux系统移植之nand ecc错误

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

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

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:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值