从不调用内核模块探测函数



我尝试加载示例设备树驱动程序,但从未调用探测函数。

dts文件中的条目如下所示

dummy1 {
    compatible = "ti,dummy";
    reg = <0x9f200000 0x1000>,
        <0x9f201000 0x8>;
};

相关的驱动程序代码是:

#define DRV_NAME  "dummy"
static const struct of_device_id dummy_of_match[] = {
{
.compatible = "ti,dummy",
}, {
},
};
static struct platform_driver dummy_driver = {
.driver = {
.name = DRV_NAME,
.of_match_table = dummy_of_match,
},
.probe   = dummy_probe,
.remove   = dummy_remove,
};
MODULE_DEVICE_TABLE(of, dummy_of_match);
module_platform_driver(dummy_driver);

我已经重新编译了 dtb 文件(dtdiff 显示它包含我的设备(并将其复制到目标,但是当我输入驱动程序时没有任何反应。 我也在/sys/firmware/devicetree/中找到它

为了解决这个问题,我什至删除了 dtb 文件......神奇的是,内核继续启动,就好像什么都没发生一样。我认为 dtb 可以烘焙到 zImage 中,这可以通过一些额外的调整来实现,但事实并非如此。

解决方案:最后,我发现uboot也首先检查了emmc卡上的./boot目录!从那里删除 dtb 会立即使 NFS 上的文件"可见"。

PS:如果您遇到类似的问题,请尝试仔细阅读输出。当我在 NFS 上删除 .dtb 加载错误时看到它时,我开始了解这个问题,但之后出现一条消息,指出它已成功加载到内存中。

相关内容

  • 没有找到相关文章

最新更新