XJAPI ソフトウエア & ハードウエア間インターフェイス
XJAPI により、XJLink やPXI ハードウエアプローブからJTAG チェインに対して、ローレベルアクセスができるようになります。これにより、開発基板、評価ボード、テストシステムなど各種システムへの統合が容易になります。
高速USBを搭載するJTAGハードウエア(XJLink / XJLink2)から、アプリケーションプログラミングインターフェイス(XJAPI )を用いて、JTAGチェインを直接制御します。
あるいは、高速PXI に搭載されたJTAGハードウエア(PXI-01)から、アプリケーションプログラミングインターフェイス(XJAPI )を用いて、JTAG チェインを直接制御します。
主な効果
- 高速通信・ダウンロードUSB (480 Mbps), JTAG (60 Mbps peak)
- USB によるJTAG アクセス。小型・軽量・ポータブル。研究室・フィールドなど、あらゆる場所で使用できる
- PXI によるJTAG 接続もサポート。(3U/32 bit PXI/c PCI bus interface)
- ライセンスキーはプローブ本体に内蔵されるので、あらゆるホストマシンで使用できる
- あらゆるデバイスのピン配置をサポート( ARM, Xilinx, Altera など)
- カスタマイズが容易に出来る
機能
- JTAG/IEEE 1149.x 準拠
- 高速USB2.0 インターフェイス(480 Mbps) USB 1.0 & 1.1にも対応
- USB バスパワーに対応(外部電源不要)
- ターゲットにも電源供給可能(3.3V, <100 mA)
- TCKクロック周波数60 MHzまで
- 調整可能なJTAG 信号の終端
- 信号スキュー自動制御
- ピン配置がソフトウエアで設定可能
- JTAG 信号は、+5V 許容
- JTAG のスペア信号の利用。電源投入時に、基板をリセットさせるなど。
- サンプルファイル、ライブラリなどアプリケーション例を提供
- C、C++ によって開発できる
- XJDemo による、動作確認、トレーニング
- Windows® 10 / 8 / 7 / Vista に対応
XJAPI の機能
APIのヘッダファイルはここからダウンロードできます: XJAPI.h
以下に機能の要約を示します。
初期化/APIの終了
ハードウェアとピン配置のセットアップを行う関数です。動作周波数(XJAPIは入力された周波数に最も近いXJLinkが設定可能な周波数に自動的に選択します)、ピン配置、JTAG経由の電源供給の有無を規定できます。
XJAPI_HardwareSetup( frequency, pinMap, powerOn );
ハードウェアを開放する関数です。APIを終了する前に必ず実行する必要があります。
XJAPI_HardwareRelease( );
ピン配置を設定する関数です。この関数は、コネクタの20ピンに対応した20のエレメントを持つ配列変数をパラメータとして持ちます。配列の添字(I)は、ピン I+1に対応します。以下の固定ピンは設定できません。
- pin 1 – VCC
- pin 2 – NC
- pin 4 – GND
- pin 20 – GND
※アレイは0から始まり、ピン番号は1から始まるため、ピン10は配列[9]になります。
XJAPI_SetPinMap( pinMapping, pinTypes[20], powerOn );
低レベルのJTAGアクセス
クロック周波数を設定する関数(100kHz~60MHz)
XJAPI_SetFrequency( frequency );
TMSリセットを出力する関数
XJAPI_TmsReset( );
特定のJTAGステートに移行する関数
XJAPI_GotoState( state );
DR又はIRスキャン終了後にシステムが移行する最終ステートにセットする関数。通常、このステートはJTAG_IDLEステートです。
XJAPI_SetEndState( endir, enddr );
JTAGチェインの特定の回数クロック送る関数
XJAPI_ClockChain( count );
高レベルのJTAGスキャン関数
JTAGのDRスキャン又はIRスキャンを実行する関です。通常、システムはこのスキャン終了後にJTAG_IDLEステートに移行します。異なるステートに設定したい場合はXJAPI_SetEndState関数を使用してください。
スキャンのタイプを(DR又はIRに)規定します。スキャンするビット長とデータバッファのアドレスも規定します。“outData”は出力バッ ファで0バイト目の0ビット目を先頭にシフトアウトします。“inData”は入力バッファで0バイト目の0ビット目を先頭にシフトインします。
XJAPI_Scan( scanType, length, outData, inData );
複数回のスキャンを実行する関数です。DRスキャンとIRスキャンが混在した複数のスキャンチェーンに対して、利用可能です。
※“nScans“以外の引数は、全て”nScans“個の配列変数になります。
XJAPI_ScanMultiple( nScans, scanTypes, length, outData, inData );