From 51cfb1b45780c8ee42d993814aeef1f45477d58d Mon Sep 17 00:00:00 2001 From: Alin Marin Elena Date: Sat, 11 Jun 2022 19:18:45 +0100 Subject: [Keyboard] mlego fix product id and sync oled code (#16237) * sync oled code over the keymaps * put different product ids * put different product ids for the rest * put different product ids for the rest * try to reduce code duplication * make ifdefs nice and correct * move the leds code out of keymap * try to reduce code duplication * move the rgb code outside the keymaps for reuse * Update keyboards/mlego/m65/m65.c Co-authored-by: Drashna Jaelre * Update keyboards/mlego/m65/m65.c Co-authored-by: Drashna Jaelre * move more code outside keymaps for reuse * add few more xps * add mic mute * update to new name of macros for reset * style for matrix * clean split * use tinyuf2 as bootloader * Update keyboards/mlego/m65/rev4/rules.mk Co-authored-by: Ryan * radionalise product id and device version * add tinyuf2 as default bootloader for stm32f4 * update tinyuf2 * update tinyuf2 and via. f411 remove tinyuf2 since is not really working. make the config more conditional * sync the keymap with default * revert via non building with gcc 11 Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/mlego/m65/rev4/config.h | 20 ++++--- keyboards/mlego/m65/rev4/ld/STM32F401xE.ld | 88 ++++++++++++++++++++++++++++++ keyboards/mlego/m65/rev4/rules.mk | 5 +- 3 files changed, 105 insertions(+), 8 deletions(-) create mode 100644 keyboards/mlego/m65/rev4/ld/STM32F401xE.ld (limited to 'keyboards/mlego/m65/rev4') diff --git a/keyboards/mlego/m65/rev4/config.h b/keyboards/mlego/m65/rev4/config.h index ee47061a91..07dd0fefaa 100644 --- a/keyboards/mlego/m65/rev4/config.h +++ b/keyboards/mlego/m65/rev4/config.h @@ -17,8 +17,8 @@ along with this program. If not, see . #pragma once -#define DEVICE_VER 0x0004 -#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0002 +#define PRODUCT_ID 0x6062 #define LED_NUM_LOCK_PIN B12 #define LED_SCROLL_LOCK_PIN B13 @@ -31,18 +31,18 @@ along with this program. If not, see . #define MATRIX_COL_PINS \ { B14, A8, A10, A15, B3, B4, B5, B7, A1, A2, A3, A4, B1 } +#ifdef ENCODER_ENABLE #define ENCODERS_PAD_A \ { A0 } #define ENCODERS_PAD_B \ { B6 } +#define ENCODER_RESOLUTION 4 +#endif -#define RGB_DI_PIN B15 +#ifdef RGBLIGHT_ENABLE -#define UNUSED_PINS +#define RGB_DI_PIN B15 #define RGBLIGHT_LAYERS - -#define ENCODER_RESOLUTION 4 - #undef RGBLED_NUM #define RGBLED_NUM 20 #define RGBLIGHT_EFFECT_BREATHING @@ -58,6 +58,8 @@ along with this program. If not, see . #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 +#endif + #ifdef OLED_ENABLE # define OLED_DISPLAY_128X32 #define I2C1_SCL_PIN B9 @@ -65,3 +67,7 @@ along with this program. If not, see . #define OLED_BRIGHTNESS 128 #define OLED_FONT_H "keyboards/mlego/m65/lib/glcdfont.c" #endif + +#define UNUSED_PINS +// you want to comment this if using stm32-dfu as bootloader +#define FEE_PAGE_BASE_ADDRESS 0x08008000 diff --git a/keyboards/mlego/m65/rev4/ld/STM32F401xE.ld b/keyboards/mlego/m65/rev4/ld/STM32F401xE.ld new file mode 100644 index 0000000000..daec7d8583 --- /dev/null +++ b/keyboards/mlego/m65/rev4/ld/STM32F401xE.ld @@ -0,0 +1,88 @@ +/* + ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + * STM32F401xE memory setup. + */ +MEMORY +{ + flash0 (rx) : org = 0x08000000, len = 16k /* tinyuf2 bootloader requires app to be located at 64k offset for this MCU */ + flash1 (rx) : org = 0x08004000, len = 16k + flash2 (rx) : org = 0x08008000, len = 16k /* emulated eeprom */ + flash3 (rx) : org = 0x0800C000, len = 16k + flash4 (rx) : org = 0x08010000, len = 512k - 64k + flash5 (rx) : org = 0x00000000, len = 0 + flash6 (rx) : org = 0x00000000, len = 0 + flash7 (rx) : org = 0x00000000, len = 0 + ram0 (wx) : org = 0x20000000, len = 96k + ram1 (wx) : org = 0x00000000, len = 0 + ram2 (wx) : org = 0x00000000, len = 0 + ram3 (wx) : org = 0x00000000, len = 0 + ram4 (wx) : org = 0x00000000, len = 0 + ram5 (wx) : org = 0x00000000, len = 0 + ram6 (wx) : org = 0x00000000, len = 0 + ram7 (wx) : org = 0x00000000, len = 0 +} + +/* For each data/text section two region are defined, a virtual region + and a load region (_LMA suffix).*/ + +/* Flash region to be used for exception vectors.*/ +REGION_ALIAS("VECTORS_FLASH", flash4); +REGION_ALIAS("VECTORS_FLASH_LMA", flash4); + +/* Flash region to be used for constructors and destructors.*/ +REGION_ALIAS("XTORS_FLASH", flash4); +REGION_ALIAS("XTORS_FLASH_LMA", flash4); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash4); +REGION_ALIAS("TEXT_FLASH_LMA", flash4); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash4); +REGION_ALIAS("RODATA_FLASH_LMA", flash4); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash4); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash4); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash4); + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts.*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); +REGION_ALIAS("DATA_RAM_LMA", flash4); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +/* Generic rules inclusion.*/ +INCLUDE rules.ld + +/* TinyUF2 bootloader reset support */ +_board_dfu_dbl_tap = ORIGIN(ram0) + 64k - 4; /* this is based off the linker file for tinyuf2 */ diff --git a/keyboards/mlego/m65/rev4/rules.mk b/keyboards/mlego/m65/rev4/rules.mk index 9e1e0ab23b..bf4285383a 100644 --- a/keyboards/mlego/m65/rev4/rules.mk +++ b/keyboards/mlego/m65/rev4/rules.mk @@ -2,7 +2,10 @@ MCU = STM32F401 # Bootloader selection -BOOTLOADER = stm32-dfu +BOOTLOADER = tinyuf2 +#BOOTLOADER = stm32-dfu +MCU_LDSCRIPT = STM32F401xE +EEPROM_DRIVER = vendor # Build Options # change yes to no to disable -- cgit v1.2.3