You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OrangePi-PC开发板GPIO按键DTS编译警告问题求助

解决OrangePi-PC GPIO按键DTS overlay编译警告问题

问题分析

你遇到的编译警告源于DTS结构不符合Allwinner H3设备树规范,核心问题有两个:

  1. 错误将gpio-keys节点挂载到pio节点下——gpio-keys是独立的输入子系统设备,应挂在根节点下。
  2. 引用了未定义的gpio_button_0引脚控制节点,且单独编译overlay时缺少必要的设备树上下文信息。

修正后的DTS代码

/dts-v1/;
/plugin/;

/ {
    compatible = "allwinner,sun8i-h3";

    fragment@0 {
        target-path = "/";
        overlay {
            gpio_keys_user: gpio-keys {
                compatible = "gpio-keys";
                pinctrl-names = "default";
                pinctrl-0 = <&gpio_button_pins>;
                #address-cells = <1>;
                #size-cells = <0>;

                play_pause@0 {
                    reg = <0>;
                    label = "Play/Pause";
                    linux,code = <164>; /* KEY_PLAYPAUSE */
                    gpios = <&pio 0 7 0>; /* PA7,低电平触发 */
                };

                next@1 {
                    reg = <1>;
                    label = "Next";
                    linux,code = <163>; /* KEY_NEXTSONG */
                    gpios = <&pio 0 8 0>; /* PA8,低电平触发 */
                };

                previous@2 {
                    reg = <2>;
                    label = "Previous";
                    linux,code = <165>; /* KEY_PREVIOUSSONG */
                    gpios = <&pio 0 9 0>; /* PA9,低电平触发 */
                };
            };
        };
    };

    fragment@1 {
        target = <&pio>;
        overlay {
            gpio_button_pins: gpio-button-pins {
                pins = "PA7", "PA8", "PA9";
                function = "gpio_in";
                bias-pull-up; /* 启用内部上拉电阻,按键接地时触发 */
            };
        };
    };
};

编译命令调整

如果使用GPIO_ACTIVE_LOW这类宏,编译时需指定内核设备树绑定头文件路径;直接用数字替代宏则可简化命令:

# 带宏引用的编译(假设内核头文件在/usr/src/linux/include)
dtc -I dts -O dtb -o gpio-keys.dtbo -i /usr/src/linux/include/dt-bindings/ gpio-keys.dts

# 不带宏的简化编译
dtc -I dts -O dtb -o gpio-keys.dtbo gpio-keys.dts

关键修改说明

  • 拆分两个fragment:一个在根节点添加gpio-keys设备节点,另一个在pio节点下配置引脚控制规则。
  • 新增gpio_button_pins节点,明确引脚为输入模式并配置上拉电阻,匹配按键硬件连接逻辑。
  • 给每个按键子节点添加reg属性,符合gpio-keys设备树绑定规范。
  • 修正gpios属性格式,确保&pio引用在overlay编译时能被正确解析。

内容的提问来源于stack exchange,提问作者Savoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 05:35:15