Merge branch 'ver4dev' into ver4dev

This commit is contained in:
Mit4el
2025-03-10 22:40:53 +03:00
committed by GitHub
201 changed files with 21245 additions and 1364 deletions

38
tools/lt_fsbuild.py Normal file
View File

@@ -0,0 +1,38 @@
# c:\Users\bmw\.platformio\penv\Scripts\pio run -t buildfs
#c:\Users\bmw\.platformio\penv\.libretiny\Scripts\ltchiptool -v flash write lt_littlefs.bin --start 0x1db000 -f BK7231N
Import("env")
# Определите имя таргета
target_name = "buildfs"
# Получите путь к директории с данными из переменной среды env
data_dir = env.subst("$PROJECT_DIR") + "/data_svelte"
# Получите путь к выходному файлу LittleFS из переменной среды env
output_file = env.subst("$PROJECT_DIR") + "/lt_littlefs.bin"
# Получите путь к mklittlefs.exe из переменной среды env
mklittlefs_path = env.subst("$PROJECT_DIR") + "/tools/mklittlefs.exe"
# Определите команду, которая будет выполнена при вызове таргета
command = "{} -c {} -s 0x25000 -p 0x100 -b 0x1000 {}".format(mklittlefs_path, data_dir, output_file)
# Добавьте кастомный таргет
env.AddCustomTarget(
name=target_name,
dependencies=None,
actions=[command],
title="Build LittleFS",
description="Build LittleFS file system"
)
# Определите путь к исполняемому файлу ltchiptool
ltchiptool_path = "${LTCHIPTOOL}"
print("Custom target '{}' added!".format(target_name))

58
tools/lt_fsbuildscript.py Normal file
View File

@@ -0,0 +1,58 @@
#import os
import subprocess
#import json
#from datetime import datetime
from os.path import basename, join, normpath
Import("env")
from platformio.platform.base import PlatformBase
from platformio.platform.board import PlatformBoardConfig
#from SCons.Script import DefaultEnvironment, Environment
#env: Environment = DefaultEnvironment()
platform: PlatformBase = env.PioPlatform()
def build_ltfs():
print("Current Data dir", env.get("PROJECT_DATA_DIR"))
pathmk = env.get("PROJECT_DIR")+ "/tools/mklittlefs.exe"
pathmk = normpath(pathmk).replace("\\", "/")
print("Current tools dir", pathmk)
FS_SIZE ="0x25000"
FS_PAGE = "0x100"
FS_BLOCK = "0x1000"
subprocess.call([pathmk, "-c", env.get("PROJECT_DATA_DIR"), "-s", FS_SIZE, "-p", FS_PAGE, "-b", FS_BLOCK, "lt_littlefs.bin", ])
print("------------!!!!!!!!!-------------")
print("FS_SIZE", FS_SIZE)
print("FS_PAGE", FS_PAGE)
print("FS_BLOCK", FS_BLOCK)
print("------------!!!!!!!!!-------------")
#subprocess.call(["c:/USER_BMW/IoTManager_4dev/IoTManager_C6_Tiny/tools/mklittlefs.exe", '-c', '${SOURCES}', '-s', '${FS_SIZE}', '-p', '${FS_PAGE}', '-b', '${FS_BLOCK}', 'lt_littlefs.bin'])
# ./mklittlefs.exe -c c:\USER_BMW\IoTManager_4dev\IoTManager_C6_Tiny\data_svelte -s 0x25000 -p 0x100 -b 0x1000 lt_littlefs.bin
def upload_ltfs():
print("Flash UserData offset", env.get("FLASH_USERDATA_OFFSET"))
print("Flash UserData length", env.get("FLASH_USERDATA_LENGTH"))
LT_TOOL = 'python.exe -m ltchiptool -r -i 1 -L ' + platform.get_dir() + 'flash write'
print(LT_TOOL)
#subprocess.call(LT_TOOL , shell=True)
#"${LTCHIPTOOL}"
def before_build(): # source, target, env
print("Current Build targets", BUILD_TARGETS)
# Это всё потому что не работает "buildprog". При сборке прошивки Targets пустой, на всякий случай исключим все остальные
if (BUILD_TARGETS == ['upload'] or
BUILD_TARGETS == ['buildfs'] or
BUILD_TARGETS == ['uploadfs'] or
BUILD_TARGETS == ['uploadfsota'] or
BUILD_TARGETS == ['size']):
return
#print("Clear BUILD_TIME, delete main.o !")
# config = configparser.ConfigParser() # создаём объекта парсера INI
# config.read("platformio.ini")
#deviceName = config["platformio"]["default_envs"]
build_ltfs()
upload_ltfs()
before_build()
#на всякий случай
#cd data_svelte/
#curl.exe -F "file=@edit.htm.gz;filename=edit.htm.gz" http://192.168.2.110/edit

