フォト
無料ブログはココログ

MyList

« 風立ちぬ | トップページ | ネットで古本 »

2013年9月16日 (月)

usb_jtag + カメレオンUSB FX2

usb_jtagはkolja waschkさんが公開している、AlteraのUsb-Blasterケーブルと同じプロトコルを使用したJTAGアダプタで、

On the USB side, it now uses the same protocol as Altera's USB-Blaster. The drivers that I developed for my adapter do work with the Blaster as well. To the host PC, the only really noticeable difference are vendor and product ID and the product description string (0x16C0/0x06AD/USB-JTAG-IF instead of 0x9FB/0x6001/USB-Blaster).

だそうだ。
 difference are vendor and product ID and the product description string
って意味深だなぁ...

 Usb-Blasterの構成はFT245+CPLDらしく、探すとパチモン互換品もたくさんある。
usb_jtagには3つのタイプがあって

  • Variant A: Cypress FX2
     FT245+CPLDをCypressのEZ-USB FX2のファームウェアで実現したもの
  • Variant B: FTDI FT245 plus CPLD
     FT245+CPLDで実現したもの
  • Variant C: SiLabs C8051F32x
     FT245+CPLDをSiLabのC8051F32x のファームウェアで実現したもの

 カメレオンUSB FX2でVariant Aを作ってみることにした。

Sourceforgeからixo-jtag-code-204-usb_jtag-trunk.zipをDL・展開して、device/C51/ ディレクトリでmakeする。
なお、コンパイルにはSDCCが必要である。

 何も指定しないでmakeすると、FX2のポートCを使用する。56pinのカメレオンUSB FX2では使用できないので hw_basic.cを変更したhw_chameleon.cを作成して、ポートAを使用するようにした。

-- hw_chameleon.c (太字の部分を変更する) --

//-----------------------------------------------------------------------------
// comment out (undefine!) if you don't want PS, AS or OE signals
//#define HAVE_PS_MODE 1
//#define HAVE_AS_MODE 1
//#define HAVE_OE_LED  1
// comment in (define!) if you want outputs disabled when possible
//#define HAVE_OENABLE 1 #define OEC           OEA  /* Port C -> Port A */

/* JTAG TCK, AS/PS DCLK */
sbit at 0x87          TCK; /* Port C.2 -> A.7 */
#define bmTCKOE       bmBIT7
#define SetTCK(x)     do{TCK=(x);}while(0)
/* JTAG TDI, AS ASDI, PS DATA0 */
sbit at 0x80          TDI; /* Port C.0 -> A.0 */
#define bmTDIOE       bmBIT0
#define SetTDI(x)     do{TDI=(x);}while(0)
/* JTAG TMS, AS/PS nCONFIG */
sbit at 0x81          TMS; /* Port C.3 -> A.1 */
#define bmTMSOE       bmBIT1
#define SetTMS(x)     do{TMS=(x);}while(0)
/* JTAG TDO, AS/PS CONF_DONE */
sbit at 0x83          TDO; /* Port C.1 -> A.3 */
#define bmTDOOE       bmBIT3
#define GetTDO(x)     TDO

環境変数 HARDWARE=hw_chameleon を設定してmakeする。

$ export HARDWARE=hw_chameleon; make

 カメレオンUSB FX2 をUrJTAGでバウンダリスキャンする。このボードに載っているCPLDはAlteraのEMP570T100なのでAlteraからBSDLファイルをDLしてデバイスを登録すると認識した。

C:\Program Files\UrJTAG>jtag

UrJTAG 0.10 #1502
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

WARNING: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> cable UsbBlaster
Connected to libftd2xx driver.
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000010100010000011011101 (0x00000000020A20DD)
  Manufacturer: Altera
  Part(0):         EMP570T100
  Stepping:     0
  Filename:     c:\program files\urjtag\data/altera/emp570t100/emp570t100
jtag>

 ナイトライダーをやってみた。

Chameleonusb0399 ←リンク先にAVI
「chameleonUSB.avi」をダウンロード

カメレオンUSB FX2はFX2のPortB、PortD、FIFOAD0、FIFOAD1、SLOEがEMP570T100に接続してあるので、ファームウェアはEEPROMに書かないでコンフィグ時だけファームウェアをロードした方が良さそうである。

« 風立ちぬ | トップページ | ネットで古本 »

JTAG」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: usb_jtag + カメレオンUSB FX2:

« 風立ちぬ | トップページ | ネットで古本 »