From ca27a5f922faa06da090791d97a6a7c70f5a7d82 Mon Sep 17 00:00:00 2001 From: Victor Mateus Oliveira Date: Sat, 25 Jul 2020 21:23:35 -0300 Subject: [PATCH 01/12] the nano v2 bootloader save some data to spi flash, but the old code was overwriting it; fix fixes the SPI selection for nano v2 too, as it shares the same SPI for touch, flash and tft --- Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp | 7 +++++++ Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h | 1 + Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp | 6 ++++-- Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp | 10 +++++++++- Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h | 3 ++- 5 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp index 5fb3bf6d7316..833352c34d66 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp @@ -126,6 +126,13 @@ void gCfgItems_init() { W25QXX.SPI_FLASH_SectorErase(VAR_INF_ADDR); W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&gCfgItems, VAR_INF_ADDR, sizeof(gCfgItems)); } + + uiCfg.F[0]=78;//N + uiCfg.F[1]=65;//A + uiCfg.F[2]=78;//N + uiCfg.F[3]=79;//O + W25QXX.SPI_FLASH_BlockErase(REFLSHE_FLGA_ADD+32-64*1024); + W25QXX.SPI_FLASH_BufferWrite(uiCfg.F,REFLSHE_FLGA_ADD,4); } void gCfg_to_spiFlah() { diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h index 5c114c2ac13f..595565e1c704 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h +++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h @@ -161,6 +161,7 @@ typedef struct { uint8_t waitEndMoves; uint16_t moveSpeed; float move_dist; + uint8_t F[4]; } UI_CFG; typedef enum { diff --git a/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp b/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp index 54db9dd5b049..85b8af586271 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp @@ -590,6 +590,8 @@ void disp_char_1624(uint16_t x, uint16_t y, uint8_t c, uint16_t charColor, uint1 } void disp_string(uint16_t x, uint16_t y, const char * string, uint16_t charColor, uint16_t bkColor) { + //select TFT Spi, so we can send data to it... + TERN_(TFT_LVGL_UI_SPI, SPI_TFT.spi_init(SPI_FULL_SPEED)); while (*string != '\0') { disp_char_1624(x, y, *string, charColor, bkColor); string++; @@ -602,7 +604,7 @@ void disp_assets_update() { #if DISABLED(TFT_LVGL_UI_SPI) LCD_Clear(0x0000); #endif - disp_string(100, 150, "Assets Updating...", 0xFFFF, 0x0000); + disp_string(100, 140, "Assets Updating...", 0xFFFF, 0x0000); } void disp_assets_update_progress(const char *msg) { @@ -610,7 +612,7 @@ void disp_assets_update_progress(const char *msg) { memset(buf, ' ', COUNT(buf)); strncpy(buf, msg, strlen(msg)); buf[COUNT(buf)-1] = '\0'; - disp_string(100, 200, buf, 0xFFFF, 0x0000); + disp_string(100, 165, buf, 0xFFFF, 0x0000); } uint8_t mks_test_flag = 0; diff --git a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp index 3f9af712d1e2..5fef36d39117 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp @@ -249,6 +249,7 @@ const char *bakPath = "_assets"; void spiFlashErase_PIC() { volatile uint32_t pic_sectorcnt = 0; + W25QXX.init(SPI_QUARTER_SPEED); for (pic_sectorcnt = 0; pic_sectorcnt < PIC_SIZE_xM * 1024 / 64; pic_sectorcnt++) W25QXX.SPI_FLASH_BlockErase(PICINFOADDR + pic_sectorcnt * 64 * 1024); } @@ -256,7 +257,8 @@ void spiFlashErase_PIC() { #if HAS_SPI_FLASH_FONT void spiFlashErase_FONT() { volatile uint32_t Font_sectorcnt = 0; - for (Font_sectorcnt = 0; Font_sectorcnt < FONT_SIZE_xM * 1024 / 64; Font_sectorcnt++) + W25QXX.init(SPI_QUARTER_SPEED); + for(Font_sectorcnt=0; Font_sectorcnt < 32-1; Font_sectorcnt++) W25QXX.SPI_FLASH_BlockErase(FONTINFOADDR + Font_sectorcnt * 64 * 1024); } #endif @@ -386,6 +388,9 @@ uint8_t public_buf[512]; } disp_assets_update_progress(fn); + + W25QXX.init(SPI_QUARTER_SPEED); + uint16_t pbr; uint32_t pfileSize; uint32_t totalSizeLoaded = 0; @@ -444,11 +449,14 @@ uint8_t public_buf[512]; if (dir.open(&root, assetsPath, O_RDONLY)) { disp_assets_update(); + disp_assets_update_progress("Erasing pics..."); spiFlashErase_PIC(); #if HAS_SPI_FLASH_FONT + disp_assets_update_progress("Erasing fonts..."); spiFlashErase_FONT(); #endif + disp_assets_update_progress("Reading files..."); dir_t d; while (dir.readDir(&d, card.longFilename) > 0) { // if we dont get a long name, but gets a short one, try it diff --git a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h index 663a88d8db3a..3ef4ee4f8624 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h +++ b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h @@ -120,6 +120,7 @@ extern "C" { /* C-declarations for C++ */ #endif // Flash flag +#define REFLSHE_FLGA_ADD (0X800000-32) #define FLASH_INF_VALID_FLAG 0xAA558761 // SD card information first addr #define VAR_INF_ADDR 0x000000 @@ -139,7 +140,7 @@ typedef struct pic_msg PIC_MSG; #define BMP_WRITE_BUF_LEN 512 -#define PICINFOADDR 0 +#define PICINFOADDR 0x1000 #define PIC_SIZE_xM 6 #define FONT_SIZE_xM 2 From f30ec884cf2b70f82db3006c49ebef607d023f88 Mon Sep 17 00:00:00 2001 From: Victor Mateus Oliveira Date: Sat, 25 Jul 2020 21:57:13 -0300 Subject: [PATCH 02/12] Robin_nano35.bin works for both boards, so seems there is no reason to keep both envs --- Marlin/src/pins/pins.h | 4 ++-- platformio.ini | 19 ++++--------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index a8fb3f02f0b9..1b78b0f769ad 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -507,9 +507,9 @@ #elif MB(MKS_ROBIN_MINI) #include "stm32f1/pins_MKS_ROBIN_MINI.h" // STM32F1 env:mks_robin_mini #elif MB(MKS_ROBIN_NANO) - #include "stm32f1/pins_MKS_ROBIN_NANO.h" // STM32F1 env:mks_robin_nano env:mks_robin_nano35 + #include "stm32f1/pins_MKS_ROBIN_NANO.h" // STM32F1 env:mks_robin_nano35 #elif MB(MKS_ROBIN_NANO_V2) - #include "stm32f1/pins_MKS_ROBIN_NANO_V2.h" // STM32F1 env:mks_robin_nano env:mks_robin_nano35 + #include "stm32f1/pins_MKS_ROBIN_NANO_V2.h" // STM32F1 env:mks_robin_nano35 #elif MB(MKS_ROBIN_LITE) #include "stm32f1/pins_MKS_ROBIN_LITE.h" // STM32F1 env:mks_robin_lite #elif MB(BTT_SKR_MINI_V1_1) diff --git a/platformio.ini b/platformio.ini index 743499e89944..ae118b578fe6 100644 --- a/platformio.ini +++ b/platformio.ini @@ -556,22 +556,11 @@ build_flags = ${common_stm32f1.build_flags} -DMCU_STM32F103VE # -# MKS Robin Nano (STM32F103VET6) - Emulated Graphical 128x64 (DOGM) UI and LVGL UI +# MKS Robin Nano (STM32F103VET6) +# v1.2 - Emulated Graphical 128x64 (DOGM) UI and LVGL UI +# v2.0 - LVGL UI # -[env:mks_robin_nano] -platform = ${common_stm32f1.platform} -extends = common_stm32f1 -board = genericSTM32F103VE -platform_packages = tool-stm32duino -extra_scripts = ${common.extra_scripts} - buildroot/share/PlatformIO/scripts/mks_robin_nano.py -build_flags = ${common_stm32f1.build_flags} - -DMCU_STM32F103VE -DSS_TIMER=4 - -# -# MKS Robin Nano v2.0 (STM32F103VET6) - LVGL UI -# -[env:mks_robin_nano35_v2] +[env:mks_robin_nano35] platform = ${common_stm32f1.platform} extends = env:mks_robin_nano extra_scripts = ${common.extra_scripts} From 596bb12f350f03da9bc9b70ad157c270702444d1 Mon Sep 17 00:00:00 2001 From: Victor Mateus Oliveira Date: Sat, 25 Jul 2020 22:06:42 -0300 Subject: [PATCH 03/12] fix env --- platformio.ini | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index ae118b578fe6..6df6fce47182 100644 --- a/platformio.ini +++ b/platformio.ini @@ -562,10 +562,14 @@ build_flags = ${common_stm32f1.build_flags} # [env:mks_robin_nano35] platform = ${common_stm32f1.platform} -extends = env:mks_robin_nano +extends = common_stm32f1 +board = genericSTM32F103VE +platform_packages = tool-stm32duino extra_scripts = ${common.extra_scripts} buildroot/share/PlatformIO/scripts/mks_robin_nano35.py lib_deps = ${common_stm32f1.lib_deps} +build_flags = ${common_stm32f1.build_flags} + -DMCU_STM32F103VE -DSS_TIMER=4 debug_tool = jlink upload_protocol = jlink From 21979ab195cf4d7ea392e93e49a3f01f7ff2b429 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 21:46:47 -0500 Subject: [PATCH 04/12] Update draw_ui.cpp --- Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp index 833352c34d66..e8899b9ad122 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp @@ -127,11 +127,11 @@ void gCfgItems_init() { W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&gCfgItems, VAR_INF_ADDR, sizeof(gCfgItems)); } - uiCfg.F[0]=78;//N - uiCfg.F[1]=65;//A - uiCfg.F[2]=78;//N - uiCfg.F[3]=79;//O - W25QXX.SPI_FLASH_BlockErase(REFLSHE_FLGA_ADD+32-64*1024); + uiCfg.F[0] = 'N'; + uiCfg.F[1] = 'A'; + uiCfg.F[2] = 'N'; + uiCfg.F[3] = 'O'; + W25QXX.SPI_FLASH_BlockErase(REFLSHE_FLGA_ADD + 32 - 64*1024); W25QXX.SPI_FLASH_BufferWrite(uiCfg.F,REFLSHE_FLGA_ADD,4); } From 7d831f77b89d231b92486ae9ebe60c377024a509 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 21:49:14 -0500 Subject: [PATCH 05/12] Update mks_hardware_test.cpp --- Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp b/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp index 85b8af586271..b5b77c50b24b 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp @@ -590,7 +590,7 @@ void disp_char_1624(uint16_t x, uint16_t y, uint8_t c, uint16_t charColor, uint1 } void disp_string(uint16_t x, uint16_t y, const char * string, uint16_t charColor, uint16_t bkColor) { - //select TFT Spi, so we can send data to it... + // Select TFT SPI so it can receive data TERN_(TFT_LVGL_UI_SPI, SPI_TFT.spi_init(SPI_FULL_SPEED)); while (*string != '\0') { disp_char_1624(x, y, *string, charColor, bkColor); @@ -601,9 +601,7 @@ void disp_string(uint16_t x, uint16_t y, const char * string, uint16_t charColor //static lv_obj_t * scr_test; void disp_assets_update() { - #if DISABLED(TFT_LVGL_UI_SPI) - LCD_Clear(0x0000); - #endif + TERN(TFT_LVGL_UI_SPI,, LCD_Clear(0x0000)); disp_string(100, 140, "Assets Updating...", 0xFFFF, 0x0000); } From e1aaddf59758646b1a73ed519e1d500916ad71a8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 21:50:15 -0500 Subject: [PATCH 06/12] Update pic_manager.cpp --- Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp index 5fef36d39117..2a16bcf1b3b9 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp @@ -258,7 +258,7 @@ void spiFlashErase_PIC() { void spiFlashErase_FONT() { volatile uint32_t Font_sectorcnt = 0; W25QXX.init(SPI_QUARTER_SPEED); - for(Font_sectorcnt=0; Font_sectorcnt < 32-1; Font_sectorcnt++) + for (Font_sectorcnt = 0; Font_sectorcnt < 32-1; Font_sectorcnt++) W25QXX.SPI_FLASH_BlockErase(FONTINFOADDR + Font_sectorcnt * 64 * 1024); } #endif From 3bdcb5994f53012008533f4ce20b03790289fe4d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 22:49:14 -0500 Subject: [PATCH 07/12] Randomize firmware name --- buildroot/share/PlatformIO/scripts/random-bin.py | 5 +++++ platformio.ini | 1 + 2 files changed, 6 insertions(+) create mode 100644 buildroot/share/PlatformIO/scripts/random-bin.py diff --git a/buildroot/share/PlatformIO/scripts/random-bin.py b/buildroot/share/PlatformIO/scripts/random-bin.py new file mode 100644 index 000000000000..408e0c5e09fd --- /dev/null +++ b/buildroot/share/PlatformIO/scripts/random-bin.py @@ -0,0 +1,5 @@ +import os +Import("env") + +from datetime import datetime +env['PROGNAME'] = 'flatware' + datetime.now().strftime("%Y%m%d-%H%M%S") diff --git a/platformio.ini b/platformio.ini index c9b68d6f6a6b..d2ed661be633 100644 --- a/platformio.ini +++ b/platformio.ini @@ -737,6 +737,7 @@ board = genericSTM32F103RC build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 -DSTM32_XL_DENSITY -DTEMP_TIMER_CHAN=4 extra_scripts = ${common.extra_scripts} + pre:buildroot/share/PlatformIO/scripts/random-bin.py buildroot/share/PlatformIO/scripts/creality.py lib_ignore = ${common_stm32f1.lib_ignore} debug_tool = jlink From da8c5acf69989cb51855aac8eda36c9aa13f9cb6 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 22:49:52 -0500 Subject: [PATCH 08/12] Unflag for build_flags.py "-std=gnu11" --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index d2ed661be633..543b837f54d3 100644 --- a/platformio.ini +++ b/platformio.ini @@ -380,7 +380,7 @@ src_filter = ${common.default_src_filter} + platform = ${common_stm32.platform} build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 -DHAVE_SW_SERIAL -build_unflags = -std=gnu++11 +build_unflags = -std=gnu11 src_filter = ${common.default_src_filter} + lib_ignore = SPI lib_deps = ${common.lib_deps} From f455414ce85114169e64bc3c0ff1060e66c1ba8c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 22:50:53 -0500 Subject: [PATCH 09/12] Clean up some scripts --- .../PlatformIO/scripts/common-dependencies.py | 30 +++++++++---------- .../share/PlatformIO/scripts/creality.py | 9 +++--- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.py b/buildroot/share/PlatformIO/scripts/common-dependencies.py index 8287c0b2025a..37efaa37436f 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.py +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.py @@ -47,22 +47,25 @@ def get_all_known_libs(): def get_all_env_libs(): env_libs = [] - lib_deps = env.GetProjectOption("lib_deps") + lib_deps = env.GetProjectOption('lib_deps') for dep in lib_deps: name, _, _ = PackageManager.parse_pkg_uri(dep) env_libs.append(name) return env_libs +def set_env_field(field, value): + proj = env.GetProjectConfig() + proj.set("env:" + env['PIOENV'], field, value) + # All unused libs should be ignored so that if a library # exists in .pio/lib_deps it will not break compilation. def force_ignore_unused_libs(): env_libs = get_all_env_libs() known_libs = get_all_known_libs() diff = (list(set(known_libs) - set(env_libs))) - lib_ignore = env.GetProjectOption("lib_ignore") + diff + lib_ignore = env.GetProjectOption('lib_ignore') + diff print("Ignoring libs:", lib_ignore) - proj = env.GetProjectConfig() - proj.set("env:" + env["PIOENV"], "lib_ignore", lib_ignore) + set_env_field('lib_ignore', lib_ignore) def install_features_dependencies(): load_config() @@ -80,14 +83,14 @@ def install_features_dependencies(): deps_to_add[name] = dep # Does the env already have the dependency? - deps = env.GetProjectOption("lib_deps") + deps = env.GetProjectOption('lib_deps') for dep in deps: name, _, _ = PackageManager.parse_pkg_uri(dep) if name in deps_to_add: del deps_to_add[name] # Are there any libraries that should be ignored? - lib_ignore = env.GetProjectOption("lib_ignore") + lib_ignore = env.GetProjectOption('lib_ignore') for dep in deps: name, _, _ = PackageManager.parse_pkg_uri(dep) if name in deps_to_add: @@ -96,8 +99,7 @@ def install_features_dependencies(): # Is there anything left? if len(deps_to_add) > 0: # Only add the missing dependencies - proj = env.GetProjectConfig() - proj.set("env:" + env["PIOENV"], "lib_deps", deps + list(deps_to_add.values())) + set_env_field('lib_deps', deps + list(deps_to_add.values())) if 'extra_scripts' in FEATURE_DEPENDENCIES[feature]: print("Executing extra_scripts for %s... " % feature) @@ -105,8 +107,7 @@ def install_features_dependencies(): if 'src_filter' in FEATURE_DEPENDENCIES[feature]: print("Adding src_filter for %s... " % feature) - proj = env.GetProjectConfig() - src_filter = ' '.join(env.GetProjectOption("src_filter")) + src_filter = ' '.join(env.GetProjectOption('src_filter')) # first we need to remove the references to the same folder my_srcs = re.findall( r'[+-](<.*?>)', FEATURE_DEPENDENCIES[feature]['src_filter']) cur_srcs = re.findall( r'[+-](<.*?>)', src_filter) @@ -115,19 +116,18 @@ def install_features_dependencies(): src_filter = re.sub(r'[+-]' + d, '', src_filter) src_filter = FEATURE_DEPENDENCIES[feature]['src_filter'] + ' ' + src_filter - proj.set("env:" + env["PIOENV"], "src_filter", [src_filter]) + set_env_field('src_filter', [src_filter]) env.Replace(SRC_FILTER=src_filter) if 'lib_ignore' in FEATURE_DEPENDENCIES[feature]: print("Ignoring libs for %s... " % feature) - lib_ignore = env.GetProjectOption("lib_ignore") + [FEATURE_DEPENDENCIES[feature]['lib_ignore']] - proj = env.GetProjectConfig() - proj.set("env:" + env["PIOENV"], "lib_ignore", lib_ignore) + lib_ignore = env.GetProjectOption('lib_ignore') + [FEATURE_DEPENDENCIES[feature]['lib_ignore']] + set_env_field('lib_ignore', lib_ignore) # # Find a compiler, considering the OS # -ENV_BUILD_PATH = os.path.join(env.Dictionary("PROJECT_BUILD_DIR"), env["PIOENV"]) +ENV_BUILD_PATH = os.path.join(env.Dictionary('PROJECT_BUILD_DIR'), env['PIOENV']) GCC_PATH_CACHE = os.path.join(ENV_BUILD_PATH, ".gcc_path") def search_compiler(): if os.path.exists(GCC_PATH_CACHE): diff --git a/buildroot/share/PlatformIO/scripts/creality.py b/buildroot/share/PlatformIO/scripts/creality.py index d7b7823356a7..b9d7d7039bb4 100644 --- a/buildroot/share/PlatformIO/scripts/creality.py +++ b/buildroot/share/PlatformIO/scripts/creality.py @@ -5,12 +5,13 @@ for define in env['CPPDEFINES']: if define[0] == "VECT_TAB_ADDR": env['CPPDEFINES'].remove(define) + env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000")) custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/creality.ld") -for i, flag in enumerate(env["LINKFLAGS"]): + +for i, flag in enumerate(env['LINKFLAGS']): if "-Wl,-T" in flag: - env["LINKFLAGS"][i] = "-Wl,-T" + custom_ld_script + env['LINKFLAGS'][i] = "-Wl,-T" + custom_ld_script elif flag == "-T": - env["LINKFLAGS"][i + 1] = custom_ld_script - + env['LINKFLAGS'][i + 1] = custom_ld_script From 9b83e5436205e84580a87f2afc91631e6988e09b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 22:52:38 -0500 Subject: [PATCH 10/12] Update random-bin.py --- buildroot/share/PlatformIO/scripts/random-bin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot/share/PlatformIO/scripts/random-bin.py b/buildroot/share/PlatformIO/scripts/random-bin.py index 408e0c5e09fd..9e534af23e10 100644 --- a/buildroot/share/PlatformIO/scripts/random-bin.py +++ b/buildroot/share/PlatformIO/scripts/random-bin.py @@ -2,4 +2,4 @@ Import("env") from datetime import datetime -env['PROGNAME'] = 'flatware' + datetime.now().strftime("%Y%m%d-%H%M%S") +env['PROGNAME'] = 'firmware-' + datetime.now().strftime("%Y%m%d-%H%M%S") From 43798482cade7ec7e44559ca41fdeb52f55c23cc Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 22:53:24 -0500 Subject: [PATCH 11/12] Update random-bin.py --- buildroot/share/PlatformIO/scripts/random-bin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot/share/PlatformIO/scripts/random-bin.py b/buildroot/share/PlatformIO/scripts/random-bin.py index 9e534af23e10..72b5199cc335 100644 --- a/buildroot/share/PlatformIO/scripts/random-bin.py +++ b/buildroot/share/PlatformIO/scripts/random-bin.py @@ -2,4 +2,4 @@ Import("env") from datetime import datetime -env['PROGNAME'] = 'firmware-' + datetime.now().strftime("%Y%m%d-%H%M%S") +env['PROGNAME'] = datetime.now().strftime("firmware-%Y%m%d-%H%M%S") From bdfa3df08ec26fee9020c2db730b20a845eae691 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 22:57:00 -0500 Subject: [PATCH 12/12] Randomize firmware.bin, fix unflag --- .../PlatformIO/scripts/common-dependencies.py | 30 +++++++++---------- .../share/PlatformIO/scripts/creality.py | 9 +++--- .../share/PlatformIO/scripts/random-bin.py | 5 ++++ platformio.ini | 3 +- 4 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 buildroot/share/PlatformIO/scripts/random-bin.py diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.py b/buildroot/share/PlatformIO/scripts/common-dependencies.py index 8287c0b2025a..37efaa37436f 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.py +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.py @@ -47,22 +47,25 @@ def get_all_known_libs(): def get_all_env_libs(): env_libs = [] - lib_deps = env.GetProjectOption("lib_deps") + lib_deps = env.GetProjectOption('lib_deps') for dep in lib_deps: name, _, _ = PackageManager.parse_pkg_uri(dep) env_libs.append(name) return env_libs +def set_env_field(field, value): + proj = env.GetProjectConfig() + proj.set("env:" + env['PIOENV'], field, value) + # All unused libs should be ignored so that if a library # exists in .pio/lib_deps it will not break compilation. def force_ignore_unused_libs(): env_libs = get_all_env_libs() known_libs = get_all_known_libs() diff = (list(set(known_libs) - set(env_libs))) - lib_ignore = env.GetProjectOption("lib_ignore") + diff + lib_ignore = env.GetProjectOption('lib_ignore') + diff print("Ignoring libs:", lib_ignore) - proj = env.GetProjectConfig() - proj.set("env:" + env["PIOENV"], "lib_ignore", lib_ignore) + set_env_field('lib_ignore', lib_ignore) def install_features_dependencies(): load_config() @@ -80,14 +83,14 @@ def install_features_dependencies(): deps_to_add[name] = dep # Does the env already have the dependency? - deps = env.GetProjectOption("lib_deps") + deps = env.GetProjectOption('lib_deps') for dep in deps: name, _, _ = PackageManager.parse_pkg_uri(dep) if name in deps_to_add: del deps_to_add[name] # Are there any libraries that should be ignored? - lib_ignore = env.GetProjectOption("lib_ignore") + lib_ignore = env.GetProjectOption('lib_ignore') for dep in deps: name, _, _ = PackageManager.parse_pkg_uri(dep) if name in deps_to_add: @@ -96,8 +99,7 @@ def install_features_dependencies(): # Is there anything left? if len(deps_to_add) > 0: # Only add the missing dependencies - proj = env.GetProjectConfig() - proj.set("env:" + env["PIOENV"], "lib_deps", deps + list(deps_to_add.values())) + set_env_field('lib_deps', deps + list(deps_to_add.values())) if 'extra_scripts' in FEATURE_DEPENDENCIES[feature]: print("Executing extra_scripts for %s... " % feature) @@ -105,8 +107,7 @@ def install_features_dependencies(): if 'src_filter' in FEATURE_DEPENDENCIES[feature]: print("Adding src_filter for %s... " % feature) - proj = env.GetProjectConfig() - src_filter = ' '.join(env.GetProjectOption("src_filter")) + src_filter = ' '.join(env.GetProjectOption('src_filter')) # first we need to remove the references to the same folder my_srcs = re.findall( r'[+-](<.*?>)', FEATURE_DEPENDENCIES[feature]['src_filter']) cur_srcs = re.findall( r'[+-](<.*?>)', src_filter) @@ -115,19 +116,18 @@ def install_features_dependencies(): src_filter = re.sub(r'[+-]' + d, '', src_filter) src_filter = FEATURE_DEPENDENCIES[feature]['src_filter'] + ' ' + src_filter - proj.set("env:" + env["PIOENV"], "src_filter", [src_filter]) + set_env_field('src_filter', [src_filter]) env.Replace(SRC_FILTER=src_filter) if 'lib_ignore' in FEATURE_DEPENDENCIES[feature]: print("Ignoring libs for %s... " % feature) - lib_ignore = env.GetProjectOption("lib_ignore") + [FEATURE_DEPENDENCIES[feature]['lib_ignore']] - proj = env.GetProjectConfig() - proj.set("env:" + env["PIOENV"], "lib_ignore", lib_ignore) + lib_ignore = env.GetProjectOption('lib_ignore') + [FEATURE_DEPENDENCIES[feature]['lib_ignore']] + set_env_field('lib_ignore', lib_ignore) # # Find a compiler, considering the OS # -ENV_BUILD_PATH = os.path.join(env.Dictionary("PROJECT_BUILD_DIR"), env["PIOENV"]) +ENV_BUILD_PATH = os.path.join(env.Dictionary('PROJECT_BUILD_DIR'), env['PIOENV']) GCC_PATH_CACHE = os.path.join(ENV_BUILD_PATH, ".gcc_path") def search_compiler(): if os.path.exists(GCC_PATH_CACHE): diff --git a/buildroot/share/PlatformIO/scripts/creality.py b/buildroot/share/PlatformIO/scripts/creality.py index d7b7823356a7..b9d7d7039bb4 100644 --- a/buildroot/share/PlatformIO/scripts/creality.py +++ b/buildroot/share/PlatformIO/scripts/creality.py @@ -5,12 +5,13 @@ for define in env['CPPDEFINES']: if define[0] == "VECT_TAB_ADDR": env['CPPDEFINES'].remove(define) + env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000")) custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/creality.ld") -for i, flag in enumerate(env["LINKFLAGS"]): + +for i, flag in enumerate(env['LINKFLAGS']): if "-Wl,-T" in flag: - env["LINKFLAGS"][i] = "-Wl,-T" + custom_ld_script + env['LINKFLAGS'][i] = "-Wl,-T" + custom_ld_script elif flag == "-T": - env["LINKFLAGS"][i + 1] = custom_ld_script - + env['LINKFLAGS'][i + 1] = custom_ld_script diff --git a/buildroot/share/PlatformIO/scripts/random-bin.py b/buildroot/share/PlatformIO/scripts/random-bin.py new file mode 100644 index 000000000000..72b5199cc335 --- /dev/null +++ b/buildroot/share/PlatformIO/scripts/random-bin.py @@ -0,0 +1,5 @@ +import os +Import("env") + +from datetime import datetime +env['PROGNAME'] = datetime.now().strftime("firmware-%Y%m%d-%H%M%S") diff --git a/platformio.ini b/platformio.ini index 838ce116118e..429091fbf041 100644 --- a/platformio.ini +++ b/platformio.ini @@ -380,7 +380,7 @@ src_filter = ${common.default_src_filter} + platform = ${common_stm32.platform} build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 -DHAVE_SW_SERIAL -build_unflags = -std=gnu++11 +build_unflags = -std=gnu11 src_filter = ${common.default_src_filter} + lib_ignore = SPI lib_deps = ${common.lib_deps} @@ -744,6 +744,7 @@ board = genericSTM32F103RC build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 -DSTM32_XL_DENSITY -DTEMP_TIMER_CHAN=4 extra_scripts = ${common.extra_scripts} + pre:buildroot/share/PlatformIO/scripts/random-bin.py buildroot/share/PlatformIO/scripts/creality.py lib_ignore = ${common_stm32f1.lib_ignore} debug_tool = jlink