ロジック アナライザー: Raspberry Pi の秘密を解明する
今日は、あなたのハッキング スキルをまったく新しいレベルに引き上げ、大金をかけずにそれを実現するツールを紹介したいと思います。実際、どれだけデバッグ時間を節約でき、どれだけ多くの楽しいアクティビティのロックを解除できるかを考えると、多数の機能を追加できるため、これは最も安価なツールの 1 つである可能性があります。 奇妙な問題のデバッグ、コードの最適化、リバース エンジニアリング中のガジェットの探索、または誰かのオープンソース ライブラリを理解しようとする場合、手元にロジック アナライザーがないと、多くのことを見逃してしまう可能性があります。 !
一部のハッカーがロジック アナライザーがもたらす価値をまだ理解していないことに、私は胸が張り裂ける思いです。 何度も何度も、ロジック アナライザーを戦術的に適用することで、ハッキングしていたものについてまったく異なる視点が見えるようになりました。それが今日私がデモしたいことです。
ロジック アナライザには多数のデジタル入力があり、これらのデジタル入力の状態を継続的に読み取り、コンピュータに送信したり画面に表示したりするため、ロジック レベルのみのオシロスコープのようなものです。 センサーを制御する 1 つの MCU を備えた I2C バスがある場合は、ロジック アナライザーをクロック ピンとデータ ピンに接続し、アースを配線し、コンピューター上でロジック アナライザー ソフトウェアを起動して、実際に何が起こっているかを確認します。
たとえば、Raspberry Pi GPIO コネクタの ID_SC ピンと ID_SD ピンに気づいたことがありますか? 何のためにあるのか気になりますか? これらのピンで実際に何が起こるかを確認したくないですか? 今すぐそうしましょう!
私は、Aliexpress や Amazon で購入できる 10 ドルのロジック アナライザー、ラップトップ、SD カードと電源を備えた Raspberry Pi を使用しています。 ここでは配線されています。必要なのは 3 本のメス - メス ワイヤ、2 本の信号と 1 つのアースだけです。 「SD」と「SC」は I2C のように聞こえます。通常の I2C 周波数は通常 100 kHz または 400 kHz です。 経験則として、周波数をキャプチャしようとしているデータ ストリームのクロック周波数の 3 ~ 4 倍に設定することをお勧めします。 そのため、ロジック アナライザーのサンプル レートを 2 MHz に設定する予定です。 転送されるデータに追いつくには遅すぎることが判明した場合は、サンプル レートを上げて再度サンプリングを行うことができます。
私が使用しているソフトウェアは Pulseview です。これはロジック アナライザー用の素晴らしい GUI であり、さまざまなロジック アナライザーと接続できます。 オープンソースで Linux に優しく、ハッキング可能で、最近メンテナンスされていないにもかかわらず、優れた UX を備えています。 ディストリビューションのリポジトリからインストールすることも、Windows を使用している場合は .exe をダウンロードすることもできます。 ロジック アナライザを接続した状態で、USB ポートに接続し、Pulseview を起動し、サンプル レートと読み取り期間 (無限にすることも可能) を設定し、興味のある 2 つ以外のすべてのチャネルを無効にし、「Capture」を押して Pi を接続します。権力の中に。
Pi を接続すると、3.3 V の電力が供給されるにつれて両方のピンのロジック レベルが上昇します。そして、数秒後に、これら 2 つのピンで短いバースト動作が発生します。 拡大してみると、アクティビティは確かに I2C のように見えます。そして、Pulsview でデコードするのは非常に簡単です。 設定タスクバーの「プロトコル デコーダ」ボタンを押し、キーボードで「I2C」と入力し、I2C デコーダを選択します。次に、左側のデコーダ タグをダブルクリックして、どのチャネルが SCL と SDA であるかを選択します。SCL は次のようになります。クロック信号のような高低が等しくなりますが、SDA の高と低の間隔は変化します。 上の図では、D1 が SCL、D0 が SDA です。 デコードされた I2C イベントを拡大すると、このアクティビティがアドレス 0x50 からデータを読み取る I2C リクエストであり、これらのリクエストの後に NACK イベント (赤いマーカー) が続いていることがわかります。これは、応答を受信していないことを意味します。
Raspberry Pi HAT 設計を調べたことがある方は、これらの I2C リクエストが Raspberry Pi ブートローダーから来ていることをすでに推測しているかもしれません。Raspberry Pi ブートローダーは、Pi がデバイスをロードできるように、HAT 上のデバイス情報を含む I2C EEPROM を探しています。ツリーはそこからデータをオーバーレイし、そのデータを使用して接続された HAT 上のハードウェアを構成します。 このプロセスに関してオンラインで入手できるわずかな情報に頼る必要はありません。ロジック アナライザーを使用すると、実際に何が起こっているかを調査し、隠された機能や注意点を見つけることができるため、独自のハードウェアであってもほとんど障害にはなりません。できるだけ。