代码之家  ›  专栏  ›  技术社区  ›  Bord81

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

  •  0
  • Bord81  · 技术社区  · 7 年前

    我尝试加载一个示例设备树驱动程序,但从不调用Probe函数。

    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显示它包含我的设备),并将其复制到了Target,但是当我插入驱动程序时,什么也没有发生。 我在/sys/firmware/devicetree中也找不到它/

    1 回复  |  直到 7 年前
        1
  •  1
  •   Bord81    7 年前

    为了解决这个问题,我甚至删除了DTB文件……神奇地,内核继续启动,好像什么也没发生一样。我认为DTB可以被烤成Zimage,这可能需要一些额外的调整,但事实并非如此。

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

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

    推荐文章