Files
2026-05-16 01:44:07 +07:00

53 lines
2.3 KiB
Python

import os
import sys
from os.path import join, isfile
Import("env")
# 1. Находим, где на этом ПК физически лежит фреймворк ESP-IDF
FRAMEWORK_DIR = env.PioPlatform().get_package_dir("framework-espidf")
if not FRAMEWORK_DIR:
print("[ERROR] Не удалось найти директорию framework-espidf!")
sys.exit(1)
def patch_file(file_path, search_str, replace_str):
if not isfile(file_path):
return
with open(file_path, "r", encoding="utf-8") as f:
content = f.read()
if search_str in content and replace_str not in content:
print(f"[PATCHING] Модификация файла: {file_path}")
new_content = content.replace(search_str, search_str + replace_str)
with open(file_path, "w", encoding="utf-8") as f:
f.write(new_content)
# 2. Патчим Kconfig, чтобы добавить новые кнопки в menuconfig / sdkconfig
kconfig_path = join(FRAMEWORK_DIR, "components", "esp_system", "port", "soc", "esp32s3", "Kconfig.cpu")
search_kconfig = 'config ESP_DEFAULT_CPU_FREQ_MHZ_240\n bool "240 MHz"'
replace_kconfig = """\n config ESP_DEFAULT_CPU_FREQ_MHZ_320
bool "320 MHz"
config ESP_DEFAULT_CPU_FREQ_MHZ_480
bool "480 MHz" """
search_kconfig_val = 'default 240 if ESP_DEFAULT_CPU_FREQ_MHZ_240'
replace_kconfig_val = """\n default 320 if ESP_DEFAULT_CPU_FREQ_MHZ_320\n default 480 if ESP_DEFAULT_CPU_FREQ_MHZ_480"""
patch_file(kconfig_path, search_kconfig, replace_kconfig)
patch_file(kconfig_path, search_kconfig_val, replace_kconfig_val)
# 3. Патчим rtc_clk.c, чтобы ядро умело конфигурировать тактовые делители
rtc_clk_path = join(FRAMEWORK_DIR, "components", "esp_hw_support", "port", "esp32s3", "rtc_clk.c")
search_rtc = "case 240:\n config.source = SOC_CPU_CLK_SRC_PLL;\n config.source_freq_mhz = 480;\n config.div = 2;\n break;"
replace_rtc = """\n case 320:
config.source = SOC_CPU_CLK_SRC_PLL;
config.source_freq_mhz = 320;
config.div = 1;
break;
case 480:
config.source = SOC_CPU_CLK_SRC_PLL;
config.source_freq_mhz = 480;
config.div = 1;
break;"""
patch_file(rtc_clk_path, search_rtc, replace_rtc)