ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

QMK Firmware 烧录实战指南:从 DFU 模式进入到 QMK Toolbox 与 qmk flash 命令行

QMK Firmware 烧录实战指南:从 DFU 模式进入到 QMK Toolbox 与 qmk flash 命令行 QMK Firmware 烧录实战指南从 DFU 模式进入到 QMK Toolbox 与 qmk flash 命令行【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware本文基于 QMK Firmware 官方入门文档 docs/newbs_flashing.md 编写系统讲解固件烧录flashing的完整流程如何让键盘进入 DFU/Bootloader 模式、如何使用 QMK Toolbox 图形界面烧录、以及 Linux/macOS 下如何用qmk flash命令行一键完成编译加烧录。读完后你将能够独立完成从编译产物.hex/.bin到键盘实机的烧录并掌握烧录失败时的定位思路。前置条件你已经有了一个固件文件烧录的前提是你已经按照 构建固件流程 编译出了自定义固件。固件文件有两种格式.hex和.binQMK 构建系统会尝试将适合你键盘的格式拷贝到qmk_firmware仓库根目录。固件文件的命名规则是固定的keyboard_keymap.{bin,hex}例如planck/rev5键盘的default键位对应文件名为planck_rev5_default.hex。在 Windows 或 macOS 上你可以用以下命令在构建目录中直接打开资源管理器/访达来定位文件# Windows start . # macOS open .让键盘进入 DFUBootloader模式烧录前必须先把键盘切换到专门的烧录模式。进入该模式后键盘无法输入这是正常现象。务必注意在固件写入过程中不要拔掉键盘或做任何可能中断烧录的操作。不同键盘的进入方式不同。如果当前 PCB 运行的是 QMK、TMK 或 PS2AVRGBBootmapper Client固件且你没有拿到专门的说明按以下顺序逐一尝试同时按住两个 Shift 键然后按Pause同时按住两个 Shift 键然后按B拔掉键盘同时按住 Spacebar 和B再插上键盘等待一秒后松开按键拔掉键盘按住左上角或左下角的按键通常是 Escape 或左 Control再插上键盘按 PCB 上的物理RESET按键通常位于板子背面找到 PCB 上标注为RESET和GND的焊盘在插入电源的瞬间将两者短接。如果以上方法都无效且主控芯片上印着STM32或RP2-B1情况会更复杂一些这类芯片的进入方式通常与具体电路板设计有关。此时最好的办法是准备好板子的照片去 QMK 官方 Discord 社区求助。确认已成功进入 bootloader进入成功后QMK Toolbox 会显示一条黄色的消息例如*** DFU device connected: Atmel Corp. ATmega32U4 (03EB:2FF4:0000)此时该 bootloader 设备也会出现在 Windows 设备管理器、macOS 的系统信息.app或者 Linux 的lsusb输出中。以 ATmega32U4 为例你会看到 VID/PID 为03EB:2FF4的 DFU 设备——这是判断进入烧录模式成功的最直接证据。方式一使用 QMK Toolbox 烧录Windows/macOS最简单的方式是使用 QMK Toolbox 图形界面工具。需要注意的是Toolbox 目前仅提供 Windows 和 macOS 版本如果你使用 Linux或者习惯命令行操作请直接跳到下一节的qmk flash方案。另外一个特例烧录 RP2040 芯片设备 时不需要 QMK Toolbox它走 UF2 拖拽流程见docs/flashing.md中的 Raspberry Pi RP2040 UF2 小节。在 QMK Toolbox 中加载固件打开 QMK Toolbox 应用在 Finder 或资源管理器中找到固件文件.hex或.bin将文件拖入 Toolbox 的 Local file 区域或点击 Open 手动选择文件路径。点击 Flash 开始烧录点击Flash按钮后你会看到类似如下的输出这段日志本身也是排查问题的第一手资料建议保存*** DFU device connected: Atmel Corp. ATmega32U4 (03EB:2FF4:0000) *** Attempting to flash, please dont remove device dfu-programmer.exe atmega32u4 erase --force Erasing flash... Success Checking memory from 0x0 to 0x6FFF... Empty. dfu-programmer.exe atmega32u4 flash D:\Git\qmk_firmware\gh60_satan_default.hex Checking memory from 0x0 to 0x3F7F... Empty. 0% 100% Programming 0x3F80 bytes... [] Success 0% 100% Reading 0x7000 bytes... [] Success Validating... Success 0x3F80 bytes written into 0x7000 bytes memory (56.70%). dfu-programmer.exe atmega32u4 reset *** DFU device disconnected: Atmel Corp: ATmega32U4 (03EB:2FF4:0000)从日志可以看出烧录的完整链条erase擦除→flash写入并回读校验→Validating验证→reset复位键盘自动重启回到正常模式。最后0x3F80 bytes written into 0x7000 bytes memory (56.70%)说明本次固件占用了 32U4 可用内存的一半多一点——如果你的日志在这里显示超内存说明固件超过了 bootloader 前预留的空间需要关闭一些功能。方式二命令行烧录 qmk flash对于 Linux 用户或偏爱命令行的人qmk flash是官方推荐的烧录方式。它比早期版本简单得多当你准备好编译并烧录固件时打开终端执行qmk flash如果你没有在 构建环境配置阶段 中通过qmk config设置默认的键盘/键位名或者你机器上有多把键盘可以显式指定qmk flash -kb my_keyboard -km my_keymap为什么 qmk flash 不需要你了解 bootloaderqmk flash会先检查键盘配置然后根据该键盘rules.mk中声明的BOOTLOADER值自动选择对应的烧录工具与参数。也就是说你不需要事先知道键盘用的是哪种 bootloader运行命令即可。从源码结构看这个自动选择的前提是键盘配置里显式声明了BOOTLOADER宏。docs/flashing.md 列出了当前 QMK 支持的主要 bootloader 及其rules.mk配置例如BOOTLOADER atmel-dfu——Atmel DFU bootloader出厂预置在所有 USB AVR 芯片上16/32U4RC 除外大量 OLKB 老板与 Clueboard 使用QMK 也维护了它的 LUFA/QMK 分支BOOTLOADER caterina——Arduino/Pro Micro 克隆板使用的 AVR109 串口协议 bootloaderBOOTLOADER halfkay——Teensy 2.0 预烧录的超精简 HID bootloader闭源一旦被覆盖无法恢复BOOTLOADER usbasploader——面向 ATmega328P V-USB 的 ISP 模拟 bootloaderBOOTLOADER bootloadhid——以 HID 设备呈现、Windows 免驱动的 USB bootloader。此外docs/cli_commands.md 中还补充了命令行烧录的其他用法# 指定 bootloader覆盖自动检测 qmk flash -kb keyboard -km keymap_name -bl bootloader # 直接烧录预编译的固件文件如 Configurator 导出的 hex/bin qmk flash [-m microcontroller] compiledFirmware.[bin|hex] # 列出当前支持的 bootloader qmk flash -b值得注意对于 HalfKay、QMK HID、USBaspLoader 这三类 bootloader以及 USBasp / USBtinyISP 两种 ISP 烧录器必须通过-m microcontroller显式指定微控制器型号。常见报错与排查如果键盘没有配置 bootloader或使用了当前不支持的烧录目标qmk flash会报出WARNING: This boards bootloader is not specified or is not supported by the :flash target at this time.出现该错误时你有两条路手动指定 bootloader 重试参考 Flashing Firmware 指南 中各 bootloader 的进入方式和专用工具运行qmk doctor。该命令会检查你的构建与烧录环境并给出修复常见问题的建议详见 docs/cli_commands.md 中qmk doctor小节。另外Linux 用户如果连不上 DFU 设备权限问题是最常见原因之一可以用仓库自带的 util/install_udev.sh 安装 udev 规则来解决。烧录后的验证Test It Out烧录成功、键盘重启后就可以测试了。基本做法很直接按下每一个键确认其发出的键码与预期一致。如果键盘工作不正常可以用 QMK Configurator 的测试模式test mode逐键检查——该模式即使键盘当前跑的不是 QMK 固件也能用它能实时显示实际发出来的键码是定位按键矩阵映射写错这类问题的利器。仍然无法解决建议依次回到本文的 bootloader 进入方法一节确认你观察到的确实是 DFU 设备而非普通 HID 键盘查看 FAQ 主题 中的相关条目带着固件文件命名、lsusb输出和烧录日志去 QMK Discord 社区求助。小结QMK 的烧录流程可以归纳为三步进入 bootloader 模式 → 确认 DFU 设备被系统识别 → 用 QMK Toolbox 或qmk flash写入固件并自动复位。其中qmk flash依靠键盘rules.mk中的BOOTLOADER声明自动完成工具选择是跨平台、可脚本化的首选方式遇到报错时qmk doctor和 docs/flashing.md 中按 bootloader 分类的详细说明是两条主要的排查线索。【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表