Skip to content

Commit

Permalink
Fixup EFL and F4's sector selection. (qmk#19221)
Browse files Browse the repository at this point in the history
  • Loading branch information
tzarc authored and Siddharth Bhal committed Dec 30, 2022
1 parent a54de7e commit 51160c5
Show file tree
Hide file tree
Showing 26 changed files with 281 additions and 76 deletions.
4 changes: 2 additions & 2 deletions builddefs/common_features.mk
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ else
# Wear-leveling EEPROM implementation, backed by MCU flash
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
SRC += eeprom_driver.c eeprom_wear_leveling.c
WEAR_LEVELING_DRIVER = embedded_flash
WEAR_LEVELING_DRIVER ?= embedded_flash
else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
# True EEPROM on STM32L0xx, L1xx
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1
Expand All @@ -239,7 +239,7 @@ else
# Wear-leveling EEPROM implementation, backed by RP2040 flash
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
SRC += eeprom_driver.c eeprom_wear_leveling.c
WEAR_LEVELING_DRIVER = rp2040_flash
WEAR_LEVELING_DRIVER ?= rp2040_flash
else ifneq ($(filter $(MCU_SERIES),KL2x K20x),)
# Teensy EEPROM implementations
OPT_DEFS += -DEEPROM_KINETIS_FLEXRAM
Expand Down
19 changes: 1 addition & 18 deletions keyboards/handwired/onekey/blackpill_f401/chconf.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,9 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/handwired/onekey/blackpill_f401/chconf.h -r platforms/chibios/common/configs/chconf.h`
*/


#pragma once

#define CH_CFG_ST_FREQUENCY 10000

#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE

#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE

#define CH_CFG_FACTORY_SEMAPHORES TRUE

#define CH_CFG_FACTORY_MAILBOXES TRUE

#define CH_CFG_FACTORY_OBJ_FIFOS TRUE

#define CH_CFG_FACTORY_PIPES TRUE

#include_next <chconf.h>
6 changes: 5 additions & 1 deletion keyboards/handwired/onekey/blackpill_f401/config.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright 2019
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand All @@ -25,3 +25,7 @@
#define ADC_PIN A0

#define RGB_CI_PIN A2

#define SOLENOID_PIN B12
#define SOLENOID_PINS { B12, B13, B14, B15 }
#define SOLENOID_PINS_ACTIVE_STATE { high, high, low }
7 changes: 1 addition & 6 deletions keyboards/handwired/onekey/blackpill_f401/halconf.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright 2020 QMK
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand All @@ -14,11 +14,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/handwired/onekey/blackpill_f401/halconf.h -r platforms/chibios/common/configs/halconf.h`
*/

#pragma once

#define HAL_USE_ADC TRUE
Expand Down
2 changes: 1 addition & 1 deletion keyboards/handwired/onekey/blackpill_f401/mcuconf.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright 2020 Nick Brassel (tzarc)
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand Down
21 changes: 21 additions & 0 deletions keyboards/handwired/onekey/blackpill_f401_tinyuf2/chconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/* Copyright 2020 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#define CH_CFG_ST_FREQUENCY 10000

#include_next <chconf.h>
31 changes: 31 additions & 0 deletions keyboards/handwired/onekey/blackpill_f401_tinyuf2/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#include "config_common.h"

#define BACKLIGHT_PWM_DRIVER PWMD5
#define BACKLIGHT_PWM_CHANNEL 1
#define BACKLIGHT_PAL_MODE 2

#define ADC_PIN A0

#define RGB_CI_PIN A2

#define SOLENOID_PIN B12
#define SOLENOID_PINS { B12, B13, B14, B15 }
#define SOLENOID_PINS_ACTIVE_STATE { high, high, low }
25 changes: 25 additions & 0 deletions keyboards/handwired/onekey/blackpill_f401_tinyuf2/halconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#define HAL_USE_ADC TRUE

#define HAL_USE_I2C TRUE

#define HAL_USE_PWM TRUE

#include_next <halconf.h>
16 changes: 16 additions & 0 deletions keyboards/handwired/onekey/blackpill_f401_tinyuf2/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"keyboard_name": "Onekey Blackpill STM32F401 TinyUF2",
"processor": "STM32F401",
"bootloader": "tinyuf2",
"board": "BLACKPILL_STM32_F401",
"matrix_pins": {
"cols": ["B0"],
"rows": ["A7"]
},
"backlight": {
"pin": "A0"
},
"rgblight": {
"pin": "A1"
}
}
28 changes: 28 additions & 0 deletions keyboards/handwired/onekey/blackpill_f401_tinyuf2/mcuconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

#pragma once

#include_next "mcuconf.h"

#undef STM32_ADC_USE_ADC1
#define STM32_ADC_USE_ADC1 TRUE

#undef STM32_I2C_USE_I2C1
#define STM32_I2C_USE_I2C1 TRUE

#undef STM32_PWM_USE_TIM5
#define STM32_PWM_USE_TIM5 TRUE
9 changes: 9 additions & 0 deletions keyboards/handwired/onekey/blackpill_f401_tinyuf2/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# F401 Blackpill onekey

* Supported Hardware: STM32F401CCU6 WeAct v1.3

To trigger keypress, short together pins *B0* and *A7*.

This variant requires the TinyUF2 bootloader to be installed. This can be downloaded from the [tinyuf2 releases page](https://github.com/adafruit/tinyuf2/releases). The F401 blackpill binary works for both F401- and F411-based blackpill devices.

Double-tap reset to enter bootloader mode. Copy the built uf2 file to the device by dragging the file to the new USB disk.
1 change: 1 addition & 0 deletions keyboards/handwired/onekey/blackpill_f401_tinyuf2/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
KEYBOARD_SHARED_EP = yes
19 changes: 1 addition & 18 deletions keyboards/handwired/onekey/blackpill_f411/chconf.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,9 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/handwired/onekey/blackpill_f411/chconf.h -r platforms/chibios/common/configs/chconf.h`
*/


