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 次下载
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