4. Firmware

4.1. Introduction

The recommended FPGA firmware version is v10. It is backward compatible with all dVRK controllers.

Note

This section is an overview, please follow the links provided below for in depth documentation.

There are a few boards with embedded firmware used for the dVRK, either Classic or Si:

  • FPGA1394: FPGA based, designed at JHU for generic robot controllers. dVRK Classic and Si, located in dVRK controllers. Both the board design and firmware are open-sourced. FPGA1394V1 and FPGA1394V2 boot from EPROM. FPGA1394V3 boots from a SD card.

  • Power Indicator board: designed at WPI. dVRK Classic only. Boots from EPROM.

  • ESPM: FPGA based, designed by Intuitive Surgical. dVRK Si only, located in PSM/ECM arm. Board design is not open-sourced, firmware is specific to dVRK and is not open-sourced. Reprogrammed using the ESXX programmer and boots from on-board Flash.

  • ESSJ: FPGA based, designed by Intuitive Surgical. dVRK Si with SUJ only, located in SUJ arms. Board design is not open-sourced, firmware is specific to dVRK and is not open-sourced. Reprogrammed using the ESXX programmer and boots from on-board Flash.

  • dSIB-Si and dSIB-Si-Z: STM32 microprocessor based, designed at JHU for the dVRK Si with SUJ. Boards attached on the back of dVRK Si controllers to interface with the patient’s cart internal wiring. Board design and firmware are open-sourced. Boots from EPROM.

Important

FPGA and firmware is used to reference the FPGA1394 board and firmware unless specified otherwise.

4.2. Upgrade

4.2.1. FPGA1394V1 and V2

There are 3 main ways to upgrade the firmware for the dVRK Classic controllers FPGA1394V1 and FPGA1394V2:

  • For most users: over FireWire

  • For most users with a bricked controller: using OpenOCD with a JTAG adapter

  • For advanced users, FPGA programmers: using Xilinx ISE

See instructions on the mechatronics-firmware wiki.

4.2.2. FPGA1394V3

FPGA1394V3 is used for the dVRK-Si PSM and ECM controllers, and for the newer generation of dVRK MTM controller with DQLA (dual QLA). It can also be used as a replacement for FPGA1394V1 or FPGA1394V2 in an older generation dVRK controller, though this is not normally done. We provide a single Zip file that includes the firmware for all supported uses of FPGA1394V3. The loader finds the correct firmware by name. This way, users can put the SD card into any dVRK/dVRK-Si controller that has an SD slot.

Remove all the SD cards from your system:

  • For dVRK Classic V3 controllers, card slot is located on the back

  • For dVRK Si controllers, card slot is on the front

The simplest approach is to use the dVRK SD card updater to download all the dVRK firmware files to one or more SD card(s). This script downloads the latest firmware files, unzips them and waits for an SD card to be inserted in the PC. When an SD card is inserted, it detects and mounts the card. The script then moves the existing files on the SD card to a backup directory and installs the new files. It then unmounts the SD card and waits for the next one to update.

Alternatively, you can download all the latest firmware files in a Zip file, decompress and copy all the files to the SD card. The latest version can be found in https://github.com/jhu-cisst/mechatronics-embedded/releases/latest.

If the controllers are connected to the PC via Ethernet, it is also possible to update the SD card using scp.

4.2.3. ESPM and ESSJ

The ESPM and ESSJ boards are reprogrammed using the ESXX programmer via JTAG. The ESXX programmer uses a micro SD card containing the custom firmware binaries (esxx_loader.rbf, espm.rpd, and essj.rpd) provided in sd_content.zip, available from the esxx-programmer-sd-content releases.

Note

These firmware files are not downloaded or updated by the dvrk-sd-card-updater script, which is intended solely for FPGA1394V3 controller SD cards.

For full programming and setup instructions, see the ESPM and ESSJ section.

4.2.4. dSIB-Si and dSIB-Si-Z

See: