ブート中のGPIO設定変更

  Raspberry Pi

詳細はOpenPLCハット作成を参照だが、
GPIO14とGPIO15は、デフォルトではUART TXD, RXDに割り付けられており、
ブート中TXDはOutput w/ Highドライブ、RXDはInput w/内蔵プルアップとなり、
Raspberry Pi OS起動後に両方ともInput w/内蔵プルダウンとなる。

RXD側は外部プルダウン抵抗で対応できるけど、
TXD側は対応できないため、ブート中のGPIO設定を変更したい。

ラズパイ公式に記載されてるdt-blob.binを作成する方法を試してみる。

 

Contents

ファームウェアバージョン確認

2014年7月15日以降のファームウェアでこの方法、user-provided Device Tree blob fileでのデフォルトのピン設定、が有効とのこと。

2020年8月24日版のファームウェアなので使える。

 

Device Tree blobファイル作成

GitのExampleファイルを参考に作成する。

このファイルには全てのラズパイモデル分が入ってるため、
自分の使用しているモデルのみ抜き出すことにする。

 

ラズパイモデル確認

以下のようにコマンドで確認できる。

Pi 3 Model B rev 1.2なので、pins_3b2のみをコピーして作成する。

 

dtsファイル作成

dt-blob.dtsファイルにGitのExampleファイルの内容をコピーしていく。

修正するのはpin@p14とpin@p15のみ。
GPIO以外のピン情報はラズパイ公式の回路図には記載されていないのでわからない。公開予定もない模様。

Exampleファイル:

これをコメントアウトすべきか、function=inputまたはoutputにするか迷う。
Exampleファイルにはpin@defaultが以下のように設定されているのでコメントアウトで良い気がする。

まずはコメントアウトしてdt-blob.binを作成して確認してみる。
以下が全文。

 

dt-blob.bin作成

dtcコマンドで作成

すごい数のwarningが出てるけどまずは無視。

リブートして確認。

 

成功

ブート中にGPIO14がHighになることはなくなった。
正常にOpenPLCも動作しているし問題なさそう。

 

One Reply to “ブート中のGPIO設定変更”

LEAVE A COMMENT