#uf2 #hid #adafruit #flash #makecode

hf2

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日

#738硬件支持

Download history 13/week @ 2024-03-13 19/week @ 2024-03-20 24/week @ 2024-03-27 14/week @ 2024-04-03 1/week @ 2024-04-17 5/week @ 2024-04-24 1/week @ 2024-05-01 3/week @ 2024-05-08 6/week @ 2024-05-15 4/week @ 2024-05-22 28/week @ 2024-05-29 38/week @ 2024-06-05 6/week @ 2024-06-12 6/week @ 2024-06-19 5/week @ 2024-06-26

每月70次下载
2 crates 中使用

MIT/Apache

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 MakeCodeAdafruit硬件广泛编程。

除非您知道其他情况,否则您可能想要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