#pragma once

#define CH_CFG_ST_FREQUENCY 10000

#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE

#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE

#define CH_CFG_FACTORY_SEMAPHORES TRUE

#define CH_CFG_FACTORY_MAILBOXES TRUE

#define CH_CFG_FACTORY_OBJ_FIFOS TRUE

#define CH_CFG_FACTORY_PIPES TRUE

#include_next <chconf.h>
2 changes: 1 addition & 1 deletion keyboards/handwired/onekey/blackpill_f411/config.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright 2019
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand Down
7 changes: 1 addition & 6 deletions keyboards/handwired/onekey/blackpill_f411/halconf.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright 2020 QMK
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand All @@ -14,11 +14,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/handwired/onekey/blackpill_f411/halconf.h -r platforms/chibios/common/configs/halconf.h`
*/

#pragma once

#define HAL_USE_ADC TRUE
Expand Down
2 changes: 1 addition & 1 deletion keyboards/handwired/onekey/blackpill_f411/mcuconf.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright 2020 Nick Brassel (tzarc)
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand Down
4 changes: 2 additions & 2 deletions keyboards/handwired/onekey/blackpill_f411_tinyuf2/chconf.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright 2021 QMK
/* Copyright 2020 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand All @@ -13,7 +13,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#define CH_CFG_ST_FREQUENCY 10000
Expand Down
4 changes: 4 additions & 0 deletions keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,7 @@
#define ADC_PIN A0

#define RGB_CI_PIN A2

#define SOLENOID_PIN B12
#define SOLENOID_PINS { B12, B13, B14, B15 }
#define SOLENOID_PINS_ACTIVE_STATE { high, high, low }
6 changes: 6 additions & 0 deletions keyboards/handwired/onekey/keymaps/wear_leveling/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// Copyright 2018-2022 Nick Brassel (@tzarc)
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once

#define DEBUG_EEPROM_OUTPUT
#define WEAR_LEVELING_DEBUG_OUTPUT
65 changes: 65 additions & 0 deletions keyboards/handwired/onekey/keymaps/wear_leveling/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
// Copyright 2018-2022 Nick Brassel (@tzarc)
// SPDX-License-Identifier: GPL-3.0-or-later
#include QMK_KEYBOARD_H

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_ortho_1x1(QK_BOOT)
};

#ifdef DEBUG_EEPROM_OUTPUT

# ifdef WEAR_LEVELING_ENABLE
# include "wear_leveling.h"
# endif // WEAR_LEVELING_ENABLE

uint8_t prng(void) {
static uint8_t s = 0xAA, a = 0;
s ^= s << 3;
s ^= s >> 5;
s ^= a++ >> 2;
return s;
}

void keyboard_post_init_user(void) {
debug_enable = true;
debug_matrix = true;
debug_keyboard = true;
}

void matrix_scan_user(void) {
static uint32_t last_eeprom_access = 0;
uint32_t now = timer_read32();
if (now - last_eeprom_access > 5000) {
dprint("reading eeprom\n");
last_eeprom_access = now;

union {
uint8_t bytes[4];
uint32_t raw;
} tmp;
extern uint8_t prng(void);
tmp.bytes[0] = prng();
tmp.bytes[1] = prng();
tmp.bytes[2] = prng();
tmp.bytes[3] = prng();

eeconfig_update_user(tmp.raw);
uint32_t value = eeconfig_read_user();
if (value != tmp.raw) {
dprint("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
dprint("!! EEPROM readback mismatch!\n");
dprint("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
}
}

# ifdef WEAR_LEVELING_ENABLE
static uint32_t last_wear_leveling_init = 0;
if (now - last_wear_leveling_init > 30000) {
dprint("init'ing wear-leveling\n");
last_wear_leveling_init = now;
wear_leveling_init();
}
# endif // WEAR_LEVELING_ENABLE
}

#endif // DEBUG_EEPROM_OUTPUT
1 change: 1 addition & 0 deletions keyboards/handwired/onekey/keymaps/wear_leveling/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CONSOLE_ENABLE = yes
Loading

0 comments on commit 51160c5

Please sign in to comment.