GH60 Satan и загрузчик

60%-ная GH60 Satan стала для меня первой самостоятельно собранной клавиатурой. Процесс сборки и прошивки подробно описан в статье на Geektimes. Комплект для сборки был приобретён осенью прошлого года на Aliexpress, у YMDK, они же Shenzhen YMD Tech Co. Сразу хочу заметить, что описываемая ниже проблема с 99% вероятностью является результатом моих экспериментов с прошивкой, а не какой-то аппаратной неисправности платы.
Первоначально я использовал прошивку TMK, которая собиралась автоматически через GUI-конфигуратор EasyAVR. Прошивка заливалась при помощи TKG-toolkit. Всё шло хорошо до тех пор, пока я не решил прошить туда QMK. Во-первых, я случайно удалил конфигурацию EasyAVR, набивать её заново было просто лень. Во-вторых, после сборки Nyquist и Ergodox я достаточно хорошо изучил функционал QMK, мне хотелось получить макросы и Mod Tap и на GH60.
Раскладка была написана (обратите внимание, что каталог для GH60 Satan в QMK называется satan), прошивка скомпилирована. Запускаю TKG-toolkit — hex-файл не шьётся из-за того, что программе не удаётся затереть флеш, ошибка The target memory for the program is not blank. Заново втыкаю USB — клавиатура жива, не окирпичилась, но прошивка осталась прежней. Пробую прошить ещё раз и не могу попасть в загрузчик ни аппаратной кнопкой, ни по сканкоду. Грешу на драйверы, переустанавливаю при помощи zadig — нулевой результат. Достаю ноутбук с Линуксом, ставлю нужный тулчейн и dfu-programmer — загрузчика нет.
Если загрузчик каким-то образом повредился, то можно его прошить через ISP внешним программатором. Программатор можно купить готовый или собрать самому на базе подходящей микроконтроллерной платы. Запас моих Pro Micro к этому моменту иссяк, и я вспомнил, что давно хотел купить что-нибудь полноразмерное, удобное для прототипирования  на базе Atmega32U4 (тот же микроконтроллер, который используется в Pro Micro, Teensy 2.0 и подавляющем большинстве самодельных клавиатур). Выбор пал на китайский клон Arduino Leonardo — всего 8 долларов! Добавил проводов и макетную плату.
Как только всё приехало, я прошил скетч Arduino as ISP, воспользовавшись этим руководством. На GH60 есть ряд из семи контактных площадок. Прозвонил к ногам микроконтроллера — это действительно ISP, как и ожидалось. Справа налево, на обратной стороне платы: питание (Vcc, квадратная площадка), MISO, Clock, MOSI, Reset, Ground.

Прошивал через Avrdude под Линуксом, так как там всё гораздо проще, не нужно возиться с MinGW и номерами COM-портов. Leonardo с прошивкой Arduino as ISP при подключении даёт нам COM-порт /dev/ttyACM0. Собрал LUFA DFU, загрузчик с открытыми исходниками, совместимый с Atmel DFU. В make-файле выставил следующие параметры:
MCU = atmega32u4
ARCH = AVR8
BOARD = LEONARDO
F_CPU = 16000000
FLASH_SIZE_KB = 32
BOOT_SECTION_SIZE_KB = 4

Прошиваем загрузчик. Затираем флеш:
avrdude -p m32u4 -c avrisp -P /dev/ttyACM0 -b 19200 -e -v
Выставляем фьюзы. Понятия не имею, почему именно такие. Взял из этого поста. Калькулятор мне выдавал другие. Жаль, что я не догадался посмотреть и записать значения перед прошивкой.
avrdude -p m32u4 -c avrisp -P comXX -b 19200 -U lfuse:w:0x5e:m -U hfuse:w:0x99:m -U efuse:w:0xf3:m -v
Прошиваем загрузчик:
avrdude -p m32u4 -c avrisp -P /dev/ttyACM0 -b 19200 -B 4 -U flash:w:"BootloaderDFU.hex" -v

Кроме загрузчика в микроконтроллере теперь ничего нет, подключаю клавиатуру, определяется, как положено:

Запускаю сборку QMK сразу с прошивкой — прошивается нормально, теперь у меня клавиатура с QMK! Но победу праздновать рано, так как теперь опять не работает загрузчик. Повторял всю процедуру сначала, заливая загрузчик через ISP, затем основной код через загрузчик, но только при помощи TKG Toolkit. Вспомнил, что можно указать в QMK, в файле rules.mk именно lufa-dfu в качестве загрузчика. В общем, загрузчик затирается при прошивке основного кода, но он меньше, чем 20 КиБ, а загрузчик лежит в последних 4 КиБ, после 28 КиБ (32−4). Может быть дело в неправильных фьюзах? К сожалению, я пока мало что в них понимаю. На Reddit мой пост остался без ответа, но там все заняты фотографиями новых сетов и артизанов на фоне кроссовок. Надо в Deskthority или Geekhack с этим обратиться попробовать.

Комментарии

Популярные сообщения