Warning! the firmware follow this instruction is something wrong! If you want to get proper firmware, don't follow below.
- Windows 10
- docker
I use docker due to keep clean my windows environment.
$ git clone git@github.com:smp4488/qmk_firmware.git -b womier-k66-rgb-support --recurse-submodules -j8
Cloning into 'qmk_firmware'...
remote: Enumerating objects: 218592, done.
remote: Total 218592 (delta 0), reused 0 (delta 0), pack-reused 218592 eceiving objects: 100% (218592/218592), 150.42 MiB | 10.21 Mi
Receiving objects: 100% (218592/218592), 151.90 MiB | 9.54 MiB/s, done.
Resolving deltas: 100% (132003/132003), done.
Updating files: 100% (14158/14158), done.
Submodule 'lib/chibios' (https://github.com/qmk/ChibiOS) registered for path 'lib/chibios'
Submodule 'lib/chibios-contrib' (https://github.com/smp4488/ChibiOS-Contrib.git) registered for path 'lib/chibios-contrib'
Submodule 'lib/googletest' (https://github.com/google/googletest) registered for path 'lib/googletest'
Submodule 'lib/lufa' (https://github.com/qmk/lufa) registered for path 'lib/lufa'
Submodule 'lib/ugfx' (https://github.com/qmk/uGFX) registered for path 'lib/ugfx'
Cloning into 'C:/Users/user/work/repos/qmk_firmware/lib/chibios'...
remote: Enumerating objects: 223771, done.
remote: Counting objects: 100% (781/781), done.
remote: Compressing objects: 100% (384/384), done.
remote: Total 223771 (delta 428), reused 564 (delta 348), pack-reused 222990
Receiving objects: 100% (223771/223771), 147.25 MiB | 7.01 MiB/s, done.
Resolving deltas: 100% (170150/170150), done.
Cloning into 'C:/Users/user/work/repos/qmk_firmware/lib/chibios-contrib'...
remote: Enumerating objects: 14324, done.
remote: Total 14324 (delta 0), reused 0 (delta 0), pack-reused 14324
Receiving objects: 100% (14324/14324), 5.82 MiB | 2.19 MiB/s, done.
Resolving deltas: 100% (9145/9145), done.
Cloning into 'C:/Users/user/work/repos/qmk_firmware/lib/googletest'...
remote: Enumerating objects: 22672, done.
remote: Counting objects: 100% (345/345), done.
remote: Compressing objects: 100% (156/156), done.
remote: Total 22672 (delta 200), reused 243 (delta 167), pack-reused 22327
Receiving objects: 100% (22672/22672), 9.05 MiB | 2.16 MiB/s, done.
Resolving deltas: 100% (16709/16709), done.
Cloning into 'C:/Users/user/work/repos/qmk_firmware/lib/ugfx'...
remote: Enumerating objects: 29592, done.
remote: Total 29592 (delta 0), reused 0 (delta 0), pack-reused 29592
Receiving objects: 100% (29592/29592), 19.19 MiB | 3.12 MiB/s, done.
Resolving deltas: 100% (19953/19953), done.
Cloning into 'C:/Users/user/work/repos/qmk_firmware/lib/lufa'...
remote: Enumerating objects: 73792, done.
remote: Total 73792 (delta 0), reused 0 (delta 0), pack-reused 73792
Receiving objects: 100% (73792/73792), 18.67 MiB | 2.62 MiB/s, done.
Resolving deltas: 100% (59141/59141), done.
Submodule path 'lib/chibios': checked out '313416b8fda90d9973a749a0a35970956852c286'
Submodule path 'lib/chibios-contrib': checked out 'e71c7f075ddc3eabece436e889560ba75bd9fd18'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
Submodule path 'lib/ugfx': checked out '23ceb054fcf9a6d7e29359b197e268ba03f1ce3c'
$ cd qmk_firmware
$ docker build -t qmk .
[+] Building 209.2s (15/15) FINISHED
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 603B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/qmkfm/base_container:latest 2.2s
=> [auth] qmkfm/base_container:pull token for registry-1.docker.io 0.0s
=> [internal] load build context 166.4s
=> => transferring context: 717.02MB 166.0s
=> [ 1/10] FROM docker.io/qmkfm/base_container@sha256:467f8dea1bbbd6a328fdb53676e8d8fc87f50b2e5149a0cffd18022f110ae34d 0.0s
=> CACHED [ 2/10] WORKDIR /qmk_firmware 0.0s
=> [ 3/10] COPY . . 10.2s
=> [ 4/10] RUN apt-get update && apt-get install --no-install-recommends -y usbutils procps evtest 10.4s
=> [ 5/10] RUN wget https://github.com/xpack-dev-tools/openocd-xpack/releases/download/v0.10.0-13/xpack-openocd-0.10.0-13-li 2.2s
=> [ 6/10] RUN tar -xvf xpack-openocd-0.10.0-13-linux-x64.tgz 1.0s
=> [ 7/10] RUN ln -s /xPacks/openocd/0.10.0-13/bin/openocd /usr/bin/openocd 0.6s
=> [ 8/10] RUN pip3 install wheel 2.3s
=> [ 9/10] RUN pip3 install pyusb 2.1s
=> exporting to image 10.9s
=> => exporting layers 10.9s
=> => writing image sha256:2ef4dc33e873ecbc9a4fc528b3bcef35ed1de89dfdcd28110f9403e507d47476 0.0s
=> => naming to docker.io/library/qmk 0.0s
Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
$ sed -i 's/Vector84,/RgbIsr,/g' lib/chibios/os/common/startup/ARMCMx/compilers/GCC/vectors.S
$ docker run -v /`pwd`:/qmk_firmware -w //qmk_firmware qmk make womier/k66:default
This docker command option is for Windows. It is like
$ docker run -v `pwd`:/qmk_firmware -w /qmk_firmware qmk make womier/k66:default
$ docker run -v /`pwd`:/qmk_firmware -w //qmk_firmware qmk make womier/k66:default
QMK Firmware 0.7.101
Making womier/k66 with keymap default
Enabling LTO on ChibiOS-targeting boards is known to have a high likelihood of failure.
If unsure, set LINK_TIME_OPTIMIZATION_ENABLE = no.
arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors 6-2017-q2-update) 6.3.1 20170620 (release) [ARM/embedded-6-branch revision
249437]
Copyright (C) 2016 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.
Compiling: keyboards/womier/k66/matrix.c keyboards/womier/k66/matrix.c:56:
13: warning: 'unselect_col' defined but not used [-Wunused-function]
static void unselect_col(uint8_t col) { setPinInputHigh(col_pins[col]); }
^~~~~~~~~~~~
keyboards/womier/k66/matrix.c:51:13: warning: 'select_col' defined but not used [-Wunused-function]
static void select_col(uint8_t col) {
^~~~~~~~~~
[OK]
Compiling: keyboards/womier/k66/led_matrix.c keyboards/womier/k66/led_matrix.c
:208:6: warning: function declaration isn't a prototype [-Wstrict-prototypes]
void RgbIsr() {
^~~~~~
[OK]
Compiling: keyboards/womier/k66/k66.c [OK]
Compiling: keyboards/womier/k66/keymaps/default/keymap.c [OK]
Compiling: quantum/quantum.c [OK]
Compiling: quantum/keymap_common.c [OK]
Compiling: quantum/keycode_config.c [OK]
Compiling: quantum/debounce/sym_g.c [OK]
Compiling: tmk_core/common/chibios/eeprom_teensy.c [OK]
Compiling: quantum/color.c [OK]
Compiling: quantum/rgb_matrix.c [OK]
Compiling: quantum/rgb_matrix_drivers.c [OK]
Compiling: quantum/process_keycode/process_rgb.c [OK]
Compiling: quantum/led_tables.c [OK]
Compiling: quantum/process_keycode/process_space_cadet.c [OK]
Compiling: quantum/process_keycode/process_grave_esc.c [OK]
Assembling: lib/chibios/os/common/startup/ARMCMx/compilers/GCC/crt0_v6m.S [OK]
Assembling: lib/chibios/os/common/startup/ARMCMx/compilers/GCC/vectors.S [OK]
Assembling: lib/chibios/os/common/ports/ARMCMx/compilers/GCC/chcoreasm_v6m.S [OK]
Compiling: tmk_core/common/host.c [OK]
Compiling: tmk_core/common/keyboard.c [OK]
Compiling: tmk_core/common/action.c [OK]
Compiling: tmk_core/common/action_tapping.c [OK]
Compiling: tmk_core/common/action_macro.c [OK]
Compiling: tmk_core/common/action_layer.c [OK]
Compiling: tmk_core/common/action_util.c [OK]
Compiling: tmk_core/common/print.c [OK]
Compiling: tmk_core/common/debug.c [OK]
Compiling: tmk_core/common/util.c [OK]
Compiling: tmk_core/common/eeconfig.c [OK]
Compiling: tmk_core/common/report.c [OK]
Compiling: tmk_core/common/chibios/suspend.c [OK]
Compiling: tmk_core/common/chibios/timer.c [OK]
Compiling: tmk_core/common/chibios/bootloader.c [OK]
Compiling: tmk_core/common/chibios/printf.c [OK]
Compiling: tmk_core/common/magic.c [OK]
Compiling: tmk_core/protocol/chibios/usb_main.c [OK]
Compiling: tmk_core/protocol/chibios/main.c [OK]
Compiling: tmk_core/protocol/usb_descriptor.c [OK]
Compiling: tmk_core/protocol/chibios/usb_driver.c [OK]
Compiling: lib/chibios/os/oslib/src/chmboxes.c [OK]
Compiling: lib/chibios/os/oslib/src/chmemcore.c [OK]
Compiling: lib/chibios/os/oslib/src/chmemheaps.c [OK]
Compiling: lib/chibios/os/oslib/src/chmempools.c [OK]
Compiling: lib/chibios/os/oslib/src/chpipes.c [OK]
Compiling: lib/chibios/os/oslib/src/chfactory.c [OK]
Compiling: lib/chibios/os/common/startup/ARMCMx/compilers/GCC/crt1.c [OK]
Compiling: lib/chibios-contrib/os/common/ext/SN/SN32F26x/system_SN32F260.c [OK]
Compiling: lib/chibios/os/rt/src/chsys.c [OK]
Compiling: lib/chibios/os/rt/src/chdebug.c [OK]
Compiling: lib/chibios/os/rt/src/chtrace.c [OK]
Compiling: lib/chibios/os/rt/src/chvt.c [OK]
Compiling: lib/chibios/os/rt/src/chschd.c [OK]
Compiling: lib/chibios/os/rt/src/chthreads.c [OK]
Compiling: lib/chibios/os/rt/src/chtm.c [OK]
Compiling: lib/chibios/os/rt/src/chstats.c [OK]
Compiling: lib/chibios/os/rt/src/chregistry.c [OK]
Compiling: lib/chibios/os/rt/src/chsem.c [OK]
Compiling: lib/chibios/os/rt/src/chmtx.c [OK]
Compiling: lib/chibios/os/rt/src/chcond.c [OK]
Compiling: lib/chibios/os/rt/src/chevents.c [OK]
Compiling: lib/chibios/os/rt/src/chmsg.c [OK]
Compiling: lib/chibios/os/rt/src/chdynamic.c [OK]
Compiling: lib/chibios/os/common/ports/ARMCMx/chcore.c [OK]
Compiling: lib/chibios/os/common/ports/ARMCMx/chcore_v6m.c [OK]
Compiling: lib/chibios/os/hal/osal/rt/osal.c [OK]
Compiling: lib/chibios/os/hal/src/hal.c [OK]
Compiling: lib/chibios/os/hal/src/hal_buffers.c [OK]
Compiling: lib/chibios/os/hal/src/hal_queues.c [OK]
Compiling: lib/chibios/os/hal/src/hal_mmcsd.c [OK]
Compiling: lib/chibios/os/hal/src/hal_adc.c [OK]
Compiling: lib/chibios/os/hal/src/hal_can.c [OK]
Compiling: lib/chibios/os/hal/src/hal_crypto.c [OK]
Compiling: lib/chibios/os/hal/src/hal_dac.c [OK]
Compiling: lib/chibios/os/hal/src/hal_gpt.c [OK]
Compiling: lib/chibios/os/hal/src/hal_i2c.c [OK]
Compiling: lib/chibios/os/hal/src/hal_i2s.c [OK]
Compiling: lib/chibios/os/hal/src/hal_icu.c [OK]
Compiling: lib/chibios/os/hal/src/hal_mac.c [OK]
Compiling: lib/chibios/os/hal/src/hal_mmc_spi.c [OK]
Compiling: lib/chibios/os/hal/src/hal_pal.c [OK]
Compiling: lib/chibios/os/hal/src/hal_pwm.c [OK]
Compiling: lib/chibios/os/hal/src/hal_rtc.c [OK]
Compiling: lib/chibios/os/hal/src/hal_sdc.c [OK]
Compiling: lib/chibios/os/hal/src/hal_serial.c [OK]
Compiling: lib/chibios/os/hal/src/hal_serial_usb.c [OK]
Compiling: lib/chibios/os/hal/src/hal_sio.c [OK]
Compiling: lib/chibios/os/hal/src/hal_spi.c [OK]
Compiling: lib/chibios/os/hal/src/hal_st.c [OK]
Compiling: lib/chibios/os/hal/src/hal_trng.c [OK]
Compiling: lib/chibios/os/hal/src/hal_uart.c [OK]
Compiling: lib/chibios/os/hal/src/hal_usb.c [OK]
Compiling: lib/chibios/os/hal/src/hal_wdg.c [OK]
Compiling: lib/chibios/os/hal/src/hal_wspi.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_community.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_fsmc.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_nand.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_sram.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_sdram.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_onewire.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_eicu.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_crc.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_rng.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_usbh.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/usbh/hal_usbh_debug.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/usbh/hal_usbh_desciter.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/usbh/hal_usbh_hub.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/usbh/hal_usbh_msd.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/usbh/hal_usbh_ftdi.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/usbh/hal_usbh_aoa.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/usbh/hal_usbh_hid.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/usbh/hal_usbh_uvc.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_ee24xx.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_ee25xx.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_eeprom.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_timcap.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_qei.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_usb_hid.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_usb_msd.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_comp.c [OK]
Compiling: lib/chibios-contrib/os/hal/src/hal_opamp.c [OK]
Compiling: lib/chibios/os/hal/ports/common/ARMCMx/nvic.c [OK]
Compiling: lib/chibios-contrib/os/hal/ports/SN32/SN32F260/hal_lld.c [OK]
Compiling: lib/chibios/os/various/syscalls.c [OK]
Compiling: lib/chibios-contrib/os/hal/ports/SN32/LLD/GPIO/hal_pal_lld.c [OK]
Compiling: lib/chibios-contrib/os/hal/ports/SN32/LLD/USB/hal_usb_lld.c [OK]
Compiling: lib/chibios-contrib/os/hal/ports/SN32/LLD/USB/hidram.c [OK]
Compiling: lib/chibios-contrib/os/hal/ports/SN32/LLD/USB/hiduser.c [OK]
Compiling: lib/chibios-contrib/os/hal/ports/SN32/LLD/USB/usbepfunc.c [OK]
Compiling: lib/chibios-contrib/os/hal/ports/SN32/LLD/USB/usbhw.c [OK]
Compiling: lib/chibios-contrib/os/hal/ports/SN32/LLD/USB/usbram.c [OK]
Compiling: lib/chibios-contrib/os/hal/ports/SN32/LLD/USB/usbuser.c [OK]
Compiling: lib/chibios-contrib/os/hal/ports/SN32/LLD/CT/hal_st_lld.c [OK]
Compiling: lib/chibios-contrib/os/hal/ports/SN32/LLD/CT/CT16B0.c [OK]
Compiling: keyboards/womier/k66/boards/SN_SN32F260/board.c [OK]
Compiling: lib/chibios/os/hal/lib/streams/chprintf.c [OK]
Compiling: lib/chibios/os/hal/lib/streams/memstreams.c [OK]
Compiling: lib/chibios/os/hal/lib/streams/nullstreams.c [OK]
Linking: .build/womier_k66_default.elf [OK]
Creating binary load file for flashing: .build/womier_k66_default.bin [OK]
Creating load file for flashing: .build/womier_k66_default.hex [OK]
Size after:
text data bss dec hex filename
0 29134 0 29134 71ce .build/womier_k66_default.hex
Copying womier_k66_default.bin to qmk_firmware folder [OK]
(Firmware size check does not yet support cortex-m0 microprocessors; skipping.)
After above instruction, I get firmware for my K66. But something wrong...
- boot is OK, the keyboard is rainbow!
- Case1: When I pressed
a
key, animation stopped and keepa
key pressed. (typedaaaaaaa...
) - Case2: When I pressed some key, animation stopped and the keyboard freezed.
I want to know how to build QMK for K66. Please help me!