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

分析プログラム名 ADIN_protocol.exe


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データ合成を依頼されたい場合は御連絡下さい



※当ロジックアナライザーは、デルタコア社オリジナル開発です。
記載されている各名称、製品名は、各社の商標、または、登録商標です。

Copyright (c)  デルタコア All Rights Reserved.