[core] Refactor structure
This commit is contained in:
63
README.md
63
README.md
@@ -64,13 +64,43 @@ A (mostly) complete* list of Tuya wireless module boards.
|
|||||||
|
|
||||||
** I/O count includes GPIOs, ADCs, PWM outputs and UART, but doesn't count CEN/RST and power pins.
|
** I/O count includes GPIOs, ADCs, PWM outputs and UART, but doesn't count CEN/RST and power pins.
|
||||||
|
|
||||||
|
## Project structure
|
||||||
|
|
||||||
|
```
|
||||||
|
arduino/
|
||||||
|
├─ <platform name>/ Arduino Core for specific platform
|
||||||
|
│ ├─ cores/ Core files
|
||||||
|
│ ├─ libraries/ Supported built-in libraries
|
||||||
|
boards/
|
||||||
|
├─ <board name>/ Board-specific code
|
||||||
|
│ ├─ variant.cpp Arduino variant initialization
|
||||||
|
│ ├─ variant.h Arduino variant pin configs
|
||||||
|
├─ <board name>.json PlatformIO board description
|
||||||
|
builder/
|
||||||
|
├─ frameworks/ Framework builders for PlatformIO
|
||||||
|
│ ├─ <platform name>-sdk.py Vanilla SDK build system
|
||||||
|
│ ├─ <platform name>-arduino.py Arduino Core build system
|
||||||
|
├─ main.py Main PlatformIO builder
|
||||||
|
fixups/
|
||||||
|
├─ <platform name>/ Code fix-ups to replace SDK parts
|
||||||
|
platform/
|
||||||
|
├─ <platform name>/ Other platform-specific files
|
||||||
|
│ ├─ bin/ Binary blobs (bootloaders, etc.)
|
||||||
|
│ ├─ ld/ Linker scripts
|
||||||
|
tools/
|
||||||
|
├─ <tool name>/ Tools used during the build
|
||||||
|
platform.json PlatformIO manifest
|
||||||
|
platform.py Custom PlatformIO script
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
## Platforms
|
## Platforms
|
||||||
|
|
||||||
A list of platforms currently available in this project.
|
A list of platforms currently available in this project.
|
||||||
|
|
||||||
Platform name | Supported MCU(s) | Arduino Core | Source SDK (PIO framework)
|
Platform name | Supported MCU(s) | Arduino Core | Source SDK (PIO framework)
|
||||||
---------------|------------------------------------------------------------------------|--------------|--------------------------------------------------------------------------
|
---------------|------------------------------------------------------------------------|--------------|--------------------------------------------------------------------------
|
||||||
`realtek-ambz` | Realtek [AmebaZ](https://www.amebaiot.com/en/amebaz/) SoC (`RTL87xxB`) | ❌ | `framework-realtek-amb1` ([amb1_sdk](https://github.com/ambiot/amb1_sdk))
|
`realtek-ambz` | Realtek [AmebaZ](https://www.amebaiot.com/en/amebaz/) SoC (`RTL87xxB`) | ✔️ | `framework-realtek-amb1` ([amb1_sdk](https://github.com/ambiot/amb1_sdk))
|
||||||
|
|
||||||
### Realtek Ameba
|
### Realtek Ameba
|
||||||
|
|
||||||
@@ -96,3 +126,34 @@ As such, there are numerous CPUs with the same numbers but different series, whi
|
|||||||
- and probably many more
|
- and probably many more
|
||||||
|
|
||||||
Different Ameba series are not compatible with each other. Apparently, there isn't a public SDK for AmebaZ that can support C++ properly (yet).
|
Different Ameba series are not compatible with each other. Apparently, there isn't a public SDK for AmebaZ that can support C++ properly (yet).
|
||||||
|
|
||||||
|
## Arduino Core support status
|
||||||
|
|
||||||
|
Note: this list will probably change with each functionality update.
|
||||||
|
|
||||||
|
| `realtek-ambz`
|
||||||
|
--|--
|
||||||
|
Core functions|✔️
|
||||||
|
GPIO/PWM/IRQ|✔️/❓/✔️
|
||||||
|
Analog input|❓
|
||||||
|
UART I/O|✔️
|
||||||
|
Flash I/O|❓
|
||||||
|
**LIBRARIES**
|
||||||
|
SPI|❌
|
||||||
|
SPIFFS|❌
|
||||||
|
Wire|❌
|
||||||
|
BLE|-
|
||||||
|
Wi-Fi|❌
|
||||||
|
HTTP|❌
|
||||||
|
NTP|❌
|
||||||
|
OTA|❌
|
||||||
|
MDNS|❌
|
||||||
|
MQTT|❌
|
||||||
|
SD|❌
|
||||||
|
|
||||||
|
Legend:
|
||||||
|
- ✔️ working
|
||||||
|
- ❗ broken
|
||||||
|
- ❓ untested
|
||||||
|
- ❌ not implemented (yet?)
|
||||||
|
- \- not applicable
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"f_cpu": "125000000L",
|
"f_cpu": "125000000L",
|
||||||
"amb_ota1_offset": "0x0800B000",
|
"amb_ota1_offset": "0x0800B000",
|
||||||
"amb_ota2_offset": "0x080D0000",
|
"amb_ota2_offset": "0x080D0000",
|
||||||
"amb_boot_all": "boot_all.bin"
|
"amb_boot_all": "boot_all_77F7.bin"
|
||||||
},
|
},
|
||||||
"frameworks": [
|
"frameworks": [
|
||||||
"realtek-ambz-sdk",
|
"realtek-ambz-sdk",
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
boot_all.bin tysdk_for_rtl8710bn
|
|
||||||
@@ -1,8 +1,3 @@
|
|||||||
export-rom_symbol_v01.txt amb1_sdk
|
|
||||||
rlx8711B-symbol-v02-img2_xip1.ld amb1_sdk
|
|
||||||
rlx8711B-symbol-v02-img2_xip2.ld amb1_sdk
|
|
||||||
rlx8711B-symbol-v02-img2_xip2_2M.ld tysdk_for_rtl8710bn
|
|
||||||
rlx8711B-symbol-v02-img2_xip1_2M.ld tysdk_for_rtl8710bn
|
|
||||||
rtl8710-symbol-v03-img2_arduino_arduino.ld amb1_arduino/rtl8710
|
rtl8710-symbol-v03-img2_arduino_arduino.ld amb1_arduino/rtl8710
|
||||||
export-rom_v03.txt amb1_arduino/rtl8710
|
export-rom_v03.txt amb1_arduino/rtl8710
|
||||||
export-rom_v04.txt RtlDuino/rtl8710
|
export-rom_v04.txt RtlDuino/rtl8710
|
||||||
|
|||||||
@@ -17,10 +17,12 @@ ldscript = board.get("build.ldscript_arduino")
|
|||||||
SDK_DIR = platform.get_package_dir("framework-realtek-amb1")
|
SDK_DIR = platform.get_package_dir("framework-realtek-amb1")
|
||||||
BOARD_DIR = join(platform.get_dir(), "boards", variant)
|
BOARD_DIR = join(platform.get_dir(), "boards", variant)
|
||||||
FIXUPS_DIR = join(platform.get_dir(), "fixups", "realtek-ambz")
|
FIXUPS_DIR = join(platform.get_dir(), "fixups", "realtek-ambz")
|
||||||
|
PLATFORM_DIR = join(platform.get_dir(), "platform", "realtek-ambz")
|
||||||
CORE_DIR = join(platform.get_dir(), "arduino", "realtek-ambz")
|
CORE_DIR = join(platform.get_dir(), "arduino", "realtek-ambz")
|
||||||
assert isdir(SDK_DIR)
|
assert isdir(SDK_DIR)
|
||||||
assert isdir(env.subst(BOARD_DIR))
|
assert isdir(env.subst(BOARD_DIR))
|
||||||
assert isdir(env.subst(FIXUPS_DIR))
|
assert isdir(env.subst(FIXUPS_DIR))
|
||||||
|
assert isdir(env.subst(PLATFORM_DIR))
|
||||||
assert isdir(env.subst(CORE_DIR))
|
assert isdir(env.subst(CORE_DIR))
|
||||||
|
|
||||||
# Flags
|
# Flags
|
||||||
@@ -75,7 +77,6 @@ env.Prepend(
|
|||||||
CPPPATH=[
|
CPPPATH=[
|
||||||
# fmt: off
|
# fmt: off
|
||||||
# prepend these as the Arduino core is incorrectly picking some includes from SDK
|
# prepend these as the Arduino core is incorrectly picking some includes from SDK
|
||||||
join(BOARD_DIR),
|
|
||||||
join(CORE_DIR, "cores", "arduino"),
|
join(CORE_DIR, "cores", "arduino"),
|
||||||
join(CORE_DIR, "cores", "arduino", "avr"),
|
join(CORE_DIR, "cores", "arduino", "avr"),
|
||||||
join(CORE_DIR, "cores", "arduino", "rtl8195a"),
|
join(CORE_DIR, "cores", "arduino", "rtl8195a"),
|
||||||
@@ -143,7 +144,7 @@ env.Append(
|
|||||||
)
|
)
|
||||||
env.Replace(
|
env.Replace(
|
||||||
LDSCRIPT_PATH=[
|
LDSCRIPT_PATH=[
|
||||||
join(BOARD_DIR, "ld", ldscript),
|
join(PLATFORM_DIR, "ld", ldscript),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -14,9 +14,11 @@ ldscript = board.get("build.ldscript_sdk")
|
|||||||
SDK_DIR = platform.get_package_dir("framework-realtek-amb1")
|
SDK_DIR = platform.get_package_dir("framework-realtek-amb1")
|
||||||
BOARD_DIR = join(platform.get_dir(), "boards", variant)
|
BOARD_DIR = join(platform.get_dir(), "boards", variant)
|
||||||
FIXUPS_DIR = join(platform.get_dir(), "fixups", "realtek-ambz")
|
FIXUPS_DIR = join(platform.get_dir(), "fixups", "realtek-ambz")
|
||||||
|
PLATFORM_DIR = join(platform.get_dir(), "platform", "realtek-ambz")
|
||||||
assert isdir(SDK_DIR)
|
assert isdir(SDK_DIR)
|
||||||
assert isdir(env.subst(BOARD_DIR))
|
assert isdir(env.subst(BOARD_DIR))
|
||||||
assert isdir(env.subst(FIXUPS_DIR))
|
assert isdir(env.subst(FIXUPS_DIR))
|
||||||
|
assert isdir(env.subst(PLATFORM_DIR))
|
||||||
|
|
||||||
ota1_offset = board.get("build.amb_ota1_offset")
|
ota1_offset = board.get("build.amb_ota1_offset")
|
||||||
ota2_offset = board.get("build.amb_ota2_offset")
|
ota2_offset = board.get("build.amb_ota2_offset")
|
||||||
@@ -98,6 +100,9 @@ env.Replace(
|
|||||||
env.Append(
|
env.Append(
|
||||||
CPPPATH=[
|
CPPPATH=[
|
||||||
# fmt: off
|
# fmt: off
|
||||||
|
join(BOARD_DIR),
|
||||||
|
join(FIXUPS_DIR),
|
||||||
|
join(PLATFORM_DIR),
|
||||||
join(SDK_DIR, "project", "realtek_amebaz_va0_example", "inc"),
|
join(SDK_DIR, "project", "realtek_amebaz_va0_example", "inc"),
|
||||||
join(SDK_DIR, "component", "os", "freertos"),
|
join(SDK_DIR, "component", "os", "freertos"),
|
||||||
join(SDK_DIR, "component", "os", "freertos", "freertos_v8.1.2", "Source", "include"),
|
join(SDK_DIR, "component", "os", "freertos", "freertos_v8.1.2", "Source", "include"),
|
||||||
@@ -376,7 +381,7 @@ env.Append(
|
|||||||
join(SDK_DIR, "component", "soc", "realtek", "8711b", "misc", "bsp", "lib", "common", "GCC"),
|
join(SDK_DIR, "component", "soc", "realtek", "8711b", "misc", "bsp", "lib", "common", "GCC"),
|
||||||
# fmt: on
|
# fmt: on
|
||||||
# linker script path
|
# linker script path
|
||||||
join(BOARD_DIR, "ld"),
|
join(PLATFORM_DIR, "ld"),
|
||||||
],
|
],
|
||||||
LIBS=[
|
LIBS=[
|
||||||
"_platform",
|
"_platform",
|
||||||
@@ -396,7 +401,7 @@ env.Append(
|
|||||||
)
|
)
|
||||||
env.Replace(
|
env.Replace(
|
||||||
LDSCRIPT_PATH=[
|
LDSCRIPT_PATH=[
|
||||||
join(BOARD_DIR, "ld", ldscript),
|
join(PLATFORM_DIR, "ld", ldscript),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -554,7 +559,7 @@ target_boot = env.StaticLibrary(
|
|||||||
join("$BUILD_DIR", "boot_all"),
|
join("$BUILD_DIR", "boot_all"),
|
||||||
env.BinToObj(
|
env.BinToObj(
|
||||||
join("$BUILD_DIR", "boot_all.o"),
|
join("$BUILD_DIR", "boot_all.o"),
|
||||||
join(BOARD_DIR, "bin", boot_all),
|
join(PLATFORM_DIR, "bin", boot_all),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
env.Prepend(LIBS=[target_sdk, target_boot])
|
env.Prepend(LIBS=[target_sdk, target_boot])
|
||||||
|
|||||||
6
descript.ion
Normal file
6
descript.ion
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
tools Firmware tools (i.e. flashers)
|
||||||
|
platform Platform files (blobs, linker scripts)
|
||||||
|
fixups Code fixups
|
||||||
|
builder PlatformIO builders
|
||||||
|
boards Board definitions
|
||||||
|
arduino Arduino cores
|
||||||
1
platform/realtek-ambz/bin/descript.ion
Normal file
1
platform/realtek-ambz/bin/descript.ion
Normal file
@@ -0,0 +1 @@
|
|||||||
|
boot_all_77F7.bin tysdk_for_rtl8710bn
|
||||||
Reference in New Issue
Block a user