Git Product home page Git Product logo

pio_and_stm32cubeide's People

Contributors

cocus avatar ipsusila avatar jbaumann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

pio_and_stm32cubeide's Issues

error of redefinition

I am a beginner with PlatformIO. Following your script, I encountered an error of redefinition during linking. Is it due to my personal reason? What are the possible solutions?

.pio/build/black_f407zg/src/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o: In function `HAL_DeInit':
stm32f4xx_hal.c:(.text.HAL_DeInit+0x0): multiple definition of `HAL_DeInit'
.pio/build/black_f407zg/FrameworkHALDriver/Src/stm32f4xx_hal.o:stm32f4xx_hal.c:(.text.HAL_DeInit+0x0): first defined here
.pio/build/black_f407zg/src/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o: In function `HAL_Init':
stm32f4xx_hal.c:(.text.HAL_Init+0x0): multiple definition of `HAL_Init'

TouchGFX Designer

I use TouchGFX Designer to generate UI and open with CubeMX to generate code with the setting as you specify. This is using MacOS.

Following is the error (user name edited),
AttributeError: 'NoneType' object has no attribute 'get':
File "/Users/XXX/.platformio/penv/lib/python3.8/site-packages/platformio/builder/main.py", line 168:
env.SConscript(item, exports="env")
File "/Users/XXX/.platformio/packages/tool-scons/scons-local-4.0.1/SCons/Script/SConscript.py", line 598:
return _SConscript(self.fs, *files, **subst_kw)
File "/Users/XXX/.platformio/packages/tool-scons/scons-local-4.0.1/SCons/Script/SConscript.py", line 287:
exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
File "/Volumes/TouchGFXProjects/stm32piotest/setup_cubemx_env_auto.py", line 198:
ld_script_entry = tool_chain.find(

I'm almost there and thank you in advance for your help.

Script creates incorrect link files in `./lib/STLinkedResources` on Windows (VSCode)

When using VSCode on Windows, the <setup_cubemx_env_auto.py> script creates orphan links in ./lib/STLinkedResources folder because STM32CubeMX add a project-based relative path for locationURI dependencies.

Error in VSCode:
image

Explorer results:
image

In the generated .project file, all locationURI start with the PARENT-xx-PROJECT_LOC string which is the project based relative path where xx indicates the number of levels up to the project path.

  • STM32CubeMX generates .project file in which you can find <locationURI>PARENT-4-PROJECT_LOC/Users/Olivier/STM32Cube/Repository/STM32Cube_FW_F1_V1.8.3/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c</locationURI>
  • The project is located in D:/CloudStation/GitLab/modbus-remote_BB/modbus-remote_BB_FW,
  • So, 4 levels of the project path have to be removed which gives D: as path to be used to replace the PARENT-4-PROJECT_LOC string (without trailing '/' and without the 'D:/Users/Olivier' the script adds).
  • This gives <locationURI>D:/Users/Olivier/STM32Cube/Repository/STM32Cube_FW_F1_V1.8.3/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c</locationURI> which is correct:

image

image

If you need more information, feel free to ask.
Thank you.

Here is a .ioc and a .project files: STLinkedResources issue.zip

Error multiple request to rebuild

Hi, tnx for the script I was able to move from cubeIDE project to platformio using the automatic script but i get continously the rebuild popup and finally this error....do you know what can be the cause?

"Error: Multiple requests to rebuild the project "STM32G4" index have been received! Automatic index rebuilding process has been terminated for 10 minutes. "

Script fails with custom board

My project uses a custom board:

{ "build": { "core": "stm32", "cpu": "cortex-m4", "extra_flags": "-DSTM32G4xx -DSTM32G431xx", "f_cpu": "170000000L", "mcu": "stm32g431cbt6", "product_line": "STM32G431xx", "variant": "STM32G4xx/G431R(6-8-B)(I-T)_G441RB(I-T)" }, "connectivity": [ "can" ], "debug": { "default_tools": [ "jlink" ], "jlink_device": "STM32G431CB", "openocd_target": "stm32g4x", "svd_path": "STM32G431xx.svd" }, "frameworks": [ "arduino", "cmsis", "libopencm3", "stm32cube", "zephyr" ], "name": "d_lev_io_g431cb", "upload": { "maximum_ram_size": 32768, "maximum_size": 131072, "protocol": "stlink", "protocols": [ "stlink", "jlink", "cmsis-dap", "blackmagic", "mbed" ] }, "url": "https://www.st.com/en/evaluation-tools/nucleo-g431rb.html", "vendor": "ST" }

This is the .cproject file:

`

<storageModule moduleId="org.eclipse.cdt.core.settings">
	<cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1739418742">
		<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1739418742" moduleId="org.eclipse.cdt.core.settings" name="Debug">
			<externalSettings/>
			<extensions>
				<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
				<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
				<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
				<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
				<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
				<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
			</extensions>
		</storageModule>
		<storageModule moduleId="cdtBuildSystem" version="4.0.0">
			<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1739418742" name="Debug" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug">
				<folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1739418742." name="/" resourcePath="">
					<toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.1433637238" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug">
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1839610912" name="MCU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" useByScannerDiscovery="true" value="STM32G431CBTx" valueType="string"/>
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.109239671" name="CPU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" useByScannerDiscovery="false" value="0" valueType="string"/>
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.1360375203" name="Core" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" useByScannerDiscovery="false" value="0" valueType="string"/>
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.1748998968" name="Floating-point unit" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv4-sp-d16" valueType="enumerated"/>
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.1202818017" name="Floating-point ABI" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.1789732611" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="genericBoard" valueType="string"/>
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.1501750916" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.6 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32G431CBTx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Core/Inc | C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/STM32G4xx_HAL_Driver/Inc | C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/STM32G4xx_HAL_Driver/Inc/Legacy | C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/CMSIS/Device/ST/STM32G4xx/Include | C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/CMSIS/Include ||  ||  || USE_HAL_DRIVER | STM32G431xx ||  || Drivers | Core/Startup | Core ||  ||  || ${workspace_loc:/${ProjName}/STM32G431CBTX_FLASH.ld} || true || NonSecure ||  || secure_nsclib.o ||  || None ||  ||  || " valueType="string"/>
						<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.1896076973" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" useByScannerDiscovery="false" value="96" valueType="string"/>
						<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1919212681" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
						<builder buildPath="${workspace_loc:/pio_import_test}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1328864828" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1279653045" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.811872585" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g3" valueType="enumerated"/>
							<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.definedsymbols.664539365" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.definedsymbols" valueType="definedSymbols">
								<listOptionValue builtIn="false" value="DEBUG"/>
							</option>
							<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.624799594" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
						</tool>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1479917564" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.617632379" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1204698848" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false"/>
							<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.30576824" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
								<listOptionValue builtIn="false" value="DEBUG"/>
								<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
								<listOptionValue builtIn="false" value="STM32G431xx"/>
							</option>
							<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.1317397803" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
								<listOptionValue builtIn="false" value="../Core/Inc"/>
								<listOptionValue builtIn="false" value="C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/STM32G4xx_HAL_Driver/Inc"/>
								<listOptionValue builtIn="false" value="C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/STM32G4xx_HAL_Driver/Inc/Legacy"/>
								<listOptionValue builtIn="false" value="C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/CMSIS/Device/ST/STM32G4xx/Include"/>
								<listOptionValue builtIn="false" value="C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/CMSIS/Include"/>
							</option>
							<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.395841839" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
						</tool>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.814483635" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.1520215780" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.1636699819" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false"/>
						</tool>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1775436903" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.34679314" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32G431CBTX_FLASH.ld}" valueType="string"/>
							<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.2064389051" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input">
								<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
								<additionalInput kind="additionalinput" paths="$(LIBS)"/>
							</inputType>
						</tool>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1604367287" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1157547572" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.75224096" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.1241459533" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.1021863611" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1957081687" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.645632321" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1025976206" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1489365622" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
					</toolChain>
				</folderInfo>
				<sourceEntries>
					<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
					<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
				</sourceEntries>
			</configuration>
		</storageModule>
		<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
	</cconfiguration>
	<cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.906956702">
		<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.906956702" moduleId="org.eclipse.cdt.core.settings" name="Release">
			<externalSettings/>
			<extensions>
				<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
				<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
				<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
				<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
				<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
				<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
			</extensions>
		</storageModule>
		<storageModule moduleId="cdtBuildSystem" version="4.0.0">
			<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.906956702" name="Release" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release">
				<folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.906956702." name="/" resourcePath="">
					<toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.68291424" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release">
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.358624820" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" useByScannerDiscovery="true" value="STM32G431CBTx" valueType="string"/>
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.905394228" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" useByScannerDiscovery="false" value="0" valueType="string"/>
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.1449361096" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" useByScannerDiscovery="false" value="0" valueType="string"/>
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.764032990" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv4-sp-d16" valueType="enumerated"/>
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.674274777" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.707393372" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="genericBoard" valueType="string"/>
						<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.970623458" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.6 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32G431CBTx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Core/Inc | C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/STM32G4xx_HAL_Driver/Inc | C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/STM32G4xx_HAL_Driver/Inc/Legacy | C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/CMSIS/Device/ST/STM32G4xx/Include | C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/CMSIS/Include ||  ||  || USE_HAL_DRIVER | STM32G431xx ||  || Drivers | Core/Startup | Core ||  ||  || ${workspace_loc:/${ProjName}/STM32G431CBTX_FLASH.ld} || true || NonSecure ||  || secure_nsclib.o ||  || None ||  ||  || " valueType="string"/>
						<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.1609271409" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" useByScannerDiscovery="false" value="96" valueType="string"/>
						<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.676932345" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
						<builder buildPath="${workspace_loc:/pio_import_test}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.946766806" managedBuildOn="true" name="Gnu Make Builder.Release" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1757233005" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.2129602336" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g0" valueType="enumerated"/>
							<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.381449215" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
						</tool>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.109176906" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.961207153" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.364399267" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.os" valueType="enumerated"/>
							<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.449368502" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
								<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
								<listOptionValue builtIn="false" value="STM32G431xx"/>
							</option>
							<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.570017562" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
								<listOptionValue builtIn="false" value="../Core/Inc"/>
								<listOptionValue builtIn="false" value="C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/STM32G4xx_HAL_Driver/Inc"/>
								<listOptionValue builtIn="false" value="C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/STM32G4xx_HAL_Driver/Inc/Legacy"/>
								<listOptionValue builtIn="false" value="C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/CMSIS/Device/ST/STM32G4xx/Include"/>
								<listOptionValue builtIn="false" value="C:/Users/sidpr/STM32Cube/Repository/STM32Cube_FW_G4_V1.5.1/Drivers/CMSIS/Include"/>
							</option>
							<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1588530580" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
						</tool>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1083217259" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.1508211396" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.1175953850" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.value.os" valueType="enumerated"/>
						</tool>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.735310530" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.546656630" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32G431CBTX_FLASH.ld}" valueType="string"/>
							<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.166496909" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input">
								<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
								<additionalInput kind="additionalinput" paths="$(LIBS)"/>
							</inputType>
						</tool>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.736858035" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1170160921" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1957993330" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.622976712" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.745475371" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.383977703" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1764536547" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.249487217" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
						<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.480814562" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
					</toolChain>
				</folderInfo>
				<sourceEntries>
					<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
					<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
				</sourceEntries>
			</configuration>
		</storageModule>
		<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
	</cconfiguration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.pathentry"/>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
	<project id="pio_import_test.null.401297888" name="pio_import_test"/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="scannerConfiguration">
	<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
	<scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.906956702;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.906956702.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.109176906;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1588530580">
		<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
	</scannerConfigBuildInfo>
	<scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1739418742;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1739418742.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1479917564;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.395841839">
		<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
	</scannerConfigBuildInfo>
</storageModule>

`

To test this script I created a new STM32CubeIDE project for the STM32G431CBT6, set up the clock and one GPIO. The option to add references to the lib files was selected and the project generated. I built it with STM32CubeIDE to check the project was good.

I copied my custom board to "boards" folder which I created in the project root. And executed this command line:

platformio init --board d_lev_io_g431cb --project-option "framework=stm32cube"

This failed with the following output:

`AssertionError: Traceback (most recent call last):
File "C:\Users\sidpr.platformio\penv\lib\site-packages\platformio_main_.py", line 103, in main
cli() # pylint: disable=no-value-for-parameter
File "C:\Users\sidpr.platformio\penv\lib\site-packages\click\core.py", line 1130, in call
return self.main(*args, **kwargs)
File "C:\Users\sidpr.platformio\penv\lib\site-packages\click\core.py", line 1055, in main
rv = self.invoke(ctx)
File "C:\Users\sidpr.platformio\penv\lib\site-packages\platformio\cli.py", line 85, in invoke
return super().invoke(ctx)
File "C:\Users\sidpr.platformio\penv\lib\site-packages\click\core.py", line 1655, in invoke
sub_ctx = cmd.make_context(cmd_name, args, parent=ctx)
File "C:\Users\sidpr.platformio\penv\lib\site-packages\click\core.py", line 920, in make_context
self.parse_args(ctx, args)
File "C:\Users\sidpr.platformio\penv\lib\site-packages\click\core.py", line 1378, in parse_args
value, args = param.handle_parse_result(ctx, opts, args)
File "C:\Users\sidpr.platformio\penv\lib\site-packages\click\core.py", line 2360, in handle_parse_result
value = self.process_value(ctx, value)
File "C:\Users\sidpr.platformio\penv\lib\site-packages\click\core.py", line 2322, in process_value
value = self.callback(ctx, self, value)
File "C:\Users\sidpr.platformio\penv\lib\site-packages\platformio\project\commands\init.py", line 39, in validate_boards
pm.board_config(id_)
File "C:\Users\sidpr.platformio\penv\lib\site-packages\platformio\package\manager\platform.py", line 136, in board_config
for manifest in self.get_installed_boards():
File "C:\Users\sidpr.platformio\penv\lib\site-packages\platformio\util.py", line 56, in wrapper
self.cache[key] = (time.time(), func(*args, **kwargs))
File "C:\Users\sidpr.platformio\penv\lib\site-packages\platformio\package\manager\platform.py", line 112, in get_installed_boards
for config in p.get_boards().values():
File "C:\Users\sidpr.platformio\platforms\atmelsam\platform.py", line 105, in get_boards
result[key] = self._add_default_debug_tools(result[key])
File "C:\Users\sidpr.platformio\platforms\atmelsam\platform.py", line 154, in _add_default_debug_tools
assert openocd_chipname
AssertionError

============================================================

An unexpected error occurred. Further steps:

============================================================
`

I would appreciate help resolving this.
Thank you.

VSCode on Windows needs elevated right to be able to create `./lib/STLinkedResources` link files

When launched without elevated access rights, VSCode on Windows is not able to create ./lib/STLinkedResources link files when the script is executed and generate a Cannot create symlink in directory error.

I don't know if the script can be executed as elevated while it's launched by a non-elevated instance of VSCode...

If it's not possible, could please mention to launch VSCode 'As Administrator' in the README.md?

Thank you

Working with pio drivers while Cube drivers present

More of a question than an issue, I am not sure if I am using this right.
CubeIDE generates Drivers/ folder, and since .py script includes all of the folders in src_dir = ./ I get redefinition of symbols error.
To bypass this I needed to change .py setup script so it ignores CubeIDE generated folder.
Is it the intended way tho? Maybe it can be done in platform.ini for more convenience?

Not working with STM32CubeIDE 1.7.0 / STM32CubeMX 6.3.0

I don't know if it is an issue with the latest IDE, or something else, but it compiles in the CubeIDE but fails running the python script in VSCode.

AttributeError: 'NoneType' object has no attribute 'text': File "C:\Users\xxxx\.platformio\penv\Lib\site-packages\platformio\builder\main.py", line 176: env.SConscript(item, exports="env") File "C:\Users\xxxx\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Script\SConscript.py", line 597: return _SConscript(self.fs, *files, **subst_kw) File "C:\Users\xxxx\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Script\SConscript.py", line 285: exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals) File "C:\Users\xxxx\git\yyyy\zzzz\setup_cubemx_env_auto.py", line 72: linkedURI = linked_resource.find(".//locationURI").text

