mirror of
https://github.com/esphome/esphome.git
synced 2026-05-28 13:37:24 +08:00
[libretiny] Regenerate boards, enable Cortex-M4 atomics, and consolidate platform code (#13191)
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
- [ ] RP2040
|
- [ ] RP2040
|
||||||
- [ ] BK72xx
|
- [ ] BK72xx
|
||||||
- [ ] RTL87xx
|
- [ ] RTL87xx
|
||||||
|
- [ ] LN882x
|
||||||
- [ ] nRF52840
|
- [ ] nRF52840
|
||||||
|
|
||||||
## Example entry for `config.yaml`:
|
## Example entry for `config.yaml`:
|
||||||
|
|||||||
@@ -1,9 +1,23 @@
|
|||||||
# This file was auto-generated by libretiny/generate_components.py
|
"""
|
||||||
# Do not modify its contents.
|
██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗
|
||||||
# For custom pin validators, put validate_pin() or validate_usage()
|
██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝
|
||||||
# in gpio.py file in this directory.
|
██║ █╗ ██║███████║██████╔╝██╔██╗ ██║██║██╔██╗ ██║██║ ███╗
|
||||||
# For changing schema/pin schema, put COMPONENT_SCHEMA or COMPONENT_PIN_SCHEMA
|
██║███╗██║██╔══██║██╔══██╗██║╚██╗██║██║██║╚██╗██║██║ ██║
|
||||||
# in schema.py file in this directory.
|
╚███╔███╔╝██║ ██║██║ ██║██║ ╚████║██║██║ ╚████║╚██████╔╝
|
||||||
|
╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═══╝ ╚═════╝
|
||||||
|
|
||||||
|
AUTO-GENERATED FILE - DO NOT EDIT!
|
||||||
|
|
||||||
|
This file was auto-generated by libretiny/generate_components.py.
|
||||||
|
Any manual changes WILL BE LOST on regeneration.
|
||||||
|
|
||||||
|
To customize this component:
|
||||||
|
- Pin validators: Create gpio.py with validate_pin() or validate_usage()
|
||||||
|
- Schema extensions: Create schema.py with COMPONENT_SCHEMA or COMPONENT_PIN_SCHEMA
|
||||||
|
|
||||||
|
Platform-specific code should be added to the main libretiny component
|
||||||
|
(__init__.py in esphome/components/libretiny/) rather than here.
|
||||||
|
"""
|
||||||
|
|
||||||
from esphome import pins
|
from esphome import pins
|
||||||
from esphome.components import libretiny
|
from esphome.components import libretiny
|
||||||
@@ -27,6 +41,7 @@ COMPONENT_DATA = LibreTinyComponent(
|
|||||||
board_pins=BK72XX_BOARD_PINS,
|
board_pins=BK72XX_BOARD_PINS,
|
||||||
pin_validation=None,
|
pin_validation=None,
|
||||||
usage_validation=None,
|
usage_validation=None,
|
||||||
|
supports_atomics=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+660
-649
File diff suppressed because it is too large
Load Diff
@@ -35,6 +35,7 @@ from .const import (
|
|||||||
FAMILY_BK7231N,
|
FAMILY_BK7231N,
|
||||||
FAMILY_COMPONENT,
|
FAMILY_COMPONENT,
|
||||||
FAMILY_FRIENDLY,
|
FAMILY_FRIENDLY,
|
||||||
|
FAMILY_RTL8710B,
|
||||||
KEY_BOARD,
|
KEY_BOARD,
|
||||||
KEY_COMPONENT,
|
KEY_COMPONENT,
|
||||||
KEY_COMPONENT_DATA,
|
KEY_COMPONENT_DATA,
|
||||||
@@ -278,11 +279,23 @@ async def component_to_code(config):
|
|||||||
cg.add_build_flag(f"-DUSE_LIBRETINY_VARIANT_{config[CONF_FAMILY]}")
|
cg.add_build_flag(f"-DUSE_LIBRETINY_VARIANT_{config[CONF_FAMILY]}")
|
||||||
cg.add_define("ESPHOME_BOARD", config[CONF_BOARD])
|
cg.add_define("ESPHOME_BOARD", config[CONF_BOARD])
|
||||||
cg.add_define("ESPHOME_VARIANT", FAMILY_FRIENDLY[config[CONF_FAMILY]])
|
cg.add_define("ESPHOME_VARIANT", FAMILY_FRIENDLY[config[CONF_FAMILY]])
|
||||||
# LibreTiny uses MULTI_NO_ATOMICS because platforms like BK7231N (ARM968E-S) lack
|
# Set threading model based on chip architecture
|
||||||
# exclusive load/store (no LDREX/STREX). std::atomic RMW operations require libatomic,
|
component: LibreTinyComponent = CORE.data[KEY_LIBRETINY][KEY_COMPONENT_DATA]
|
||||||
# which is not linked to save flash (4-8KB). Even if linked, libatomic would use locks
|
if component.supports_atomics:
|
||||||
# (ATOMIC_INT_LOCK_FREE=1), so explicit FreeRTOS mutexes are simpler and equivalent.
|
# RTL87xx (Cortex-M4) and LN882x (Cortex-M4F) have LDREX/STREX
|
||||||
cg.add_define(ThreadModel.MULTI_NO_ATOMICS)
|
cg.add_define(ThreadModel.MULTI_ATOMICS)
|
||||||
|
else:
|
||||||
|
# BK72xx uses ARM968E-S (ARMv5TE) which lacks LDREX/STREX.
|
||||||
|
# std::atomic RMW operations would require libatomic (not linked to save
|
||||||
|
# 4-8KB flash). Even if linked, it would use locks, so explicit FreeRTOS
|
||||||
|
# mutexes are simpler and equivalent.
|
||||||
|
cg.add_define(ThreadModel.MULTI_NO_ATOMICS)
|
||||||
|
|
||||||
|
# RTL8710B needs FreeRTOS 8.2.3+ for xTaskNotifyGive/ulTaskNotifyTake
|
||||||
|
# required by AsyncTCP 3.4.3+ (https://github.com/esphome/esphome/issues/10220)
|
||||||
|
# RTL8720C (ambz2) requires FreeRTOS 10.x so this only applies to RTL8710B
|
||||||
|
if config[CONF_FAMILY] == FAMILY_RTL8710B:
|
||||||
|
cg.add_platformio_option("custom_versions.freertos", "8.2.3")
|
||||||
|
|
||||||
# force using arduino framework
|
# force using arduino framework
|
||||||
cg.add_platformio_option("framework", "arduino")
|
cg.add_platformio_option("framework", "arduino")
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ class LibreTinyComponent:
|
|||||||
board_pins: dict[str, dict[str, int]]
|
board_pins: dict[str, dict[str, int]]
|
||||||
pin_validation: Callable[[int], int]
|
pin_validation: Callable[[int], int]
|
||||||
usage_validation: Callable[[dict], dict]
|
usage_validation: Callable[[dict], dict]
|
||||||
|
supports_atomics: bool = False # True for Cortex-M4(F) with LDREX/STREX
|
||||||
|
|
||||||
|
|
||||||
CONF_LIBRETINY = "libretiny"
|
CONF_LIBRETINY = "libretiny"
|
||||||
|
|||||||
@@ -11,13 +11,27 @@ from black import FileMode, format_str
|
|||||||
from ltchiptool import Board, Family
|
from ltchiptool import Board, Family
|
||||||
from ltchiptool.util.lvm import LVM
|
from ltchiptool.util.lvm import LVM
|
||||||
|
|
||||||
BASE_CODE_INIT = """
|
BASE_CODE_INIT = '''
|
||||||
# This file was auto-generated by libretiny/generate_components.py
|
"""
|
||||||
# Do not modify its contents.
|
██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗
|
||||||
# For custom pin validators, put validate_pin() or validate_usage()
|
██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝
|
||||||
# in gpio.py file in this directory.
|
██║ █╗ ██║███████║██████╔╝██╔██╗ ██║██║██╔██╗ ██║██║ ███╗
|
||||||
# For changing schema/pin schema, put COMPONENT_SCHEMA or COMPONENT_PIN_SCHEMA
|
██║███╗██║██╔══██║██╔══██╗██║╚██╗██║██║██║╚██╗██║██║ ██║
|
||||||
# in schema.py file in this directory.
|
╚███╔███╔╝██║ ██║██║ ██║██║ ╚████║██║██║ ╚████║╚██████╔╝
|
||||||
|
╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═══╝ ╚═════╝
|
||||||
|
|
||||||
|
AUTO-GENERATED FILE - DO NOT EDIT!
|
||||||
|
|
||||||
|
This file was auto-generated by libretiny/generate_components.py.
|
||||||
|
Any manual changes WILL BE LOST on regeneration.
|
||||||
|
|
||||||
|
To customize this component:
|
||||||
|
- Pin validators: Create gpio.py with validate_pin() or validate_usage()
|
||||||
|
- Schema extensions: Create schema.py with COMPONENT_SCHEMA or COMPONENT_PIN_SCHEMA
|
||||||
|
|
||||||
|
Platform-specific code should be added to the main libretiny component
|
||||||
|
(__init__.py in esphome/components/libretiny/) rather than here.
|
||||||
|
"""
|
||||||
|
|
||||||
from esphome import pins
|
from esphome import pins
|
||||||
from esphome.components import libretiny
|
from esphome.components import libretiny
|
||||||
@@ -31,8 +45,9 @@ from esphome.core import CORE
|
|||||||
|
|
||||||
{IMPORTS}
|
{IMPORTS}
|
||||||
|
|
||||||
CODEOWNERS = ["@kuba2k2"]
|
CODEOWNERS = {CODEOWNERS}
|
||||||
AUTO_LOAD = ["libretiny"]
|
AUTO_LOAD = ["libretiny"]
|
||||||
|
IS_TARGET_PLATFORM = True
|
||||||
|
|
||||||
COMPONENT_DATA = LibreTinyComponent(
|
COMPONENT_DATA = LibreTinyComponent(
|
||||||
name=COMPONENT_{COMPONENT},
|
name=COMPONENT_{COMPONENT},
|
||||||
@@ -40,6 +55,7 @@ COMPONENT_DATA = LibreTinyComponent(
|
|||||||
board_pins={COMPONENT}_BOARD_PINS,
|
board_pins={COMPONENT}_BOARD_PINS,
|
||||||
pin_validation={PIN_VALIDATION},
|
pin_validation={PIN_VALIDATION},
|
||||||
usage_validation={USAGE_VALIDATION},
|
usage_validation={USAGE_VALIDATION},
|
||||||
|
supports_atomics={SUPPORTS_ATOMICS},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -63,11 +79,22 @@ async def to_code(config):
|
|||||||
@pins.PIN_SCHEMA_REGISTRY.register("{COMPONENT_LOWER}", PIN_SCHEMA)
|
@pins.PIN_SCHEMA_REGISTRY.register("{COMPONENT_LOWER}", PIN_SCHEMA)
|
||||||
async def pin_to_code(config):
|
async def pin_to_code(config):
|
||||||
return await libretiny.gpio.component_pin_to_code(config)
|
return await libretiny.gpio.component_pin_to_code(config)
|
||||||
"""
|
'''
|
||||||
|
|
||||||
BASE_CODE_BOARDS = """
|
BASE_CODE_BOARDS = '''
|
||||||
# This file was auto-generated by libretiny/generate_components.py
|
"""
|
||||||
# Do not modify its contents.
|
██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗
|
||||||
|
██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝
|
||||||
|
██║ █╗ ██║███████║██████╔╝██╔██╗ ██║██║██╔██╗ ██║██║ ███╗
|
||||||
|
██║███╗██║██╔══██║██╔══██╗██║╚██╗██║██║██║╚██╗██║██║ ██║
|
||||||
|
╚███╔███╔╝██║ ██║██║ ██║██║ ╚████║██║██║ ╚████║╚██████╔╝
|
||||||
|
╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═══╝ ╚═════╝
|
||||||
|
|
||||||
|
AUTO-GENERATED FILE - DO NOT EDIT!
|
||||||
|
|
||||||
|
This file was auto-generated by libretiny/generate_components.py.
|
||||||
|
Any manual changes WILL BE LOST on regeneration.
|
||||||
|
"""
|
||||||
|
|
||||||
from esphome.components.libretiny.const import {FAMILIES}
|
from esphome.components.libretiny.const import {FAMILIES}
|
||||||
|
|
||||||
@@ -76,7 +103,7 @@ from esphome.components.libretiny.const import {FAMILIES}
|
|||||||
{COMPONENT}_BOARD_PINS = {PINS_JSON}
|
{COMPONENT}_BOARD_PINS = {PINS_JSON}
|
||||||
|
|
||||||
BOARDS = {COMPONENT}_BOARDS
|
BOARDS = {COMPONENT}_BOARDS
|
||||||
"""
|
'''
|
||||||
|
|
||||||
# variable names in component extension code
|
# variable names in component extension code
|
||||||
VAR_SCHEMA = "COMPONENT_SCHEMA"
|
VAR_SCHEMA = "COMPONENT_SCHEMA"
|
||||||
@@ -97,6 +124,19 @@ COMPONENT_MAP = {
|
|||||||
"ln882x": "lightning-ln882x",
|
"ln882x": "lightning-ln882x",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Components with Cortex-M4(F) have LDREX/STREX for native atomic support.
|
||||||
|
# BK72xx uses ARM968E-S (ARMv5TE) which lacks these instructions.
|
||||||
|
COMPONENT_SUPPORTS_ATOMICS = {
|
||||||
|
"rtl87xx": True, # Cortex-M4
|
||||||
|
"ln882x": True, # Cortex-M4F
|
||||||
|
"bk72xx": False, # ARM968E-S
|
||||||
|
}
|
||||||
|
|
||||||
|
# CODEOWNERS for each component. If not specified, defaults to @kuba2k2.
|
||||||
|
COMPONENT_CODEOWNERS = {
|
||||||
|
"ln882x": ["@lamauny"],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def subst(code: str, key: str, value: str) -> str:
|
def subst(code: str, key: str, value: str) -> str:
|
||||||
return code.replace(f"{{{key}}}", value)
|
return code.replace(f"{{{key}}}", value)
|
||||||
@@ -140,6 +180,7 @@ def write_component_code(
|
|||||||
"boards": {"{COMPONENT}_BOARDS", "{COMPONENT}_BOARD_PINS"},
|
"boards": {"{COMPONENT}_BOARDS", "{COMPONENT}_BOARD_PINS"},
|
||||||
}
|
}
|
||||||
# substitution values
|
# substitution values
|
||||||
|
codeowners = COMPONENT_CODEOWNERS.get(component, ["@kuba2k2"])
|
||||||
values = dict(
|
values = dict(
|
||||||
COMPONENT=component.upper(),
|
COMPONENT=component.upper(),
|
||||||
COMPONENT_LOWER=component.lower(),
|
COMPONENT_LOWER=component.lower(),
|
||||||
@@ -147,6 +188,8 @@ def write_component_code(
|
|||||||
PIN_SCHEMA=PIN_SCHEMA_BASE,
|
PIN_SCHEMA=PIN_SCHEMA_BASE,
|
||||||
PIN_VALIDATION="None",
|
PIN_VALIDATION="None",
|
||||||
USAGE_VALIDATION="None",
|
USAGE_VALIDATION="None",
|
||||||
|
SUPPORTS_ATOMICS=str(COMPONENT_SUPPORTS_ATOMICS.get(component, False)),
|
||||||
|
CODEOWNERS=repr(codeowners),
|
||||||
)
|
)
|
||||||
|
|
||||||
# parse gpio.py file to find custom validators
|
# parse gpio.py file to find custom validators
|
||||||
|
|||||||
@@ -1,9 +1,23 @@
|
|||||||
# This file was auto-generated by libretiny/generate_components.py
|
"""
|
||||||
# Do not modify its contents.
|
██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗
|
||||||
# For custom pin validators, put validate_pin() or validate_usage()
|
██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝
|
||||||
# in gpio.py file in this directory.
|
██║ █╗ ██║███████║██████╔╝██╔██╗ ██║██║██╔██╗ ██║██║ ███╗
|
||||||
# For changing schema/pin schema, put COMPONENT_SCHEMA or COMPONENT_PIN_SCHEMA
|
██║███╗██║██╔══██║██╔══██╗██║╚██╗██║██║██║╚██╗██║██║ ██║
|
||||||
# in schema.py file in this directory.
|
╚███╔███╔╝██║ ██║██║ ██║██║ ╚████║██║██║ ╚████║╚██████╔╝
|
||||||
|
╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═══╝ ╚═════╝
|
||||||
|
|
||||||
|
AUTO-GENERATED FILE - DO NOT EDIT!
|
||||||
|
|
||||||
|
This file was auto-generated by libretiny/generate_components.py.
|
||||||
|
Any manual changes WILL BE LOST on regeneration.
|
||||||
|
|
||||||
|
To customize this component:
|
||||||
|
- Pin validators: Create gpio.py with validate_pin() or validate_usage()
|
||||||
|
- Schema extensions: Create schema.py with COMPONENT_SCHEMA or COMPONENT_PIN_SCHEMA
|
||||||
|
|
||||||
|
Platform-specific code should be added to the main libretiny component
|
||||||
|
(__init__.py in esphome/components/libretiny/) rather than here.
|
||||||
|
"""
|
||||||
|
|
||||||
from esphome import pins
|
from esphome import pins
|
||||||
from esphome.components import libretiny
|
from esphome.components import libretiny
|
||||||
@@ -27,6 +41,7 @@ COMPONENT_DATA = LibreTinyComponent(
|
|||||||
board_pins=LN882X_BOARD_PINS,
|
board_pins=LN882X_BOARD_PINS,
|
||||||
pin_validation=None,
|
pin_validation=None,
|
||||||
usage_validation=None,
|
usage_validation=None,
|
||||||
|
supports_atomics=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+207
-125
@@ -1,9 +1,28 @@
|
|||||||
# This file was auto-generated by libretiny/generate_components.py
|
"""
|
||||||
# Do not modify its contents.
|
██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗
|
||||||
|
██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝
|
||||||
|
██║ █╗ ██║███████║██████╔╝██╔██╗ ██║██║██╔██╗ ██║██║ ███╗
|
||||||
|
██║███╗██║██╔══██║██╔══██╗██║╚██╗██║██║██║╚██╗██║██║ ██║
|
||||||
|
╚███╔███╔╝██║ ██║██║ ██║██║ ╚████║██║██║ ╚████║╚██████╔╝
|
||||||
|
╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═══╝ ╚═════╝
|
||||||
|
|
||||||
|
AUTO-GENERATED FILE - DO NOT EDIT!
|
||||||
|
|
||||||
|
This file was auto-generated by libretiny/generate_components.py.
|
||||||
|
Any manual changes WILL BE LOST on regeneration.
|
||||||
|
"""
|
||||||
|
|
||||||
from esphome.components.libretiny.const import FAMILY_LN882H
|
from esphome.components.libretiny.const import FAMILY_LN882H
|
||||||
|
|
||||||
LN882X_BOARDS = {
|
LN882X_BOARDS = {
|
||||||
|
"generic-ln882hki": {
|
||||||
|
"name": "Generic - LN882HKI",
|
||||||
|
"family": FAMILY_LN882H,
|
||||||
|
},
|
||||||
|
"wb02a": {
|
||||||
|
"name": "WB02A Wi-Fi/BLE Module",
|
||||||
|
"family": FAMILY_LN882H,
|
||||||
|
},
|
||||||
"wl2s": {
|
"wl2s": {
|
||||||
"name": "WL2S Wi-Fi/BLE Module",
|
"name": "WL2S Wi-Fi/BLE Module",
|
||||||
"family": FAMILY_LN882H,
|
"family": FAMILY_LN882H,
|
||||||
@@ -12,13 +31,195 @@ LN882X_BOARDS = {
|
|||||||
"name": "LN-02 Wi-Fi/BLE Module",
|
"name": "LN-02 Wi-Fi/BLE Module",
|
||||||
"family": FAMILY_LN882H,
|
"family": FAMILY_LN882H,
|
||||||
},
|
},
|
||||||
"generic-ln882hki": {
|
|
||||||
"name": "Generic - LN882HKI",
|
|
||||||
"family": FAMILY_LN882H,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LN882X_BOARD_PINS = {
|
LN882X_BOARD_PINS = {
|
||||||
|
"generic-ln882hki": {
|
||||||
|
"WIRE0_SCL_0": 0,
|
||||||
|
"WIRE0_SCL_1": 1,
|
||||||
|
"WIRE0_SCL_2": 2,
|
||||||
|
"WIRE0_SCL_3": 3,
|
||||||
|
"WIRE0_SCL_4": 4,
|
||||||
|
"WIRE0_SCL_5": 5,
|
||||||
|
"WIRE0_SCL_6": 6,
|
||||||
|
"WIRE0_SCL_7": 7,
|
||||||
|
"WIRE0_SCL_8": 8,
|
||||||
|
"WIRE0_SCL_9": 9,
|
||||||
|
"WIRE0_SCL_10": 10,
|
||||||
|
"WIRE0_SCL_11": 11,
|
||||||
|
"WIRE0_SCL_12": 12,
|
||||||
|
"WIRE0_SCL_13": 19,
|
||||||
|
"WIRE0_SCL_14": 20,
|
||||||
|
"WIRE0_SCL_15": 21,
|
||||||
|
"WIRE0_SCL_16": 22,
|
||||||
|
"WIRE0_SCL_17": 23,
|
||||||
|
"WIRE0_SCL_18": 24,
|
||||||
|
"WIRE0_SCL_19": 25,
|
||||||
|
"WIRE0_SDA_0": 0,
|
||||||
|
"WIRE0_SDA_1": 1,
|
||||||
|
"WIRE0_SDA_2": 2,
|
||||||
|
"WIRE0_SDA_3": 3,
|
||||||
|
"WIRE0_SDA_4": 4,
|
||||||
|
"WIRE0_SDA_5": 5,
|
||||||
|
"WIRE0_SDA_6": 6,
|
||||||
|
"WIRE0_SDA_7": 7,
|
||||||
|
"WIRE0_SDA_8": 8,
|
||||||
|
"WIRE0_SDA_9": 9,
|
||||||
|
"WIRE0_SDA_10": 10,
|
||||||
|
"WIRE0_SDA_11": 11,
|
||||||
|
"WIRE0_SDA_12": 12,
|
||||||
|
"WIRE0_SDA_13": 19,
|
||||||
|
"WIRE0_SDA_14": 20,
|
||||||
|
"WIRE0_SDA_15": 21,
|
||||||
|
"WIRE0_SDA_16": 22,
|
||||||
|
"WIRE0_SDA_17": 23,
|
||||||
|
"WIRE0_SDA_18": 24,
|
||||||
|
"WIRE0_SDA_19": 25,
|
||||||
|
"SERIAL0_RX": 3,
|
||||||
|
"SERIAL0_TX": 2,
|
||||||
|
"SERIAL1_RX": 24,
|
||||||
|
"SERIAL1_TX": 25,
|
||||||
|
"ADC2": 0,
|
||||||
|
"ADC3": 1,
|
||||||
|
"ADC4": 4,
|
||||||
|
"ADC5": 19,
|
||||||
|
"ADC6": 20,
|
||||||
|
"ADC7": 21,
|
||||||
|
"PA00": 0,
|
||||||
|
"PA0": 0,
|
||||||
|
"PA01": 1,
|
||||||
|
"PA1": 1,
|
||||||
|
"PA02": 2,
|
||||||
|
"PA2": 2,
|
||||||
|
"PA03": 3,
|
||||||
|
"PA3": 3,
|
||||||
|
"PA04": 4,
|
||||||
|
"PA4": 4,
|
||||||
|
"PA05": 5,
|
||||||
|
"PA5": 5,
|
||||||
|
"PA06": 6,
|
||||||
|
"PA6": 6,
|
||||||
|
"PA07": 7,
|
||||||
|
"PA7": 7,
|
||||||
|
"PA08": 8,
|
||||||
|
"PA8": 8,
|
||||||
|
"PA09": 9,
|
||||||
|
"PA9": 9,
|
||||||
|
"PA10": 10,
|
||||||
|
"PA11": 11,
|
||||||
|
"PA12": 12,
|
||||||
|
"PB03": 19,
|
||||||
|
"PB3": 19,
|
||||||
|
"PB04": 20,
|
||||||
|
"PB4": 20,
|
||||||
|
"PB05": 21,
|
||||||
|
"PB5": 21,
|
||||||
|
"PB06": 22,
|
||||||
|
"PB6": 22,
|
||||||
|
"PB07": 23,
|
||||||
|
"PB7": 23,
|
||||||
|
"PB08": 24,
|
||||||
|
"PB8": 24,
|
||||||
|
"PB09": 25,
|
||||||
|
"PB9": 25,
|
||||||
|
"RX0": 3,
|
||||||
|
"RX1": 24,
|
||||||
|
"TX0": 2,
|
||||||
|
"TX1": 25,
|
||||||
|
"D0": 0,
|
||||||
|
"D1": 1,
|
||||||
|
"D2": 2,
|
||||||
|
"D3": 3,
|
||||||
|
"D4": 4,
|
||||||
|
"D5": 5,
|
||||||
|
"D6": 6,
|
||||||
|
"D7": 7,
|
||||||
|
"D8": 8,
|
||||||
|
"D9": 9,
|
||||||
|
"D10": 10,
|
||||||
|
"D11": 11,
|
||||||
|
"D12": 12,
|
||||||
|
"D13": 19,
|
||||||
|
"D14": 20,
|
||||||
|
"D15": 21,
|
||||||
|
"D16": 22,
|
||||||
|
"D17": 23,
|
||||||
|
"D18": 24,
|
||||||
|
"D19": 25,
|
||||||
|
"A2": 0,
|
||||||
|
"A3": 1,
|
||||||
|
"A4": 4,
|
||||||
|
"A5": 19,
|
||||||
|
"A6": 20,
|
||||||
|
"A7": 21,
|
||||||
|
},
|
||||||
|
"wb02a": {
|
||||||
|
"WIRE0_SCL_0": 7,
|
||||||
|
"WIRE0_SCL_1": 5,
|
||||||
|
"WIRE0_SCL_2": 3,
|
||||||
|
"WIRE0_SCL_3": 10,
|
||||||
|
"WIRE0_SCL_4": 2,
|
||||||
|
"WIRE0_SCL_5": 1,
|
||||||
|
"WIRE0_SCL_6": 4,
|
||||||
|
"WIRE0_SCL_7": 5,
|
||||||
|
"WIRE0_SCL_8": 9,
|
||||||
|
"WIRE0_SCL_9": 24,
|
||||||
|
"WIRE0_SCL_10": 25,
|
||||||
|
"WIRE0_SDA_0": 7,
|
||||||
|
"WIRE0_SDA_1": 5,
|
||||||
|
"WIRE0_SDA_2": 3,
|
||||||
|
"WIRE0_SDA_3": 10,
|
||||||
|
"WIRE0_SDA_4": 2,
|
||||||
|
"WIRE0_SDA_5": 1,
|
||||||
|
"WIRE0_SDA_6": 4,
|
||||||
|
"WIRE0_SDA_7": 5,
|
||||||
|
"WIRE0_SDA_8": 9,
|
||||||
|
"WIRE0_SDA_9": 24,
|
||||||
|
"WIRE0_SDA_10": 25,
|
||||||
|
"SERIAL0_RX": 3,
|
||||||
|
"SERIAL0_TX": 2,
|
||||||
|
"SERIAL1_RX": 24,
|
||||||
|
"SERIAL1_TX": 25,
|
||||||
|
"ADC3": 1,
|
||||||
|
"ADC4": 4,
|
||||||
|
"PA01": 1,
|
||||||
|
"PA1": 1,
|
||||||
|
"PA02": 2,
|
||||||
|
"PA2": 2,
|
||||||
|
"PA03": 3,
|
||||||
|
"PA3": 3,
|
||||||
|
"PA04": 4,
|
||||||
|
"PA4": 4,
|
||||||
|
"PA05": 5,
|
||||||
|
"PA5": 5,
|
||||||
|
"PA07": 7,
|
||||||
|
"PA7": 7,
|
||||||
|
"PA09": 9,
|
||||||
|
"PA9": 9,
|
||||||
|
"PA10": 10,
|
||||||
|
"PB08": 24,
|
||||||
|
"PB8": 24,
|
||||||
|
"PB09": 25,
|
||||||
|
"PB9": 25,
|
||||||
|
"RX0": 3,
|
||||||
|
"RX1": 24,
|
||||||
|
"SCL0": 25,
|
||||||
|
"SDA0": 25,
|
||||||
|
"TX0": 2,
|
||||||
|
"TX1": 25,
|
||||||
|
"D0": 7,
|
||||||
|
"D1": 5,
|
||||||
|
"D2": 3,
|
||||||
|
"D3": 10,
|
||||||
|
"D4": 2,
|
||||||
|
"D5": 1,
|
||||||
|
"D6": 4,
|
||||||
|
"D7": 9,
|
||||||
|
"D8": 24,
|
||||||
|
"D9": 25,
|
||||||
|
"A0": 1,
|
||||||
|
"A1": 4,
|
||||||
|
},
|
||||||
"wl2s": {
|
"wl2s": {
|
||||||
"WIRE0_SCL_0": 7,
|
"WIRE0_SCL_0": 7,
|
||||||
"WIRE0_SCL_1": 12,
|
"WIRE0_SCL_1": 12,
|
||||||
@@ -161,125 +362,6 @@ LN882X_BOARD_PINS = {
|
|||||||
"A1": 1,
|
"A1": 1,
|
||||||
"A2": 0,
|
"A2": 0,
|
||||||
},
|
},
|
||||||
"generic-ln882hki": {
|
|
||||||
"WIRE0_SCL_0": 0,
|
|
||||||
"WIRE0_SCL_1": 1,
|
|
||||||
"WIRE0_SCL_2": 2,
|
|
||||||
"WIRE0_SCL_3": 3,
|
|
||||||
"WIRE0_SCL_4": 4,
|
|
||||||
"WIRE0_SCL_5": 5,
|
|
||||||
"WIRE0_SCL_6": 6,
|
|
||||||
"WIRE0_SCL_7": 7,
|
|
||||||
"WIRE0_SCL_8": 8,
|
|
||||||
"WIRE0_SCL_9": 9,
|
|
||||||
"WIRE0_SCL_10": 10,
|
|
||||||
"WIRE0_SCL_11": 11,
|
|
||||||
"WIRE0_SCL_12": 12,
|
|
||||||
"WIRE0_SCL_13": 19,
|
|
||||||
"WIRE0_SCL_14": 20,
|
|
||||||
"WIRE0_SCL_15": 21,
|
|
||||||
"WIRE0_SCL_16": 22,
|
|
||||||
"WIRE0_SCL_17": 23,
|
|
||||||
"WIRE0_SCL_18": 24,
|
|
||||||
"WIRE0_SCL_19": 25,
|
|
||||||
"WIRE0_SDA_0": 0,
|
|
||||||
"WIRE0_SDA_1": 1,
|
|
||||||
"WIRE0_SDA_2": 2,
|
|
||||||
"WIRE0_SDA_3": 3,
|
|
||||||
"WIRE0_SDA_4": 4,
|
|
||||||
"WIRE0_SDA_5": 5,
|
|
||||||
"WIRE0_SDA_6": 6,
|
|
||||||
"WIRE0_SDA_7": 7,
|
|
||||||
"WIRE0_SDA_8": 8,
|
|
||||||
"WIRE0_SDA_9": 9,
|
|
||||||
"WIRE0_SDA_10": 10,
|
|
||||||
"WIRE0_SDA_11": 11,
|
|
||||||
"WIRE0_SDA_12": 12,
|
|
||||||
"WIRE0_SDA_13": 19,
|
|
||||||
"WIRE0_SDA_14": 20,
|
|
||||||
"WIRE0_SDA_15": 21,
|
|
||||||
"WIRE0_SDA_16": 22,
|
|
||||||
"WIRE0_SDA_17": 23,
|
|
||||||
"WIRE0_SDA_18": 24,
|
|
||||||
"WIRE0_SDA_19": 25,
|
|
||||||
"SERIAL0_RX": 3,
|
|
||||||
"SERIAL0_TX": 2,
|
|
||||||
"SERIAL1_RX": 24,
|
|
||||||
"SERIAL1_TX": 25,
|
|
||||||
"ADC2": 0,
|
|
||||||
"ADC3": 1,
|
|
||||||
"ADC4": 4,
|
|
||||||
"ADC5": 19,
|
|
||||||
"ADC6": 20,
|
|
||||||
"ADC7": 21,
|
|
||||||
"PA00": 0,
|
|
||||||
"PA0": 0,
|
|
||||||
"PA01": 1,
|
|
||||||
"PA1": 1,
|
|
||||||
"PA02": 2,
|
|
||||||
"PA2": 2,
|
|
||||||
"PA03": 3,
|
|
||||||
"PA3": 3,
|
|
||||||
"PA04": 4,
|
|
||||||
"PA4": 4,
|
|
||||||
"PA05": 5,
|
|
||||||
"PA5": 5,
|
|
||||||
"PA06": 6,
|
|
||||||
"PA6": 6,
|
|
||||||
"PA07": 7,
|
|
||||||
"PA7": 7,
|
|
||||||
"PA08": 8,
|
|
||||||
"PA8": 8,
|
|
||||||
"PA09": 9,
|
|
||||||
"PA9": 9,
|
|
||||||
"PA10": 10,
|
|
||||||
"PA11": 11,
|
|
||||||
"PA12": 12,
|
|
||||||
"PB03": 19,
|
|
||||||
"PB3": 19,
|
|
||||||
"PB04": 20,
|
|
||||||
"PB4": 20,
|
|
||||||
"PB05": 21,
|
|
||||||
"PB5": 21,
|
|
||||||
"PB06": 22,
|
|
||||||
"PB6": 22,
|
|
||||||
"PB07": 23,
|
|
||||||
"PB7": 23,
|
|
||||||
"PB08": 24,
|
|
||||||
"PB8": 24,
|
|
||||||
"PB09": 25,
|
|
||||||
"PB9": 25,
|
|
||||||
"RX0": 3,
|
|
||||||
"RX1": 24,
|
|
||||||
"TX0": 2,
|
|
||||||
"TX1": 25,
|
|
||||||
"D0": 0,
|
|
||||||
"D1": 1,
|
|
||||||
"D2": 2,
|
|
||||||
"D3": 3,
|
|
||||||
"D4": 4,
|
|
||||||
"D5": 5,
|
|
||||||
"D6": 6,
|
|
||||||
"D7": 7,
|
|
||||||
"D8": 8,
|
|
||||||
"D9": 9,
|
|
||||||
"D10": 10,
|
|
||||||
"D11": 11,
|
|
||||||
"D12": 12,
|
|
||||||
"D13": 19,
|
|
||||||
"D14": 20,
|
|
||||||
"D15": 21,
|
|
||||||
"D16": 22,
|
|
||||||
"D17": 23,
|
|
||||||
"D18": 24,
|
|
||||||
"D19": 25,
|
|
||||||
"A2": 0,
|
|
||||||
"A3": 1,
|
|
||||||
"A4": 4,
|
|
||||||
"A5": 19,
|
|
||||||
"A6": 20,
|
|
||||||
"A7": 21,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOARDS = LN882X_BOARDS
|
BOARDS = LN882X_BOARDS
|
||||||
|
|||||||
@@ -1,18 +1,29 @@
|
|||||||
# This file was auto-generated by libretiny/generate_components.py
|
"""
|
||||||
# Do not modify its contents.
|
██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗
|
||||||
# For custom pin validators, put validate_pin() or validate_usage()
|
██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝
|
||||||
# in gpio.py file in this directory.
|
██║ █╗ ██║███████║██████╔╝██╔██╗ ██║██║██╔██╗ ██║██║ ███╗
|
||||||
# For changing schema/pin schema, put COMPONENT_SCHEMA or COMPONENT_PIN_SCHEMA
|
██║███╗██║██╔══██║██╔══██╗██║╚██╗██║██║██║╚██╗██║██║ ██║
|
||||||
# in schema.py file in this directory.
|
╚███╔███╔╝██║ ██║██║ ██║██║ ╚████║██║██║ ╚████║╚██████╔╝
|
||||||
|
╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═══╝ ╚═════╝
|
||||||
|
|
||||||
|
AUTO-GENERATED FILE - DO NOT EDIT!
|
||||||
|
|
||||||
|
This file was auto-generated by libretiny/generate_components.py.
|
||||||
|
Any manual changes WILL BE LOST on regeneration.
|
||||||
|
|
||||||
|
To customize this component:
|
||||||
|
- Pin validators: Create gpio.py with validate_pin() or validate_usage()
|
||||||
|
- Schema extensions: Create schema.py with COMPONENT_SCHEMA or COMPONENT_PIN_SCHEMA
|
||||||
|
|
||||||
|
Platform-specific code should be added to the main libretiny component
|
||||||
|
(__init__.py in esphome/components/libretiny/) rather than here.
|
||||||
|
"""
|
||||||
|
|
||||||
from esphome import pins
|
from esphome import pins
|
||||||
import esphome.codegen as cg
|
|
||||||
from esphome.components import libretiny
|
from esphome.components import libretiny
|
||||||
from esphome.components.libretiny.const import (
|
from esphome.components.libretiny.const import (
|
||||||
COMPONENT_RTL87XX,
|
COMPONENT_RTL87XX,
|
||||||
FAMILY_RTL8710B,
|
|
||||||
KEY_COMPONENT_DATA,
|
KEY_COMPONENT_DATA,
|
||||||
KEY_FAMILY,
|
|
||||||
KEY_LIBRETINY,
|
KEY_LIBRETINY,
|
||||||
LibreTinyComponent,
|
LibreTinyComponent,
|
||||||
)
|
)
|
||||||
@@ -24,13 +35,13 @@ CODEOWNERS = ["@kuba2k2"]
|
|||||||
AUTO_LOAD = ["libretiny"]
|
AUTO_LOAD = ["libretiny"]
|
||||||
IS_TARGET_PLATFORM = True
|
IS_TARGET_PLATFORM = True
|
||||||
|
|
||||||
|
|
||||||
COMPONENT_DATA = LibreTinyComponent(
|
COMPONENT_DATA = LibreTinyComponent(
|
||||||
name=COMPONENT_RTL87XX,
|
name=COMPONENT_RTL87XX,
|
||||||
boards=RTL87XX_BOARDS,
|
boards=RTL87XX_BOARDS,
|
||||||
board_pins=RTL87XX_BOARD_PINS,
|
board_pins=RTL87XX_BOARD_PINS,
|
||||||
pin_validation=None,
|
pin_validation=None,
|
||||||
usage_validation=None,
|
usage_validation=None,
|
||||||
|
supports_atomics=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -48,11 +59,6 @@ CONFIG_SCHEMA.prepend_extra(_set_core_data)
|
|||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
async def to_code(config):
|
||||||
# Use FreeRTOS 8.2.3+ for xTaskNotifyGive/ulTaskNotifyTake required by AsyncTCP 3.4.3+
|
|
||||||
# https://github.com/esphome/esphome/issues/10220
|
|
||||||
# Only for RTL8710B (ambz) - RTL8720C (ambz2) requires FreeRTOS 10.x
|
|
||||||
if CORE.data[KEY_LIBRETINY][KEY_FAMILY] == FAMILY_RTL8710B:
|
|
||||||
cg.add_platformio_option("custom_versions.freertos", "8.2.3")
|
|
||||||
return await libretiny.component_to_code(config)
|
return await libretiny.component_to_code(config)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1027
-944
File diff suppressed because it is too large
Load Diff
@@ -612,8 +612,9 @@ uint64_t Scheduler::millis_64_(uint32_t now) {
|
|||||||
// THREAD SAFETY NOTE:
|
// THREAD SAFETY NOTE:
|
||||||
// This function has three implementations, based on the precompiler flags
|
// This function has three implementations, based on the precompiler flags
|
||||||
// - ESPHOME_THREAD_SINGLE - Runs on single-threaded platforms (ESP8266, RP2040, etc.)
|
// - ESPHOME_THREAD_SINGLE - Runs on single-threaded platforms (ESP8266, RP2040, etc.)
|
||||||
// - ESPHOME_THREAD_MULTI_NO_ATOMICS - Runs on multi-threaded platforms without atomics (LibreTiny)
|
// - ESPHOME_THREAD_MULTI_NO_ATOMICS - Runs on multi-threaded platforms without atomics (LibreTiny BK72xx)
|
||||||
// - ESPHOME_THREAD_MULTI_ATOMICS - Runs on multi-threaded platforms with atomics (ESP32, HOST, etc.)
|
// - ESPHOME_THREAD_MULTI_ATOMICS - Runs on multi-threaded platforms with atomics (ESP32, HOST, LibreTiny
|
||||||
|
// RTL87xx/LN882x, etc.)
|
||||||
//
|
//
|
||||||
// Make sure all changes are synchronized if you edit this function.
|
// Make sure all changes are synchronized if you edit this function.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
logger:
|
||||||
|
level: VERBOSE
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
logger:
|
||||||
|
level: VERBOSE
|
||||||
Reference in New Issue
Block a user