如何控制 Linux 中 MTD 的可见性?

如何控制 Linux 中 MTD 的可见性?

我正在开发一个运行 Linux 的主板,它有两个 NOR 闪存设备。它们在设备树中进行了描述,因此一堆 MTD 显示在 /dev/ 下。

但是,我想隐藏其中一个 NOR 闪存设备中的 MTD,直到真正需要它们(在升级期间)。

我发现我可以在启动后将驱动程序从 NOR-flash 中解除绑定,然后在需要时重新绑定。但是,我更希望系统可以在没有绑定的情况下启动。我尝试编辑设备树并设置状态=“已禁用”并删除兼容的字段,但这两种方法显然都无法将驱动程序绑定到 NOR 闪存。(没有驱动程序覆盖节点。)

有什么方法可以让系统允许决定何时绑定驱动程序或显示 MTD?

答案1

compatible属性将驱动程序与设备(NOR 闪存控制器)关联,并影响status设备。
您尝试的方法没有达到预期结果是有道理的。
如果 MTD 分区定义在 DT 中,那么为什么不能简单地注释掉您不想看到的分区?

有没有什么方法可以让系统让我决定何时绑定驱动程序?

是的,这就是设备树的功能。
但对于你的情况,你应该处理分区,而不是设备(因为一个控制器上连接了两个芯片)!
请参阅https://www.kernel.org/doc/Documentation/devicetree/bindings/mtd/partition.txt
如果 MTD 分区没有定义,那么显然无法为其创建设备节点,/dev

相关内容