JTAG

2026.01.07

LatticeのJTAGピン配置

いま、JTAGバウンダリスキャンの案件を実施しています。

古い産業用ネットワーク機器のためのバウンダリスキャンなのですが、その装置は回路図が無いので、まずはJTAGのコネクタがどこにあるかを探さなければなりません。

その産業機器で使われているのはXILINXの大規模なほうのFPGAと、MotorolaのMPC8241でした。

そこで見つけたのが8ピン1列のピンヘッダ。どうもJTAGっぽい。どうやらLatticeにはJTAGの8ピンがあるようです。

ケーブル名はHW-USB-2Aというそうです。

1767872141_lattice_jtag

もしかしたらLattice配列かもしれないと思いつないでみたら、ビンゴ!

XILINXのFPGAなのにLatticeの配列を使っていました。

また、MPC8241もバウンダリスキャンで自動認識できないな・・・と思っていたら、自分の過去のブログに助けられました。

https://nahitafu.cocolog-nifty.com/nahitafu/2005/01/mitoujtag_3.html

MPC8241はJTAGのIDCODEを持っていないから自動認識できないのです。手動で追加したら、見事にJTAGで見えました。

 

2004年ごろはMPC8241というCPUが非常に多くの機器で使われました。

玄箱をはじめ、ADSL装置、VSDL装置、ルータなどのネットワーク機器で大人気でした。

なぜこんなに使われたのか調べてみると、PCIを内蔵していたからPCI接続の周辺チップとそのままつなげることができたこと、Power PCでLinuxの成果を無料で使用できたこと、低消費電力で266MHzくらいで動作したことなんだろうなと思います。

 

| | コメント (0)

2025.10.05

MITOUJTAGでMAX10とCyclone10の書き込みを試してみた

最近、MITOUJTAGの問い合わせが少しずつ増えてきています。

ALTERAのMAX10やCyclone10に書き込みができるかどうかを問い合わせいただくことが多いので検証してみました。

検証に使用したのはTrenzElectronic社のTEI0001(MAX10)とTEI0003(Cyclone10)。

Qualtus Primeをダウンロードします。数十GBの容量があるはずなのに1時間もかからずにインストールができました。これはありがたい。

 

Quartus

まずはバウンダリスキャン。

Cyc10

順調順調。

Cycloneに対してはQuartusはsofというファイルを作るのですが、これをrbfファイルに変換することでMITOUJTAGから書き込むことができるようになります。

rbfを生成するには、File→Convert Programming Filesを開いて、開いたダイアログで、Programming File Typeをrbfにし、SOF Dataのところで右のAdd Fileを押してSOFファイルを追加し、Generateボタンを押します。

Generatepbf

MITOUJTAGでCyclone10をクリックしてRBFファイルを流し込めば書き込みできます。

 

次にMAX10ボードですが、まずはバウンダリスキャン。

Max10

これも順調。

MAX10のプログラミングデータはpofというファイル形式なのですが、これを今の直接MITOUJTAGで書き込むことはできません。POFからSVFに変換して、SVFを実行することで書き込みができます。

SVFを生成するにはQualtus Programmerを起動して、Programmerの中からFile→Create JAM, JBC, SVF or ISC Fileを実行します。

Generatesvf1 

そして、File formatをsvfにしてOKボタンを押します。

Generatesvf2

SVFは変数を持ったりすることができない単純なファイルなので、TCK周波数は生成時に使用します。

例えば1秒待つというような処理を行うとき、TCK周波数が25MHzなら25MHz回のトグルを行うというやり方で必要な時間を確保するようになっています。ですのでTCK周波数の設定を変えると出来上がってくるSVFファイルも微妙に変化します。

  

SVFを経由すればだいたい何でも書き込めるのですが手順が多少めんどくさくなります。やはりPOFを書き込めるようにしたいですよね。

MAX2の時にPOFからSVFに変換する手順を根性で解析したので、今回も頑張って解析してみようかと思います。

| | コメント (0)

2025.09.17

MITOUJTAGを通じたVivadoからの操作

MITOUJTAGにはXVCサーバが内蔵されているので、Vivadoからリモート接続することができます。

Mitoujtagxvc

