protocol-analysis について
protocol-analysisは、sigrokによるデコードからファームウェアとの照合、Python解析まで、I2C、SPI、UARTのキャプチャ分析をエージェントに案内します。バスのデバッグやトランザクションの記録に役立ちます。
主な機能
- 01ロジックアナライザーのキャプチャ手順
- 02sigrokとPulseViewによるデコード
- 03I2C、SPI、UARTのプロトコル確認
- 04Pythonによるキャプチャ解析
- 05ファームウェアのトランザクション照合
活用シーン
- 01応答しないセンサーの調査
- 02ドライバーの処理とデータシートの比較
- 03CI回帰テスト用トランザクションの記録
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mohitmishra786/ low-level-dev-skills --skill protocol-analysisインストール後、Claude Code で/protocol-analysisを入力して読み込まれたか確認します。
詳細
プロトコル解析(I2C / SPI / UART)
目的
エージェントによるソフトウェア側のシリアルバス解析を支援します。ロジックアナライザーのワークフロー、sigrok/PulseView によるデコード、キャプチャとファームウェアドライバーの照合、Python ベースの解析を案内し、skills/baremetal/spi-i2c-baremetal とハードウェアの立ち上げをつなぎます。
使用する場面
- センサーが応答しない場合 — バス上のクロックとデータを確認します
- カーネルドライバーのトランザクションとデータシートを比較する場合
- CI/回帰テスト用に想定されるトランザクション形式を文書化する場合
- 高価なラボ機器を使わずにプロトコル層を教える場合(シミュレーション+デコード)
ワークフロー
1. キャプチャスタック
Physical probe → logic analyzer hardware (or GPIO bit-bang)
├── sigrok-cli / PulseView GUI
├── Protocol decoder (i2c, spi, uart)
└── Export VCD/CSV for scripts
オープンソース:安価な FX2LA ボードと sigrok を使用します。
2. PulseView クイックスタート
# List devices
pulseview
# CLI capture (device-dependent)
sigrok-cli --driver fx2lafw --config samplerate=1MHz \
--channels 0=SDA,1=SCL \
--samples 1m \
--protocols i2c
3. I2C デコードで想定される内容
| フェーズ | 信号線 |
|---|---|
| START | SCL が High の間に SDA が Low になる |
| アドレス + R/W | 7 ビット + ACK |
| データバイト | バイトごとに ACK |
| STOP | SCL が High の間に SDA が High になる |
アドレスで NACK が発生する場合は、0x48 が誤っているか、デバイスがリセット状態に固定されています。
4. SPI デコード
モード(CPOL/CPHA)、ビット順(通常は MSB ファースト)、CS の極性、ワードサイズを確認します。skills/kernel-dev/bus-drivers-i2c-spi の spi_setup() と比較してください。
5. UART デコード
ボーレート(9600/115200)、フレーム(8N1)、信号の極性を設定します。非同期通信では、ロジックアナライザーのサンプリングレートをボーレートの 4 倍以上にする必要があります。
6. Python で後処理(csv)
import csv
with open("capture.csv") as f:
for ts, ch0, ch1 in csv.reader(f):
# edge detect, reconstruct bits
pass
7. ファームウェアと照合
Logic capture timestamp
├── Match driver reg write sequence
├── Compare inter-byte delay vs datasheet max
└── Flag extra clock pulses (mode fault)
8. エージェントの使用方法
/protocol-analysis Decode this I2C capture — device NACKs after register 0x0F write
よくある問題
| 症状 | 原因 | 修正方法 |
|---|---|---|
| デコード結果が乱れている | サンプリングレートが誤っている | バス速度の 4 倍以上にする |
| 信号線が浮いている | プルアップがない | 内部プルアップまたは外部プルアップを有効にする |
| SPI のビット位置がずれる | モードの不一致 | RM の CPOL/CPHA 表を参照する |
| UART のフレーミングエラー | ボーレートのずれ | 実際のビット時間を測定する |
| デコーダーがない | sigrok のビルドに不足がある | sigrok-cli とデコーダーをインストールする |
関連スキル
skills/baremetal/spi-i2c-baremetal— ファームウェア側のプロトコルskills/baremetal/uart-serial-baremetal— UART の設定skills/kernel-dev/bus-drivers-i2c-spi— カーネルのトランザクションskills/profilers/strace-ltrace— ユーザー空間のシステムコールトレースに相当skills/embedded/openocd-jtag— SWD デバッグと並行したスコープ測定
コメント
Markdown 対応