如何解决在设备树中使用 __overrides__ 可防止加载驱动程序
您好,我创建了一个自定义设备树覆盖层以支持我自己的设备。我通过向内核添加补丁将其集成到 yocto 中。
我还想通过简单地更改 boot/config.txt 中的数据来允许更改设备参数,因此我在设备树覆盖文件中添加了 overrides 部分。但问题是当这个部分出现时,我的驱动程序没有被内核加载。当我从文件中删除此部分时,一切正常。驱动程序已加载,我可以对其进行操作。这里可能有什么问题?
不工作的设备树覆盖:
/dts-v1/;
/plugin/;
&soc {
hatch2sr {
compatible = "hatch2sr";
pwm-names = "motor1";
pwms = <&pwm 0 1000000>;
openpossensor-gpios = <&gpio 3 1>;
closepossensor-gpios = <&gpio 26 1>;
relay-gpios = <&gpio 25 1>;
};
__overrides__ {
openpos_sensor_pin = <&hatch2sr>,"openpossensor-gpios:4";
openpos_sensor_flags = <&hatch2sr>,"openpossensor-gpios:8";
closepos_sensor_pin = <&hatch2sr>,"closepossensor-gpios:4";
closepos_sensor_flags = <&hatch2sr>,"closepossensor-gpios:8";
relay_pin = <&hatch2sr>,"relay-gpios:4";
relay_flags = <&hatch2sr>,"relay-gpios:8";
};
};
工作设备树:
/dts-v1/;
/plugin/;
&soc {
hatch2sr {
compatible = "hatch2sr";
pwm-names = "motor1";
pwms = <&pwm 0 1000000>;
openpossensor-gpios = <&gpio 3 1>;
closepossensor-gpios = <&gpio 26 1>;
relay-gpios = <&gpio 25 1>;
};
};
/boot/config.txt 的最后一行:
dtoverlay=hatch2sr
内核编译和启动时没有任何抱怨。
解决方法
一个问题是 &hatch2sr
无法解析,因为没有该名称的标签。如果 Raspberry Pi 加载程序无法解析引用,则不会应用覆盖。这可以通过将标签附加到预期节点来解决,如下所示:
&soc {
hatch2sr: hatch2sr {
另一个问题是 Raspberry Pi 加载器在加载叠加层时没有应用 __overrides__
节点中指定的设备树参数。我想那是因为__overrides__
节点需要放在设备树的根节点,但是目前是在&soc
节点。如下所示移动 __overrides__
节点可能会解决问题:
/dts-v1/;
/plugin/;
&soc {
hatch2sr: hatch2sr {
compatible = "hatch2sr";
pwm-names = "motor1";
pwms = <&pwm 0 1000000>;
openpossensor-gpios = <&gpio 3 1>;
closepossensor-gpios = <&gpio 26 1>;
relay-gpios = <&gpio 25 1>;
};
};
/ {
__overrides__ {
openpos_sensor_pin = <&hatch2sr>,"openpossensor-gpios:4";
openpos_sensor_flags = <&hatch2sr>,"openpossensor-gpios:8";
closepos_sensor_pin = <&hatch2sr>,"closepossensor-gpios:4";
closepos_sensor_flags = <&hatch2sr>,"closepossensor-gpios:8";
relay_pin = <&hatch2sr>,"relay-gpios:4";
relay_flags = <&hatch2sr>,"relay-gpios:8";
};
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。