I had a quick look at the .project and .cproject files and don't see any elements named locationURI
Perhaps the node name has changed?

<linkedResources>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_cortex.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_cortex.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_dma.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_dma.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_dma_ex.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_dma_ex.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_exti.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_exti.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_flash.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_flash_ex.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash_ex.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_flash_ramfunc.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash_ramfunc.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_gpio.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_i2c.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_i2c.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_i2c_ex.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_i2c_ex.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_pwr.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_pwr.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_pwr_ex.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_pwr_ex.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_rcc.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_rcc.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_rcc_ex.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_rcc_ex.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_tim.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_tim.c</location>
		</link>
		<link>
			<name>Drivers/STM32G4xx_HAL_Driver/stm32g4xx_hal_tim_ex.c</name>
			<type>1</type>
			<location>D:/DataFiles/STM32Cube/Repository/STM32Cube_FW_G4_V1.4.0/Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_tim_ex.c</location>
		</link>
	</linkedResources>

AttributeError: 'NoneType' object has no attribute 'get'

Hello,

I create a simple project to test convert from STM32CubeIDE to PlatformIO.

Step 1: I use STM32CubeIDE to create a new project with "Add necessary files as a reference in the toolchain project configuration file" and I set up basic I/O, clock, generate code...

Step 2: In an other directory (empty), I create a new PlatformIO project

