デフォルトのピン設定を変更する

この機能は上級者向けの機能です。

2014年7月15日の時点でラズベリーパイのファームウェアは、 ユーザーがデバイスツリーブロブファイルを用意することで、デフォルトピン設定をカスタマイズすることができます。 ファームウェアが十分に新しいことを確認するには、vcgencmd versionを実行してください。

デバイスツリーブロブファイルを用意する

デバイスツリーソース(dts)ファイルをデバイスツリーブロブ(dtb)ファイルにコンパイルするために、 デバイスツリーコンパイラをインストールしなければなりません。 sudo apt-get install device-tree-compilerを実行してインストールしてください。 dtcコマンドは次のように使います。

sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob.dts

注意:NOOBSをインストールしている場合、dtbファイルは上記の代わりにリカバリーパーティションに置かなければなりません。

同様に、もし必要があれば、dtbファイルはdtsファイルに変換し直すことができます。

dtc -I dtb -O dts -o dt-blob.dts /boot/dt-blob.bin

デバイスツリーブロブファイルのセクション

dt-blob.binはブート時にバイナリブロブ(ビデオコア)を設定するのに使用されます。 このファイルはLinuxカーネルが使うものとは(今は)異なります。 しかしながら、後でラズベリーパイカーネルの設定にdt-blobを使うときには カーネルセクションの追加を行います。 dt-blobはコンピュートモジュールを含む異なるバージョンのラズベリーパイを設定することができ、 別の設定を正しくセットアップすることができます。 dt-blobには次のセクションが有効です。

  1. videocoe
    このセクションは全てのvideocoreのブロブ情報を含みます。 後の全てのセクションはこのセクションに内包されなければなりません。
  2. pins_*
    最大で8個のpins_*セクションがあり、名前は次の通りです。
    1. pins_rev1 Rev1のピン配置です。I2Cピンが移動したので少し違いがあります。
    2. pins_rev2 Rev2のピン配置です。P5に追加のコーデックピンがあります。
    3. pins_bplus1 Model B+ Rev 1.1のピン配置で、40ピン全ての端子を含みます。
    4. pins_bplus2 Model B+ Rev 1.2のピン配置で、省電ピンとLANのRunピンが入れ替わっています。
    5. pins_aplus Model A+のピン配置で、LANがありません。
    6. pins_2b1 ラズベリーパイ2 Model B Rev 1.0のピン配置で、SMPSをI2C0で制御します。
    7. pins_2b2 ラズベリーパイ2 Model B Rev 1.1のピン配置で、SMPSをピン42と43のソフトウェアI2Cで制御します。
    8. pins_cm コンピュートモジュールのピン配置です。 この配置のデフォルトはチップのデフォルトでもあり、 チップのデフォルトのプルアップ/プルダウンに関する情報を得るのに役立ちます。
    それぞれのpins_*セクションはpin_configpin_defines セクションを含むことができます。
  3. pin_config
    pin_configセクションは個々のピンを設定するのに使用されます。 このセクション内のそれぞれのアイテムはGPIO32を意味するpin@p32のように 名前のあるピンセクションでなければなりません。 pin@defaultという特別なセクションがありますが、 このセクションは pin_config内で何も設定されていないピンセクションの デフォルト設定を持っています。
  4. pin@pinname
    このセクションは次のアイテムの組み合わせを含むことができます。
    1. polarity
      • active_high
      • active_low
    2. termination
      • pull_up
      • pull_down
      • no_pulling
    3. startup_state
      • active
      • inactive
    4. function
      • input
      • output
      • sdcard
      • i2c0
      • i2c1
      • spi
      • spi1
      • spi2
      • smi
      • dpi
      • pcm
      • pwm
      • uart0
      • uart1
      • gp_clk
      • emmc
      • arm_jtag
    5. drive_strength_ma drive strengthはピンの強度を設定するのに使用されます。 バンクに対して1つだけ動作強度を設定でき、< 8 > < 16> が有効な値です。
  5. pin_defines
    このセクションは特定のvideocore機能を個別のピンに設定するのに使用します。 これはcamera power enableピンをどこか別の場所へ移動させたり、 hdmiのホットプラグにすることができます(すなわち、Linuxが制御していない部分の設定ができます)。 下にあるサンプルdtsファイルを参照してください。

クロックの設定

このインターフェースを通してクロックの設定を変更することが可能ですが、 結果を予測することは非常に困難です。 クロックシステムの設定はとてもとても複雑で、 5つのPLLがあり、それぞれが固定の(PLLCの場合は変更できる)VCO周波数を持っています。 それぞれのVCOはいくつか異なるチャンネルを持っており、VCO周波数を分割して異なる値を設定をすることができます。 そしてそれぞれのクロックの出力は、どれか1つのクロックチャンネルを入力として設定できます (しかしながら、入出力の割り当てには制限もあるので、全てのチャンネルが全てのクロックの出力に設定できるわけではありません)。

そういうわけで、ここに2つのサンプル設定を付け加えておきます。 特定のクロックだけですが、設定を変更するのに使えます。 これ以外のクロック設定のサンプルについては、リクエストがあれば追加することにします。

clock_routing {
   vco@PLLA  {    freq = <1966080000>; };
   chan@APER {    div  = <4>; };
   clock@GPCLK0 { pll = "PLLA"; chan = "APER"; };
};

clock_setup {
   clock@PWM { freq = <2400000>; };
   clock@GPCLK0 { freq = <12288000>; };
   clock@GPCLK1 { freq = <25000000>; };
};

上の設定は、PLLAをソースVCOとして1.96608GHzに設定し(このVCOの制限値は600MHzから2.4Ghzです)、 APERチャンネルを1/4して、GPCLK0をAPERを通してPLLAをソースとして設定するものです。 この特定の設定値はオーディオコーデックに12288000Hzを与えるのに使われます。

デバイスツリーソースファイルのサンプル

注意:これは新しい機能ですので、 今後のファームウェアバージョンでのサポートが保証される参考dtsファイルはありません。

2015年3月30日のファームウェア向けのdtbファイルを作るのに使用されたdtsファイルが ここからダウンロードできます。

このページについて

このページはラズベリーパイ財団が権利を保有するRaspberry Pi Documentation五十嵐システムズが日本語訳したものです。
Creative Commons Attribution 4.0 International Licenceのもとで公開されております。
原文はhttps://github.com/raspberrypi/documentationの成果によって作成されています。

なお、このページは2015年6月に翻訳しており、それ以後の更新内容は翻訳に反映していないため、内容が原文とは異なる場合があります。