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日 |
#738 在 硬件支持
每月70次下载
在 2 crates 中使用
41KB
887 行
包含 (ELF库, 74KB) src/utils/testdata/blinky_1.47.0, (ELF库, 17KB) src/utils/testdata/blinky_1.44.0, (ELF可执行文件/库, 1KB) src/utils/testdata/sections
hf2
实现Microsoft的HID Flashing Format (HF2),以便将固件上传到UF2引导加载程序。UF2由Microsoft MakeCode和Adafruit硬件广泛编程。
除非您知道其他情况,否则您可能想要cargo-hf2
先决条件
默认启用hidapi功能并使用hidapi-sys crate,该crate使用libusb。预计未来可以添加其他实现内部ReadWrite trait的传输。
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应用程序。
安装
cargo安装cargo-hf2
使用
假设使用默认功能hidapi并且粗略地仅获取第一个设备
let api = HidApi::new().expect("Couldn't find system usb");
let dev = api.device_list().nth(0).unwrap().open_device(&api).unwrap();
let chk = hf2::checksum_pages(&dev, 0x4000, 1).unwrap();
dbg!(chk.checksums);
故障排除
如果找不到设备,请确保您的设备处于引导加载程序模式,准备接收固件。
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.
在PyGamer上,连续按两次按钮会启用显示“PyGamer”的蓝色和绿色屏幕,并通常创建一个U盘(尽管这不是该方法)。
如果您发现其他错误,请确保以调试模式运行以查看过程失败的地方,并在报告时包含这些日志
RUST_LOG=debug cargo run
依赖项
~0.5–1.3MB
~21K SLoC