Bus Pirate

出自 ArchWiki

Bus Pirate 是一款通用的硬件通信工具,可与各种硬件进行通信。

连接新的微芯片可能很麻烦。面包板电路、编写代码、拿出编程器,甚至可能需要制作 PCB 原型。我们似乎总是无法一次性成功。

Bus Pirate 是一款通用总线接口,可以通过 PC 串口终端与大多数芯片通信,从而在处理新的或未知的芯片时,省去大量的早期原型设计工作。它支持 0–5.5 伏的多种串行协议,并且可以添加更多协议。

安装

注意: 所有脚本都将假定设备名为 /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/ttyUSB<i>X</i> 的符号链接。

要找出 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
  • cu 来自 uucp 软件包
# cu -l /dev/buspirate

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