Armadillo-640で、デバイスツリーで、GPIOのデフォルトを出力に設定する方法です。
備考)
この方法の場合、ユーザー領域で、GPIO出力のLow/Highの切り替えができません。
ユーザー領域からGPIO出力のLow/Highの切り替えを行う場合は、
Armadillo-640:デバイスツリーで、GPIOのデフォルトを出力に設定する(その2)
を参照ください。
Armadillo-640 製品マニュアル
6.7. GPIO
には、GPIOクラスディレクトリで、GPIOの入出力を切り替える方法が表記されています。
デフォルトは、GPIO入力になっていますので、GPIO出力にするには、上記の方法で切り替える必要があります。
ここでは、例として、Armadillo-640のCON9の2ピン(GPIO1_IO23)で、
GPIOのデフォルトを出力(Low)に設定する方法を検討してみました。
参考)
Armadillo-640 製品マニュアル
表6.9 CON9 ピンとGPIO番号の対応
デバイスツリーの設定
linux-v4.14-at[version]/arch/arm/boot/dts/armadillo-640.dts
で、下記2つの記述を追加します。
&iomuxc
の中に、
/* CON9_2: GPIO */ pinctrl_ext_hog_1: ext_hoggrp-1 { fsl,pins = < MX6UL_PAD_UART2_RTS_B__GPIO1_IO23 0x00008 // CON9_2 >; };
を追加します。
ファイルの末尾に
/* CON9_2: GPIO */ &gpio1 { con9_2 { gpio-hog; gpios = <23 GPIO_ACTIVE_HIGH>; output-low; line-name = "CON9_2"; }; };
を追加します。
補足)
GPIOのデフォルトをHigh出力にするには、"output-low"の箇所を"output-high"にします。
上記の設定後、ビルドして生成されたデバイスツリー
linux-v4.14-at[version]/arch/arm/boot/dts/armadillo-640.dtb
をArmadillo-640に書き込みます。
Armadillo-640を再起動すると、CON9_2のデフォルトはLow出力になります。
ただ、この方法ですと、CON9_2の出力のLow/Highを切り替えようとしても
root@armadillo:/sys/class/gpio# echo 23 > export -bash: echo: write error: Device or resource busy
となり、ユーザー領域からは、切り替えることができなくなります。
GPIOのデフォルトを出力に設定、かつ、ユーザー領域から設定する方法は、
Armadillo-640:デバイスツリーで、GPIOのデフォルトを出力に設定する(その2)
を参照ください。