PYNQ JTAGでZynqとRISC-Vをまとめてデバッグ(失敗)
Xilinxのフォーラムを見てたらこんなのがあった
以前SCR1をFPGAで動かしたときにFPGAとRISC-Vで別々のJTAGケーブルが必要なのが面倒だと思った。これができれば1本のケーブルで全部できるやん!と思ってやってみた
結果、JTAGは繋がった様だがOpenOCDからRISC-Vに接続できなかった。
他にも調べるとZynq UltraScale とRocket Chipについての記事が見つかった
これもBSCANについて記載があるがnot workとも書いてる
RISC-V Hardware Design: Debug via BSCAN Chain - Edgeboard RISC-V Series - Pengcheng Xu's Place
実験環境
- PYNQ-Z1
- Vivado&Vitis IDE 2020.2
- riscv-openocd (最新版をgit clone)
- riscv-gnu-toolchain (最新版をgit clone)
- SCR1
PL部
以下JTAG回りの実装で認識できそうなところまではできた
BSCANマスターが二つあるのは一つをDebug Hubに繋げないとILAが使えなくなった為
Debug HubのクロックはPLのクロックを接続している
PS部
JTAGに関しては何もしていない
PLへのクロック・リセット供給とSCR1コアをスタートする位
OpenOCD
cfgファイル
interface ftdi transport select jtag ftdi_vid_pid 0x0403 0x6010 ftdi_layout_init 0x0098 0x008b ftdi_channel 0 adapter speed 1000 jtag newtap zynq_pl bs -irlen 6 -ircapture 0x1 -irmask 0x03 \ -expected-id 0x23727093 \ -expected-id 0x13722093 \ -expected-id 0x03727093 \ -expected-id 0x03736093 jtag newtap zynq cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id 0x4ba00477 jtag newtap riscv cpu -irlen 5 target create riscv.cpu riscv -endian little -chain-position riscv.cpu -coreid 0
実験結果
まずはそのままBitStreamを書き込みHardware Managerで見てみると
Hardware Targetが二つになっている
下のTargetに接続するとデバイスがないエラーになるがPSからClockを供給していないので想定通り。
次にPSを動作させRISC-Vがリセット解除されてから改めて接続。IDcodeやIR lengthがSCR1と同じなので認識されている様子
これでいけると思ったが、Hardware Managerを切断しOpenOCDを起動するとPLとPSは繋がるがRISC-Vが見つからずエラーになる
Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : clock speed 1000 kHz Info : JTAG tap: zynq_pl.bs tap/device found: 0x23727093 (mfg: 0x049 (Xilinx), part: 0x3727, ver: 0x2) Info : JTAG tap: zynq.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd), part: 0xba00, ver: 0x4) Info : JTAG tap: riscv.cpu tap/device found: 0xffffffff (mfg: 0x7ff (<invalid>), part: 0xffff, ver: 0xf) Error: riscv.cpu: IR capture error; saw 0x1f not 0x01 Warn : Bypassing JTAG setup events due to errors Error: dtmcontrol is 0. Check JTAG connectivity/board power. Warn : target riscv.cpu examination failed Info : starting gdb server for riscv.cpu on 3333 Info : Listening on port 3333 for gdb connections
多分Hardware TargetのPS、PLがある方をopenしているからだと思うがOpenOCD上でHardware Targetの切り替え方法が分からずここで終了