ブートローダー
コンピュータの起動直後に自動的に実行されるプログラムのこと。
自作キーボードでは、キーボードとして動作するか、
ファームウェアの書き換えを行うか切り替えるために使われている。
ATmega32u4ならブートローダー自身をISPから書き換えることが出来るが、基本的にはその必要はない。
主なブートローダー
Caterina
Arduino IDEから書き込める
QMKの書き込みコマンドは make keyboard:keymap:avrdude
config.h
に #define CATERINA_BOOTLOADER
と書くことでRESETキーに対応できる
リセットしてもRX/TX LEDは光らない
Leonardo版
ProMicro版
QMK書き込み時のリセットボタンは2連打?
要検証 
手元環境ではどうやっても書き込めない

DFU
QMKで make keyboard:keymap:production
とすると作られる
QMKの書き込みコマンドは make keyboard:keymap:dfu
リセットするとTX/RX LEDが点滅する
RESETキーに対応するなどの利点がある
よくわからん

LUFA
QMKでバイナリファイルを作るコマンドは make keyboard:keymap:flashbin
ブートローダーモードのときにTX/RX LEDが点滅する