34
tools/lt_fsflash.py Normal file
View File

@@ -0,0 +1,34 @@
# c:\Users\bmw\.platformio\penv\Scripts\pio run -t buildfs
#c:\Users\bmw\.platformio\penv\.libretiny\Scripts\ltchiptool -v flash write lt_littlefs.bin --start 0x1db000 -f BK7231N -c
Import("env")
# Определите имя таргета
target_name = "flashfs"
# Получите путь к выходному файлу LittleFS из переменной среды env
output_file = env.subst("$PROJECT_DIR") + "/lt_littlefs.bin"
# Получите путь к mklittlefs.exe из переменной среды env
ltchiptool_path = "${LTCHIPTOOL}"
# Определите команду, которая будет выполнена при вызове таргета
command = "{} flash write {} -s 0x1db000 -c -f BK7231N ".format(ltchiptool_path, output_file)
# Добавьте кастомный таргет
env.AddCustomTarget(
name=target_name,
dependencies=None,
actions=[command],
title="Flash LittleFS",
description="Flash LittleFS file system"
)
# Определите путь к исполняемому файлу ltchiptool
print("Custom target '{}' added!".format(target_name))

View File

@@ -0,0 +1,6 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, , 3000K,
app1, app, ota_1, , 3000K,
spiffs, data, spiffs, , 1500K,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 3000K
5 app1 app ota_1 3000K
6 spiffs data spiffs 1500K

View File

@@ -3,25 +3,33 @@
# #define WIFI_CLIENT_MAX_WRITE_RETRY (10)
# #define WIFI_CLIENT_SELECT_TIMEOUT_US (1000000)
# Прописать скрипт в platformio.ini внутри [env:esp32_4mb3f] написать extra_scripts = pre:tools/patch32_ws.py
Import("env")
import os
import shutil
from sys import platform
pio_home = env.subst("$PROJECT_CORE_DIR")
print("PLATFORMIO_DIR" + pio_home)
if platform == "linux" or platform == "linux2":
# linux
mainPyPath = '/home/rise/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiClient.cpp'
#mainPyPath = '/home/rise/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiClient.cpp'
mainPyPath = pio_home + '/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiClient.cpp'
else:
# windows
mainPyPath = os.environ['USERPROFILE'] + '\\.platformio\\packages\\framework-arduinoespressif32\\libraries\\WiFi\\src\\WiFiClient.cpp'
#mainPyPath = os.environ['USERPROFILE'] + '\\.platformio\\packages\\framework-arduinoespressif32\\libraries\\WiFi\\src\\WiFiClient.cpp'
mainPyPath = pio_home + '\\packages\\framework-arduinoespressif32\\libraries\\WiFi\\src\\WiFiClient.cpp'
# print(mainPyPath)
with open(mainPyPath) as fr:
oldData = fr.read()
if not 'if WIFI_CLIENT_MAX_WRITE_RETRY (10)' in oldData:
shutil.copyfile(mainPyPath, mainPyPath+'.bak')
newData = oldData.replace('#define WIFI_CLIENT_MAX_WRITE_RETRY (10)', '#define WIFI_CLIENT_MAX_WRITE_RETRY (2)')
newData = newData.replace('#define WIFI_CLIENT_SELECT_TIMEOUT_US (1000000)', '#define WIFI_CLIENT_SELECT_TIMEOUT_US (500000)')
with open(mainPyPath, 'w') as fw:
fw.write(newData)
try:
with open(mainPyPath) as fr:
oldData = fr.read()
if not 'if WIFI_CLIENT_MAX_WRITE_RETRY (10)' in oldData:
shutil.copyfile(mainPyPath, mainPyPath+'.bak')
newData = oldData.replace('#define WIFI_CLIENT_MAX_WRITE_RETRY (10)', '#define WIFI_CLIENT_MAX_WRITE_RETRY (5)')
newData = newData.replace('#define WIFI_CLIENT_SELECT_TIMEOUT_US (1000000)', '#define WIFI_CLIENT_SELECT_TIMEOUT_US (500000)')
with open(mainPyPath, 'w') as fw:
fw.write(newData)
print(f"Файл изменён, ОК! {mainPyPath}")
except FileNotFoundError:
print("Файл не найден или не удается открыть")

