I2C(8) | FreeBSD System Manager's Manual | I2C(8) |
名称
i2c — I2C バスとスレーブデバイスをテストする書式
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
歴史
i2c ユーティリティは、 FreeBSD 8.0 で登場しました。作者
i2c ユーティリティとこのマニュアルページは、 <tur@semihalf.com>と <mih@semihalf.com>によって書かれました。January 23, 2009 | FreeBSD |