Skip to content

Debug embedded microblaze using XVC JTAG in AWS FPGA shell #641

Open
@augierg

Description

@augierg

Is there any undocumented flow for embedded FW development using a MicroBlaze inside the CL, with the AWS-FPGA HDK?

In my on-premise environment, using u200 card, and following the instructions from aws-fpga-f1-u200/Virtual_JTAG_XVC.md, I am able to

  1. launch the XVC PCIe driver on the host with the U200 card
Description:
Xilinx xvc_pcie v2018.3
Build date : Apr 25 2024-12:18:59
Copyright 1986-2018 Xilinx, Inc. All Rights Reserved.

INFO: XVC PCIe Driver character file - /dev/xil_xvc/cfg_ioc0
INFO: XVC PCIe Driver configured to communicate with Debug Bridge IP in AXI mode (PCIe BAR space).
INFO: PCIe BAR index=0x0002 and PCIe BAR offset=0x0000
INFO: XVC PCIE Driver Loopback test successful.

INFO: xvc_pcie application started
INFO: Use Ctrl-C to exit xvc_pcie application

INFO: To connect to this xvc_pcie instance use url: TCP:fpga:10201

INFO: xvcserver accepted connection from client 192.168.8.104:43220 
  1. then connect to the MDM from XVC virtual cable, and control the MicroBlaze, in XSDB console
xsdb% connect -xvc-url tcp:fpga:10201                                                                                                                                               
tcfchan#1
xsdb% targets                                                                                                                                                                       
  1  debug_bridge
     2  Legacy Debug Hub
     3  Legacy Debug Hub
     4  MicroBlaze Debug Module at USER1.2.2
        5  MicroBlaze #0 (Running)
xsdb% jtag servers                                                                                                                                                                  
  digilent-ftdi cables 0
  xilinx-ftdi cables 0
  digilent-djtg cables 0
  bscan-jtag cables 0
  xilinx-xvc:fpga:10201 cables 1
xsdb% jtag targets                                                                                                                                                                  
  1  Xilinx Virtual Cable fpga:10201
     2  debug_bridge (idcode 0a003093 irlen 6 fpga)
        3  bscan-switch (idcode 04900102 irlen 1 fpga)
           4  debug-hub (idcode 04900220 irlen 1 fpga)
           5  bscan-switch (idcode 04900102 irlen 1 fpga)
              6  debug-hub (idcode 04900220 irlen 1 fpga)
              7  mdm (idcode 04900500 irlen 1 fpga)
xsdb% targets                                                                                                                                                                       
  1  debug_bridge
     2  Legacy Debug Hub
     3  Legacy Debug Hub
     4  MicroBlaze Debug Module at USER1.2.2
        5  MicroBlaze #0 (Running)
xsdb% target 5                                                                                                                                                                      
xsdb% targets                                                                                                                                                                       
  1  debug_bridge
     2  Legacy Debug Hub
     3  Legacy Debug Hub
     4  MicroBlaze Debug Module at USER1.2.2
        5* MicroBlaze #0 (Running)
xsdb% rst                                                                                                                                                                           
xsdb% Info: MicroBlaze #0 (target 5) Stopped at 0x0 (External debug request)

However, we porting the exact same CL to the AWS F1, using the instructions from aws-fpga/Virtual_JTAG_XVC.md

ubuntu@ip-172-31-41-160:~$ sudo /usr/local/bin/fpga-start-virtual-jtag -S 0
Starting Virtual JTAG XVC Server for FPGA slot id 0, listening to TCP port 10201.
Press CTRL-C to stop the service.

The xvc fails to identify the valid targets, including the MDM and microblaze, as shown below

xsdb% jtag servers         
  digilent-ftdi cables 0                                                                                                                                      
  xilinx-ftdi cables 0
  digilent-djtg cables 0
  bscan-jtag cables 0
  xilinx-xvc:ec2-52-34-30-133.us-west-2.compute.amazonaws.com:10201 cables 1
xsdb% jtag targets                                                                                                                                            
  8  Xilinx Virtual Cable ec2-52-34-30-133.us-west-2.compute.amazonaws.com:10201                                                                              
     9  debug_bridge (idcode 0a003093 irlen 6 fpga)
       10  bscan-switch (idcode 04900102 irlen 1 fpga)
          11  unknown (idcode 09200204 irlen 1 fpga)
          12  unknown (idcode 09200440 irlen 1 fpga)
xsdb% targets                                                                                                                                                 
  1  debug_bridge                                                                                                                                             
     2  09200204
     3  09200440
xsdb%                  

I even tried using the xilinx xvc driver, similar to the on-premise u200 flow, but that leads to errors indicating incompatibility with the PCIe BAR space

ubuntu@ip-172-31-41-160:~$ sudo /home/ubuntu/xvc/xvcserver/bin/xvc_pcie -s TCP::10201

Description:
Xilinx xvc_pcie v2018.3
Build date : Apr 25 2024-12:18:59
Copyright 1986-2018 Xilinx, Inc. All Rights Reserved.

INFO: XVC PCIe Driver character file - /dev/xil_xvc/cfg_ioc0
INFO: XVC PCIe Driver configured to communicate with Debug Bridge IP in AXI mode (PCIe BAR space).
INFO: PCIe BAR index=0x0002 and PCIe BAR offset=0x0000
Loopback test length: 32, pattern abcdefgHIJKLMOP FAILURE
	Byte 0 did not match (0x61 != 0x01 mask 0xFF), pattern abcdefgHIJKLMOP
ERROR: XVC PCIE Driver Loopback test failed. Error: Success
Exiting xvc_pcie application.

Help on the suggested flow to debug embedded FW using the XVC virtual JTAG cable on the F1 instance would be appreciated at this point

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions