HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

[NEW] 2022/12/23

QMKのファームウェアが破壊的なアップデートをして昔のプログラムがエラーになるので修正する方法 QMKのファームウェアが破壊的なアップデートをして昔のプログラムがエラーになるので修正する方法

(How to fix program error when QMK firmware destructive update)

Tags: [電子工作], [QMK]




● QMK firmwareの関連記事


2021/08/23
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法

  ラズパイや Windows WSL環境でカスタマイズ キーボードのファームウェア QMK firmwareの開発環境を構築

2022/01/09
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法

  BUFFALO USB 10-Key keyboard BSTK100 modification by Pro Micro and QMK firmware VIA

2022/03/13
市販のキーボードを無改造で QMK化する QMK USB Converterを作ってみる
市販のキーボードを無改造で QMK化する QMK USB Converterを作ってみる

  QMK firmware QMK USB to USB keyboard protocol converter Pro Micro 3.3V + USB Host MAX3421E


●キーボードの VIAや QMKのファームウェアがバージョンアップして VIAを認識しないのを解決する方法

2023/08/10
キーボードの VIAや QMKのファームウェアがバージョンアップして VIAを認識しないのを解決する方法
キーボードの VIAや QMKのファームウェアがバージョンアップして VIAを認識しないのを解決する方法

  VIA and QMK firmware update occure trouble to JSON error and not detect、support version matrix


● QMK公式の破壊的なアップデートの情報

Breaking Changes - QMK Firmware
 最近の破壊的アップデート
 2023 Aug 27
 2023 May 28
 2023 Feb 26

Past Breaking Changes - QMK Firmware

QMK ChangeLog



● QMKのファームウェアが破壊的なアップデートをして昔のプログラムがエラーになるので修正する方法

 QMKのファームウェアは更新頻度が凄く多いですが、過去のプログラムと互換性の無い(破壊的な)アップデートも頻繁に行なわれます。

 QMKの Gitを Forkして自分用の実験プログラムを下記に置いていますが、今回、最新の QMKのファームを取り込んだ所、ビルドでエラーが出る様に成ってしまいました。ぴえん(๑o̴̶̷᷄﹏o̴̶̷̥᷅๑)

FREEWING-JP / qmk_firmware/keyboards/handwired/freewing/
 qmk_firmware/keyboards/handwired/freewing/

 今回は test_qmkを修正します。

test_qmk

 下記で Gitの内容を取得して初期設定を行ない、
sudo apt update

cd
git clone https://github.com/FREEWING-JP/qmk_firmware freewing_qmk_firmware --depth 1 -b freewing/master_all
cd freewing_qmk_firmware
make git-submodule

 下記で test_qmkのプログラムをビルドします。
make handwired/freewing/test_qmk:default

 ビルドすると下記のエラーが出るので修正します
Making handwired/freewing/test_xxx with keymap default
⚠ handwired/freewing/test_xxx: DEVICE_VER in config.h is deprecated in favor of `usb.device_version` in info.json and will be removed at a later date
⚠ handwired/freewing/test_xxx: MANUFACTURER in config.h is deprecated in favor of `manufacturer` in info.json and will be removed at a later date
⚠ handwired/freewing/test_xxx: PRODUCT in config.h is deprecated in favor of `keyboard_name` in info.json and will be removed at a later date
⚠ handwired/freewing/test_xxx: PRODUCT_ID in config.h is deprecated in favor of `usb.pid` in info.json and will be removed at a later date
⚠ handwired/freewing/test_xxx: VENDOR_ID in config.h is deprecated in favor of `usb.vid` in info.json and will be removed at a later date

⚠ handwired/freewing/test_xxx: UNUSED_PINS in config.h is deprecated and will be removed at a later date

☒ handwired/freewing/test_xxx: NO_ACTION_FUNCTION in config.h is no longer a valid option and should be removed
☒ handwired/freewing/test_xxx: NO_ACTION_MACRO in config.h is no longer a valid option and should be removed

 * POINTING_DEVICE_DRIVER= is not a valid pointing device type  [ERRORS]

Compiling: quantum/keymap_introspection.c
   In file included from ./.build/obj_handwired_freewing_test_qmk/src/default_keyboard.h:30:0,
                 from ./keyboards/handwired/freewing/test_qmk/keymaps/default/keymap.c:4,
                 from quantum/keymap_introspection.c:5:
./keyboards/handwired/freewing/test_qmk/keymaps/default/keymap.c:20:17: error: ‘RESET’ undeclared here (not in a function)
         AU_OFF, RESET,  RESET, _______


