From 2952100836bf173f41be180e6cca23722f547d1f Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Tue, 3 Jun 2025 23:17:41 +0200 Subject: [PATCH] build system work in progress --- ExternalApps/HelloWorld/.gitignore | 1 + ExternalApps/HelloWorld/build.sh | 6 --- ExternalApps/HelloWorld/sdkconfig.esp32 | 34 +++++++++++++ ExternalApps/HelloWorld/sdkconfig.esp32s3 | 34 +++++++++++++ ExternalApps/HelloWorld/sdkconfig.override | 2 - ExternalApps/HelloWorld/ttbuild.py | 58 ++++++++++++++++++++++ 6 files changed, 127 insertions(+), 8 deletions(-) create mode 100644 ExternalApps/HelloWorld/.gitignore delete mode 100755 ExternalApps/HelloWorld/build.sh create mode 100644 ExternalApps/HelloWorld/sdkconfig.esp32 create mode 100644 ExternalApps/HelloWorld/sdkconfig.esp32s3 delete mode 100644 ExternalApps/HelloWorld/sdkconfig.override create mode 100644 ExternalApps/HelloWorld/ttbuild.py diff --git a/ExternalApps/HelloWorld/.gitignore b/ExternalApps/HelloWorld/.gitignore new file mode 100644 index 00000000..a5309e6b --- /dev/null +++ b/ExternalApps/HelloWorld/.gitignore @@ -0,0 +1 @@ +build*/ diff --git a/ExternalApps/HelloWorld/build.sh b/ExternalApps/HelloWorld/build.sh deleted file mode 100755 index a2f0b9ff..00000000 --- a/ExternalApps/HelloWorld/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -rm sdkconfig -cp ../../sdkconfig sdkconfig -cat sdkconfig.override >> sdkconfig -# First we must run "build" because otherwise "idf.py elf" is not a valid command -idf.py build -idf.py elf diff --git a/ExternalApps/HelloWorld/sdkconfig.esp32 b/ExternalApps/HelloWorld/sdkconfig.esp32 new file mode 100644 index 00000000..3bdaf0d9 --- /dev/null +++ b/ExternalApps/HelloWorld/sdkconfig.esp32 @@ -0,0 +1,34 @@ +# LVGL defaults (must match with OS) +CONFIG_LV_FONT_MONTSERRAT_14=y +CONFIG_LV_FONT_MONTSERRAT_18=y +CONFIG_LV_USE_USER_DATA=y +CONFIG_LV_USE_FS_STDIO=y +CONFIG_LV_FS_STDIO_LETTER=65 +CONFIG_LV_FS_STDIO_PATH="" +CONFIG_LV_FS_STDIO_CACHE_SIZE=4096 +CONFIG_LV_USE_LODEPNG=y +CONFIG_LV_USE_BUILTIN_MALLOC=n +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_MSGBOX=n +CONFIG_LV_USE_SPINNER=n +CONFIG_LV_USE_WIN=n +CONFIG_LV_USE_SNAPSHOT=y + +# FreeRTOS defaults (must match wit OS) +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=2 +CONFIG_FREERTOS_SMP=n +CONFIG_FREERTOS_UNICORE=n +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=4096 +CONFIG_FREERTOS_USE_TRACE_FACILITY=y + +# FatFS defaults (must match with OS) +CONFIG_FATFS_LFN_HEAP=y +CONFIG_FATFS_VOLUME_COUNT=3 + +# App-specific +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=n + +# Platform +CONFIG_IDF_TARGET_ESP32=y diff --git a/ExternalApps/HelloWorld/sdkconfig.esp32s3 b/ExternalApps/HelloWorld/sdkconfig.esp32s3 new file mode 100644 index 00000000..e75868ee --- /dev/null +++ b/ExternalApps/HelloWorld/sdkconfig.esp32s3 @@ -0,0 +1,34 @@ +# LVGL defaults (must match with OS) +CONFIG_LV_FONT_MONTSERRAT_14=y +CONFIG_LV_FONT_MONTSERRAT_18=y +CONFIG_LV_USE_USER_DATA=y +CONFIG_LV_USE_FS_STDIO=y +CONFIG_LV_FS_STDIO_LETTER=65 +CONFIG_LV_FS_STDIO_PATH="" +CONFIG_LV_FS_STDIO_CACHE_SIZE=4096 +CONFIG_LV_USE_LODEPNG=y +CONFIG_LV_USE_BUILTIN_MALLOC=n +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_MSGBOX=n +CONFIG_LV_USE_SPINNER=n +CONFIG_LV_USE_WIN=n +CONFIG_LV_USE_SNAPSHOT=y + +# FreeRTOS defaults (must match wit OS) +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=2 +CONFIG_FREERTOS_SMP=n +CONFIG_FREERTOS_UNICORE=n +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=4096 +CONFIG_FREERTOS_USE_TRACE_FACILITY=y + +# FatFS defaults (must match with OS) +CONFIG_FATFS_LFN_HEAP=y +CONFIG_FATFS_VOLUME_COUNT=3 + +# App-specific +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=n + +# Platform +CONFIG_IDF_TARGET_ESP32S3=y diff --git a/ExternalApps/HelloWorld/sdkconfig.override b/ExternalApps/HelloWorld/sdkconfig.override deleted file mode 100644 index b02eb18b..00000000 --- a/ExternalApps/HelloWorld/sdkconfig.override +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_PARTITION_TABLE_SINGLE_APP=y -CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=n diff --git a/ExternalApps/HelloWorld/ttbuild.py b/ExternalApps/HelloWorld/ttbuild.py new file mode 100644 index 00000000..6846405b --- /dev/null +++ b/ExternalApps/HelloWorld/ttbuild.py @@ -0,0 +1,58 @@ +import sys +import os + +def printWarning(message): + if sys.platform == 'win32': + print(f"ERROR: {message}") + else: + print(f"\033[93mWARNING: {message}\033[m") + +def printError(message): + if sys.platform == 'win32': + print(f"ERROR: {message}") + else: + print(f"\033[91mERROR: {message}\033[m") + +def exitWithError(message): + printError(message) + sys.exit(1) + +def isValidPlatformName(name): + return name == "all" or name == "esp32" or name == "esp32s3" + +def build(platformName): + print(f"Platform: {platformName}") + os.system(f"cp sdkconfig.{platformName} sdkconfig") + os.system(f"idf.py -B build-{platformName} build") + +def buildAll(): + build("esp32") + build("esp32s3") + +def printHelp(): + print("Usage:") + print("\tpython ttbuild.py [platformName]") + print("\tplatformName: all|esp32|esp32s3") + +if __name__ == "__main__": + print("Tactility Build System v0.1.0") + # Environment + if os.environ.get('IDF_PATH') == None: + exitWithError("IDF is not installed or activated. Ensure you installed the toolset and ran the export command.") + if os.environ.get('TACTILITY_SDK_PATH') != None: + printWarning("TACTILITY_SDK_PATH is set, but will be ignored by this command") + os.environ['TACTILITY_SDK_PATH'] = '../../release/TactilitySDK' + # Argument validation + if len(sys.argv) == 1: + printHelp() + sys.exit() + platformName = sys.argv[1] + if not isValidPlatformName(platformName): + printHelp() + exitWithError("Invalid platform name") + # Build + if platformName == "all": + buildAll() + else: + build(sys.argv[1]) +