2

gpio ピンのデフォルト設定をデバイス ツリーで構成する方法 (特に Freescale imx シリーズ)。

これまでのところ、led インターフェイスを使用して gpios を構成することしかできませんでした。

gpioinit {
   compatible = "gpio-leds";
    pinctrl-names = "default";
    mykpp {
        gpios = <&gpio4 15 1>;
    };
};

上記のコードは、ブート中に gpio 4 15 を 1 に設定します。これは私が望むものです。ただし、このピンを sysfs で gpio 主導ではなく一般的な gpio として表示する、より良い方法があると思います。

4

3 に答える 3

0

i.MX6 および Buildroot/Busybox、カーネル v4.19.169 で次の DT をテストしました。これを機能させる DT スニペットを次に示しますが、ユーザー空間ではピンを使用できなくなります。ところで、gpios =プロパティのトリッキーな構文に注意してください。それは私を夢中にさせました!

&gpio7 {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_gpio_en>;

    sysstat@11 {
        gpio-hog;
        gpios = <11 GPIO_ACTIVE_HIGH>;
        output-low;
        line-name = "SYS_STAT";
    };
};

&iomuxc {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_gpios>;

        pinctrl_gpio_en: gpiostatgrp {
            fsl,pins = <
                MX6QDL_PAD_GPIO_16__GPIO7_IO11      0x130b0
            >;
        };
};

0x130b0 は、ヒステリシス、100K プルダウン、PUE=1 (プルアップ有効)、PKE=1 (キーパー有効) を意味します。これは、sysstat@11欠落している場合でも、ピンを Low に駆動するのに十分です。しかし、ピンはまだ入力として設定されています。

ピン構成を確認します ( [使用]文字列に注意してください) :

# gpioinfo 6 | grep "line  11"                                                  
        line  11:      unnamed   "SYS_STAT"  output  active-high [used]         

別の方法は、sysstat@11ノードを削除して、ピンの多重化とピンの構成だけを行うことです。ただし、それが非常に賢いかどうかはわかりません。

ピンはデフォルトで GPIO として構成されているため、さらに別のオプションとして、DT をまったく変更せず、代わりに /etc/init.d スクリプトをコマンドで使用することもできますgpioset 6 11=0。これも機能しますが、DT オプションほど高速ではありません。

私は最後の選択肢に行くと思います。

于 2021-03-25T13:42:49.113 に答える