この方法を使うと、Vivadoに対応していないようなJTAGケーブルでもMITOUJTAGを介してVivadoから操作することができるようになります。MITOUJTAG Free版でも使えます。

ただし作りこみが中途半端なので接続が切れると面倒なことになります。要望が多ければ直します。

 

詳しいやり方はPDFの資料をお読みください。

ダウンロード - mitoujtage38292e9809ae38198e3819f.pdf

 

 

| | コメント (0)

2025.08.13

OpenOCDのMPSSE対応を進めています

OpenOCD 0.12をMinGW環境でFTD2XXを使って動くように改良しています。

わざわざ仮想マシンを立ち上げたり、FTドライバをlibusbで置き換えたりせずに、Windowsのネイティブアプリとして動くようにしています。
あばよZadig。よろしくFTDI。

Openocd3

コードを追ってみると、OpenOCDのmpsseって、libusbで非同期I/Oとか、結構面倒なことやっているんですかね。

mpsse_flushという関数の中でデータの送受信をしているのだけど、リングバッファとか、bit_copyという関数がいろいろやっています。

ただ、送信バッファと受信バッファの扱いを正しく移植すれば動きそうな感じです。

おおっ、MinGW-FTD2XX-OpenOCDで何かのデータが取れた!!JTAGでつながったっぽい。たぶんPSとPLがつながっているのが理解できないんだろうな。

Openocd1

MinGWからFTDIのftd2xx.dllを直接呼び出せるぞ!libusbもwinusbもZadigも使わずに。あたりまえだが

Openocd2

はっきり言って、なんでこんなものをみんな使っているんだ!?すぐ落ちるし、設定は面倒だし。

| | コメント (0)

2025.08.06

MPSSE-JTAGケーブルの一般販売

技術書典で頒布していたMPSSE-JTAGケーブルの一般販売を始めました。

https://tokudenkairo.co.jp/quote/detail.php?pid=133

Np1167b

MITOUJTAG Freeで使うように開発していますが、ROMを書き換えればVivadoから使うこともできます。
どうぞよろしくお願いいたします。

それから、こちらの紙の本も特電オンラインショップで販売します。あわせてご利用ください。

Jtagbook

 

次の目標はこのMPSSE-JTAGケーブルをOpenOCDで使えるようにすることです。
OpenOCDをWindows環境で使うには邪悪なZadigやWSL環境が必要になりますが、そういうことをせずにOpenOCDのexeからそのまま使えるようにすることです。

昔のOpenOCDにはlibftdiが使われていたのですが、どこかで削除されてしまいました。

FTDIのデバドラがプロプライエタリだからという理由で、winusbやlibusbを使うようになってしまい、その結果、Windows環境ではZadigを使わないと動かないようになってしまいました。

リンクしたライブラリがプロプライエタリかなんていうことは、大多数の人に関係ないことです。
そんなくだらない理由でFTDIドライバを廃して、クソみたいなlibusbとZadigを強要するようになったのです。

これはユーザのためになりません。

ということで、夏休みにOpenOCDのコードを読み解いて、libftdiが使えるバイナリを作って配布したいと思います。

 

| | コメント (0)

2025.07.22

MPSSE-JTAG基板の新しいやつが届いた

MPSSE-JTAG基板の新しいやつが届きました。

Jtagkiban

JLCPCBで実装までやって50個届きました。

1個だけ検査してみたらちゃんと動きました。

8月になったら販売を開始したいと思います。

| | コメント (0)

2025.07.01

MPSSE-JTAGケーブルの再生産

技術書典でも頒布したFT232Hを使ったMPSSE-JTAGケーブルを再生産することにしました。

Mpsseboard

再生産に伴い少し改良も加えています。できるだけ早く販売開始できるように頑張ります。

JLCPCBに基板と実装のデータを送ったので、10日くらいで出来上がってくるだろうから7月中旬には販売開始できるかな。

Mpsseboard2

と言っているそばから1つ逆になっていました。やりなおし。

このJLCPCBの部品向きチェックってやりにくくないですか?

この工程は本当に神経をすり減らします。

Mpsseboard3

| | コメント (0)

2025.06.29

技術書典で頒布したUSB-JTAGをVivadoで使う方法

