Armadilloフォーラム

GPIO5_IO02 のプルダウン初期値は?

mitsuyuki_noto

2022年4月18日 14時33分

いつもお世話になっております。
GPIO5_IO02について、以下の質問が有ります。
・電源投入時の初期値は?
・適用は、電源投入直後でしょうか? 適用されるタイミングを教えて頂けないでしょうか?
・或いは明示的にプルダウンを指示しないと、適用されないでしょうか?
・プルダウン抵抗を外す(解除する)方法は有りますか? .dtsファイルに何か記述すれば良いのでしょうか?

背景として、弊社開発の拡張基板側でGPIO5_IO02信号波形を確認した際、一部の基板でHigh時(定常時)1.8V程度見えるはずが、
1.3V程度しか見えていないものがありましたが、拡張基板の出力は1.8V程度出ている為、GPIO5_IO02入力側のプルダウン抵抗の
影響で電圧ドロップしている様な現象に見えた為の質問になります。
お手数ですが、ご回答の程宜しくお願い致します。

拡張基板の出力信号については、1.8V, 10kΩでプルアップしております。
以上、宜しくお願い致します。

コメント

at_shinya.matsumoto

2022年4月19日 17時23分

ご回答が遅くなり申し訳ございません。
以下に回答致します。

> ・電源投入時の初期値は?
電源投入時はプルダウンになります。
 
> ・適用は、電源投入直後でしょうか? 適用されるタイミングを教えて頂けないでしょうか?
dtbで変更している場合はカーネル起動時に適用されます。
 
> ・或いは明示的にプルダウンを指示しないと、適用されないでしょうか?
dtbで初期値を設定する場合で記載します。at-dtwebを用いて設定を行った場合と
用いない場合では少し異なります。

①at-dtwebを用いて変更した場合
 dtsiファイル(下記)が作成されますが、デフォルトではフローティングになっております。

  dtsiファイル("linux-バージョン名"は適宜読み替えてください)
  linux-5.10-5.10.109-r1/arch/arm64/boot/dts/freescale/armadillo_iotg_g4-expansion-interface.dtsi

②at-dtwebを用いていない場合
 dtsで当該GPIOに変更を加えていない場合はデフォルトでプルダウンになります。
 変更している場合は下記を参照ください。
 
> ・プルダウン抵抗を外す(解除する)方法は有りますか? .dtsファイルに何か記述すれば良いのでしょうか?

プルダウンを解除する方法は上記①と②で少し異なります。
①at-dtwebを用いて変更した場合

 dtsiファイルで下記の設定であれば既にフローティングになっています。
  MX8MP_IOMUXC_SAI3_MCLK__GPIO5_IO02 0x40000000 // CON11_22

 ※dtsi(本設定)とdtsどちらでも設定が出来ますが、どちらか一方で設定ください。
  両方にMX8MP_IOMUXC_SAI3_MCLK__GPIO5_IO02の記述がある場合、正常に動作しない可能性があります。

②at-dtwebを用いていない場合
 上記dtsiファイルと同ディレクトリにあるarmadillo_iot_g4.dtsに下記の+の行(+は不要)を追記してください。
 "MX8MP_IOMUXC_SAI3_MCLK__GPIO5_IO02 0x000 // CON11_22"の0x000には下記を選択ください。

 フローティング:0x000
 プルアップ  :0x140
 プルダウン  :0x100 (デフォルト設定)

 dtsファイル
 <中略>
      pinctrl-names = "default";
      pinctrl-0 = <
          &pinctrl_hog
 +        &pinctrl_gpio5_io02
  #ifdef ARMADILLO_IOTG_G4_AT_DTWEB
           &pinctrl_expansion_interfacehog
  #endif
 <中略>
             MX8MP_IOMUXC_GPIO1_IO02__WDOG1_WDOG_B    0xc6
         >;
     };
 +
 +    pinctrl_gpio5_io02: gpio5-io02grp {
 +        fsl,pins = <
 +            MX8MP_IOMUXC_SAI3_MCLK__GPIO5_IO02    0x000 // CON11_22
 +        >;
 +    };
  }; 
 <中略>

 この設定でカーネルをビルドし、swupdateでdtbを入れ替えれば設定を反映する事が出来ます。

松本様
ご回答、ありがとうございます。
.dtsi或いは.dtsファイルを確認してみます。
この流れでもう1点教えて下さい。

製品マニュアル「9.6. Armadilloのソフトウェアの初期化」を行った場合、これらの端子設定(例えば.dtsi或いは.dtsファイルで記述追加した)は、
1, クリアされる理解で良いでしょうか?
2, もしクリアされないとした場合の条件は有りますか?
3, クリアしたい場合、上記初期化以外の方法は有りますか?

以上、宜しくお願い致します。

