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
每月 70 次下载
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