QMK 固件中的 Minerva LX 键盘支持:编译、刷写与 Bootloader 进入方式全解析
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
Minerva LX 是 Archetype 推出的一款基于 RP2040 主控的客制化 PCB,本仓库(qmk_firmware)为其提供了完整的 QMK 固件支持。本文以仓库内 Minerva LX 官方 readme 为骨架,结合 keyboard.json、默认键位 与背光 PWM 配置等源码细节,带你从零完成该键盘固件的编译、刷写,并彻底掌握三种进入 Bootloader 的方式。
键盘与固件支持概览
根据 readme.md 的说明,Minerva LX 的固件信息如下:
| 项目 | 内容 |
|---|---|
| 键盘维护者(Maintainer) | Archetype |
| 硬件支持(Hardware Supported) | 基于 RP2040 的专有 PCB(proprietary PCB) |
| 固件目标 | archetype/minervalx |
该 PCB 没有公开的通用主控板型号,而是 Archetype 自研的 RP2040 方案,因此固件完全针对这块 PCB 的矩阵、引脚与背光电路定制,不能直接套用到其他键盘。
硬件规格:从 keyboard.json 看整块 PCB
仓库采用 QMK 新一代的数据驱动配置方式,绝大多数硬件定义都收敛在 keyboard.json 中,无需再维护大量 C 头文件。从该文件中可以提取出完整的硬件规格:
- 主控处理器:
"processor": "RP2040",即 Raspberry Pi RP2040 双核 Cortex-M0+ 芯片; - Bootloader:
"bootloader": "rp2040",采用 RP2040 原生的 UF2 引导方案; - 矩阵方向:
"diode_direction": "COL2ROW"(列驱动、行读取的二极管方向); - 矩阵规模:15 列 × 5 行,共 75 个矩阵位置;
- 列引脚:
GP0, GP29, GP28, GP27, GP26, GP25, GP24, GP23, GP22, GP21, GP20, GP19, GP18, GP17, GP16 - 行引脚:
GP11, GP12, GP13, GP14, GP15
- 列引脚:
- 背光:
"backlight": { "pin": "GP7" },背光信号接在 GP7 引脚; - 已启用特性:
backlight(背光)、bootmagic(Bootmagic 复位)、extrakey(多媒体/系统键)、mousekey(鼠标键); - USB 标识:VID
0x5453,PID0x0100,设备版本1.0.0。
这里bootmagic特性在 keyboard.json 中显式开启,正是下文"进入 Bootloader 方式"能够生效的前提;而extrakey与mousekey的开启,则保证默认键位中的多媒体键与鼠标功能可用。
布局(LAYOUT)定义
keyboard.json的layouts.LAYOUT字段定义了物理布局与矩阵坐标的映射关系,每个键位通过{"matrix": [row, col], "x": ..., "y": ...}描述。从坐标与宽度(w)参数可以还原出这是一块典型的60% ANSI 配列PCB:
- 第一行 14 个键(含 2 个退格键位置,第二个退格由
[2, 12]矩阵位置补位),配合标准数字行; - 第二、三行标准字母区,
Caps Lock键占据 1.75U 宽度; - 第四行左侧 Shift 为 2.25U,右侧 Shift 为 1.75U;
- 底行是 1.5U Ctrl / 1.5U GUI / 1.5U Alt + 三段式 3U、7U、3U 空格 + 1.5U Alt / 1.25U Fn / 1.5U Ctrl 的组合,说明空格区支持拆分为多键。
该布局定义由 默认键位 keymap.c 中的LAYOUT(...)宏直接消费,两者一一对应。
编译 Minerva LX 固件
搭建构建环境
编译前需要先配置 QMK 构建环境。若你尚未安装工具链,可参考仓库内的官方指引:
- 环境搭建:请查阅 getting_started_build_tools 文档(实际文件位于 docs 目录 下)按平台完成依赖安装;
- Make 用法:详细参数见 getting_started_make_guide.md;
- 若是 QMK 新手,推荐从 newbs.md(Complete Newbs Guide) 开始,了解固件烧录与键位修改的基础流程。
编译命令
在完成环境搭建后,使用 QMK 标准的make命令编译默认键位:
make archetype/minervalx:default其中:
archetype/minervalx是键盘目标的路径,对应仓库 keyboards/archetype/minervalx 目录;default是键位名称,对应同目录下的 keymaps/default 键位方案。
编译产物默认输出在 QMK 的build目录中,包含适用于 RP2040 的.uf2固件文件。
刷写固件
一条命令完成编译与刷写
Minerva LX 使用 RP2040 引导方案,刷写命令同样简洁:
make archetype/minervalx:default:flash该命令在编译完成后自动进入刷写流程:键盘处于 Bootloader 模式时会被识别为 USB 大容量存储设备,将生成的.uf2固件拷贝进去即完成刷写。RP2040 方案的详细说明可参见 flashing.md。
编译期键位覆盖(可选)
与所有 QMK 键盘一致,你也可以为编译指定其他键位目标(例如archetype/minervalx:your_keymap),前提是该键位目录已存在于 keymaps 下,例如新建keymaps/mine/并放入自己的keymap.c。
三种方式进入 Bootloader
readme.md 明确列出了三种进入 Bootloader 的方法,这也是日常刷写时最常被问到的问题:
方式一:Bootmagic 复位(上电复位)
按住键盘左上角第一颗键(ESC 键)的同时插入 USB 数据线。
这是利用 QMK 的 Bootmagic 特性 实现的无按钮复位:键盘上电瞬间检测到指定键被按住,即直接进入 Bootloader。keyboard.json中"bootmagic": true即为该功能开启了开关。
根据 bootmagic.md 的说明,Bootmagic 触发键默认是矩阵的(0, 0)位置——绝大多数键盘上即左上角 ESC 键,Minerva LX 的默认键位中[0, 0]正是KC_GRV/ESC 位置,与 readme 描述一致。如需改用其他键,可在config.h中通过BOOTMAGIC_ROW/BOOTMAGIC_COLUMN覆盖。
⚠️ 注意:Bootmagic 复位会同时重置 EEPROM,因此键盘上保存过的所有设置(如自定义背光、层状态等)都会丢失,这点在 bootmagic.md 中有明确警告。
方式二:键位中的QK_BOOT按键码
在默认键位 keymap.c 中,功能层(第 1 层)的第一个键位就映射了QK_BOOT:
[1] = LAYOUT( QK_BOOT, _______, _______, ...操作步骤为:按住右下角附近的MO(1)(Fn 键,默认键位底行的MO(1))进入功能层,再按左上角的第一个键,即可触发QK_BOOT进入 Bootloader。这是三种方式中最"软"的一种,无需拔线、无需物理按钮。
QK_BOOT是 QMK 内置的复位按键码,只要固件支持即可在任何键位中使用,相关按键码体系可参考 quantum_keycodes.md 与 keycodes.md。
方式三:PCB 物理复位按钮
保持 PCB 断电状态,按住 PCB 背面标注为
RESET的按钮不放,同时插入 USB 线。
这是最直接、最可靠的兜底方式,适用于 Bootmagic 触发不便或 EEPROM 需要保留的场景。RP2040 的RESET引脚在按下并上电时会直接进入 UF2 Bootloader 模式。
默认键位解析
默认键位 keymap.c 是理解这块 PCB 配列的最好示例,其第 0 层为标准 60% 布局:
第 0 层(默认层): ` 1 2 3 4 5 6 7 8 9 0 - = Bksp Bksp Tab Q W E R T Y U I O P [ ] \ Caps A S D F G H J K L ; ' Enter Shift Z X C V B N M , . / Shift Shift Ctrl GUI Alt Space Space Space Alt GUI Fn(1) Ctrl几个值得注意的设计点:
- 退格键双键位:第一行右侧并列两个
KC_BSPC,对应布局中[0, 13]与[2, 12]两个矩阵位置,方便不同长度的退格键帽方案; - 底行三段空格:Space 由
[4, 4]、[4, 6]、[4, 8]三个矩阵位置拼成 3U + 7U + 3U 的宽空格区,可拆分为独立按键使用; - 功能层保留复位键:第 1 层在第一个键位放置
QK_BOOT,其余键位用_______(透传)保持与默认层一致,是一个极简但实用的"仅复位"功能层。
背光 PWM 底层配置
Minerva LX 的背光不仅是keyboard.json里的一行"backlight": { "pin": "GP7" },其 PWM 通道的启用还依赖三处底层配置,正好体现了 QMK 在 RP2040 平台上使用硬件 PWM 驱动背光的完整链路:
config.h 指定 PWM 驱动与通道:
#define BACKLIGHT_PWM_DRIVER PWMD5 #define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A即使用 RP2040 的 PWM 模块 5(PWMD5)的 A 通道输出背光信号,与
keyboard.json中的 GP7 引脚对应(GP7 为 RP2040 PWM5 通道 A 的默认映射引脚)。halconf.h 打开 ChibiOS 的 PWM HAL 模块:
#define HAL_USE_PWM TRUEmcuconf.h 单独启用 PWM5 外设:
#undef RP_PWM_USE_PWM5 #define RP_PWM_USE_PWM5 TRUE
三者缺一不可:HAL 层开启 PWM 能力、MCU 层放行 PWM5、板级定义绑定驱动与通道,最终由 QMK 的背光子系统(见 backlight 特性文档)驱动,支持亮度调节与背光开关等按键功能。
小结
Minerva LX 是 Archetype 基于 RP2040 的 60% ANSI 配列客制化 PCB,本仓库为其提供了完整的 QMK 数据驱动固件支持。日常使用只需记住三件事:
- 编译:
make archetype/minervalx:default; - 刷写:
make archetype/minervalx:default:flash; - 进 Bootloader:按 ESC 插线(Bootmagic,注意会重置 EEPROM)、功能层按
QK_BOOT、或按住 PCB 背面 RESET 按钮插线三种方式任选其一。
如需自定义键位,可参考 默认键位 复制出新的键位目录进行修改;修改背光等底层行为时,注意 config.h、halconf.h 与 mcuconf.h 三处配置需保持一致。
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考