> ご回答が遅くなり申し訳ございません。
> 以下に回答致します。
>
> > ・電源投入時の初期値は?
> 電源投入時はプルダウンになります。
>  
> > ・適用は、電源投入直後でしょうか? 適用されるタイミングを教えて頂けないでしょうか?
> dtbで変更している場合はカーネル起動時に適用されます。
>  
> > ・或いは明示的にプルダウンを指示しないと、適用されないでしょうか?
> dtbで初期値を設定する場合で記載します。at-dtwebを用いて設定を行った場合と
> 用いない場合では少し異なります。
>
> ①at-dtwebを用いて変更した場合
>  dtsiファイル(下記)が作成されますが、デフォルトではフローティングになっております。
>
>   dtsiファイル("linux-バージョン名"は適宜読み替えてください)
>   linux-5.10-5.10.109-r1/arch/arm64/boot/dts/freescale/armadillo_iotg_g4-expansion-interface.dtsi
>
> ②at-dtwebを用いていない場合
>  dtsで当該GPIOに変更を加えていない場合はデフォルトでプルダウンになります。
>  変更している場合は下記を参照ください。
>  
> > ・プルダウン抵抗を外す(解除する)方法は有りますか? .dtsファイルに何か記述すれば良いのでしょうか?
>
> プルダウンを解除する方法は上記①と②で少し異なります。
> ①at-dtwebを用いて変更した場合
>
>  dtsiファイルで下記の設定であれば既にフローティングになっています。
>   MX8MP_IOMUXC_SAI3_MCLK__GPIO5_IO02 0x40000000 // CON11_22
>
>  ※dtsi(本設定)とdtsどちらでも設定が出来ますが、どちらか一方で設定ください。
>   両方にMX8MP_IOMUXC_SAI3_MCLK__GPIO5_IO02の記述がある場合、正常に動作しない可能性があります。
>
> ②at-dtwebを用いていない場合
>  上記dtsiファイルと同ディレクトリにあるarmadillo_iot_g4.dtsに下記の+の行(+は不要)を追記してください。
>  "MX8MP_IOMUXC_SAI3_MCLK__GPIO5_IO02 0x000 // CON11_22"の0x000には下記を選択ください。
>
>  フローティング:0x000
>  プルアップ  :0x140
>  プルダウン  :0x100 (デフォルト設定)
>
>

>  dtsファイル
>  <中略>
>       pinctrl-names = "default";
>       pinctrl-0 = <
>           &pinctrl_hog
>  +        &pinctrl_gpio5_io02
>   #ifdef ARMADILLO_IOTG_G4_AT_DTWEB
>            &pinctrl_expansion_interfacehog
>   #endif
>  <中略>
>              MX8MP_IOMUXC_GPIO1_IO02__WDOG1_WDOG_B    0xc6
>          >;
>      };
>  +
>  +    pinctrl_gpio5_io02: gpio5-io02grp {
>  +        fsl,pins = <
>  +            MX8MP_IOMUXC_SAI3_MCLK__GPIO5_IO02    0x000 // CON11_22
>  +        >;
>  +    };
>   }; 
>  <中略>
> 

>
>  この設定でカーネルをビルドし、swupdateでdtbを入れ替えれば設定を反映する事が出来ます。
>

at_shinya.matsumoto

2022年4月20日 10時16分

下記にご回答致します。

> 製品マニュアル「9.6. Armadilloのソフトウェアの初期化」を行った場合、これらの端子設定(例えば.dtsi或いは.dtsファイルで記述追加した)は、
> 1, クリアされる理解で良いでしょうか?
 
クリアされる=プルダウンに戻るという意味で記載します。

”9.6.1. インストールディスクの作成”で、貴社にてインストールディスクを作成した場合はそのdtbの
設定が反映されますので、dtsやdtsiファイルで端子設定をしていなければクリアされます。

”9.6.2. インストールディスクを使用した初期化”で、当社にて配布しておりますインストールディスクを
使用される場合は、工場出荷状態に戻す事になりますので端子設定についてはクリアされます。
 
 
> 3, クリアしたい場合、上記初期化以外の方法は有りますか?
 
当社ArmadilloサイトからLinuxカーネル(下記URL)をダウンロード頂き、そのままカーネルを
ビルドしますと出荷状態と同じ端子設定のdtbファイルがdtsファイルと同じディレクトリに
生成されます。それをswupdateでdtbを書き換える事で初期状態の設定に書き変わります。

Linuxカーネル
https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g4…

swupdateのdescファイル例

#DTBの入れ替え
swdesc_files --version extra_os.init_dtb 1 \
        --dest /boot \
        "armadillo_iotg_g4.dtb"

※注意:swupdate_preserve_filesについて
 /etc/swupdate_preserve_filesに記載のあるディレクトリまたはファイルについては
 アップデートを実行しても現在の状態が維持されます。(=ファイルが更新されない)

 アップデート前に/etc/swupdate_preserve_filesにアップデートしようとしているdtbの
 記載が無い事をご確認下さい。(上記例では"/boot/armadillo_iotg_g4.dtb")
 お客様自身で記載しない限りはこのファイルへは記載されません。

 /boot/armadillo.dtbはシンボリックリンクで初期から記載されていますが、こちらは
 関係ありません。