./drivers/sensors/analog_joystick.h:23:6: error: #error No pin specified for X Axis
 #    error No pin specified for X Axis

./drivers/sensors/analog_joystick.h:26:6: error: #error No pin specified for Y Axis
 #    error No pin specified for Y Axis

tmk_core/protocol/usb_descriptor_common.h:20:25: note: in definition of macro ‘USBCONCAT’
 #define USBCONCAT(a, b) a##b
                         ^
tmk_core/protocol/usb_descriptor.c:1065:42: note: in expansion of macro ‘USBSTR’
         .Size                   = sizeof(USBSTR(MANUFACTURER)),
tmk_core/protocol/usb_descriptor_common.h:21:29: error: ‘Ltest_xxx’ undeclared here (not in a function)
 #define USBSTR(s) USBCONCAT(L, s)

Linking: .build/handwired_freewing_test_qmk_default.elf  [ERRORS]
 |
 | .build/obj_handwired_freewing_test_qmk_default/drivers/sensors/analog_joystick.o (symbol from plugin): In function `axisCoordinate':
 | (.text+0x0): multiple definition of `axisCoordinate'
 | .build/obj_handwired_freewing_test_qmk_default/quantum/keymap_introspection.o (symbol from plugin):(.text+0x0): first defined here
 | .build/obj_handwired_freewing_test_qmk_default/drivers/sensors/analog_joystick.o (symbol from plugin): In function `axisCoordinate':
 | (.text+0x0): multiple definition of `minAxisValue'

・QMKファームウェアの破壊的なアップデートで昔のプログラムがエラーになるので修正する方法
QMKファームウェアの破壊的なアップデートで昔のプログラムがエラーになるので修正する方法




● NO_ACTION_MACRO in config.h is no longer a valid option and should be removed

 コメントアウトする。もしくは行を削除する。

● config.h
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
 ↓
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION


● UNUSED_PINS in config.h is deprecated and will be removed at a later date

 コメントアウトする。もしくは行を削除する。

● config.h
#define UNUSED_PINS
 ↓
//#define UNUSED_PINS


● VENDOR_ID in config.h is deprecated in favor of `usb.vid` in info.json and will be removed at a later date
● note: in definition of macro ‘USBCONCAT’

 config.hの内容をコメントアウトする。もしくは行を削除する。
 同じ内容を info.jsonに定義する。

● config.h
#define VENDOR_ID    0xFEED
#define PRODUCT_ID   0x7E57
#define DEVICE_VER   0x0001
#define MANUFACTURER FREEWING-JP
#define PRODUCT      test_qmk
 ↓
//#define VENDOR_ID    0xFEED
//#define PRODUCT_ID   0x7E57
//#define DEVICE_VER   0x0001
//#define MANUFACTURER FREEWING-JP
//#define PRODUCT      test_qmk

