#hid #uf2 #cargo #flash #cargo-subcommand #subcommand

app cargo-hf2

Cargo 子命令,用于 Microsoft HID Flashing Library for UF2 Bootloaders

10 个版本

0.3.3 2021年10月29日
0.3.1 2020年10月17日
0.2.1 2020年7月29日
0.1.1 2020年2月18日
0.1.0 2019年12月5日

#421 in Cargo 插件

每月 31 次下载

MIT/Apache

52KB
1K SLoC

cargo-hf2

hf2 通过 HID 协议进行闪存 替换 cargo build 命令,以便通过 USB 闪存连接的 uf2 设备。

先决条件

使用 hidapi-sys crate,该 crate 使用 libusb

linux

您可能需要根据您的发行版安装 libusb,您可能需要执行以下命令: sudo apt-get install libudev-dev libusb-1.0-0-dev

如果您不想使用 sudo,您需要 udev 规则。将您的板子插入并进入引导加载程序模式,使用 lsusb 查找您的 vendorid,在此处显示为 239a。

Bus 001 Device 087: ID 239a:001b Adafruit Industries Feather M0

然后将您的 vendorid 放在下面,保存到类似 /etc/udev/rules.d/99-adafruit-boards.rules 的文件中。

ATTRS{idVendor}=="239a", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idVendor}=="239a", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="239a", MODE="0666"

然后重启或运行

sudo udevadm control --reload-rules
sudo udevadm trigger

mac

在 mac 上,从 Catalina 开始,您将收到权限提示,必须按照说明允许 Terminal 应用程序的 "输入监控"。

安装

cargoinstall cargo-hf2

使用

从固件目录,您可以使用所有常规 cargo build 命令,--example 和 --release,用 hf2 代替 build。假设构建成功,我们使用硬编码的白名单打开 USB 设备,并将文件复制过去。

$ cargo hf2 --example ferris_img --release --pid 0x003d --vid 0x239a
    Finished release [optimized + debuginfo] target(s) in 0.28s
    Flashing "./target/thumbv7em-none-eabihf/release/examples/ferris_img"
Success
    Finished in 0.037s

可选地,您可以省略 pid 和 vid,它将尝试查询任何具有 bininfo 数据包的 hid 设备,并将数据写入第一个响应的设备

$ cargo hf2 --example ferris_img --release
    Finished release [optimized + debuginfo] target(s) in 0.24s
no vid/pid provided..
trying "" "Apple Internal Keyboard / Trackpad"
trying "Adafruit Industries" "PyGamer"
    Flashing "./target/thumbv7em-none-eabihf/release/examples/ferris_img"
Success
    Finished in 0.034s

如果找不到设备,请确保您的设备处于引导加载程序模式,准备接收固件。

$ cargo hf2 --example ferris_img --release
    Finished release [optimized + debuginfo] target(s) in 0.20s
no vid/pid provided..
trying "" "Apple Internal Keyboard / Trackpad"
trying "" "Keyboard Backlight"
trying "" "Apple Internal Keyboard / Trackpad"
trying "" "Apple Internal Keyboard / Trackpad"
thread 'main' panicked at 'Are you sure device is plugged in and in bootloader mode?', src/libcore/option.rs:1166:5

在 PyGamer 上,按两次按钮将启用蓝色和绿色屏幕,显示 PyGamer。

故障排除

thread 'main' panicked at 'Are you sure device is plugged in and in bootloader mode?: OpenHidDeviceError', src/libcore/result.rs:1165:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

如果找不到设备,请确保您的设备处于引导加载程序模式,准备接收固件。

如果您发现其他错误,请确保以调试模式运行,以查看在哪个过程中失败,并在报告时包含这些日志

RUST_LOG=debug cargo hf2 --vid 0x239a --pid 0x003d

依赖项

~6–18MB
~189K SLoC