Armadilloフォーラム

GPIO の初期出力設定

n_kogawa

2024年4月14日 17時53分

拡張インターフェース(CON8)の 40番ピン(GPIO1_IO1)を、外部 MCU のリセット入力(負論理)と接続したシステムを開発しています。

そのため、X1 起動直後に該当ピンの出力を HIGH としたいです。
また、MCU にリセットを掛けるため、該当ピンの出力を操作できる必要があります。

デバイスツリーの変更で上記の対応は可能でしょうか?

armadillo_x1.dts の 510行目以下を下記のように修正することで、起動直後に該当ピンの出力が HIGH となりましたが、/sys/class/gpio 以下で出力を操作することできず、結果 MCU にリセットを掛けることができません。

修正前

&gpio1 {
	mcu_intb {
    	gpio-hog;
        gpios = <13 GPIO_ACTIVE_HIGH>;
        input;
        line-name = "MCU_INTB";
	};
};

修正後

&gpio1 {
	mcu_intb {
    	gpio-hog;
        gpios = <13 GPIO_ACTIVE_HIGH>;
        input;
        line-name = "MCU_INTB";
	};
 
	gpio1_1 {
    	gpio-hog;
		gpios = <1 GPIO_ACTIVE_HIGH>;
		output-high;
		line-name = "GPIO1_1";
	};
};

Linux 6.1 を利用しています。
何かご存じのことがありましたら、ご教示いただけますと幸いです。

コメント

溝渕です。

> 拡張インターフェース(CON8)の 40番ピン(GPIO1_IO1)を、外部 MCU のリセット入力(負論理)と接続したシステムを開発しています。

i.MX 7DualのGPIO1_IO1ピンンのリセット値は100kΩ pull-downになっています。(外部で強pull-upしていない場合は)電源投入後、LinuxカーネルでHIGHにするまでの間LOWになると思いますが、タイミングは大丈夫でしょうか?

> デバイスツリーの変更で上記の対応は可能でしょうか?

gpio-ledsなど、ユーザーランド(sysfsなど)からの制御に対応したドライバを割り当てると可能です。

また、gpio driverのgpio-hogを使う場合は、ドライバに修正が必要となります。

電源投入後最速でHIGHにするには、U-Bootで制御する必要があります。この場合はgpio sysfsから制御可能です。

> 溝渕です。
>
> > 拡張インターフェース(CON8)の 40番ピン(GPIO1_IO1)を、外部 MCU のリセット入力(負論理)と接続したシステムを開発しています。
>
> i.MX 7DualのGPIO1_IO1ピンンのリセット値は100kΩ pull-downになっています。(外部で強pull-upしていない場合は)電源投入後、LinuxカーネルでHIGHにするまでの間LOWになると思いますが、タイミングは大丈夫でしょうか?
>
> > デバイスツリーの変更で上記の対応は可能でしょうか?
>
> gpio-ledsなど、ユーザーランド(sysfsなど)からの制御に対応したドライバを割り当てると可能です。
>
> また、gpio driverのgpio-hogを使う場合は、ドライバに修正が必要となります。
>
> 電源投入後最速でHIGHにするには、U-Bootで制御する必要があります。この場合はgpio sysfsから制御可能です。
>

溝渕 様

返信遅くなりましたが、gpio-leds を利用することで、
実現することができました。

ありがとうございました。

溝渕です。

> gpio-leds を利用することで、実現することができました。

目的が達成できて良かったです。ご報告ありがとうございました。