运行环境
CPU:君正M300
运行操作系统:Linux5.10.180
调试环境:Ubuntu18.04.6
调试模块:nandflash
上一篇分析了产生错误的原因,本文将讲解如何关闭硬件ECC
关闭硬件ECC方法在datasheet中的12.1 Get Features (0FH) and Set Features (1FH)有说明
要关闭硬件ECC将feature Addr 0xB0H 的bit4设置为0
参考datasheet第12章,如下图所示:
内核对应的函数
kernel/module_drivers/drivers/mtd/devices/ingenic_sfc_v2/ingenic_sfc_nand.c
将ingenic_sfc_nand_dev_init函数里的第631行
feature |= (1 << 4) | (1 << 3) | (1 << 0);
改为
feature |= (1 << 3) | (1 << 0);
或者找地方调用如下语句:
feature =1;
ingenic_sfc_nand_set_feature(flash, 0xb0, feature);