EN JA
I2C(8)
I2C(8) FreeBSD System Manager's Manual I2C(8)

名称

i2cI2C バスとスレーブデバイスをテストする

書式

i2c -a address [ -f device][ -d r|w][ -w 0|8|16][ -o offset][ -c count][ -m ss|rs|no][ -b][ -v]

i2c -s [ -f device][ -n skip_addr][ -v]

i2c -r [ -f device][ -v]

解説

I2C バスのデバイスで生のデータ転送 (読み込みまたは書き込み) を実行するために i2c ユーティリティを使用することができます。また、利用可能なデバイスのためのバスをスキャンでき、I2C コントローラをリセットできます。

オプションは、次の通りです:

-a address
動作する I2C デバイス上の 7 ビットのアドレス (16 進数)。
-b
バイナリモード - 読み込み操作を実行するとき、デバイスから読み込まれたデータは、stdout 上にバイナリ形式で出力されます。書き込みを行うとき、デバイスに書き込まれたバイナリデータは、stdin から読み込まれます。
-c count
転送するバイト数 (10 進数)。
-d r|w
転送方向: r - 読み込み、w - 書き込み。
-f device
使用する I2C バス (デフォルトは、/dev/iic0)。
-m ss|rs|no
アドレシングモード、すなわち、転送のためのオフセットが、デバイスに書き込まれた後で、実際の読み込み/書き込み操作の前に、実行される I2C バス操作。 rs - 繰り返された開始。 ss - 停止開始。 no - なし。
-n skip_addr
スキップアドレス - バススキャンの間にスキップされる (複数の) アドレス。無視するアドレスを指定する 2 つの方法があります: 範囲 'a..b' によって、または選択されたアドレス 'a:b:c' を使用して。このオプションは、"-s"が使用されているときだけ利用可能です。
-o offset
データ転送のためにデバイス内のオフセット (16 進数)。
-r
コントローラをリセットします。
-s
デバイスのためのバスをスキャンします。
-v
冗長にします。
-w 0|8|16
デバイスアドレシング幅 (ビット単位)。

警告

i2c ユーティリティでスレーブの I2C デバイスを操作するとき、細心の注意を行わなければなりません。しばしば、システムのための重要な設定データは、非揮発性 (non-volatile) で保持されますが、例えば、イーサネットハードウェアアドレス、RAM モジュールパラメータ (SPD)、プロセッサリセット設定ワード (単語) などは、 I2C バスに位置する書き込み可能にされたメモリに保持されます。

そのような設定データが削除されるか、または変更されるとき、全体のシステムを使用不可能にすることが非常に簡単であるので、まさに何を行うかを知っている場合にだけ、“-d w” (書き込み) コマンドを使用します。

また、潜在的に危険な効果に導くかもしれない、I2C バスで進行中のトランザクションの無様な割り込みを避けます。次のシナリオを考慮してください: ホスト CPU が、開始された I2C トランザクションの途中で (どんな理由であっても) リセットされるとき、 I2C スレーブデバイスは、到着するデータまたはオフセットを待つ書き込みモードで残されるかもしれません。 CPU が、それ自体を再初期化して、再び、この I2C スレーブデバイスと通信するとき、送信されるコマンドと他の制御情報が、待っていたデータまたはオフセットとしてスレーブデバイスによって処理され、そのような書き込みが実行されるなら、不正行為のための大きな潜在能力があります。

使用例

  • デバイスのためのデフォルトバス (/dev/iic0) をスキャンします:

    i2c -s

  • デバイスのためのデフォルトバス (/dev/iic0) をスキャンし、アドレス 0x56 と 0x45 をスキップします。

    i2c -s -n 0x56:0x45

  • デバイスのためのデフォルトバス (/dev/iic0) をスキャンし、0x34 から 0x56 までのアドレスの範囲をスキップします。

    i2c -s -n 0x34..0x56

  • アドレス 0x56 でデバイスから 8 バイトのデータを読み込みます (例えば、 EEPROM):

    i2c -a 0x56 -d r -c 8

  • ファイル data.bin からオフセット 0x10 でデバイス 0x56 に 16 バイトのデータを書き込みます:

    i2c -a 0x56 -d w -c 16 -o 0x10 -b < data.bin

  • (/dev/iic1 の 0x56 から /dev/iic0 の 0x57 まで) 2 つの EEPROM の間で 4 バイトをコピーします:

    i2c -a 0x56 -f /dev/iic1 -d r -c 0x4 -b | i2c -a 0x57 -f /dev/iic0 -d w -c 4 -b

  • コントローラをリセットします:

    i2c -f /dev/iic1 -r

関連項目

iic(4), iicbus(4)

歴史

i2c ユーティリティは、 FreeBSD 8.0 で登場しました。

作者

i2c ユーティリティとこのマニュアルページは、 Bartlomiej Sieka <tur@semihalf.com>と Michal Hajduk <mih@semihalf.com>によって書かれました。
January 23, 2009 FreeBSD