Vitis 烧录 FPGA 失败排查指南
在 Vitis 编译成功后进行烧录操作时,若遇到程序卡住、报错或无法识别硬件的情况,通常并非软件本身故障,而是系统底层配置未到位。
一、Linux 下 USB 权限不足
为什么连不上?
在 Linux 环境下开发 FPGA 时,最常见的问题是插入了 JTAG 下载器(如 Xilinx Platform Cable USB 或 Digilent HS2),但 Vitis 无法识别设备。
原因是 Linux 出于安全考虑,默认仅允许 root 用户访问底层 USB 设备节点。JTAG 适配器作为 USB 转 JTAG 桥芯片,需要直接与 hw_server 通信。若无权限,工具将无法工作。
使用 sudo 运行 Vitis 虽可行,但会导致 GUI 权限混乱、日志路径异常等问题。
正确做法:配置 udev 规则
Linux 提供 udev 规则机制,可自动赋予特定 USB 设备读写权限。
操作步骤如下:
# 创建并编辑 udev 规则文件
sudo nano /etc/udev/rules.d/90-xilinx-jtag.rules
将以下内容粘贴进去:
# Xilinx Platform Cable USB
SUBSYSTEM=="usb", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0008", MODE="0666", GROUP="dialout"
# Digilent HS2 / HS3
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="0666", GROUP="dialout"
# Common third-party FT2232-based JTAG cables
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE="0666", GROUP="dialout"
说明:
- idVendor 和 idProduct 是 USB 设备的唯一标识,可通过 lsusb 命令查看。
- MODE="0666" 表示所有用户可读写。
- GROUP="dialout" 确保加入串口组。
保存后,重新加载 udev 规则:
sudo udevadm control --reload-rules
sudo udevadm trigger
然后拔掉 JTAG 线再重新插入。此时执行:
ls -l /dev/bus/usb/** | grep -i "03fd\|0403"

