我尝试加载示例设备树驱动程序,但从未调用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显示它包含我的设备)并将其复制到目标,但是当我安装驱动程序时什么也没发生。 我也在/ sys / firmware / devicetree /
中找不到它答案 0 :(得分:1)
试图解决这个问题,我什至删除了dtb文件...神奇的是内核继续启动,好像什么也没发生。我以为可以将dtb烘焙到zImage中,这可以通过一些额外的调整来实现,但事实并非如此。
解决方案: 最终,我发现uboot也在首先检查emmc卡上的./boot目录!立即从那里删除dtb可使NFS上的文件“可见”。
P.S .:如果遇到类似问题,请尝试仔细阅读输出。在NFS上删除.dtb加载错误时,我开始理解该问题,但是之后出现一条消息,表明已成功将其加载到内存中。