1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #
- # fix_framework_weakness.py
- #
- from os.path import join, isfile
- import shutil
- from pprint import pprint
-
- Import("env")
-
- if env.MarlinFeatureIsEnabled("POSTMORTEM_DEBUGGING"):
- FRAMEWORK_DIR = env.PioPlatform().get_package_dir("framework-arduinoststm32-maple")
- patchflag_path = join(FRAMEWORK_DIR, ".exc-patching-done")
-
- # patch file only if we didn't do it before
- if not isfile(patchflag_path):
- print("Patching libmaple exception handlers")
- original_file = join(FRAMEWORK_DIR, "STM32F1", "cores", "maple", "libmaple", "exc.S")
- backup_file = join(FRAMEWORK_DIR, "STM32F1", "cores", "maple", "libmaple", "exc.S.bak")
- src_file = join("buildroot", "share", "PlatformIO", "scripts", "exc.S")
-
- assert isfile(original_file) and isfile(src_file)
- shutil.copyfile(original_file, backup_file)
- shutil.copyfile(src_file, original_file);
-
- def _touch(path):
- with open(path, "w") as fp:
- fp.write("")
-
- env.Execute(lambda *args, **kwargs: _touch(patchflag_path))
- print("Done patching exception handler")
-
- print("Libmaple modified and ready for post mortem debugging")
-
- mf = env["MARLIN_FEATURES"]
- rxBuf = mf["RX_BUFFER_SIZE"] if "RX_BUFFER_SIZE" in mf else "0"
- txBuf = mf["TX_BUFFER_SIZE"] if "TX_BUFFER_SIZE" in mf else "0"
- if int(rxBuf) < 64:
- rxBuf = "64"
- if int(txBuf) < 64:
- txBuf = "64"
-
- build_flags = env.get('BUILD_FLAGS')
- build_flags.append("-DUSART_RX_BUF_SIZE=" + rxBuf + " -DUSART_TX_BUF_SIZE=" + txBuf)
- env.Replace(BUILD_FLAGS=build_flags)
|