Great thanks for your detailed answer!
Why did you use nucleo_f072rb.json
over disco_f072rb.json
?
I changed the function merge_ld_scripts
in ~\.platformio\platforms\ststm32\builder\frameworks\libopencm3\libopencm3.py
to:
def merge_ld_scripts(main_ld_file):
def _include_callback(match):
incre = re.compile(r"^INCLUDE\s+\"?([^\.]+\.ld)\"?", re.M)
included_ld_file = match.group(1)
# search included ld file in lib directories
for root, _, files in walk(join(FRAMEWORK_DIR, "lib")):
if included_ld_file not in files:
continue
with open(join(root, included_ld_file)) as fp:
#return fp.read()
return incre.sub(r'_INCLUDE_ \1', fp.read())
return match.group(0)
content = ""
with open(main_ld_file) as f:
content = f.read()
incre = re.compile(r"^INCLUDE\s+\"?([^\.]+\.ld)\"?", re.M)
with open(main_ld_file, "w") as f:
f.write(incre.sub(_include_callback, content))
Furthermore, I updated the platformio.ini
to:
[env:disco_f072rb]
board = nucleo_f072rb_libopencm
platform = https://github.com/platformio/platform-ststm32.git
platform_packages = framework-libopencm3 @ https://github.com/libopencm3/libopencm3#master
framework = libopencm3
debug_tool = stlink
upload_protocol = stlink
platformio run
fails with:
KeyError: "Invalid board option 'build.core'":
File "/Users/bodokaiser/.pyenv/versions/3.8.1/Python.framework/Versions/3.8/lib/python3.8/site-packages/platformio/builder/main.py", line 156:
env.SConscript("$BUILD_SCRIPT")
File "/Users/bodokaiser/.platformio/packages/tool-scons/script/../engine/SCons/Script/SConscript.py", line 597:
return _SConscript(self.fs, *files, **subst_kw)
File "/Users/bodokaiser/.platformio/packages/tool-scons/script/../engine/SCons/Script/SConscript.py", line 286:
exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
File "/Users/bodokaiser/.platformio/platforms/ststm32@src-15e0e87f41a00aa2f9602f71367ac29c/builder/main.py", line 98:
target_elf = env.BuildProgram()
File "/Users/bodokaiser/.platformio/packages/tool-scons/script/../engine/SCons/Environment.py", line 219:
return self.method(*nargs, **kwargs)
File "/Users/bodokaiser/.pyenv/versions/3.8.1/Python.framework/Versions/3.8/lib/python3.8/site-packages/platformio/builder/tools/platformio.py", line 61:
env.ProcessProgramDeps()
File "/Users/bodokaiser/.platformio/packages/tool-scons/script/../engine/SCons/Environment.py", line 219:
return self.method(*nargs, **kwargs)
File "/Users/bodokaiser/.pyenv/versions/3.8.1/Python.framework/Versions/3.8/lib/python3.8/site-packages/platformio/builder/tools/platformio.py", line 118:
env.BuildFrameworks(env.get("PIOFRAMEWORK"))
File "/Users/bodokaiser/.platformio/packages/tool-scons/script/../engine/SCons/Environment.py", line 219:
return self.method(*nargs, **kwargs)
File "/Users/bodokaiser/.pyenv/versions/3.8.1/Python.framework/Versions/3.8/lib/python3.8/site-packages/platformio/builder/tools/platformio.py", line 330:
SConscript(env.GetFrameworkScript(f), exports="env")
File "/Users/bodokaiser/.platformio/packages/tool-scons/script/../engine/SCons/Script/SConscript.py", line 660:
return method(*args, **kw)
File "/Users/bodokaiser/.platformio/packages/tool-scons/script/../engine/SCons/Script/SConscript.py", line 597:
return _SConscript(self.fs, *files, **subst_kw)
File "/Users/bodokaiser/.platformio/packages/tool-scons/script/../engine/SCons/Script/SConscript.py", line 286:
exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
File "/Users/bodokaiser/.platformio/platforms/ststm32@src-15e0e87f41a00aa2f9602f71367ac29c/builder/frameworks/libopencm3/libopencm3.py", line 147:
if board.get("build.core") == "tivac":
File "/Users/bodokaiser/.pyenv/versions/3.8.1/Python.framework/Versions/3.8/lib/python3.8/site-packages/platformio/managers/platform.py", line 795:
raise KeyError("Invalid board option '%s'" % path)
Can it be that we are missing a core
property in the build
block of ~/.platformio/boards/nucleo_f072rb_libopencm.json
?