技術書典で頒布したUSB-JTAGがVivadoで使えることが分かりました。

昔のVivadoはDigilentのUSB-JTAGしか対応していなかったのですが、最近(2023以降?)は任意のFTDIデバイスを認識できるようになったようです。

ですので、特電製のMPSSE-JTAGケーブルをXILINXデバイスの乗った基板につなげれば、

Mpssevivadoconnect

VivadoやXDB、Vitisからも認識させることができます。

Mpssevivado

 

どうやるかということですが、VivadoでHardware Managerを開き、program_ftdiというコマンドを使います。

EEPROMにXILINXの秘密のコードを書かなければならないので、FT_PROGではなくVivado上でプログラミングする必要があります。

ただし、Vivado 2022.1のものではダメだったので、最新のVivado 2025.1のLab editionを使ってプログラミングしました。

※Lab editionとは論理合成とかの機能がなくてデバイスプログラミングだけの機能を抽出したものなので、1.8GByteくらいのサイズでダウンロードできます。

program_ftdiだけを実行すると以下のように出ていろいろオプションがあることがわかりますが、

WARNING: [Common 17-259] Unknown Tcl command 'program_ftdi' sending command to the OS shell for execution. It is recommended to use 'exec' to send the command to the OS shell.

****** program_ftdi v2025.1
**** Build date : Apr 8 2025-10:48:14
** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
** Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.


Short Description:
Write/Read to FTDI EEPROM for Xilinx JTAG Tools support

Syntax:
program_ftdi {-write -ftdi=<ftdi_part> -serial=<serial_number> [options] |
-write -filein=<cfg_filein> |
-read [-fileout=<cfg_fileout>] |
-erase} [-help]

シリアル番号などを適当なものをセットしなければならないようなので以下のようにしました。

program_ftdi -write -ftdi FT232H -v Xilinx -b "TOKUDEN NP1167A" -s AA001 -d "TOKUDEN MPSSE JTAG"

AA001というのは適当に付けたシリアル番号です。-vはベンダですが、XilinxにしないとLinux版Vivadoで認識されないとかあるらしいのでXilinxにしておきます。ボード名とデスクリプションは本当に任意のようです。

プログラミングに成功すると、

WARNING: [Common 17-259] Unknown Tcl command 'program_ftdi -write -ftdi FT232H -v Xilinx -b TOKUDEN NP1167A -s AA001 -d TOKUDEN MPSSE JTAG' sending command to the OS shell for execution. It is recommended to use 'exec' to send the command to the OS shell.

****** program_ftdi v2025.1
**** Build date : Apr 8 2025-10:48:14
** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
** Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.


INFO: ftdi part = FT232H
INFO: Serial = AA001
INFO: Detected 1 devices
INFO: Device location = 18
INFO: fwid=0x584a0002
INFO: FTDI Programming Passed

 

FTDI Programming Passedと表示されます。

これでVivadoから認識されるようになると同時に、MITOUJTAG Freeからも使えます。

Mpssemjf

一つ注意点があって、Vivadoのprogram_ftdiは、既に書き込まれているROMには上書きしてくれないようです。

そのため、

program_ftdi -erase

program_ftdi -write -ftdi FT232H -v Xilinx -b "TOKUDEN NP1167A" -s AA001 -d "TOKUDEN MPSSE JTAG"

と2つのコマンドに分けて実行してください。

これで、両使いのMPSSE-JTAGケーブルにアップグレードできます!

| | コメント (0)

2025.06.22

同人誌が100冊届きました

技術書典で頒布した新刊「新版 知っておきたいJTAGの基礎知識」の物理本が届きました。

100冊。すごい重さだ。

Book1

たぶん35kgくらいあります。

これを必要な数だけ取り分けて技術書典事務局に送りました。

Book_20250630005501

 

| | コメント (0)

2025.06.08

JLCPCBの実装不良(2)

今日もJLC基板の不具合を直しました。

この基板はUSBをつないだらアッチッチになった。原因がお分かりいただけたであろうか?

Fault3

Faulr4

普通に実装していたらこんな上のほうがブリッジすることはないので、やはりLCSCが再生品だったのではないかと疑わざるを得ません。

| | コメント (0)