From fbf35792e2d1b2ae18237226a8757a9253d4bf6b Mon Sep 17 00:00:00 2001 From: valeros Date: Thu, 3 Sep 2020 11:47:01 +0300 Subject: [PATCH 1/2] Sync PlatformIO build script --- tools/platformio-build.py | 55 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/tools/platformio-build.py b/tools/platformio-build.py index 68b0dfc01c..c9102f2290 100644 --- a/tools/platformio-build.py +++ b/tools/platformio-build.py @@ -32,7 +32,7 @@ board = env.BoardConfig() FRAMEWORK_DIR = platform.get_package_dir("framework-arduinoststm32") -CMSIS_DIR = join(platform.get_package_dir("framework-arduinoststm32"), "CMSIS", "CMSIS") +CMSIS_DIR = join(platform.get_package_dir("framework-cmsis"), "CMSIS") assert isdir(FRAMEWORK_DIR) assert isdir(CMSIS_DIR) @@ -86,6 +86,22 @@ def process_usb_configuration(cpp_defines): elif "PIO_FRAMEWORK_ARDUINO_ENABLE_HID" in cpp_defines: env.Append(CPPDEFINES=["USBD_USE_HID_COMPOSITE"]) + if any( + d in cpp_defines + for d in ( + "PIO_FRAMEWORK_ARDUINO_ENABLE_CDC", + "PIO_FRAMEWORK_ARDUINO_ENABLE_CDC_WITHOUT_SERIAL", + "PIO_FRAMEWORK_ARDUINO_ENABLE_HID", + ) + ): + env.Append( + CPPDEFINES=[ + "USBCON", + ("USB_VID", board.get("build.hwids", [[0, 0]])[0][0]), + ("USB_PID", board.get("build.hwids", [[0, 0]])[0][1]), + ] + ) + if any(f in env["CPPDEFINES"] for f in ("USBD_USE_CDC", "USBD_USE_HID_COMPOSITE")): env.Append(CPPDEFINES=["HAL_PCD_MODULE_ENABLED"]) @@ -168,6 +184,7 @@ def configure_application_offset(mcu, upload_protocol): join(FRAMEWORK_DIR, "cores", "arduino", "stm32"), join(FRAMEWORK_DIR, "cores", "arduino", "stm32", "LL"), join(FRAMEWORK_DIR, "cores", "arduino", "stm32", "usb"), + join(FRAMEWORK_DIR, "cores", "arduino", "stm32", "OpenAMP"), join(FRAMEWORK_DIR, "cores", "arduino", "stm32", "usb", "hid"), join(FRAMEWORK_DIR, "cores", "arduino", "stm32", "usb", "cdc"), join(FRAMEWORK_DIR, "system", "Drivers", series + "_HAL_Driver", "Inc"), @@ -191,6 +208,37 @@ def configure_application_offset(mcu, upload_protocol): "Core", "Src", ), + join( + FRAMEWORK_DIR, + "system", + "Middlewares", + "OpenAMP" + ), + join( + FRAMEWORK_DIR, + "system", + "Middlewares", + "OpenAMP", + "open-amp", + "lib", + "include", + ), + join( + FRAMEWORK_DIR, + "system", + "Middlewares", + "OpenAMP", + "libmetal", + "lib", + "include", + ), + join( + FRAMEWORK_DIR, + "system", + "Middlewares", + "OpenAMP", + "virtual_driver" + ), join(CMSIS_DIR, "Core", "Include"), join( FRAMEWORK_DIR, @@ -202,7 +250,6 @@ def configure_application_offset(mcu, upload_protocol): series, "Include", ), - join(CMSIS_DIR, "DSP", "Include"), join( FRAMEWORK_DIR, "system", @@ -215,6 +262,7 @@ def configure_application_offset(mcu, upload_protocol): "Templates", "gcc", ), + join(CMSIS_DIR, "DSP", "Include"), join(FRAMEWORK_DIR, "cores", "arduino"), variant_dir, ], @@ -250,9 +298,10 @@ def configure_application_offset(mcu, upload_protocol): # if not board.get("build.ldscript", ""): + env.Replace(LDSCRIPT_PATH=join(FRAMEWORK_DIR, "system", "ldscript.ld")) if not isfile(join(env.subst(variant_dir), "ldscript.ld")): print("Warning! Cannot find linker script for the current target!\n") - env.Replace(LDSCRIPT_PATH=join(variant_dir, "ldscript.ld")) + env.Append(LINKFLAGS=[("-Wl,--default-script", join(variant_dir, "ldscript.ld"))]) # # Process configuration flags From 16c919b1a1e7ad915ad4f5a1b7f040b09a53293c Mon Sep 17 00:00:00 2001 From: valeros Date: Thu, 3 Sep 2020 20:55:15 +0300 Subject: [PATCH 2/2] Update PlatformIO CI script --- .github/actions/pio-build/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/pio-build/entrypoint.sh b/.github/actions/pio-build/entrypoint.sh index b51c1ba630..4406d23853 100755 --- a/.github/actions/pio-build/entrypoint.sh +++ b/.github/actions/pio-build/entrypoint.sh @@ -8,7 +8,7 @@ platformio platform install "https://github.com/platformio/platform-ststm32.git" exit 1 } # Prepare framework for CI -python3 -c "import json; import os; fp=open(os.path.expanduser('~/.platformio/platforms/ststm32/platform.json'), 'r+'); data=json.load(fp); data['packages']['framework-arduinoststm32']['version'] = '*'; fp.seek(0); fp.truncate(); json.dump(data, fp); fp.close()" || { +python3 -c "import json; import os; fp=open(os.path.expanduser('~/.platformio/platforms/ststm32/platform.json'), 'r+'); data=json.load(fp); data['packages']['framework-arduinoststm32']['version'] = '*'; del data['packages']['framework-arduinoststm32']['owner']; fp.seek(0); fp.truncate(); json.dump(data, fp); fp.close()" || { exit 1 } ln --symbolic "$GITHUB_WORKSPACE" "$HOME/.platformio/packages/framework-arduinoststm32" || {