I2C シリアル分析ツール ( I2C-ROMデータ合成 ) |
I2C分析は、汎用のシリアル分析でも可能だったですが、より積極的に特化したツールを作りました
アドイン機能を利用しますので、ユーザにてカスタマイズ改造も可能です
1.サンプリング
任意のI2Cデータ、SCL、SDA、の2信号をサンプリングします
分析ツールが、以下のch位置を使うように出来ていますので合わせて下さい
信号名 | ロジアナCH |
SCL | CH0 |
SDA | CH1 |
サンプリングCLKは、SCLの幅(片振幅)に対して、6倍以上の高速にして下さい
この例は、SCL幅(片振幅)6us、サンプリングCLK
= 1us
2.分析
2カーソルで適当に囲み、分析をかけます。上の画面のように”START”を含んで、少し範囲を大きくとって下さい
メニュー → 分析 → アドインプログラム
有効範囲 = 全CH
|
2カーソル範囲のI2Cデコードです 範囲は、どこから始めてもOKです START状態を見つけてそこからデコードします 分析用語は、I2C仕様に準拠しています |
デコード範囲が大きいと、コマンドプロンプト画面では前半表示が消えていきます
広範囲を見る場合、テキストがフルで同時に作成されていますのでそちらをご覧下さい
テキストファイル | I2C_ctl.txt |
3.シリアルROMデータのフル合成(デコード)
当ロジアナはメモリが膨大にあることを使って、I2CシリアルROMデータをフル合成(デコード)してみます
よくあるシリアルROMの動作として、デバイスのプログラム用です
電源起動で、接続されたデバイスに対して、プログラムデータをI2Cでダウンロードするというものです
ならばその全てをサンプリングすれば、シリアルROMの中身をそっくり合成できることになります
前述の分析プログラムADIN_protocol は、プロトコルをテキストで全デコードしていますので、いろいろ邪魔な部分を取り除けば可能です
ここでは、あるUSB用CPUのプログラム格納用シリアルROMが、起動時、プログラムデータをI2Cでダウンロードするので、それを全サンプリングし、バイナリファイルとしてROMファイル合成をしてみます
メモリをある程度大きくして、シリアルデータが終わるところまでサンプリングします
ここは、417msで終わりました。(縮小倍率を1/655にしてるので、細かいデータ状況は隠れていますが、どこでも拡大して確認できます)
2カーソルをその両端に移動させ、
同じく、メニュー → 分析 → アドインプログラム
ROM合成プログラム名 | ADIN_i2c_rom |
出力バイナリファイル名:I2C_data.bin
START SlaveADR A1 RD ACK 7E NACK START SlaveADR A0 WR ACK 00 ACK START SlaveADR A1 RD ACK C2 ACK 47 ACK 05 ACK 31 ACK 21 |
I2C_ctl.txtのログを見る ハンドシェイク手順 ROMデータには関係ない ↑ ← C2 ROM先頭データ ← 47 ROM第2データ ← 05 ROM第3データ ... |
つまり、ROMデータだけを抽出すると、C2、47、05、...
自動で合成された I2C_data.bin の先頭のダンプ |
作成された、I2C_data.bin は、4kbyteで、このシリアルROMの中身とコンペアで一致が確認できています
メモリは膨大にあります。1MサイズのシリアルROMでも合成できます
このダウンロード手順は、一般的手順だと思うので、このADIN_i2c_rom でそのまま対応できるデバイスはあると思います
しかし、デバイスによって、手順は異なるので、その場合は、プログラムをカスタマイズしなければなりません
この作業は、各デバイスのデータシートを解析する必要があるのでユーザ自身でして下さい
当社のサポートはソースを開放するのみとなります。
4.自由な改造
ソースが公開されてますので、自由に改造下さい
かなりコメントはあるし、難易度はそれほどではありません
コンパイラ | VC6のVC++ |
プロジェクトタイプ | win32 console application |
メインソース | ADIN_protocol.cpp |
マイクロソフトの旧式のコンパイラで、現在のコンパイラで読み込ませるとアップデートしてくれます。他社製でもいけると思います。
ダウンロード WEB → アドイン
分析プログラム名:ADIN_protocol.exe
ROM合成プログラム名:ADIN_i2c_rom.exe
2つのプロジェクト、メインソースは同じです。ADIN_protocol.cpp
そのファイル先頭で、
int BINOUT = OFF; //ROM合成 ON=有、OFF=無
の定義があります
OFF | 分析プログラムが作成 |
ON | ROM合成プログラムが作成 実行ファイル名は同じになるので、ADIN_i2c_rom.exeにリネームします |
ダウンロード時の注意
バージョンUPのページからダウンロードできます
分析プログラム名 | ADIN_protocol.exe |
以上と、そのソースを含めたプロジェクト一式が含まれます
以下のみ含まれませんので、リクエストを別途メールで要求下さい(無料)
ROM合成プログラム名 | ADIN_i2c_rom.exe |
要求の際、以下の情報を添付下さい
1.ロジアナシリアル番号
2.使用する予定のI2Cデバイス、メーカー名
4.I2C以外への展開
本機能のプロトコル変換はI2Cに限定したものではありません
本ソースを理解いただくと、ユーザーが任意のプロトコルの変換プログラムを作成することができます
もし、当社に特注で、プロトコル変換、ROMデータ合成を依頼されたい場合は御連絡下さい
※当ロジックアナライザーは、デルタコア社オリジナル開発です。
記載されている各名称、製品名は、各社の商標、または、登録商標です。 |