Other Parts Discussed in Thread: AM3354
工具/软件:Linux
您好:
我最近尝试研究 AM3354 Linux BSP 如何在 nand flash bad block management 上工作。
我们使用的是 AM3354、我们使用从 TI SDK 03.02.00.05中提取的内核4.4.32。
我们还对一些旧产品使用从 TI SDK 06.00.00.00中提取的内核3.2.0。
现在我发现了一个奇怪的事情,我无法理解关于 nand flash 坏块管理的问题。内核3.2.0或4.4.32在这方面有相同的行为。
当内核正在启动时。我想它应该查找 nand flash bad block table .right? 找出它的位置。并且能够在将来发现新的坏块时调用 block_markbad()函数时更新表。
但奇怪的是:
在 drivers/MTD/nand/OMAP2.c OMAP-nand_probe ()中
在 nand_scan_tail()被调用后。 nand 驱动程序没有调用 nand_default_BBT ()来扫描 BBT。或禁用 NAND_SKIP_BBTSCAN 标志。
相反、它在 OMAP-nand_probe ()中定义:
info->nand.options |= NAND_SKIP_BBTSCAN;
跳过扫描。因此 nand_scan_tail ()不会调用默认的 SCAN_BBT 回调、而且驱动程序本身也不 会单独调用 SCAN_BBT。
我的产品在 Freescale CPU 上运行。他们的驱动程序将在驱动程序的探测函数中调用 nand_default_BBT ()。当内核启动时。我可以在内核启动日志中看到如下内容:
在131008页、版本0x01中发现错误的块表
在第130944页、版本0x01中找到错误的块表
所以我的问题是.不调用 nand_default_BBT()。 (3.2.0内核和4.4.32内核) AM3354 BSP 中的内核如何管理坏块?
谢谢你
仁东