Сборка из официального репозитория
Для того чтобы начать вам понадобиться установить несколько утилит:
git
— для работы с git репозиториемQMK
make
— утилита для сборкиQMK
прошивкиavrdude
— утилита для прошивки микроконтроллеровAtmel
Пример установки для операционной системы Arch Linux и пакетного менеджера pacman:
sudo pacman -S git make avrdude
Если вы используете другую операционную систему или пакетный менеджер, то процесс установки будут отличаться.
Шаг 1. Клонируем репозиторий QMK
git clone https://github.com/qmk/qmk_firmware
cd qmk_firmware
Шаг 2. Устанавливаем подмодули
git submodule init
git submodule update
Шаг 3. Устанавливаем зависимости
bash ./util/qmk_install.sh
Здесь потребуется ввести пароль от sudo
, установятся необходимые зависимости
для сборки, немного подождать пока все скачается и установится.
Шаг 4. Сборка прошивки для клавиатуры
Структура файлов
QMK
использует очень удобную структуру файлов. В папке
keyboards
располагаются
всевозможные клавиатуры доступные для сборки.
Внутри каждой папке с клавиатурой (для примера я взял crkbd) используется следующая структура файлов:
./crkbd/
default/
| config.h
| rules.mk
| keymap.c
В каждом кеймапе содержатся настройки и раскладка keymap.c
.
Сборка
Для сборки используется команда make
. В общем виде это можно записать так:
make клавиатура:раскладка
Если не указывать раскладку то соберется с раскладкой default
. А вот так можно
собрать прошивку для клавиатуры crkbd
с раскладкой edvorakjp
.
make crkbd:edvorakjp
QMK Firmware 0.12.41
Making crkbd/rev1/legacy with keymap edvorakjp
...
Creating load file for flashing: .build/crkbd_rev1_legacy_edvorakjp.hex [OK]
Copying crkbd_rev1_legacy_edvorakjp.hex to qmk_firmware folder [OK]
Checking file size of crkbd_rev1_legacy_edvorakjp.hex [OK]
* The firmware size is fine - 24770/28672 (86%, 3902 bytes free)
В результате сборки мы получим файл crkbd_rev1_legacy_edvorakjp.hex
который
находится в директории .build
.
Шаг 5. Прошивка
Есть несколько способов прошивки, первый самый простой, второй немного посложнее. В каждом из них перед тем как вызывать последнюю команду, которая прошивает микроконтроллер, вам необходимо:
- Подключить промикру в компьютер
- Нажать ресет на промикре
- У вас есть несколько секунд чтобы начать загружать прошивку
Способ 1
Собираем (keymap default) и сразу прошиваем:
make crkbd:default:flash
QMK Firmware 0.12.41
Making crkbd/rev1/legacy with keymap default and target flash
avr-gcc (GCC) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Size before:
text data bss dec hex filename
0 21766 0 21766 5506 .build/crkbd_rev1_legacy_default.hex
Copying crkbd_rev1_legacy_default.hex to qmk_firmware folder [OK]
Checking file size of crkbd_rev1_legacy_default.hex [OK]
* The firmware size is fine - 21766/28672 (75%, 6906 bytes free)
Detecting USB port, reset your controller now........
Теперь нужно только нажать ресет на промикре и подождать пока прошивка загрузится.
Способ 2
Подключаем промикру к компьютеру.
lsusb
В списке устройств должна появиться наша подключенная промикра:
...
Bus 001 Device 004: ID 2341:0037 Arduino SA Arduino Micro
...
Посмотрим на каком порту она находится с помощью команды:
sudo dmesg | grep tt
Вводим пароль от sudo
и в самом конце вывода (последнее подключенное в USB
устройство) получаем что-то на подобие такого:
[ 5154.894321] cdc_acm 1-3:1.0: ttyACM0: USB ACM device
Значит наша промикра использует порт /dev/ttyACM0
. Это именно в моем случае,
естественно у вас это может любой другой порт.
Прошиваем (обязательно жмем ресет на промикре перед этим).
avrdude -p atmega32u4 -P /dev/ttyACM0 -c avr109 -e -U flash:w:crkbd_rev1_legacy_default.hex
Сплит клавиатуры
Для того чтобы можно было подключать по проводу любую половинку в компьютер, а не только правую, необходимо загрузить в энергонезависимую память микроконтроллера (EEPROM) следующие данные. Они хранятся в официальном репозитории вот тут /quantum/split_common. Для левой половинки eeprom-lefthand.epp, и для правой половинки eeprom-righthand.epp
Прошиваем (EEPROM) левой половинки:
avrdude -p atmega32u4 -P /dev/ttyACM0 -c avr109 -U eeprom:w:eeprom-lefthand.eep
Прошиваем (EEPROM) правой половинки:
avrdude -p atmega32u4 -P /dev/ttyACM0 -c avr109 -U eeprom:w:eeprom-lefthand.eep