● info.json
{
    "keyboard_name": "test_qmk",
    "url": "",
    "maintainer": "FREEWING-JP",
    "layouts": {
 ↓
{
    "keyboard_name": "test_qmk",
    "url": "",
    "maintainer": "FREEWING-JP",
    "manufacturer": "FREEWING-JP",
    "usb": {
        "vid": "0xFEED",
        "pid": "0x7E57",
        "device_version": "0.0.1"
    },
    "layouts": {


● POINTING_DEVICE_DRIVER= is not a valid pointing device type [ERRORS]

 POINTING_DEVICE_DRIVER = analog_joystickの定義を追加する。

● rules.mk
POINTING_DEVICE_ENABLE = yes # Generic Pointer
POINTING_DEVICE_DRIVER = analog_joystick


● error: ‘RESET’ undeclared here (not in a function)

Refactor legacy quantum keycodes in default-ish keymaps #17037

[Docs] RESET -> QK_BOOT #18365

 RESETの定義名が QK_BOOTに変わったので変更する。

    [_FN1] = LAYOUT(
        AU_OFF, RESET,  RESET, _______
    ),
 ↓
    [_FN1] = LAYOUT(
        AU_OFF, QK_BOOT,  QK_BOOT, _______
    ),


● error: #error No pin specified for X Axis

 keymap.cの内容を config.hの defineで定数定義する。

● keymap.c
// Set Parameters
uint16_t minAxisValue = 200;
uint16_t maxAxisValue = 820;

uint8_t maxCursorSpeed = 2;
uint8_t precisionSpeed = 1;
uint8_t speedRegulator = 24;  // Lower Values Create Faster Movement
uint8_t cursorTimeout = 10;

● config.h
#ifdef POINTING_DEVICE_ENABLE
  #define ANALOG_JOYSTICK_X_AXIS_PIN B4
  #define ANALOG_JOYSTICK_Y_AXIS_PIN B5
  #define ANALOG_JOYSTICK_AXIS_MIN 200
  #define ANALOG_JOYSTICK_AXIS_MAX 820
  #define ANALOG_JOYSTICK_SPEED_REGULATOR 24
  #define ANALOG_JOYSTICK_READ_INTERVAL 10
  #define ANALOG_JOYSTICK_SPEED_MAX 2
#endif


● multiple definition of `axisCoordinate'

 keymap.cの中のポインティング デバイスの実装を削除する。
 (単純に #ifdef POINTING_DEVICE_ENABLE ~ #endifをコメントアウトしても良い)

● keymap.c

/*
#ifdef POINTING_DEVICE_ENABLE
#include "analog.h"
#include "pointing_device.h"

 ...

#endif
*/



Tags: [電子工作], [QMK]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

【自由工作】市販のキーボードを無改造で VIA QMK化する Keyboard Quantizerを自作する【夏休み】
【自由工作】市販のキーボードを無改造で VIA QMK化する Keyboard Quantizerを自作する【夏休み】

  夏休みが明けたら 僕のキーボードが最強になって クラスのみんなから MMK 大作戦

BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法

  BUFFALO USB 10-Key keyboard BSTK100 modification by Pro Micro and QMK firmware VIA

QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法

  ラズパイや Windows WSL環境でカスタマイズ キーボードのファームウェア QMK firmwareの開発環境を構築

QMK firmwareでプログラムのサイズを小さくするテクニック、ケチケチ プログラミングの方法
QMK firmwareでプログラムのサイズを小さくするテクニック、ケチケチ プログラミングの方法

  QMK firmware How to Reduce Program Size、Reducing QMK firmware size

QMK firmwareで I/Oピンが足りない場合にデコーダ、デマルチプレクサを使用して IOを拡張する解決方法
QMK firmwareで I/Oピンが足りない場合にデコーダ、デマルチプレクサを使用して IOを拡張する解決方法

  QMK firmware expand I/O for many matrix keyboard、How to use IO Expander Multiplexer / Demultiplexer / Decoder

QMK firmwareで I/Oピンが足りない場合に I2Cの GPIOエキスパンダを使用して IOを拡張する解決方法
QMK firmwareで I/Oピンが足りない場合に I2Cの GPIOエキスパンダを使用して IOを拡張する解決方法

  QMK firmware expand I/O for many matrix keyboard、How to use I2C GPIO Expander PCF8574 and PCF8575

QMK firmwareで Audio機能を試してみる
QMK firmwareで Audio機能を試してみる

  QMK firmware test Audio function with Piezo buzzer

QMK firmwareで OLED機能で SSD1306を試してみる
QMK firmwareで OLED機能で SSD1306を試してみる

  QMK firmware test OLED Driver with SSD1306

QMK firmwareで Analog Stick機能で PSP2000用アナログ ジョイスティックを試してみる
QMK firmwareで Analog Stick機能で PSP2000用アナログ ジョイスティックを試してみる

  QMK firmware test Analog Joystick function with PSP2000 Analog Stick

最新の QMK firmwareで new_keyboard.shのコマンドが動かなくなったのを修正する方法
最新の QMK firmwareで new_keyboard.shのコマンドが動かなくなったのを修正する方法

  QMK Bugfix Create New Keyboard new_keyboard.sh command No such file or directory Error

QMK firmwareの Githubを forkした自分のリモートに pushすると怒られて pushできない場合の対応方法
QMK firmwareの Githubを forkした自分のリモートに pushすると怒られて pushできない場合の対応方法

  refusing to allow an OAuth App to create or update workflow `.github/workflows/api.yml` without `workflow` scope

中華製の格安なプログラマブル USBキーボードを買ってみた QMK VIAとは別物
中華製の格安なプログラマブル USBキーボードを買ってみた QMK VIAとは別物

  中華製のプログラマブル USBキーボード KeyboardSetter.exe

社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応
社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応

  キー内容が Remap等でカスタマイズ可能な社畜のキーボード「新入社員の同期」を 3500円で購入




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2022 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/hardware/qmk_update_program_with_newest_firmware_2022/