Updating the BMC

Programming DPUs/SmartNICs via the JTAG Interface

Platform
Napatech DPU
Content Type
Application Note

Use this information to program new BMC firmware images with one Altera™ FPGA Download Cable II.

Before you begin

Make sure that you have:
  • Installed the Quartus® Prime Pro Programmer. For information on how to install the Quartus® Prime Pro Programmer, consult the Altera™ documentation.
  • Placed the Napatech package for programming DPUs/SmartNICs on the remote server, where the Altera™ FPGA Download Cable II is connected to.
  • An Altera™ FPGA Download Cable II.
  • A Passive FPGA Download Cable converter box.
Note: Do not program the FPGA/BMC on the same system that is hosting the DPU/SmartNIC as this may cause the host to crash or reboot during programming.

About this task

After firmware images for the BMC are programmed, it is required to power cycle the server, where the DPU/SmartNIC is installed.
Note: The following prompts are used to indicate which part of the system to run the provided commands on.
  • host#: The server, where the DPU/SmartNIC is installed.
  • soc#: The SoC on the DPU.
  • prog#: The remote server, where the Altera™ FPGA Download Cable II units are connected to.

Procedure

  1. Connect the Altera™ FPGA Download Cable II to the converter box as illustrated in the following figure.

    Page-1 Sheet.4 Sheet.2 BMC chain BMC chain

    This figure shows that one Altera™ FPGA Download Cable II is connected to the converter box for programming the BMC.

  2. Attach the other end of the converter box to the JTAG programming interface on the DPU/SmartNIC.
    For information on the JTAG programming interface of the corresponding DPU/SmartNIC, refer to the relevant documentation.
  3. Connect a USB cable to the Altera™ FPGA Download Cable II.
  4. Install the DPU or the SmartNIC in a server if it is not installed.
    For detailed information for the corresponding DPU/SmartNIC, see the relevant documentation.
  5. Attach the other end of the USB cable to a remote server.
  6. On the remote server, unpack the corresponding Napatech package for programming the DPUs/SmartNICs.
    For example:
    prog# tar -xzvf ipu_fw-1.0.0-eb49d0c7af8-linux.tar.gz
  7. Export the path to the Quartus® Prime Pro Programmer.
    For example:
    prog# export QUARTUS_ROOTDIR="/tools/linux/intel/quartus/22.1/pro/quartus"
  8. Locate the nt_jtag_pgm.sh script in the package.
    For example:
    prog# cd ipu_fw/bin/
  9. Update the DPU/SmartNIC with BMC firmware images.
    If nt_jtag_pgm.sh is not executable, change the permissions to make it executable as follows.
    prog# chmod +x nt_jtag_pgm.sh
    The following command example is for programming the DPU with the BMC firmware images, which are placed in the lib directory of the package.
    prog# ./nt_jtag_pgm.sh --bmc_bundle=../lib \
    --usr_app=../lib/bmcm-main_1.0.bin
    For programming the BMC of the SmartNIC, run the following command:
    prog# ./nt_jtag_pgm.sh --bmc_bundle=../lib
    An output example:
    --------------------------------------------------------------------------------
    Using these environment variable:
      QUARTUS_ROOTDIR  = /tools/linux/intel/quartus/22.1/pro/quartus
      QUARTUS_BIN      = /tools/linux/intel/quartus/22.1/pro/quartus/bin
      SYSCON_BIN       = /tools/linux/intel/quartus/22.1/pro/quartus/../syscon/bin
    --------------------------------------------------------------------------------
    BMC files to program:
      bmcm_pof    = ../lib/201-6001-64_0_17_25.pof
      bmcd_pof    = ../lib/201-6002-64_0_17_25_no_bootloader.pof
      usr_app     = ../lib/bmcm-main_1.0.bin
      factory_app = not_specified
    FPGA file to program:
      fpga_img    = not_specified
    …
    …
    Start verifying...
        Verify in progress...  10
        Verify in progress...  20
        Verify in progress...  30
        Verify in progress...  40
        Verify in progress...  50
        Verify in progress...  60
        Verify in progress...  70
        Verify in progress...  80
        Verify in progress...  90
    Verify complete
  10. Power cycle the server, where the DPU/SmartNIC is installed.
    For example:
    host# shutdown -h now
    It is important to power off the server completely to ensure the PCIe 3.3 V power is off. To do this, power the server down, disconnect the server from all power cables, wait for at least 10 seconds, reinsert power cables and power the server up again.
  11. Detect PCIe devices.
    For example:
    host# lspci -d 1af4:
    An output example on the server where the DPU is installed.
    0d:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    0d:00.1 Ethernet controller: Red Hat, Inc. Virtio network device
    0d:00.2 Ethernet controller: Red Hat, Inc. Virtio network device
    0d:00.3 Ethernet controller: Red Hat, Inc. Virtio network device
    An output example on the SoC of the DPU.
    soc# lspci -d 1af4:
    15:00.1 Ethernet controller: Red Hat, Inc. Virtio network device
    15:00.2 Ethernet controller: Red Hat, Inc. Virtio network device
    15:00.4 Ethernet controller: Red Hat, Inc. Virtio network device
    15:00.5 Ethernet controller: Red Hat, Inc. Virtio network device
    15:00.6 Ethernet controller: Red Hat, Inc. Virtio network device
    15:00.7 Ethernet controller: Red Hat, Inc. Virtio network device