#hid #adafruit #uf2 #flash #command-line #makecode

app hf2-cli

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 日

#6#uf2

Download history 25/week @ 2024-04-02 4/week @ 2024-05-28 24/week @ 2024-06-04 2/week @ 2024-06-11

每月 70 次下载

MIT/Apache

52KB
1K SLoC

hf2-cli

hf2 通过 HID 协议闪存的命令行实现,该协议在 Microsoft MakeCode 和 Adafruit 硬件中常用。

除非你知道不同,否则你可能想使用 cargo-hf2

先决条件

使用 hidapi-sys 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 开始,你将收到权限提示,必须遵循说明以允许终端应用程序的 "输入监控"。

安装

cargo安装 hf2-cli

hf2 闪烁 elf 文件,或作为 cargo 运行器

cargo build --release --example blinky_basic 然后 hf2 elf target/thumbv7em-none-eabihf/release/examples/blinky_basic

Hf2 将尝试通过发送 bininfo 命令到找到的任何已列入白名单的 vid/pids 连接的设备来自动检测设备,并使用第一个响应的设备,或者您也可以指定 pid 和 vid(在子命令之前)。hf2 --vid 0x239a --pid 0x003d elf target/thumbv7em-none-eabihf/release/examples/blinky_basic

然而,最佳使用方法是作为 cargo 运行器。在您的 .cargo/config 中设置 hf2 为您的运行器

[target.thumbv7em-none-eabihf]
runner = "hf2 elf"

然后,您可以执行以下操作:cargo run --release --example blinky_basic 或者使用您 IDE 的“运行”按钮,它将构建并上传。

hf2 独立闪存二进制文件

闪存命令处理的是二进制文件,而不是 elf 文件,所以您需要使用类似 cargo binutils 的工具来获取 bin 文件cargo objcopy --release --example blinky_basic -- -O binary blinky_basic.bin

然后您需要获取引导加载程序的地址偏移量。hf2 blinky_basic.bin -a 0x4000

Hf2 将尝试通过发送 bininfo 命令到找到的任何已列入白名单的 vid/pids 连接的设备来自动检测设备,并使用第一个响应的设备,或者您也可以指定 pid 和 vid(在子命令之前)。hf2 -v 0x239a -p 0x003d flash -f blinky_basic.bin -a 0x4000

故障排除

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

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 的蓝色和绿色屏幕,并通常创建一个可以看到的闪存驱动器(尽管这不是使用的那种方法)。

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

RUST_LOG=debug hf2 -v 0x239a -p 0x003d flash -f neopixel_rainbow.bin -a 0x4000

依赖项

~6–14MB
~158K SLoC