Armadilloフォーラム

GPIO 出力使用時のカーネルコンフィグについて(Armadillo-640)

rfujigaya

2021年7月26日 19時12分

お世話になっております。藤ヶ谷です。

Armadillo-640 にて、CON9-1 を GPIO で信号を出力したくカーネルコンフィグ(Device Tree)したのですが、
別スレッド「Armadillo-640 CON9のGPIOの設定について」(https://armadillo.atmark-techno.com/forum/armadillo/3818)と同様に H レベルが出力されていないようです。設定の不足や誤りがありますでしょうか?

 

<カーネル設定>
スレッド「Armadillo-640 CON9のGPIOの設定について」を参考に、”MX6UL_PAD_UART2_CTS_B__GPIO1_IO22 0x0001b0b0”の設定を Device Tree に追加しました。

・armadillo-640.dts  ※標準の dts ファイルに下記の記載を追記

&uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart2>;
	status = "okay";
};
 
&iomuxc {
	pinctrl_uart2: uart2grp {
		fsl,pins = <
			MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX 0x00008
			MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX 0x1b0b1
		>;
	};
 
	pinctrl_expansion_interfacehog: expansion_interfacehoggrp {
		fsl,pins = <
			/* CON9 */
			MX6UL_PAD_UART2_CTS_B__GPIO1_IO22	0x0001b0b0 // CON9_1
		>;
	};
};

 

<確認方法>
今回用に作製した拡張ボードを介して通信できるかを確認したが相手先でデータが確認できませんでした。
※ CON9-1 が H レベルの間のみ信号線にデータが流れるような回路となっております。

・GPIO 設定

echo 22 > /sys/class/gpio/export
echo out >/sys/class/gpio/gpio22/direction
echo 1 >/sys/class/gpio/gpio22/value

・・・ここまでで CON9-1 が H レベルになることを期待していたがなっていないようです。
   (UART2 からデータを送信しても相手先で受信を確認できなかったため)
     stty -F /dev/ttymxc1 raw -echo 19200 cs8 parenb -parodd -cstopb
     echo -n "AAA" >/dev/ttymxc1

コメント

at_shiita.ishigaki

2021年7月27日 14時56分

石垣です。

> Armadillo-640 にて、CON9-1 を GPIO で信号を出力したくカーネルコンフィグ(Device Tree)したのですが、
> 別スレッド「Armadillo-640 CON9のGPIOの設定について」(https://armadillo.atmark-techno.com/forum/armadillo/3818)と同様に H レベルが出力されていないようです。設定の不足や誤りがありますでしょうか?

armadillo-640.dtsに追記されているpinctrl_expansion_interfacehogが呼び出されていないため、
CON9-1が正しく設定されていないようです。
以下のようにarmadillo-640.dtsに変更・修正を行い、再度ビルド後Armadillo-640に書き込み、動作確認していただけますでしょうか

また、pinctrl_expansion_interfacehogは既に別の意味合いで使用されていますので、
pinctrl_testと置き換えさせていただきました。

&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <
#ifdef ARMADILLO640_LCD70EXT_L00
			&pinctrl_lcd70ext_l00hog
#endif
#ifdef ARMADILLO640_AT_DTWEB
			&pinctrl_expansion_interfacehog
#endif
#ifdef ARMADILLO_IOTG_A6_AT_DTWEB
			&pinctrl_expansion_interfacehog
#endif
	&pinctrl_test /*<-この行を追加*/
		    >;
 
:(中略)
 
&iomuxc {
	pinctrl_uart2: uart2grp {
		fsl,pins = <
			MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX 0x00008
			MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX 0x1b0b1
		>;
	};
 
	pinctrl_test: testgrp{ /*<-この行を変更*/
		fsl,pins = <
			/* CON9 */
			MX6UL_PAD_UART2_CTS_B__GPIO1_IO22	0x0001b0b0 // CON9_1
		>;
	};
};

以上、よろしくお願いします。

藤ヶ谷です。お世話になっております。

ご指摘の通り armadillo-640.dts ファイルを修正(※1)し再度確認したところ、
相手先機器にデータを送信することができました。
ご回答ありがとうございました。

※1:pinctrl_expansion_interfacehog を pinctrl_test に名称変更。
   &iomuxc のブロック内に ”&pinctrl_test” の記述を追加。