42
tools/patch32c6.py Normal file
View File

@@ -0,0 +1,42 @@
Import("env")
import json
import os
import shutil
from sys import platform
pio_home = env.subst("$PROJECT_CORE_DIR")
print("PLATFORMIO_DIR" + pio_home)
if platform == "linux" or platform == "linux2":
# linux
#devkitm = '/home/rise/.platformio/platforms/espressif32/boards/esp32-c6-devkitm-1.json'
#devkitc = '/home/rise/.platformio/platforms/espressif32/boards/esp32-c6-devkitc-1.json'
devkitm = pio_home + '/platforms/espressif32/boards/esp32-c6-devkitm-1.json'
devkitc = pio_home + '/platforms/espressif32/boards/esp32-c6-devkitc-1.json'
else:
# windows
devkitm = pio_home + '\\platforms\\espressif32\\boards\\esp32-c6-devkitm-1.json'
devkitc = pio_home + '\\platforms\\espressif32\\boards\\esp32-c6-devkitc-1.json'
def add_arduino_to_frameworks(file_name):
try:
with open(file_name, 'r+') as f:
data = json.load(f)
frameworks = data['frameworks']
if 'arduino' not in frameworks:
frameworks.insert(frameworks.index('espidf') + 1, 'arduino')
data['frameworks'] = frameworks
f.seek(0)
json.dump(data, f, indent=4)
f.truncate()
print(f"Файл изменён, ОК! {file_name}")
else:
print(f"Arduino already exists in {file_name}")
except FileNotFoundError:
print("Файл не найден или не удается открыть")
if os.path.exists(devkitm) and os.path.exists(devkitc):
add_arduino_to_frameworks(devkitm)
add_arduino_to_frameworks(devkitc)
else:
print("One or both files do not exist.")

View File

@@ -1,23 +1,31 @@
# правим %USERPROFILE%\.platformio\platforms\espressif8266\builder\main.py 103-115
# для добавления возможности прошивки 16мб модуля esp8266
Import("env")
import os
import shutil
from sys import platform
pio_home = env.subst("$PROJECT_CORE_DIR")
print("PLATFORMIO_DIR" + pio_home)
if platform == "linux" or platform == "linux2":
# linux
mainPyPath = '/home/rise/.platformio/platforms/espressif8266@4.0.1/builder/main.py'
#mainPyPath = '/home/rise/.platformio/platforms/espressif8266@4.0.1/builder/main.py'
mainPyPath = pio_home + '/platforms/espressif8266@4.0.1/builder/main.py'
else:
# windows
mainPyPath = os.environ['USERPROFILE'] + '\\.platformio\\platforms\\espressif8266@4.0.1\\builder\\main.py'
#mainPyPath = os.environ['USERPROFILE'] + '\\.platformio\\platforms\\espressif8266@4.0.1\\builder\\main.py'
mainPyPath = pio_home + '\\platforms\\espressif8266@4.0.1\\builder\\main.py'
# print(mainPyPath)
print("FIX 16Mb path: " + mainPyPath)
with open(mainPyPath) as fr:
oldData = fr.read()
if not 'if _value == -0x6000:' in oldData:
shutil.copyfile(mainPyPath, mainPyPath+'.bak')
newData = oldData.replace('_value += 0xE00000 # correction', '_value += 0xE00000 # correction\n\n if _value == -0x6000:\n _value = env[k]-0x40200000')
with open(mainPyPath, 'w') as fw:
fw.write(newData)
try:
with open(mainPyPath) as fr:
oldData = fr.read()
if not 'if _value == -0x6000:' in oldData:
shutil.copyfile(mainPyPath, mainPyPath+'.bak')
newData = oldData.replace('_value += 0xE00000 # correction', '_value += 0xE00000 # correction\n\n if _value == -0x6000:\n _value = env[k]-0x40200000')
with open(mainPyPath, 'w') as fw:
fw.write(newData)
print(f"Файл изменён, ОК! {mainPyPath}")
except FileNotFoundError:
print("Файл не найден или не удается открыть")