跳转至内容

Bus Pirate

来自 ArchWiki

The Bus Pirate is a versatile tool for communicating with various hardware.

Interfacing a new microchip can be a hassle. Breadboarding a circuit, writing code, hauling out the programmer, or maybe even prototyping a PCB. We never seem to get it right on the first try.

The Bus Pirate is a universal bus interface that talks to most chips from a PC serial terminal, eliminating a ton of early prototyping effort when working with new or unknown chips. Many serial protocols are supported at 0–5.5 volts, more can be added.

安装

注意 所有脚本都假定设备名为 /dev/buspirate

FTDI 芯片的驱动程序已包含在内核中,因此插入后应立即被检测到,并分配到设备 /dev/ttyUSB[0-9]。要检查它被分配到了哪个设备,请运行

# journalctl -k

输出将包含类似以下内容的一行

# usb 1-4.4: FTDI USB Serial Device converter now attached to ttyUSB0

使用 udev 重命名设备

每次都要查找设备被分配到哪个 /dev/ttyUSB[0-9] 会很麻烦,因此最好添加一个简单的 udev 规则,在插入设备时创建从 /dev/buspirate/dev/ttyUSBX 的符号链接。

要找出 bus pirate 的当前路径,您可以使用 udevadm(8) 监视器命令,然后插入设备,输出应该类似这样

$ udevadm monitor --environment --udev 
...
DEVICENAME=/dev/ttyUSBX
DRIVER=tty
PRODUCT=403/6001/600
...

插入设备并获得输出后,按 Ctrl+c 中断文本流。

使用产品/厂商 ID

通过使用厂商/产品 ID,可以在不更改配置的情况下更换 bus pirate 设备。要使用此方法,请添加以下行

/etc/udev/rules.d/98-buspirate.rules
# Bus pirate v3
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", GROUP="users", MODE="0666", SYMLINK+="buspirate"
# Bus pirate v4
SUBSYSTEM=="tty", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="fb00", GROUP="users", MODE="0666", SYMLINK+="buspirate"

使用序列号

您也可以通过序列号来实现,为此,您需要找出 bus pirate 上 FTDI 芯片的序列号。这可以通过运行以下命令来实现,假设您的设备已插入

# udevadm info --attribute-walk -n /dev/ttyUSBX  | sed -n '/FTDI/,/serial/p'

现在添加/创建以下 udev 规则

/etc/udev/rules.d/98-buspirate.rules
SUBSYSTEM=="tty", ATTRS{serial}=="MYSERIALNUMBER", GROUP="users", MODE="0660", SYMLINK+="buspirate"

加载新规则:此时,每次插入设备时,都应该创建符号链接。

要验证这一点,请运行上面提到的 udev 监视器命令,它应该会报告类似这样的内容

DEVLINKS=/dev/buspirate

通讯

要与设备通信,您可以使用以下任何一种,仅举几例

# minicom -b 115200 -8 -D /dev/buspirate
# screen /dev/buspirate 115200 8N1
# picocom -b 115200 /dev/buspirate
  • 来自 uucp 包的 cu
# cu -l /dev/buspirate

键入 ? 并按 Enter,设备应该会回复一个可能的命令列表。