pio project init --board GenericSTM32F412ZGTx --project-option "framework=stm32cube"

Step 3: Copy all files from the STM32Cube project to the PlatformIO project in step 2 (includes hidden files).

Edit platformio.ini

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[platformio]
default_envs = stm32
; src_dir = ./
include_dir = Core/Inc

[env:stm32]
platform = ststm32
board = GenericSTM32F412ZGTx
framework = stm32cube
; This is the actual script that forces platformio into compiling the
; STM32CubeIDE project.
extra_scripts = pre:setup_cubemx_env_auto.py
; Set to the same toolchain as STM32CubeIDE
; For the mapping see
; https://api.registry.platformio.org/v3/packages/platformio/tool/toolchain-gccarmnoneeabi
platform_packages = [email protected]
; The name of the library directory in which the linked resources will
; be placed.
lib_deps = STLinkedResources
build_flags =
;   -Icommon/include/
  -std=gnu++17
  -fno-exceptions
  -Wall
;   -Werror
  -Wconversion
  -Wno-sign-conversion
  -Wno-sign-compare
build_unflags =
  -std=gnu++11
  -std=gnu++14
  -fpermissive

Step 5: Run build Platformio

~/Desktop/Working/PlatformIO/stm32/Motor$ pio run
Processing stm32 (platform: ststm32; board: GenericSTM32F412ZGTx; framework: stm32cube)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
SETUP_CUBEMX: Using the following source directories: 'Core, Drivers, Core/Startup'
SETUP_CUBEMX: Adding the following build flags: '-mthumb, -mcpu=cortex-m4, -mfpu=fpv4-sp-d16, -mfloat-abi=hard'
AttributeError: 'NoneType' object has no attribute 'get':
  File "/home/kevin/.platformio/penv/lib/python3.8/site-packages/platformio/builder/main.py", line 179:
    env.SConscript(item, exports="env")
  File "/home/kevin/.platformio/packages/tool-scons/scons-local-4.3.0/SCons/Script/SConscript.py", line 597:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/home/kevin/.platformio/packages/tool-scons/scons-local-4.3.0/SCons/Script/SConscript.py", line 285:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "/home/kevin/Desktop/Working/PlatformIO/stm32/Motor/setup_cubemx_env_auto.py", line 232:
    ld_script_entry = tool_chain.find(
========================================================================== [FAILED] Took 0.36 seconds ==========================================================================

Please see image attchmented
pioe

And zip file project.

Motor.zip

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.