diff --git a/.cargo/config b/.cargo/config index 1ab52827c2bfa858bc120a5e4f7a33137de3649c..05257840838a96f6af1154125dd019f2895edb57 100644 --- a/.cargo/config +++ b/.cargo/config @@ -30,5 +30,15 @@ rustflags = [ "-Z", "linker-flavor=ld", ] +[target.x] +runner = 'arm-none-eabi-gdb' +rustflags = [ + "-C", "link-arg=-Tlink.x", + "-C", "linker=arm-none-eabi-ld", + "-Z", "linker-flavor=ld", +] + + [build] -target = "thumbv7em-none-eabihf" \ No newline at end of file +#target = "thumbv7em-none-eabihf" +target = "x" diff --git a/.cproject b/.cproject new file mode 100644 index 0000000000000000000000000000000000000000..96440e4fe1f7f5d178d8c16d752d7e256baf90b3 --- /dev/null +++ b/.cproject @@ -0,0 +1,262 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> + <storageModule moduleId="org.eclipse.cdt.core.settings"> + <cconfiguration id="com.atollic.truestudio.exe.debug.1881339073"> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.atollic.truestudio.exe.debug.1881339073" 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.GLDErrorParser" 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" cleanCommand="rm -rf" description="" id="com.atollic.truestudio.exe.debug.1881339073" name="Debug" parent="com.atollic.truestudio.exe.debug"> + <folderInfo id="com.atollic.truestudio.exe.debug.1881339073." name="/" resourcePath=""> + <toolChain id="com.atollic.truestudio.exe.debug.toolchain.1506495034" name="Atollic ARM Tools" superClass="com.atollic.truestudio.exe.debug.toolchain"> + <option id="com.atollic.truestudio.general.runtimelib.1086313725" name="Runtime Library" superClass="com.atollic.truestudio.general.runtimelib" useByScannerDiscovery="false" value="com.atollic.truestudio.ld.general.clib.small" valueType="enumerated"/> + <option id="com.atollic.truestudio.toolchain_options.mcu.1825593294" name="Microcontroller" superClass="com.atollic.truestudio.toolchain_options.mcu" useByScannerDiscovery="false" value="STM32F401RE" valueType="string"/> + <option id="com.atollic.truestudio.toolchain_options.vendor.1014298667" name="Vendor name" superClass="com.atollic.truestudio.toolchain_options.vendor" useByScannerDiscovery="false" value="STMicroelectronics" valueType="string"/> + <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.atollic.truestudio.exe.debug.toolchain.platform.1890520497" isAbstract="false" name="Debug platform" osList="all" superClass="com.atollic.truestudio.exe.debug.toolchain.platform"/> + <builder buildPath="${workspace_loc:/n64}/Debug" customBuilderProperties="toolChainpathString=/opt/Atollic_TrueSTUDIO_for_ARM_x86_64_8.1.0/ARMTools/bin|com.atollic.truestudio.common_options.target.mcu=STM32F401RE|toolChainpathType=1|com.atollic.truestudio.common_options.target.vendor=STMicroelectronics|" id="com.atollic.truestudio.mbs.builder1.830655497" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="com.atollic.truestudio.mbs.builder1"/> + <tool id="com.atollic.truestudio.exe.debug.toolchain.as.123405565" name="Assembler" superClass="com.atollic.truestudio.exe.debug.toolchain.as"> + <option id="com.atollic.truestudio.common_options.target.endianess.973391957" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess" useByScannerDiscovery="false"/> + <option id="com.atollic.truestudio.common_options.target.mcpu.1204633878" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" useByScannerDiscovery="false" value="STM32F401RE" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.instr_set.249208847" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" useByScannerDiscovery="false" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpucore.1088299308" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" useByScannerDiscovery="false" value="com.atollic.truestudio.common_options.target.fpucore.fpv4-sp-d16" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpu.468673941" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" useByScannerDiscovery="false" value="com.atollic.truestudio.common_options.target.fpu.hard" valueType="enumerated"/> + <option id="com.atollic.truestudio.as.symbols.defined.751320122" name="Defined symbols" superClass="com.atollic.truestudio.as.symbols.defined" useByScannerDiscovery="false" valueType="definedSymbols"> + <listOptionValue builtIn="false" value="STM32F4XX"/> + <listOptionValue builtIn="false" value="STM32F40XX"/> + <listOptionValue builtIn="false" value="USE_STDPERIPH_DRIVER"/> + </option> + <option id="com.atollic.truestudio.as.general.incpath.2054333984" name="Include path" superClass="com.atollic.truestudio.as.general.incpath" useByScannerDiscovery="false" valueType="includePath"> + <listOptionValue builtIn="false" value="../src"/> + <listOptionValue builtIn="false" value="../Libraries/CMSIS/Include"/> + <listOptionValue builtIn="false" value="../Libraries/Device/STM32F4xx/Include"/> + <listOptionValue builtIn="false" value="../Libraries/STM32F4xx_StdPeriph_Driver/inc"/> + </option> + <option id="com.atollic.truestudio.common_options.target.interwork.859858997" name="Mix ARM/Thumb" superClass="com.atollic.truestudio.common_options.target.interwork" useByScannerDiscovery="false"/> + <inputType id="com.atollic.truestudio.as.input.183686108" name="Input" superClass="com.atollic.truestudio.as.input"/> + </tool> + <tool id="com.atollic.truestudio.exe.debug.toolchain.gcc.621866906" name="C Compiler" superClass="com.atollic.truestudio.exe.debug.toolchain.gcc"> + <option id="com.atollic.truestudio.gcc.symbols.defined.2099202398" name="Defined symbols" superClass="com.atollic.truestudio.gcc.symbols.defined" useByScannerDiscovery="false" valueType="definedSymbols"> + <listOptionValue builtIn="false" value="STM32F4XX"/> + <listOptionValue builtIn="false" value="STM32F40XX"/> + <listOptionValue builtIn="false" value="USE_STDPERIPH_DRIVER"/> + </option> + <option id="com.atollic.truestudio.gcc.directories.select.805233352" name="Include path" superClass="com.atollic.truestudio.gcc.directories.select" useByScannerDiscovery="false" valueType="includePath"> + <listOptionValue builtIn="false" value="../src"/> + <listOptionValue builtIn="false" value="../Libraries/CMSIS/Include"/> + <listOptionValue builtIn="false" value="../Libraries/Device/STM32F4xx/Include"/> + <listOptionValue builtIn="false" value="../Libraries/STM32F4xx_StdPeriph_Driver/inc"/> + </option> + <option id="com.atollic.truestudio.common_options.target.endianess.230794929" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess" useByScannerDiscovery="false"/> + <option id="com.atollic.truestudio.common_options.target.mcpu.2025204083" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" useByScannerDiscovery="false" value="STM32F401RE" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.instr_set.1152960300" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" useByScannerDiscovery="false" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpucore.529818983" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" useByScannerDiscovery="false" value="com.atollic.truestudio.common_options.target.fpucore.fpv4-sp-d16" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpu.265435723" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" useByScannerDiscovery="false" value="com.atollic.truestudio.common_options.target.fpu.hard" valueType="enumerated"/> + <option id="com.atollic.truestudio.gcc.optimization.prep_garbage.96041013" name="Prepare dead code removal " superClass="com.atollic.truestudio.gcc.optimization.prep_garbage" useByScannerDiscovery="false" value="true" valueType="boolean"/> + <option id="com.atollic.truestudio.gcc.optimization.prep_data.1872192391" name="Prepare dead data removal" superClass="com.atollic.truestudio.gcc.optimization.prep_data" useByScannerDiscovery="false" value="true" valueType="boolean"/> + <option id="com.atollic.truestudio.common_options.target.interwork.1693933640" name="Mix ARM/Thumb" superClass="com.atollic.truestudio.common_options.target.interwork" useByScannerDiscovery="false"/> + <inputType id="com.atollic.truestudio.gcc.input.1196838235" superClass="com.atollic.truestudio.gcc.input"/> + </tool> + <tool id="com.atollic.truestudio.exe.debug.toolchain.ld.1291762028" name="C Linker" superClass="com.atollic.truestudio.exe.debug.toolchain.ld"> + <option id="com.atollic.truestudio.common_options.target.endianess.618030659" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess" useByScannerDiscovery="false"/> + <option id="com.atollic.truestudio.common_options.target.mcpu.1108494987" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" useByScannerDiscovery="false" value="STM32F401RE" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.instr_set.1747458268" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" useByScannerDiscovery="false" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpucore.90985099" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" useByScannerDiscovery="false" value="com.atollic.truestudio.common_options.target.fpucore.fpv4-sp-d16" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpu.539332769" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" useByScannerDiscovery="false" value="com.atollic.truestudio.common_options.target.fpu.hard" valueType="enumerated"/> + <option id="com.atollic.truestudio.ld.general.scriptfile.502600784" name="Linker script" superClass="com.atollic.truestudio.ld.general.scriptfile" useByScannerDiscovery="false" value="../stm32f4_flash.ld" valueType="string"/> + <option id="com.atollic.truestudio.ld.optimization.do_garbage.1265088689" name="Dead code removal " superClass="com.atollic.truestudio.ld.optimization.do_garbage" useByScannerDiscovery="false" value="true" valueType="boolean"/> + <option id="com.atollic.truestudio.common_options.target.interwork.226401525" name="Mix ARM/Thumb" superClass="com.atollic.truestudio.common_options.target.interwork" useByScannerDiscovery="false"/> + <inputType id="com.atollic.truestudio.ld.input.960646383" name="Input" superClass="com.atollic.truestudio.ld.input"> + <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> + <additionalInput kind="additionalinput" paths="$(LIBS)"/> + </inputType> + </tool> + <tool id="com.atollic.truestudio.exe.debug.toolchain.gpp.1136430922" name="C++ Compiler" superClass="com.atollic.truestudio.exe.debug.toolchain.gpp"> + <option id="com.atollic.truestudio.gpp.symbols.defined.2043046249" name="Defined symbols" superClass="com.atollic.truestudio.gpp.symbols.defined" valueType="definedSymbols"> + <listOptionValue builtIn="false" value="STM32F4XX"/> + <listOptionValue builtIn="false" value="STM32F40XX"/> + <listOptionValue builtIn="false" value="USE_STDPERIPH_DRIVER"/> + </option> + <option id="com.atollic.truestudio.gpp.directories.select.87735841" name="Include path" superClass="com.atollic.truestudio.gpp.directories.select" valueType="includePath"> + <listOptionValue builtIn="false" value="../src"/> + <listOptionValue builtIn="false" value="../Libraries/CMSIS/Include"/> + <listOptionValue builtIn="false" value="../Libraries/Device/STM32F4xx/Include"/> + <listOptionValue builtIn="false" value="../Libraries/STM32F4xx_StdPeriph_Driver/inc"/> + </option> + <option id="com.atollic.truestudio.common_options.target.endianess.87456549" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess"/> + <option id="com.atollic.truestudio.common_options.target.mcpu.2038368836" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" value="STM32F401RE" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.instr_set.675447049" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpucore.1627451224" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" value="com.atollic.truestudio.common_options.target.fpucore.fpv4-sp-d16" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpu.316884163" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" value="com.atollic.truestudio.common_options.target.fpu.hard" valueType="enumerated"/> + <option id="com.atollic.truestudio.gpp.optimization.prep_garbage.1543632397" name="Prepare dead code removal" superClass="com.atollic.truestudio.gpp.optimization.prep_garbage" value="true" valueType="boolean"/> + <option id="com.atollic.truestudio.gpp.optimization.prep_data.916483074" name="Prepare dead data removal" superClass="com.atollic.truestudio.gpp.optimization.prep_data" value="true" valueType="boolean"/> + <option id="com.atollic.truestudio.gpp.optimization.fno_rtti.1587556829" name="Disable RTTI" superClass="com.atollic.truestudio.gpp.optimization.fno_rtti"/> + <option id="com.atollic.truestudio.gpp.optimization.fno_exceptions.2053666335" name="Disable exception handling" superClass="com.atollic.truestudio.gpp.optimization.fno_exceptions"/> + <option id="com.atollic.truestudio.common_options.target.interwork.314492065" name="Mix ARM/Thumb" superClass="com.atollic.truestudio.common_options.target.interwork"/> + </tool> + <tool id="com.atollic.truestudio.exe.debug.toolchain.ldcc.313440566" name="C++ Linker" superClass="com.atollic.truestudio.exe.debug.toolchain.ldcc"> + <option id="com.atollic.truestudio.common_options.target.endianess.1414946824" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess"/> + <option id="com.atollic.truestudio.common_options.target.mcpu.372158098" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" value="STM32F401RE" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.instr_set.434352780" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpucore.1186978814" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" value="com.atollic.truestudio.common_options.target.fpucore.fpv4-sp-d16" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpu.635323097" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" value="com.atollic.truestudio.common_options.target.fpu.hard" valueType="enumerated"/> + <option id="com.atollic.truestudio.ldcc.optimization.do_garbage.1487173204" name="Dead code removal" superClass="com.atollic.truestudio.ldcc.optimization.do_garbage" value="true" valueType="boolean"/> + <option id="com.atollic.truestudio.ldcc.general.scriptfile.1066721978" name="Linker script" superClass="com.atollic.truestudio.ldcc.general.scriptfile" value="../stm32f4_flash.ld" valueType="string"/> + <option id="com.atollic.truestudio.common_options.target.interwork.1200203820" name="Mix ARM/Thumb" superClass="com.atollic.truestudio.common_options.target.interwork"/> + </tool> + <tool id="com.atollic.truestudio.ar.base.6685800" name="Archiver" superClass="com.atollic.truestudio.ar.base"/> + <tool id="com.atollic.truestudio.exe.debug.toolchain.secoutput.227876588" name="Other" superClass="com.atollic.truestudio.exe.debug.toolchain.secoutput"/> + </toolChain> + </folderInfo> + <sourceEntries> + <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Libraries"/> + <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/> + </sourceEntries> + </configuration> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> + </cconfiguration> + <cconfiguration id="com.atollic.truestudio.configuration.release.922451846"> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.atollic.truestudio.configuration.release.922451846" 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.GLDErrorParser" 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" cleanCommand="rm -rf" description="" id="com.atollic.truestudio.configuration.release.922451846" name="Release" parent="com.atollic.truestudio.configuration.release"> + <folderInfo id="com.atollic.truestudio.configuration.release.922451846." name="/" resourcePath=""> + <toolChain id="com.atollic.truestudio.exe.release.toolchain.700601340" name="Atollic ARM Tools" superClass="com.atollic.truestudio.exe.release.toolchain"> + <option id="com.atollic.truestudio.general.runtimelib.935801768" name="Runtime Library" superClass="com.atollic.truestudio.general.runtimelib" value="com.atollic.truestudio.ld.general.clib.small" valueType="enumerated"/> + <option id="com.atollic.truestudio.toolchain_options.mcu.67637389" name="Microcontroller" superClass="com.atollic.truestudio.toolchain_options.mcu" value="STM32F401RE" valueType="string"/> + <option id="com.atollic.truestudio.toolchain_options.vendor.1671861816" name="Vendor name" superClass="com.atollic.truestudio.toolchain_options.vendor" value="STMicroelectronics" valueType="string"/> + <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.atollic.truestudio.exe.release.toolchain.platform.1069206840" isAbstract="false" name="release platform" superClass="com.atollic.truestudio.exe.release.toolchain.platform"/> + <builder buildPath="${workspace_loc:/n64}/Release" customBuilderProperties="com.atollic.truestudio.common_options.target.vendor=STMicroelectronics|com.atollic.truestudio.common_options.target.mcu=STM32F401RE|" id="com.atollic.truestudio.mbs.builder1.108562121" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="com.atollic.truestudio.mbs.builder1"/> + <tool id="com.atollic.truestudio.exe.release.toolchain.as.1748884484" name="Assembler" superClass="com.atollic.truestudio.exe.release.toolchain.as"> + <option id="com.atollic.truestudio.common_options.target.endianess.906627217" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess"/> + <option id="com.atollic.truestudio.common_options.target.mcpu.178727010" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" value="STM32F401RE" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.instr_set.491756466" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpucore.1338162869" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" value="com.atollic.truestudio.common_options.target.fpucore.fpv4-sp-d16" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpu.1329722626" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" value="com.atollic.truestudio.common_options.target.fpu.hard" valueType="enumerated"/> + <option id="com.atollic.truestudio.as.symbols.defined.290029245" name="Defined symbols" superClass="com.atollic.truestudio.as.symbols.defined" valueType="definedSymbols"> + <listOptionValue builtIn="false" value="STM32F4XX"/> + <listOptionValue builtIn="false" value="STM32F40XX"/> + <listOptionValue builtIn="false" value="USE_STDPERIPH_DRIVER"/> + </option> + <option id="com.atollic.truestudio.as.general.incpath.1898099065" name="Include path" superClass="com.atollic.truestudio.as.general.incpath" valueType="includePath"> + <listOptionValue builtIn="false" value="../src"/> + <listOptionValue builtIn="false" value="../Libraries/CMSIS/Include"/> + <listOptionValue builtIn="false" value="../Libraries/Device/STM32F4xx/Include"/> + <listOptionValue builtIn="false" value="../Libraries/STM32F4xx_StdPeriph_Driver/inc"/> + </option> + <option id="com.atollic.truestudio.common_options.target.interwork.625968121" name="Mix ARM/Thumb" superClass="com.atollic.truestudio.common_options.target.interwork"/> + <inputType id="com.atollic.truestudio.as.input.144623402" name="Input" superClass="com.atollic.truestudio.as.input"/> + </tool> + <tool id="com.atollic.truestudio.exe.release.toolchain.gcc.741991132" name="C Compiler" superClass="com.atollic.truestudio.exe.release.toolchain.gcc"> + <option id="com.atollic.truestudio.gcc.symbols.defined.361268767" name="Defined symbols" superClass="com.atollic.truestudio.gcc.symbols.defined" valueType="definedSymbols"> + <listOptionValue builtIn="false" value="STM32F4XX"/> + <listOptionValue builtIn="false" value="STM32F40XX"/> + <listOptionValue builtIn="false" value="USE_STDPERIPH_DRIVER"/> + </option> + <option id="com.atollic.truestudio.gcc.directories.select.286127144" name="Include path" superClass="com.atollic.truestudio.gcc.directories.select" valueType="includePath"> + <listOptionValue builtIn="false" value="../src"/> + <listOptionValue builtIn="false" value="../Libraries/CMSIS/Include"/> + <listOptionValue builtIn="false" value="../Libraries/Device/STM32F4xx/Include"/> + <listOptionValue builtIn="false" value="../Libraries/STM32F4xx_StdPeriph_Driver/inc"/> + </option> + <option id="com.atollic.truestudio.common_options.target.endianess.2098996676" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess"/> + <option id="com.atollic.truestudio.common_options.target.mcpu.1043888821" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" value="STM32F401RE" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.instr_set.1534503514" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpucore.50159166" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" value="com.atollic.truestudio.common_options.target.fpucore.fpv4-sp-d16" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpu.965953010" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" value="com.atollic.truestudio.common_options.target.fpu.hard" valueType="enumerated"/> + <option id="com.atollic.truestudio.gcc.optimization.prep_garbage.84941918" name="Prepare dead code removal " superClass="com.atollic.truestudio.gcc.optimization.prep_garbage" value="true" valueType="boolean"/> + <option id="com.atollic.truestudio.gcc.optimization.prep_data.114993359" name="Prepare dead data removal" superClass="com.atollic.truestudio.gcc.optimization.prep_data" value="true" valueType="boolean"/> + <option id="com.atollic.truestudio.common_options.target.interwork.1175481921" name="Mix ARM/Thumb" superClass="com.atollic.truestudio.common_options.target.interwork"/> + <inputType id="com.atollic.truestudio.gcc.input.81153392" superClass="com.atollic.truestudio.gcc.input"/> + </tool> + <tool id="com.atollic.truestudio.exe.release.toolchain.ld.1191252206" name="C Linker" superClass="com.atollic.truestudio.exe.release.toolchain.ld"> + <option id="com.atollic.truestudio.common_options.target.endianess.1420008196" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess"/> + <option id="com.atollic.truestudio.common_options.target.mcpu.453407666" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" value="STM32F401RE" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.instr_set.1504554129" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpucore.674682187" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" value="com.atollic.truestudio.common_options.target.fpucore.fpv4-sp-d16" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpu.482391238" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" value="com.atollic.truestudio.common_options.target.fpu.hard" valueType="enumerated"/> + <option id="com.atollic.truestudio.ld.general.scriptfile.1982988968" name="Linker script" superClass="com.atollic.truestudio.ld.general.scriptfile" value="../stm32f4_flash.ld" valueType="string"/> + <option id="com.atollic.truestudio.ld.optimization.do_garbage.1729229905" name="Dead code removal " superClass="com.atollic.truestudio.ld.optimization.do_garbage" value="true" valueType="boolean"/> + <option id="com.atollic.truestudio.common_options.target.interwork.1518867419" name="Mix ARM/Thumb" superClass="com.atollic.truestudio.common_options.target.interwork"/> + <inputType id="com.atollic.truestudio.ld.input.131966792" name="Input" superClass="com.atollic.truestudio.ld.input"> + <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> + <additionalInput kind="additionalinput" paths="$(LIBS)"/> + </inputType> + </tool> + <tool id="com.atollic.truestudio.exe.release.toolchain.gpp.2001195038" name="C++ Compiler" superClass="com.atollic.truestudio.exe.release.toolchain.gpp"> + <option id="com.atollic.truestudio.gpp.symbols.defined.1108140938" name="Defined symbols" superClass="com.atollic.truestudio.gpp.symbols.defined" valueType="definedSymbols"> + <listOptionValue builtIn="false" value="STM32F4XX"/> + <listOptionValue builtIn="false" value="STM32F40XX"/> + <listOptionValue builtIn="false" value="USE_STDPERIPH_DRIVER"/> + </option> + <option id="com.atollic.truestudio.gpp.directories.select.1279296359" name="Include path" superClass="com.atollic.truestudio.gpp.directories.select" valueType="includePath"> + <listOptionValue builtIn="false" value="../src"/> + <listOptionValue builtIn="false" value="../Libraries/CMSIS/Include"/> + <listOptionValue builtIn="false" value="../Libraries/Device/STM32F4xx/Include"/> + <listOptionValue builtIn="false" value="../Libraries/STM32F4xx_StdPeriph_Driver/inc"/> + </option> + <option id="com.atollic.truestudio.common_options.target.endianess.175593438" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess"/> + <option id="com.atollic.truestudio.common_options.target.mcpu.2083212550" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" value="STM32F401RE" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.instr_set.1646937908" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpucore.1300531377" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" value="com.atollic.truestudio.common_options.target.fpucore.fpv4-sp-d16" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpu.1110077966" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" value="com.atollic.truestudio.common_options.target.fpu.hard" valueType="enumerated"/> + <option id="com.atollic.truestudio.gpp.optimization.prep_garbage.2046518450" name="Prepare dead code removal" superClass="com.atollic.truestudio.gpp.optimization.prep_garbage" value="true" valueType="boolean"/> + <option id="com.atollic.truestudio.gpp.optimization.prep_data.1385824662" name="Prepare dead data removal" superClass="com.atollic.truestudio.gpp.optimization.prep_data" value="true" valueType="boolean"/> + <option id="com.atollic.truestudio.gpp.optimization.fno_rtti.2075075589" name="Disable RTTI" superClass="com.atollic.truestudio.gpp.optimization.fno_rtti"/> + <option id="com.atollic.truestudio.gpp.optimization.fno_exceptions.449938331" name="Disable exception handling" superClass="com.atollic.truestudio.gpp.optimization.fno_exceptions"/> + <option id="com.atollic.truestudio.common_options.target.interwork.450915" name="Mix ARM/Thumb" superClass="com.atollic.truestudio.common_options.target.interwork"/> + </tool> + <tool id="com.atollic.truestudio.exe.release.toolchain.ldcc.1449069239" name="C++ Linker" superClass="com.atollic.truestudio.exe.release.toolchain.ldcc"> + <option id="com.atollic.truestudio.common_options.target.endianess.65153670" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess"/> + <option id="com.atollic.truestudio.common_options.target.mcpu.2070692527" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" value="STM32F401RE" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.instr_set.1096938558" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpucore.1436509222" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" value="com.atollic.truestudio.common_options.target.fpucore.fpv4-sp-d16" valueType="enumerated"/> + <option id="com.atollic.truestudio.common_options.target.fpu.526222101" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" value="com.atollic.truestudio.common_options.target.fpu.hard" valueType="enumerated"/> + <option id="com.atollic.truestudio.ldcc.optimization.do_garbage.710320023" name="Dead code removal" superClass="com.atollic.truestudio.ldcc.optimization.do_garbage" value="true" valueType="boolean"/> + <option id="com.atollic.truestudio.ldcc.general.scriptfile.1797891336" name="Linker script" superClass="com.atollic.truestudio.ldcc.general.scriptfile" value="../stm32f4_flash.ld" valueType="string"/> + <option id="com.atollic.truestudio.common_options.target.interwork.628682679" name="Mix ARM/Thumb" superClass="com.atollic.truestudio.common_options.target.interwork"/> + </tool> + <tool id="com.atollic.truestudio.ar.base.1761257814" name="Archiver" superClass="com.atollic.truestudio.ar.base"/> + <tool id="com.atollic.truestudio.exe.release.toolchain.secoutput.1918631967" name="Other" superClass="com.atollic.truestudio.exe.release.toolchain.secoutput"/> + </toolChain> + </folderInfo> + <sourceEntries> + <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Libraries"/> + <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/> + </sourceEntries> + </configuration> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> + </cconfiguration> + </storageModule> + <storageModule moduleId="cdtBuildSystem" version="4.0.0"> + <project id="n64.com.atollic.truestudio.exe.864012995" name="Executable" projectType="com.atollic.truestudio.exe"/> + </storageModule> + <storageModule moduleId="scannerConfiguration"> + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> + <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> + <storageModule moduleId="refreshScope" versionNumber="2"> + <configuration configurationName="Debug"> + <resource resourceType="PROJECT" workspacePath="/nucleo-64-rtfm"/> + </configuration> + <configuration configurationName="Release"> + <resource resourceType="PROJECT" workspacePath="/nucleo-64-rtfm"/> + </configuration> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/> +</cproject> diff --git a/.gdbinit b/.gdbinit_script similarity index 100% rename from .gdbinit rename to .gdbinit_script diff --git a/.project b/.project new file mode 100644 index 0000000000000000000000000000000000000000..906e9530d9021dd7837b11419464d00610c46295 --- /dev/null +++ b/.project @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>nucleo-64-rtfm</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> + <triggers>clean,full,incremental,</triggers> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.github.rustdt.ide.core.Builder</name> + <triggers>clean,full,incremental,</triggers> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name> + <triggers>full,incremental,</triggers> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.cdt.core.cnature</nature> + <nature>com.github.rustdt.ide.core.nature</nature> + <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> + <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> + </natures> +</projectDescription> diff --git a/.settings/com.atollic.truestudio.debug.hardware_device.prefs b/.settings/com.atollic.truestudio.debug.hardware_device.prefs new file mode 100644 index 0000000000000000000000000000000000000000..aabb3f20370f576bf3a5cd791e67ebc5188d90fe --- /dev/null +++ b/.settings/com.atollic.truestudio.debug.hardware_device.prefs @@ -0,0 +1,10 @@ +BOARD=NUCLEO-F401RE +CODE_LOCATION=FLASH +ENDIAN=Little-endian +MCU=STM32F401RE +MCU_VENDOR=STMicroelectronics +MODEL=Lite +PROJECT_FORMAT_VERSION=2 +TARGET=ARM\u00AE +VERSION=8.1.0 +eclipse.preferences.version=1 diff --git a/.settings/com.atollic.truestudio.tsp.prefs b/.settings/com.atollic.truestudio.tsp.prefs new file mode 100644 index 0000000000000000000000000000000000000000..ab9fdac098b7cfacd7376dc981c58295333b8527 --- /dev/null +++ b/.settings/com.atollic.truestudio.tsp.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +svd_custom_file_path= +svd_file_path=/opt/Atollic_TrueSTUDIO_for_ARM_x86_64_8.1.0/ide/plugins/com.atollic.truestudio.tsp.stm32_1.0.0.20171023-2304/tsp/sfr/STM32F413.svd diff --git a/.settings/com.github.rustdt.ide.core.prefs b/.settings/com.github.rustdt.ide.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..eb0a50c8174f58e993aa22a645a9e47c189b91fc --- /dev/null +++ b/.settings/com.github.rustdt.ide.core.prefs @@ -0,0 +1,9 @@ +build_targets=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<build_targets xmlns\="com.github.rustdt.ide.core">\n<target auto_enabled\="false" config\="build" n_enabled\="true" version2\="true">\n<command_invocation append_env\="true" command_arguments\="xargo build --example nested --message-format\=json">\n<env_vars/>\n</command_invocation>\n</target>\n<target auto_enabled\="false" config\="check" n_enabled\="false" version2\="true">\n<command_invocation append_env\="true" command_arguments\="xargo check --example nested --message-format\=json">\n<env_vars/>\n</command_invocation>\n</target>\n<target auto_enabled\="false" config\="clean" n_enabled\="false" version2\="true"/>\n</build_targets>\n +eclipse.preferences.version=1 +format_onSave=true +racer_path=/home/pln/.cargo/bin/ +rainicorn_path=/home/pln/.cargo/RustDT/bin/parse_describe +rustfmt_path=/home/pln/.cargo/bin/rustfmt +sdk_path=/home/pln/.cargo/ +sdk_src_path=/home/pln/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src +toolchain_prefs.use_project_settings=false diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..b0ebdc1811fa09797b82a689577f6f1266e71591 --- /dev/null +++ b/.settings/language.settings.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<project> + <configuration id="com.atollic.truestudio.exe.debug.1881339073" name="Debug"> + <extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> + <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> + <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> + <provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="793783583106221037" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> + <language-scope id="org.eclipse.cdt.core.gcc"/> + <language-scope id="org.eclipse.cdt.core.g++"/> + </provider> + </extension> + </configuration> + <configuration id="com.atollic.truestudio.configuration.release.922451846" name="Release"> + <extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> + <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> + <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> + <provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="793783583106221037" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> + <language-scope id="org.eclipse.cdt.core.gcc"/> + <language-scope id="org.eclipse.cdt.core.g++"/> + </provider> + </extension> + </configuration> +</project> diff --git a/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/.settings/org.eclipse.cdt.managedbuilder.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..8cca1829150ca9e6fd14313d4fe3d05b87bb8dfc --- /dev/null +++ b/.settings/org.eclipse.cdt.managedbuilder.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1881339073/CPATH/delimiter=\: +environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1881339073/CPATH/operation=remove +environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1881339073/C_INCLUDE_PATH/delimiter=\: +environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1881339073/C_INCLUDE_PATH/operation=remove +environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1881339073/append=true +environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1881339073/appendContributed=true +environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1881339073/LIBRARY_PATH/delimiter=\: +environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1881339073/LIBRARY_PATH/operation=remove +environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1881339073/append=true +environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1881339073/appendContributed=true diff --git a/.settings/org.eclipse.ltk.core.refactoring.prefs b/.settings/org.eclipse.ltk.core.refactoring.prefs new file mode 100644 index 0000000000000000000000000000000000000000..b196c64a3418b865f0476d2e21d11eae3dd4b2da --- /dev/null +++ b/.settings/org.eclipse.ltk.core.refactoring.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/Cargo.toml b/Cargo.toml index 0853def083cf88c0e1d15e85856d77ac2700ead8..6c41f70fef13763fe4853f0a462ebe32615b1133 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,18 +18,29 @@ untagged-option = "0.1.1" rtfm-core = "0.1.0" cortex-m-rtfm-macros = { path = "macros" } -[target.'cfg(target_arch = "x86_64")'.dev-dependencies] -compiletest_rs = "0.2.8" +#[target.'cfg(target_arch = "x86_64")'.dev-dependencies] +#compiletest_rs = "0.2.8" [dev-dependencies.cortex-m-rt] features = ["abort-on-panic"] version = "0.3.3" -[dev-dependencies.stm32f40x] -git = "https://gitlab.henriktjader.com/pln/STM32F40x" +#[dev-dependencies.stm32f40x] +#git = "https://gitlab.henriktjader.com/pln/STM32F40x" +#features = ["rt"] +#version = "0.1.0" + +[dev-dependencies.stm32f413] +#path = "/home/pln/rtfm/stm32f413" +git = "https://gitlab.henriktjader.com/pln/stm32f413" features = ["rt"] version = "0.1.0" +[dev-dependencies.cortex-m-debug] +path = "/home/pln/rtfm/cortex-m-debug" +version = "0.1.0" + + [features] wcet_bkpt = [] wcet_nop = [] diff --git a/atollic.md b/atollic.md new file mode 100644 index 0000000000000000000000000000000000000000..ad849bbab438caa2e9209d84573c1e1ac9fffb22 --- /dev/null +++ b/atollic.md @@ -0,0 +1,48 @@ +arch linux + +tools +GNU gdb (GDB) 8.0.1 +GNU ld (GNU Binutils) 2.29.1 +Open On-Chip Debugger 0.10.0+dev-00226-g1c2e3d41d (2017-12-21-21:14) + +make rust work +rustup default nightly + +install atollic +(commented out licence server and dependency) +https://forum.atollic.com/viewtopic.php?f=3&t=943 + +RustDT + + + + + +-- problems +problem, no licence manager, should we use usb or floating (guess floating) + + +-- problems and questions +1 can we get floating licence for reasearch/development (with full features) +1.1 for now the arm-atollic-eabi-gdb is replaced by /usr/bin/arm-none-eabi-gdb, but maybe with a full version this can be fixed by a proper setting + yes, we need a newer version of gdb as the pretty printing for Rust structs is much better +2 cannot restart debugging (nothing happens), in fact the one need to Terminate and Remove, not even Terminate and Relaunch works +2.1 +workaround, do not exit debugger, just `load` in gdb), use a script `r` (for reload) for that and `so r` in the gdb console + +the content of `r` is: +set confirm off +mon reset init +load +mon reset init + +3 ITM debugging + +-- general comments +1 good use of the eclipse platform (works in general better than GNU ARM Eclipse) +2 nice SFR support (works even well with tiling wms) +3 poor gdb prompt (as of gdb 8 it should be possible to get tabbing to work... that would be a huge boost in productivity) +4 nice that gdb prompt is (usuall) synchronized with eclipse debug views (source/assembly) +4.1 when scrolling the disassm view the current pc is lost (needs to be updated in view) + + diff --git a/examples/nested.rs b/examples/nested.rs index fdbbb6f11f0bd911e8bb1199ba61aabe6e611c26..c097ff47a7bbf97b192e76626e3e0ee1b8896c5a 100644 --- a/examples/nested.rs +++ b/examples/nested.rs @@ -2,18 +2,24 @@ //! //! If you run this program you'll hit the breakpoints as indicated by the //! letters in the comments: A, then B, then C, etc. -#![deny(unsafe_code)] +//#![deny(unsafe_code)] #![feature(proc_macro)] #![no_std] +//extern crate bare_metal; +//#[macro_use] +extern crate cortex_m; + +#[macro_use] +extern crate cortex_m_debug; extern crate cortex_m_rtfm as rtfm; -extern crate stm32f40x; +extern crate stm32f413; -use stm32f40x::Interrupt; +use stm32f413::Interrupt; use rtfm::{app, Resource, Threshold}; app! { - device: stm32f40x, + device: stm32f413, resources: { static LOW: u64 = 0; @@ -41,11 +47,197 @@ app! { }, } -fn init(_p: init::Peripherals, _r: init::Resources) {} +fn wait(v: u32) { + for i in 0..v { + rtfm::nop(); + } +} + +fn init(p: init::Peripherals, _r: init::Resources) { + rtfm::bkpt(); + ipln!("start"); + // enable clocking of AES + p.RCC.ahb2enr.write(|w| w.crypen().set_bit()); + // errata, device might not be ready + // rtfm::dsb(); // not implemented/exported + wait(1000); + + // test key derivation + let key = 0x11111111; + // p.AES.cr.write(|w| w); // set default + p.AES.cr.write(|w| unsafe { w.mode().bits(0b01) }); + p.AES.keyr0.write(|w| unsafe { w.bits(key) }); + p.AES.keyr1.write(|w| unsafe { w.bits(key) }); + p.AES.keyr2.write(|w| unsafe { w.bits(key) }); + p.AES.keyr3.write(|w| unsafe { w.bits(key) }); + p.AES.cr.modify(|_, w| w.en().set_bit()); + + // wait until processing complete + let mut r = 0; + while p.AES.sr.read().ccf().bit_is_clear() { + r += 1; + } + + ipln!("wait {}", r); + + let d0 = p.AES.keyr0.read().bits(); + let d1 = p.AES.keyr1.read().bits(); + let d2 = p.AES.keyr2.read().bits(); + let d3 = p.AES.keyr3.read().bits(); + + ipln!("d0 {:08x}", d0); + ipln!("d1 {:08x}", d1); + ipln!("d2 {:08x}", d2); + ipln!("d3 {:08x}", d3); + + // reset state + // KEYSIZE 128 + // NO DMA + // NO ERR + // MODE 00 = Mode 1 Encryption + // NO Swapping + + // 128 bit key, 4 * 32 bit + // we set it to + // 00 01 02 03 + // 0x0000_00001__0000_00001__0000_00001__0000_00001 + // ipln!("{}", p.AES.keyr0.read().bits()); + + // Mode 1: encryption using the encryption key stored in the AES_KEYRx registers. + // write the raw data to be encrypted + + p.AES.cr.write(|w| w.ccfc().set_bit()); // clear complete and disable AES; + // rtfm::bkpt(); + // default is to encrypt (Mode 1) + p.AES.keyr0.write(|w| unsafe { w.bits(key) }); + p.AES.keyr1.write(|w| unsafe { w.bits(key) }); + p.AES.keyr2.write(|w| unsafe { w.bits(key) }); + p.AES.keyr3.write(|w| unsafe { w.bits(key) }); + + p.AES.cr.modify(|_, w| w.en().set_bit()); + + let data = 0x11111111; + for _ in 0..4 { + p.AES.dinr.write(|w| unsafe { w.bits(data) }); + } + // wait until processing complete + let mut r = 0; + while p.AES.sr.read().ccf().bit_is_clear() { + r += 1; + } + + ipln!("wait {}", r); + // read the encrypted data + let c0 = p.AES.doutr.read().bits(); + let c1 = p.AES.doutr.read().bits(); + let c2 = p.AES.doutr.read().bits(); + let c3 = p.AES.doutr.read().bits(); + + ipln!("c0 {:08x}", c0); + ipln!("c1 {:08x}", c1); + ipln!("c2 {:08x}", c2); + ipln!("c3 {:08x}", c3); + + // change to decipher, mode 4 key auto derive + p.AES.cr.write(|w| w.en().clear_bit()); // disable AES; + p.AES.cr.write(|w| w.ccfc().set_bit()); // clear complete + + p.AES.cr.write(|w| unsafe { w.mode().bits(0b11) }); // set mode 3 + p.AES.keyr0.write(|w| unsafe { w.bits(key) }); + p.AES.keyr1.write(|w| unsafe { w.bits(key) }); + p.AES.keyr2.write(|w| unsafe { w.bits(key) }); + p.AES.keyr3.write(|w| unsafe { w.bits(key) }); + + p.AES.cr.modify(|_, w| w.en().set_bit()); // enable AES + + // Mode 3: dencryption using the encryption key stored in the AES_KEYRx registers. + // write the encrypted data + p.AES.dinr.write(|w| unsafe { w.bits(c0) }); + p.AES.dinr.write(|w| unsafe { w.bits(c1) }); + p.AES.dinr.write(|w| unsafe { w.bits(c2) }); + p.AES.dinr.write(|w| unsafe { w.bits(c3) }); + + let mut r = 0; + while p.AES.sr.read().ccf().bit_is_clear() { + r += 1; + } + ipln!("wait {}", r); + + let r0 = p.AES.doutr.read().bits(); + let r1 = p.AES.doutr.read().bits(); + let r2 = p.AES.doutr.read().bits(); + let r3 = p.AES.doutr.read().bits(); + + let sr = p.AES.sr.read(); + + ipln!( + "status rderr {}, wrerr {}", + sr.rderr().bit(), + sr.wrerr().bit() + ); + ipln!("r0 {:08x}", r0); + ipln!("r1 {:08x}", r1); + ipln!("r2 {:08x}", r2); + ipln!("r3 {:08x}", r3); + + rtfm::bkpt(); + + // change to decipher, mode 3 decode + p.AES.cr.write(|w| w.ccfc().set_bit()); // clear complete and disable AES; + + p.AES.cr.write(|w| unsafe { w.mode().bits(0b10) }); // set mode 3 + p.AES.keyr0.write(|w| unsafe { w.bits(d0) }); + p.AES.keyr1.write(|w| unsafe { w.bits(d1) }); + p.AES.keyr2.write(|w| unsafe { w.bits(d2) }); + p.AES.keyr3.write(|w| unsafe { w.bits(d3) }); + + p.AES.cr.modify(|_, w| w.en().set_bit()); // enable AES + + // Mode 3: dencryption using the encryption key stored in the AES_KEYRx registers. + // write the encrypted data + p.AES.dinr.write(|w| unsafe { w.bits(c0) }); + p.AES.dinr.write(|w| unsafe { w.bits(c1) }); + p.AES.dinr.write(|w| unsafe { w.bits(c2) }); + p.AES.dinr.write(|w| unsafe { w.bits(c3) }); + + let mut r = 0; + while p.AES.sr.read().ccf().bit_is_clear() { + r += 1; + } + ipln!("wait {}", r); + + let r0 = p.AES.doutr.read().bits(); + let r1 = p.AES.doutr.read().bits(); + let r2 = p.AES.doutr.read().bits(); + let r3 = p.AES.doutr.read().bits(); + + let sr = p.AES.sr.read(); + + ipln!( + "status rderr {}, wrerr {}", + sr.rderr().bit(), + sr.wrerr().bit() + ); + ipln!("r0 {:08x}", r0); + ipln!("r1 {:08x}", r1); + ipln!("r2 {:08x}", r2); + ipln!("r3 {:08x}", r3); + + rtfm::bkpt(); +} + +enum A { + A1, + A2, +} #[inline(never)] fn idle() -> ! { // A + let a = A::A1; + let b = A::A2; + let c = a; + let d = b; rtfm::bkpt(); // Sets task `exti0` as pending @@ -60,10 +252,7 @@ fn idle() -> ! { } #[allow(non_snake_case)] -fn exti0( - t: &mut Threshold, - EXTI0::Resources { mut LOW, mut HIGH }: EXTI0::Resources, -) { +fn exti0(t: &mut Threshold, EXTI0::Resources { mut LOW, mut HIGH }: EXTI0::Resources) { // Because this task has a priority of 1 the preemption threshold `t` also // starts at 1 diff --git a/nucleo-64-rtfm 16.launch b/nucleo-64-rtfm 16.launch new file mode 100644 index 0000000000000000000000000000000000000000..55a947c9ecf5e227ed3b58c9932e4d4ba371bbf6 --- /dev/null +++ b/nucleo-64-rtfm 16.launch @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="com.atollic.hardwaredebug.launch.launchConfigurationType"> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.cpu_core" value="Cortex-M"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.device" value=""/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.endian" value="little"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.init_speed" value="4000"/> +<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_check_serial_number" value="false"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_script_path" value=""/> +<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_script_used" value="false"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_trace_port_cfg_path" value=""/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_txt_serial_number" value=""/> +<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_auto" value="true"/> +<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_irpre" value="0"/> +<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_pos" value="0"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.selected_rtos" value="No RTOS"/> +<intAttribute key="com.atollic.hardwaredebug.launch.formatVersion" value="2"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.hwinitCommands" value="# Initialize your hardware here # monitor reset init # reset init for the stm32f4x.cfg sets the CPU in 64MHz # monitor tpiu config internal /tmp/itm.log uart off 64000000 # monitor itm port 0 on"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.ipAddress" value="localhost"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.jtagDevice" value="OpenOCD"/> +<intAttribute key="com.atollic.hardwaredebug.launch.portNumber" value="3333"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.remoteCommand" value="target remote"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.runCommands" value="monitor tpiu config internal /tmp/itm.log uart off 16000000 monitor itm port 0 on # Load the program executable # monitor reset init load monitor reset #info breakpoints # Set a breakpoint at main(). #tbreak main # Run to the breakpoint. # continue "/> +<stringAttribute key="com.atollic.hardwaredebug.launch.serverParam" value=""/> +<booleanAttribute key="com.atollic.hardwaredebug.launch.startServer" value="false"/> +<booleanAttribute key="com.atollic.hardwaredebug.launch.swd_mode" value="false"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.swv_port" value="2332"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_div" value="0"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_hclk" value="8000000"/> +<intAttribute key="com.atollic.hardwaredebug.launch.trace_system" value="0"/> +<booleanAttribute key="com.atollic.hardwaredebug.launch.useRemoteTarget" value="true"/> +<stringAttribute key="com.atollic.hardwaredebug.openocd.server_target" value="remote"/> +<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${TOOLCHAIN_PATH}/arm-atollic-eabi-gdb"/> +<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/> +<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="1"/> +<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/> +<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/> +<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="target/x/debug/examples/nested.elf"/> +<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="nucleo-64-rtfm/"/> +<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/> +<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/nucleo-64-rtfm"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="4"/> +</listAttribute> +<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/> +<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> +<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> +</listAttribute> +<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="reserved-for-future-use"/> "/> +<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/> +</launchConfiguration> diff --git a/nucleo-64-rtfm Release.launch b/nucleo-64-rtfm Release.launch new file mode 100644 index 0000000000000000000000000000000000000000..f44d011aeccb67569b3486c9ab3eebaa49771e48 --- /dev/null +++ b/nucleo-64-rtfm Release.launch @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="com.atollic.hardwaredebug.launch.launchConfigurationType"> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.cpu_core" value="Cortex-M"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.device" value=""/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.endian" value="little"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.init_speed" value="4000"/> +<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_check_serial_number" value="false"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_script_path" value=""/> +<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_script_used" value="false"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_trace_port_cfg_path" value=""/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_txt_serial_number" value=""/> +<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_auto" value="true"/> +<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_irpre" value="0"/> +<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_pos" value="0"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.selected_rtos" value="No RTOS"/> +<intAttribute key="com.atollic.hardwaredebug.launch.formatVersion" value="2"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.hwinitCommands" value="# Initialize your hardware here # monitor reset init # reset init for the stm32f4x.cfg sets the CPU in 64MHz # monitor tpiu config internal /tmp/itm.log uart off 64000000 # monitor itm port 0 on"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.ipAddress" value="localhost"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.jtagDevice" value="OpenOCD"/> +<intAttribute key="com.atollic.hardwaredebug.launch.portNumber" value="3333"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.remoteCommand" value="target remote"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.runCommands" value="monitor tpiu config internal /tmp/itm.log uart off 64000000 monitor itm port 0 on # Load the program executable # monitor reset init load monitor reset init #info breakpoints # Set a breakpoint at main(). #tbreak main # Run to the breakpoint. # continue "/> +<stringAttribute key="com.atollic.hardwaredebug.launch.serverParam" value=""/> +<booleanAttribute key="com.atollic.hardwaredebug.launch.startServer" value="false"/> +<booleanAttribute key="com.atollic.hardwaredebug.launch.swd_mode" value="false"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.swv_port" value="2332"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_div" value="0"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_hclk" value="8000000"/> +<intAttribute key="com.atollic.hardwaredebug.launch.trace_system" value="0"/> +<booleanAttribute key="com.atollic.hardwaredebug.launch.useRemoteTarget" value="true"/> +<stringAttribute key="com.atollic.hardwaredebug.openocd.server_target" value="remote"/> +<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${TOOLCHAIN_PATH}/arm-atollic-eabi-gdb"/> +<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/> +<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="1"/> +<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/> +<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/> +<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="target/x/release/examples/nested.elf"/> +<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="nucleo-64-rtfm/"/> +<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/> +<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/nucleo-64-rtfm"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="4"/> +</listAttribute> +<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/> +<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> +<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> +</listAttribute> +<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="reserved-for-future-use"/> "/> +<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/> +</launchConfiguration> diff --git a/nucleo-64-rtfm.launch b/nucleo-64-rtfm.launch new file mode 100644 index 0000000000000000000000000000000000000000..d42b04994a637b14ab94ba5c661cc9652d4d83f1 --- /dev/null +++ b/nucleo-64-rtfm.launch @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="com.atollic.hardwaredebug.launch.launchConfigurationType"> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.cpu_core" value="Cortex-M"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.device" value=""/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.endian" value="little"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.init_speed" value="4000"/> +<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_check_serial_number" value="false"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_script_path" value=""/> +<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_script_used" value="false"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_trace_port_cfg_path" value=""/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_txt_serial_number" value=""/> +<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_auto" value="true"/> +<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_irpre" value="0"/> +<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_pos" value="0"/> +<stringAttribute key="com.atollic.hardwaredebug.jlink_common.selected_rtos" value="No RTOS"/> +<intAttribute key="com.atollic.hardwaredebug.launch.formatVersion" value="2"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.hwinitCommands" value="# Initialize your hardware here # monitor reset init # reset init for the stm32f4x.cfg sets the CPU in 64MHz # monitor tpiu config internal /tmp/itm.log uart off 64000000 # monitor itm port 0 on"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.ipAddress" value="localhost"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.jtagDevice" value="OpenOCD"/> +<intAttribute key="com.atollic.hardwaredebug.launch.portNumber" value="3333"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.remoteCommand" value="target remote"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.runCommands" value="monitor tpiu config internal /tmp/itm.log uart off 64000000 monitor itm port 0 on # Load the program executable # monitor reset init load monitor reset init #info breakpoints # Set a breakpoint at main(). #tbreak main # Run to the breakpoint. # continue "/> +<stringAttribute key="com.atollic.hardwaredebug.launch.serverParam" value=""/> +<booleanAttribute key="com.atollic.hardwaredebug.launch.startServer" value="false"/> +<booleanAttribute key="com.atollic.hardwaredebug.launch.swd_mode" value="false"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.swv_port" value="2332"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_div" value="0"/> +<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_hclk" value="8000000"/> +<intAttribute key="com.atollic.hardwaredebug.launch.trace_system" value="0"/> +<booleanAttribute key="com.atollic.hardwaredebug.launch.useRemoteTarget" value="true"/> +<stringAttribute key="com.atollic.hardwaredebug.openocd.server_target" value="remote"/> +<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${TOOLCHAIN_PATH}/arm-atollic-eabi-gdb"/> +<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/> +<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="1"/> +<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/> +<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/> +<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="target/x/debug/examples/nested.elf"/> +<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="nucleo-64-rtfm/"/> +<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/> +<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/nucleo-64-rtfm"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="4"/> +</listAttribute> +<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/> +<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> +<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> +</listAttribute> +<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="reserved-for-future-use"/> "/> +<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/> +</launchConfiguration> diff --git a/r b/r new file mode 100644 index 0000000000000000000000000000000000000000..5c218f0e24f82ff8960f428ebd4dd2e911cfa67b --- /dev/null +++ b/r @@ -0,0 +1,5 @@ +# monitor reset init +load +monitor reset init +# monitor tpiu config internal /tmp/itm.log uart off 64000000 +# monitor itm port 0 on \ No newline at end of file diff --git a/x.json b/x.json new file mode 100644 index 0000000000000000000000000000000000000000..c9c4ad2d3c1add3f6c3d08b7f40b3c34fa4ad9c0 --- /dev/null +++ b/x.json @@ -0,0 +1,27 @@ +{ + "abi-blacklist": [ + "stdcall", + "fastcall", + "vectorcall", + "thiscall", + "win64", + "sysv64" + ], + "arch": "arm", + "data-layout": "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", + "env": "", + "executables": true, + "is-builtin": true, + "linker": "arm-none-eabi-gcc", + "linker-flavor": "gcc", + "llvm-target": "thumbv7m-none-eabi", + "max-atomic-width": 32, + "os": "none", + "panic-strategy": "abort", + "relocation-model": "static", + "target-c-int-width": "32", + "target-endian": "little", + "target-pointer-width": "32", + "vendor": "", + "exe-suffix": ".elf" +}