mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-20 05:21:59 -04:00
MicroBlaze projects: Split build configurations into blinky and full. Implement partest.c. Everything still a work in progress.
This commit is contained in:
parent
9f0bf057e6
commit
4cda2df265
|
@ -3,8 +3,8 @@
|
||||||
|
|
||||||
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
<cconfiguration id="xilinx.gnu.mb.exe.debug.1890710697">
|
<cconfiguration id="xilinx.gnu.mb.exe.debug.1890710697.1551842913">
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.mb.exe.debug.1890710697" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.mb.exe.debug.1890710697.1551842913" moduleId="org.eclipse.cdt.core.settings" name="Blilnky">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
<extensions>
|
<extensions>
|
||||||
<extension id="com.xilinx.sdk.managedbuilder.XELF.mb" point="org.eclipse.cdt.core.BinaryParser"/>
|
<extension id="com.xilinx.sdk.managedbuilder.XELF.mb" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
@ -16,89 +16,92 @@
|
||||||
</extensions>
|
</extensions>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<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.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="xilinx.gnu.mb.exe.debug.1890710697" name="Debug" parent="xilinx.gnu.mb.exe.debug">
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Very simple starter example" id="xilinx.gnu.mb.exe.debug.1890710697.1551842913" name="Blilnky" parent="xilinx.gnu.mb.exe.debug">
|
||||||
<folderInfo id="xilinx.gnu.mb.exe.debug.1890710697." name="/" resourcePath="">
|
<folderInfo id="xilinx.gnu.mb.exe.debug.1890710697.1551842913." name="/" resourcePath="">
|
||||||
<toolChain id="xilinx.gnu.mb.exe.debug.toolchain.599082172" name="Xilinx MicroBlaze GNU Toolchain" superClass="xilinx.gnu.mb.exe.debug.toolchain">
|
<toolChain id="xilinx.gnu.mb.exe.debug.toolchain.257341927" name="Xilinx MicroBlaze GNU Toolchain" superClass="xilinx.gnu.mb.exe.debug.toolchain">
|
||||||
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.mb" id="xilinx.mb.target.gnu.base.debug.274213147" isAbstract="false" name="Debug Platform" superClass="xilinx.mb.target.gnu.base.debug"/>
|
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.mb" id="xilinx.mb.target.gnu.base.debug.424447469" isAbstract="false" name="Debug Platform" superClass="xilinx.mb.target.gnu.base.debug"/>
|
||||||
<builder buildPath="${workspace_loc:/RTOSDemoSource/Debug}" enableAutoBuild="true" id="xilinx.gnu.mb.toolchain.builder.debug.1579135972" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GNU make" superClass="xilinx.gnu.mb.toolchain.builder.debug"/>
|
<builder buildPath="${workspace_loc:/RTOSDemoSource/Debug}" enableAutoBuild="true" id="xilinx.gnu.mb.toolchain.builder.debug.930852495" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GNU make" superClass="xilinx.gnu.mb.toolchain.builder.debug"/>
|
||||||
<tool id="xilinx.gnu.mb.c.toolchain.assembler.debug.1239514963" name="MicroBlaze gcc assembler" superClass="xilinx.gnu.mb.c.toolchain.assembler.debug">
|
<tool id="xilinx.gnu.mb.c.toolchain.assembler.debug.978073207" name="MicroBlaze gcc assembler" superClass="xilinx.gnu.mb.c.toolchain.assembler.debug">
|
||||||
<option id="xilinx.gnu.mb.assembler.usele.1396275909" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.assembler.usele" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.assembler.usele.2022235394" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.assembler.usele" value="true" valueType="boolean"/>
|
||||||
<inputType id="xilinx.gnu.assembler.input.637949814" superClass="xilinx.gnu.assembler.input"/>
|
<inputType id="xilinx.gnu.assembler.input.278099745" superClass="xilinx.gnu.assembler.input"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="xilinx.gnu.mb.c.toolchain.compiler.debug.1867440614" name="MicroBlaze gcc compiler" superClass="xilinx.gnu.mb.c.toolchain.compiler.debug">
|
<tool id="xilinx.gnu.mb.c.toolchain.compiler.debug.835271198" name="MicroBlaze gcc compiler" superClass="xilinx.gnu.mb.c.toolchain.compiler.debug">
|
||||||
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.337889984" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.716987775" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.compiler.option.debugging.level.617270473" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
<option id="xilinx.gnu.compiler.option.debugging.level.1945788166" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.1451001122" name="MicroBlaze Version" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.10.a" valueType="string"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.96719191" name="MicroBlaze Version" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.10.a" valueType="string"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usele.160030529" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usele.706567309" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.1216651937" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.1579209203" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.1517601997" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.1892830682" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usediv.672884238" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.compiler.inferred.usediv" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usediv.441061894" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.compiler.inferred.usediv" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.fpu.2006005452" name="FPU" superClass="xilinx.gnu.mb.compiler.inferred.fpu" value="xilinx.gnu.mb.compiler.inferred.fpu.basic" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.fpu.889919540" name="FPU" superClass="xilinx.gnu.mb.compiler.inferred.fpu" value="xilinx.gnu.mb.compiler.inferred.fpu.basic" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.mul.678398498" name="Hardware Multiplier" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.mul.769937239" name="Hardware Multiplier" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.560760309" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.702422111" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/include"/>
|
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/include"/>
|
||||||
</option>
|
</option>
|
||||||
<option id="xilinx.gnu.compiler.dircategory.includes.1932434235" superClass="xilinx.gnu.compiler.dircategory.includes" valueType="includePath">
|
<option id="xilinx.gnu.compiler.dircategory.includes.788537379" name="Include Paths" superClass="xilinx.gnu.compiler.dircategory.includes" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Demo_Source/Common_Demo_Files/include}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Demo_Source/Common_Demo_Files/include}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/FreeRTOS_Source/include}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/FreeRTOS_Source/include}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/FreeRTOS_Source/portable/GCC/MicroBlaze}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/FreeRTOS_Source/portable/GCC/MicroBlaze}""/>
|
||||||
</option>
|
</option>
|
||||||
<inputType id="xilinx.gnu.compiler.input.2107818916" name="C source files" superClass="xilinx.gnu.compiler.input"/>
|
<inputType id="xilinx.gnu.compiler.input.264309084" name="C source files" superClass="xilinx.gnu.compiler.input"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="xilinx.gnu.mb.cxx.toolchain.compiler.debug.892124153" name="MicroBlaze g++ compiler" superClass="xilinx.gnu.mb.cxx.toolchain.compiler.debug">
|
<tool id="xilinx.gnu.mb.cxx.toolchain.compiler.debug.1757864406" name="MicroBlaze g++ compiler" superClass="xilinx.gnu.mb.cxx.toolchain.compiler.debug">
|
||||||
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.1589998383" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.1341113404" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.compiler.option.debugging.level.128602658" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
<option id="xilinx.gnu.compiler.option.debugging.level.437017279" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.1802673391" name="MicroBlaze Version" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.10.a" valueType="string"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.73247828" name="MicroBlaze Version" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.10.a" valueType="string"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usele.1454232863" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usele.1996765397" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.1778832640" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.1004904872" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.435976827" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.2102491479" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usediv.1414449733" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.compiler.inferred.usediv" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usediv.1878612258" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.compiler.inferred.usediv" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.fpu.1308489561" name="FPU" superClass="xilinx.gnu.mb.compiler.inferred.fpu" value="xilinx.gnu.mb.compiler.inferred.fpu.basic" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.fpu.548710489" name="FPU" superClass="xilinx.gnu.mb.compiler.inferred.fpu" value="xilinx.gnu.mb.compiler.inferred.fpu.basic" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.mul.1215307028" name="Hardware Multiplier" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.mul.901018577" name="Hardware Multiplier" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.1137996366" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.579575146" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/include"/>
|
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/include"/>
|
||||||
</option>
|
</option>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="xilinx.gnu.mb.toolchain.archiver.1592538942" name="MicroBlaze archiver" superClass="xilinx.gnu.mb.toolchain.archiver"/>
|
<tool id="xilinx.gnu.mb.toolchain.archiver.1048677661" name="MicroBlaze archiver" superClass="xilinx.gnu.mb.toolchain.archiver"/>
|
||||||
<tool id="xilinx.gnu.mb.c.toolchain.linker.debug.944775154" name="MicroBlaze gcc linker" superClass="xilinx.gnu.mb.c.toolchain.linker.debug">
|
<tool id="xilinx.gnu.mb.c.toolchain.linker.debug.1152738454" name="MicroBlaze gcc linker" superClass="xilinx.gnu.mb.c.toolchain.linker.debug">
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1111013174" name="MicroBlaze Version" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.10.a" valueType="string"/>
|
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1959093628" name="MicroBlaze Version" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.10.a" valueType="string"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usele.882904483" name="Produce little endian artifacts (-mlittle-endian)" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usele.1271633588" name="Produce little endian artifacts (-mlittle-endian)" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.595799628" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.1223851799" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.1837572058" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.1132489905" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usediv.1995633804" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.linker.inferred.usediv" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usediv.7712425" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.linker.inferred.usediv" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.fpu.1492907557" name="FPU" superClass="xilinx.gnu.mb.linker.inferred.fpu" value="xilinx.gnu.mb.linker.inferred.fpu.basic" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.linker.inferred.fpu.563163194" name="FPU" superClass="xilinx.gnu.mb.linker.inferred.fpu" value="xilinx.gnu.mb.linker.inferred.fpu.basic" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.mul.679446604" name="Hardware Multiplier" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.linker.inferred.mul.1195982521" name="Hardware Multiplier" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1872729354" name="Software Platform Library Path" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.989668099" name="Software Platform Library Path" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||||
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/lib"/>
|
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/lib"/>
|
||||||
</option>
|
</option>
|
||||||
<option id="xilinx.gnu.c.linker.option.lscript.2086162423" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
<option id="xilinx.gnu.c.linker.option.lscript.176750025" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||||
<inputType id="xilinx.gnu.linker.input.68952515" superClass="xilinx.gnu.linker.input">
|
<inputType id="xilinx.gnu.linker.input.384537517" superClass="xilinx.gnu.linker.input">
|
||||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
</inputType>
|
</inputType>
|
||||||
<inputType id="xilinx.gnu.linker.input.lscript.258084575" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
|
<inputType id="xilinx.gnu.linker.input.lscript.728905130" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="xilinx.gnu.mb.cxx.toolchain.linker.debug.157885767" name="MicroBlaze g++ linker" superClass="xilinx.gnu.mb.cxx.toolchain.linker.debug">
|
<tool id="xilinx.gnu.mb.cxx.toolchain.linker.debug.1026703573" name="MicroBlaze g++ linker" superClass="xilinx.gnu.mb.cxx.toolchain.linker.debug">
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1177333884" name="MicroBlaze Version" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.10.a" valueType="string"/>
|
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1521662887" name="MicroBlaze Version" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.10.a" valueType="string"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usele.1758849265" name="Produce little endian artifacts (-mlittle-endian)" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usele.304488947" name="Produce little endian artifacts (-mlittle-endian)" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.876997851" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.1307373804" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.1810668130" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.972908817" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usediv.507574974" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.linker.inferred.usediv" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usediv.1587557455" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.linker.inferred.usediv" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.fpu.1213315596" name="FPU" superClass="xilinx.gnu.mb.linker.inferred.fpu" value="xilinx.gnu.mb.linker.inferred.fpu.basic" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.linker.inferred.fpu.186398214" name="FPU" superClass="xilinx.gnu.mb.linker.inferred.fpu" value="xilinx.gnu.mb.linker.inferred.fpu.basic" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.mul.36102197" name="Hardware Multiplier" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.linker.inferred.mul.1765763083" name="Hardware Multiplier" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1705482080" name="Software Platform Library Path" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.771165792" name="Software Platform Library Path" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||||
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/lib"/>
|
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/lib"/>
|
||||||
</option>
|
</option>
|
||||||
<option id="xilinx.gnu.c.linker.option.lscript.1465464686" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
<option id="xilinx.gnu.c.linker.option.lscript.664782973" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="xilinx.gnu.mb.size.debug.1936094326" name="MicroBlaze Print Size" superClass="xilinx.gnu.mb.size.debug"/>
|
<tool id="xilinx.gnu.mb.size.debug.778946449" name="MicroBlaze Print Size" superClass="xilinx.gnu.mb.size.debug"/>
|
||||||
<tool id="xilinx.elfcheck.mb.debug.2147351327" name="Xilinx ELF Check" superClass="xilinx.elfcheck.mb.debug">
|
<tool id="xilinx.elfcheck.mb.debug.225695907" name="Xilinx ELF Check" superClass="xilinx.elfcheck.mb.debug">
|
||||||
<option id="xilinx.elfcheck.option.hwspec.1155867438" name="Hardware Specification" superClass="xilinx.elfcheck.option.hwspec" value="-hw ../../HardwareWithEthernetLite/system.xml" valueType="string"/>
|
<option id="xilinx.elfcheck.option.hwspec.581017009" name="Hardware Specification" superClass="xilinx.elfcheck.option.hwspec" value="-hw ../../HardwareWithEthernetLite/system.xml" valueType="string"/>
|
||||||
<option id="xilinx.elfcheck.option.procname.2108096300" name="Processor Name" superClass="xilinx.elfcheck.option.procname" value="-pe microblaze_0" valueType="string"/>
|
<option id="xilinx.elfcheck.option.procname.479774108" name="Processor Name" superClass="xilinx.elfcheck.option.procname" value="-pe microblaze_0" valueType="string"/>
|
||||||
</tool>
|
</tool>
|
||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry excluding="main-full.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="scannerConfiguration">
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
@ -718,8 +721,8 @@
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
</cconfiguration>
|
</cconfiguration>
|
||||||
<cconfiguration id="xilinx.gnu.mb.exe.release.1186286811">
|
<cconfiguration id="xilinx.gnu.mb.exe.debug.1890710697.1391169017">
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.mb.exe.release.1186286811" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.mb.exe.debug.1890710697.1391169017" moduleId="org.eclipse.cdt.core.settings" name="Full">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
<extensions>
|
<extensions>
|
||||||
<extension id="com.xilinx.sdk.managedbuilder.XELF.mb" point="org.eclipse.cdt.core.BinaryParser"/>
|
<extension id="com.xilinx.sdk.managedbuilder.XELF.mb" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
@ -731,83 +734,92 @@
|
||||||
</extensions>
|
</extensions>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<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.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="xilinx.gnu.mb.exe.release.1186286811" name="Release" parent="xilinx.gnu.mb.exe.release">
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Comprehensive example" id="xilinx.gnu.mb.exe.debug.1890710697.1391169017" name="Full" parent="xilinx.gnu.mb.exe.debug">
|
||||||
<folderInfo id="xilinx.gnu.mb.exe.release.1186286811." name="/" resourcePath="">
|
<folderInfo id="xilinx.gnu.mb.exe.debug.1890710697.1391169017." name="/" resourcePath="">
|
||||||
<toolChain id="xilinx.gnu.mb.exe.release.toolchain.718912482" name="Xilinx MicroBlaze GNU Toolchain" superClass="xilinx.gnu.mb.exe.release.toolchain">
|
<toolChain id="xilinx.gnu.mb.exe.debug.toolchain.1065681176" name="Xilinx MicroBlaze GNU Toolchain" superClass="xilinx.gnu.mb.exe.debug.toolchain">
|
||||||
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.mb" id="xilinx.mb.target.gnu.base.release.1280250899" isAbstract="false" name="Debug Platform" superClass="xilinx.mb.target.gnu.base.release"/>
|
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.mb" id="xilinx.mb.target.gnu.base.debug.472412552" isAbstract="false" name="Debug Platform" superClass="xilinx.mb.target.gnu.base.debug"/>
|
||||||
<builder buildPath="${workspace_loc:/RTOSDemoSource/Release}" enableAutoBuild="true" id="xilinx.gnu.mb.toolchain.builder.release.432669831" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GNU make" superClass="xilinx.gnu.mb.toolchain.builder.release"/>
|
<builder buildPath="${workspace_loc:/RTOSDemoSource/Debug}" enableAutoBuild="true" id="xilinx.gnu.mb.toolchain.builder.debug.2034661333" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GNU make" superClass="xilinx.gnu.mb.toolchain.builder.debug"/>
|
||||||
<tool id="xilinx.gnu.mb.c.toolchain.assembler.release.2062618334" name="MicroBlaze gcc assembler" superClass="xilinx.gnu.mb.c.toolchain.assembler.release">
|
<tool id="xilinx.gnu.mb.c.toolchain.assembler.debug.1663720311" name="MicroBlaze gcc assembler" superClass="xilinx.gnu.mb.c.toolchain.assembler.debug">
|
||||||
<option id="xilinx.gnu.mb.assembler.usele.1004143246" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.assembler.usele" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.assembler.usele.787661810" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.assembler.usele" value="true" valueType="boolean"/>
|
||||||
<inputType id="xilinx.gnu.assembler.input.1424192310" superClass="xilinx.gnu.assembler.input"/>
|
<inputType id="xilinx.gnu.assembler.input.828396103" superClass="xilinx.gnu.assembler.input"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="xilinx.gnu.mb.c.toolchain.compiler.release.1828722124" name="MicroBlaze gcc compiler" superClass="xilinx.gnu.mb.c.toolchain.compiler.release">
|
<tool id="xilinx.gnu.mb.c.toolchain.compiler.debug.1610218702" name="MicroBlaze gcc compiler" superClass="xilinx.gnu.mb.c.toolchain.compiler.debug">
|
||||||
<option defaultValue="gnu.c.optimization.level.most" id="xilinx.gnu.compiler.option.optimization.level.1238786955" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.116271748" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.compiler.option.debugging.level.949291389" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
<option id="xilinx.gnu.compiler.option.debugging.level.171855055" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.772757699" name="MicroBlaze Version" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.10.a" valueType="string"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.900759104" name="MicroBlaze Version" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.10.a" valueType="string"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usele.1473700868" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usele.366091388" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.1861351915" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.1212298558" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.933103475" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.1277381811" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usediv.1452006705" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.compiler.inferred.usediv" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usediv.192502540" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.compiler.inferred.usediv" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.fpu.736763488" name="FPU" superClass="xilinx.gnu.mb.compiler.inferred.fpu" value="xilinx.gnu.mb.compiler.inferred.fpu.basic" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.fpu.2033157740" name="FPU" superClass="xilinx.gnu.mb.compiler.inferred.fpu" value="xilinx.gnu.mb.compiler.inferred.fpu.basic" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.mul.1393822003" name="Hardware Multiplier" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.mul.2087417140" name="Hardware Multiplier" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.306993152" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.729428302" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/include"/>
|
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/include"/>
|
||||||
</option>
|
</option>
|
||||||
<inputType id="xilinx.gnu.compiler.input.690911521" name="C source files" superClass="xilinx.gnu.compiler.input"/>
|
<option id="xilinx.gnu.compiler.dircategory.includes.1539819216" name="Include Paths" superClass="xilinx.gnu.compiler.dircategory.includes" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Demo_Source/Common_Demo_Files/include}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/FreeRTOS_Source/include}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/FreeRTOS_Source/portable/GCC/MicroBlaze}""/>
|
||||||
|
</option>
|
||||||
|
<inputType id="xilinx.gnu.compiler.input.505106416" name="C source files" superClass="xilinx.gnu.compiler.input"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="xilinx.gnu.mb.cxx.toolchain.compiler.release.449737219" name="MicroBlaze g++ compiler" superClass="xilinx.gnu.mb.cxx.toolchain.compiler.release">
|
<tool id="xilinx.gnu.mb.cxx.toolchain.compiler.debug.2087155544" name="MicroBlaze g++ compiler" superClass="xilinx.gnu.mb.cxx.toolchain.compiler.debug">
|
||||||
<option defaultValue="gnu.c.optimization.level.most" id="xilinx.gnu.compiler.option.optimization.level.719334230" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.76035929" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.compiler.option.debugging.level.888257007" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
<option id="xilinx.gnu.compiler.option.debugging.level.830648985" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.1974867876" name="MicroBlaze Version" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.10.a" valueType="string"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.1609359386" name="MicroBlaze Version" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.10.a" valueType="string"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usele.1741794988" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usele.777715972" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.1085726307" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.1922242390" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.183628355" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.75463556" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.usediv.1022113972" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.compiler.inferred.usediv" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.usediv.1698265058" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.compiler.inferred.usediv" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.fpu.1627263935" name="FPU" superClass="xilinx.gnu.mb.compiler.inferred.fpu" value="xilinx.gnu.mb.compiler.inferred.fpu.basic" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.fpu.1268286956" name="FPU" superClass="xilinx.gnu.mb.compiler.inferred.fpu" value="xilinx.gnu.mb.compiler.inferred.fpu.basic" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.mb.compiler.inferred.mul.364150553" name="Hardware Multiplier" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.compiler.inferred.mul.147816156" name="Hardware Multiplier" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.632505535" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.1260701076" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/include"/>
|
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/include"/>
|
||||||
</option>
|
</option>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="xilinx.gnu.mb.toolchain.archiver.156208251" name="MicroBlaze archiver" superClass="xilinx.gnu.mb.toolchain.archiver"/>
|
<tool id="xilinx.gnu.mb.toolchain.archiver.1361288263" name="MicroBlaze archiver" superClass="xilinx.gnu.mb.toolchain.archiver"/>
|
||||||
<tool id="xilinx.gnu.mb.c.toolchain.linker.release.1781075016" name="MicroBlaze gcc linker" superClass="xilinx.gnu.mb.c.toolchain.linker.release">
|
<tool id="xilinx.gnu.mb.c.toolchain.linker.debug.512205974" name="MicroBlaze gcc linker" superClass="xilinx.gnu.mb.c.toolchain.linker.debug">
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.mbversion.881243134" name="MicroBlaze Version" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.10.a" valueType="string"/>
|
<option id="xilinx.gnu.mb.linker.inferred.mbversion.88071915" name="MicroBlaze Version" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.10.a" valueType="string"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usele.1248988996" name="Produce little endian artifacts (-mlittle-endian)" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usele.2098428761" name="Produce little endian artifacts (-mlittle-endian)" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.354962392" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.337502401" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.1920529150" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.1186226796" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usediv.943020691" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.linker.inferred.usediv" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usediv.694766114" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.linker.inferred.usediv" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.fpu.2040866770" name="FPU" superClass="xilinx.gnu.mb.linker.inferred.fpu" value="xilinx.gnu.mb.linker.inferred.fpu.basic" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.linker.inferred.fpu.1355435021" name="FPU" superClass="xilinx.gnu.mb.linker.inferred.fpu" value="xilinx.gnu.mb.linker.inferred.fpu.basic" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.mul.378837391" name="Hardware Multiplier" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.linker.inferred.mul.1335029834" name="Hardware Multiplier" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1279322127" name="Software Platform Library Path" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1334512887" name="Software Platform Library Path" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||||
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/lib"/>
|
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/lib"/>
|
||||||
</option>
|
</option>
|
||||||
<option id="xilinx.gnu.c.linker.option.lscript.1907224502" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
<option id="xilinx.gnu.c.linker.option.lscript.1073578867" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||||
<inputType id="xilinx.gnu.linker.input.134341694" superClass="xilinx.gnu.linker.input">
|
<inputType id="xilinx.gnu.linker.input.1399699093" superClass="xilinx.gnu.linker.input">
|
||||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
</inputType>
|
</inputType>
|
||||||
<inputType id="xilinx.gnu.linker.input.lscript.1733021603" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
|
<inputType id="xilinx.gnu.linker.input.lscript.751524851" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="xilinx.gnu.mb.cxx.toolchain.linker.release.98720932" name="MicroBlaze g++ linker" superClass="xilinx.gnu.mb.cxx.toolchain.linker.release">
|
<tool id="xilinx.gnu.mb.cxx.toolchain.linker.debug.2073868051" name="MicroBlaze g++ linker" superClass="xilinx.gnu.mb.cxx.toolchain.linker.debug">
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1241661489" name="MicroBlaze Version" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.10.a" valueType="string"/>
|
<option id="xilinx.gnu.mb.linker.inferred.mbversion.563798700" name="MicroBlaze Version" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.10.a" valueType="string"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usele.1237060844" name="Produce little endian artifacts (-mlittle-endian)" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usele.143230105" name="Produce little endian artifacts (-mlittle-endian)" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.1982200182" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.1356384257" name="Use Barrel Shifter (-mxl-barrel-shift)" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.129183171" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.1766995151" name="Use Pattern Compare (-mxl-pattern-compare)" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.usediv.1333108220" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.linker.inferred.usediv" value="true" valueType="boolean"/>
|
<option id="xilinx.gnu.mb.linker.inferred.usediv.1611022077" name="Use hardware divider (-mno-xl-soft-div)" superClass="xilinx.gnu.mb.linker.inferred.usediv" value="true" valueType="boolean"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.fpu.858346517" name="FPU" superClass="xilinx.gnu.mb.linker.inferred.fpu" value="xilinx.gnu.mb.linker.inferred.fpu.basic" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.linker.inferred.fpu.484719747" name="FPU" superClass="xilinx.gnu.mb.linker.inferred.fpu" value="xilinx.gnu.mb.linker.inferred.fpu.basic" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.mb.linker.inferred.mul.733062971" name="Hardware Multiplier" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
|
<option id="xilinx.gnu.mb.linker.inferred.mul.494988599" name="Hardware Multiplier" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
|
||||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1337156964" name="Software Platform Library Path" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1681875689" name="Software Platform Library Path" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||||
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/lib"/>
|
<listOptionValue builtIn="false" value="../../RTOSDemoBSP/microblaze_0/lib"/>
|
||||||
</option>
|
</option>
|
||||||
<option id="xilinx.gnu.c.linker.option.lscript.793254984" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
<option id="xilinx.gnu.c.linker.option.lscript.480905448" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="xilinx.gnu.mb.size.release.751554075" name="MicroBlaze Print Size" superClass="xilinx.gnu.mb.size.release"/>
|
<tool id="xilinx.gnu.mb.size.debug.536351174" name="MicroBlaze Print Size" superClass="xilinx.gnu.mb.size.debug"/>
|
||||||
<tool id="xilinx.elfcheck.mb.release.941988759" name="Xilinx ELF Check" superClass="xilinx.elfcheck.mb.release">
|
<tool id="xilinx.elfcheck.mb.debug.1281142255" name="Xilinx ELF Check" superClass="xilinx.elfcheck.mb.debug">
|
||||||
<option id="xilinx.elfcheck.option.hwspec.1947090803" name="Hardware Specification" superClass="xilinx.elfcheck.option.hwspec" value="-hw ../../HardwareWithEthernetLite/system.xml" valueType="string"/>
|
<option id="xilinx.elfcheck.option.hwspec.1602098677" name="Hardware Specification" superClass="xilinx.elfcheck.option.hwspec" value="-hw ../../HardwareWithEthernetLite/system.xml" valueType="string"/>
|
||||||
<option id="xilinx.elfcheck.option.procname.1744481658" name="Processor Name" superClass="xilinx.elfcheck.option.procname" value="-pe microblaze_0" valueType="string"/>
|
<option id="xilinx.elfcheck.option.procname.1990677201" name="Processor Name" superClass="xilinx.elfcheck.option.procname" value="-pe microblaze_0" valueType="string"/>
|
||||||
</tool>
|
</tool>
|
||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry excluding="main-blinky.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="scannerConfiguration">
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
|
|
@ -37,20 +37,29 @@ IF EXIST FreeRTOS_Source Goto END
|
||||||
|
|
||||||
REM Copy the files that define the common demo tasks.
|
REM Copy the files that define the common demo tasks.
|
||||||
copy ..\..\..\Common\minimal\dynamic.c Demo_Source\Common_Demo_Files
|
copy ..\..\..\Common\minimal\dynamic.c Demo_Source\Common_Demo_Files
|
||||||
copy ..\..\..\Common\minimal\comtest.c Demo_Source\Common_Demo_Files
|
copy ..\..\..\Common\minimal\BlockQ.c Demo_Source\Common_Demo_Files
|
||||||
|
copy ..\..\..\Common\minimal\death.c Demo_Source\Common_Demo_Files
|
||||||
|
copy ..\..\..\Common\minimal\blocktim.c Demo_Source\Common_Demo_Files
|
||||||
|
copy ..\..\..\Common\minimal\semtest.c Demo_Source\Common_Demo_Files
|
||||||
|
copy ..\..\..\Common\minimal\PollQ.c Demo_Source\Common_Demo_Files
|
||||||
copy ..\..\..\Common\minimal\GenQTest.c Demo_Source\Common_Demo_Files
|
copy ..\..\..\Common\minimal\GenQTest.c Demo_Source\Common_Demo_Files
|
||||||
copy ..\..\..\Common\minimal\TimerDemo.c Demo_Source\Common_Demo_Files
|
copy ..\..\..\Common\minimal\QPeek.c Demo_Source\Common_Demo_Files
|
||||||
copy ..\..\..\Common\minimal\countsem.c Demo_Source\Common_Demo_Files
|
copy ..\..\..\Common\minimal\recmutex.c Demo_Source\Common_Demo_Files
|
||||||
|
copy ..\..\..\Common\minimal\flop.c Demo_Source\Common_Demo_Files
|
||||||
|
copy ..\..\..\Common\minimal\flash.c Demo_Source\Common_Demo_Files
|
||||||
|
|
||||||
REM Copy the common demo file headers.
|
REM Copy the common demo file headers.
|
||||||
copy ..\..\..\Common\include\dynamic.h Demo_Source\Common_Demo_Files\include
|
copy ..\..\..\Common\include\dynamic.h Demo_Source\Common_Demo_Files\include
|
||||||
copy ..\..\..\Common\include\comtest.h Demo_Source\Common_Demo_Files\include
|
copy ..\..\..\Common\include\partest.h Demo_Source\Common_Demo_Files\include
|
||||||
copy ..\..\..\Common\include\comtest2.h Demo_Source\Common_Demo_Files\include
|
copy ..\..\..\Common\include\BlockQ.h Demo_Source\Common_Demo_Files\include
|
||||||
|
copy ..\..\..\Common\include\death.h Demo_Source\Common_Demo_Files\include
|
||||||
|
copy ..\..\..\Common\include\blocktim.h Demo_Source\Common_Demo_Files\include
|
||||||
|
copy ..\..\..\Common\include\semtest.h Demo_Source\Common_Demo_Files\include
|
||||||
|
copy ..\..\..\Common\include\PollQ.h Demo_Source\Common_Demo_Files\include
|
||||||
copy ..\..\..\Common\include\GenQTest.h Demo_Source\Common_Demo_Files\include
|
copy ..\..\..\Common\include\GenQTest.h Demo_Source\Common_Demo_Files\include
|
||||||
copy ..\..\..\Common\include\serial.h Demo_Source\Common_Demo_Files\include
|
copy ..\..\..\Common\include\QPeek.h Demo_Source\Common_Demo_Files\include
|
||||||
copy ..\..\..\Common\include\partest.h Demo_Source\Common_Demo_Files\include
|
copy ..\..\..\Common\include\recmutex.h Demo_Source\Common_Demo_Files\include
|
||||||
copy ..\..\..\Common\include\TimerDemo.h Demo_Source\Common_Demo_Files\include
|
copy ..\..\..\Common\include\flop.h Demo_Source\Common_Demo_Files\include
|
||||||
copy ..\..\..\Common\include\countsem.h Demo_Source\Common_Demo_Files\include
|
copy ..\..\..\Common\include\flash.h Demo_Source\Common_Demo_Files\include
|
||||||
copy ..\..\..\Common\include\partest.h Demo_Source\Common_Demo_Files\include
|
|
||||||
|
|
||||||
: END
|
: END
|
||||||
|
|
|
@ -80,10 +80,10 @@
|
||||||
#define configUSE_PREEMPTION 1
|
#define configUSE_PREEMPTION 1
|
||||||
#define configUSE_IDLE_HOOK 1
|
#define configUSE_IDLE_HOOK 1
|
||||||
#define configUSE_TICK_HOOK 0
|
#define configUSE_TICK_HOOK 0
|
||||||
#define configCPU_CLOCK_HZ ( XPAR_MICROBLAZE_CORE_CLOCK_FREQ_HZ )
|
#define configCPU_CLOCK_HZ ( XPAR_MICROBLAZE_CORE_CLOCK_FREQ_HZ ) /* Not actually used in this demo as the timer is set up in main and uses the peripheral clock, not the CPU clock. */
|
||||||
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||||
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
||||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 10 * 1024 ) )
|
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 40 * 1024 ) )
|
||||||
#define configMAX_TASK_NAME_LEN ( 10 )
|
#define configMAX_TASK_NAME_LEN ( 10 )
|
||||||
#define configUSE_TRACE_FACILITY 0
|
#define configUSE_TRACE_FACILITY 0
|
||||||
#define configUSE_16_BIT_TICKS 1
|
#define configUSE_16_BIT_TICKS 1
|
||||||
|
@ -96,7 +96,7 @@
|
||||||
#define configUSE_MALLOC_FAILED_HOOK 1
|
#define configUSE_MALLOC_FAILED_HOOK 1
|
||||||
#define configUSE_APPLICATION_TASK_TAG 0
|
#define configUSE_APPLICATION_TASK_TAG 0
|
||||||
#define configUSE_COUNTING_SEMAPHORES 1
|
#define configUSE_COUNTING_SEMAPHORES 1
|
||||||
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 80 )
|
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 180 )
|
||||||
#define configINTERRUPT_STACK_SIZE configMINIMAL_STACK_SIZE
|
#define configINTERRUPT_STACK_SIZE configMINIMAL_STACK_SIZE
|
||||||
|
|
||||||
/* Co-routine definitions. */
|
/* Co-routine definitions. */
|
||||||
|
@ -113,7 +113,7 @@
|
||||||
to exclude the API function. */
|
to exclude the API function. */
|
||||||
#define INCLUDE_vTaskPrioritySet 1
|
#define INCLUDE_vTaskPrioritySet 1
|
||||||
#define INCLUDE_uxTaskPriorityGet 1
|
#define INCLUDE_uxTaskPriorityGet 1
|
||||||
#define INCLUDE_vTaskDelete 0
|
#define INCLUDE_vTaskDelete 1
|
||||||
#define INCLUDE_vTaskCleanUpResources 0
|
#define INCLUDE_vTaskCleanUpResources 0
|
||||||
#define INCLUDE_vTaskSuspend 1
|
#define INCLUDE_vTaskSuspend 1
|
||||||
#define INCLUDE_vTaskDelayUntil 1
|
#define INCLUDE_vTaskDelayUntil 1
|
||||||
|
|
|
@ -383,7 +383,6 @@ extern void vApplicationClearTimerInterrupt();
|
||||||
static portBASE_TYPE prvInitialiseInterruptController( void )
|
static portBASE_TYPE prvInitialiseInterruptController( void )
|
||||||
{
|
{
|
||||||
portBASE_TYPE xStatus;
|
portBASE_TYPE xStatus;
|
||||||
extern Xil_ExceptionHandler vPortFreeRTOSInterruptHandler;
|
|
||||||
|
|
||||||
xStatus = XIntc_Initialize( &xInterruptControllerInstance, configINTERRUPT_CONTROLLER_TO_USE );
|
xStatus = XIntc_Initialize( &xInterruptControllerInstance, configINTERRUPT_CONTROLLER_TO_USE );
|
||||||
|
|
||||||
|
@ -392,10 +391,6 @@ extern Xil_ExceptionHandler vPortFreeRTOSInterruptHandler;
|
||||||
/* Initialise the exception table. */
|
/* Initialise the exception table. */
|
||||||
Xil_ExceptionInit();
|
Xil_ExceptionInit();
|
||||||
|
|
||||||
/* Register the interrupt controller handle that uses the exception
|
|
||||||
table. */
|
|
||||||
//_RB_ Xil_ExceptionRegisterHandler( XIL_EXCEPTION_ID_INT, vPortFreeRTOSInterruptHandler, NULL );
|
|
||||||
|
|
||||||
/* Service all pending interrupts each time the handler is entered. */
|
/* Service all pending interrupts each time the handler is entered. */
|
||||||
XIntc_SetIntrSvcOption( xInterruptControllerInstance.BaseAddress, XIN_SVC_ALL_ISRS_OPTION );
|
XIntc_SetIntrSvcOption( xInterruptControllerInstance.BaseAddress, XIN_SVC_ALL_ISRS_OPTION );
|
||||||
|
|
||||||
|
|
|
@ -64,11 +64,14 @@
|
||||||
/* Library includes. */
|
/* Library includes. */
|
||||||
#include "xgpio.h"
|
#include "xgpio.h"
|
||||||
|
|
||||||
|
#define partstMAX_LED 4
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static XGpio xOutputGPIOInstance;
|
|
||||||
static const unsigned portBASE_TYPE uxGPIOOutputChannel = 1UL;
|
static const unsigned portBASE_TYPE uxGPIOOutputChannel = 1UL;
|
||||||
static ucCurrentLEDState = 0U;
|
static unsigned char ucGPIOState = 0U;
|
||||||
|
|
||||||
|
static XGpio xOutputGPIOInstance;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup the IO for the LED outputs.
|
* Setup the IO for the LED outputs.
|
||||||
|
@ -78,103 +81,70 @@ void vParTestInitialise( void )
|
||||||
portBASE_TYPE xStatus;
|
portBASE_TYPE xStatus;
|
||||||
const unsigned char ucSetToOutput = 0U;
|
const unsigned char ucSetToOutput = 0U;
|
||||||
|
|
||||||
/* Initialize the GPIO. */
|
/* Initialise the GPIO for the LEDs. */
|
||||||
xStatus = XGpio_Initialize( &xOutputGPIOInstance, XPAR_LEDS_4BITS_DEVICE_ID );
|
xStatus = XGpio_Initialize( &xOutputGPIOInstance, XPAR_LEDS_4BITS_DEVICE_ID );
|
||||||
if( xStatus == XST_SUCCESS )
|
if( xStatus == XST_SUCCESS )
|
||||||
{
|
{
|
||||||
/* All LEDs on this channel are going to be outputs. */
|
/* All bits on this channel are going to be outputs (LEDs). */
|
||||||
XGpio_SetDataDirection( &xOutputGPIOInstance, uxGPIOOutputChannel, ucSetToOutput );
|
XGpio_SetDataDirection( &xOutputGPIOInstance, uxGPIOOutputChannel, ucSetToOutput );
|
||||||
|
|
||||||
/* Start with all LEDs off. */
|
/* Start with all LEDs off. */
|
||||||
ucCurrentLEDState = 0U;
|
ucGPIOState = 0U;
|
||||||
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucCurrentLEDState );
|
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );
|
||||||
}
|
}
|
||||||
|
|
||||||
configASSERT( ( xStatus == XST_SUCCESS ) );
|
configASSERT( xStatus == XST_SUCCESS );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
|
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
|
||||||
{
|
{
|
||||||
#if 0
|
unsigned char ucLED = 1U;
|
||||||
unsigned portBASE_TYPE uxBaseAddress, *puxCurrentValue;
|
|
||||||
|
if( uxLED < partstMAX_LED )
|
||||||
|
{
|
||||||
|
ucLED <<= ( unsigned char ) uxLED;
|
||||||
|
|
||||||
portENTER_CRITICAL();
|
portENTER_CRITICAL();
|
||||||
{
|
{
|
||||||
/* Which IO section does the LED being set/cleared belong to? The
|
if( xValue == pdFALSE )
|
||||||
4 bit or 5 bit outputs? */
|
|
||||||
if( uxLED <= partstMAX_4BIT_LED )
|
|
||||||
{
|
{
|
||||||
uxBaseAddress = XPAR_LEDS_4BIT_BASEADDR;
|
ucGPIOState &= ~ucLED;
|
||||||
puxCurrentValue = &uxCurrentOutput4Bit;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
uxBaseAddress = XPAR_LEDS_POSITIONS_BASEADDR;
|
ucGPIOState |= ucLED;
|
||||||
puxCurrentValue = &uxCurrentOutput5Bit;
|
|
||||||
uxLED -= partstMAX_4BIT_LED;
|
|
||||||
}
|
}
|
||||||
|
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );
|
||||||
/* Setup the bit mask accordingly. */
|
|
||||||
uxLED = 0x01 << uxLED;
|
|
||||||
|
|
||||||
/* Maintain the current output value. */
|
|
||||||
if( xValue )
|
|
||||||
{
|
|
||||||
*puxCurrentValue |= uxLED;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*puxCurrentValue &= ~uxLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Write the value to the port. */
|
|
||||||
XGpio_mSetDataReg( uxBaseAddress, partstCHANNEL_1, *puxCurrentValue );
|
|
||||||
}
|
}
|
||||||
portEXIT_CRITICAL();
|
portEXIT_CRITICAL();
|
||||||
#endif
|
}
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
|
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
|
||||||
{
|
{
|
||||||
#if 0
|
unsigned char ucLED = 1U;
|
||||||
unsigned portBASE_TYPE uxBaseAddress, *puxCurrentValue;
|
|
||||||
|
if( uxLED < partstMAX_LED )
|
||||||
|
{
|
||||||
|
ucLED <<= ( unsigned char ) uxLED;
|
||||||
|
|
||||||
portENTER_CRITICAL();
|
portENTER_CRITICAL();
|
||||||
{
|
{
|
||||||
/* Which IO section does the LED being toggled belong to? The
|
if( ( ucGPIOState & ucLED ) != 0 )
|
||||||
4 bit or 5 bit outputs? */
|
|
||||||
if( uxLED <= partstMAX_4BIT_LED )
|
|
||||||
{
|
{
|
||||||
uxBaseAddress = XPAR_LEDS_4BIT_BASEADDR;
|
ucGPIOState &= ~ucLED;
|
||||||
puxCurrentValue = &uxCurrentOutput4Bit;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
uxBaseAddress = XPAR_LEDS_POSITIONS_BASEADDR;
|
ucGPIOState |= ucLED;
|
||||||
puxCurrentValue = &uxCurrentOutput5Bit;
|
|
||||||
uxLED -= partstMAX_4BIT_LED;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Setup the bit mask accordingly. */
|
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );
|
||||||
uxLED = 0x01 << uxLED;
|
|
||||||
|
|
||||||
/* Maintain the current output value. */
|
|
||||||
if( *puxCurrentValue & uxLED )
|
|
||||||
{
|
|
||||||
*puxCurrentValue &= ~uxLED;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*puxCurrentValue |= uxLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Write the value to the port. */
|
|
||||||
XGpio_mSetDataReg(uxBaseAddress, partstCHANNEL_1, *puxCurrentValue );
|
|
||||||
}
|
}
|
||||||
portEXIT_CRITICAL();
|
portEXIT_CRITICAL();
|
||||||
#endif
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,7 @@
|
||||||
|
|
||||||
/* The rate at which data is sent to the queue, specified in milliseconds, and
|
/* The rate at which data is sent to the queue, specified in milliseconds, and
|
||||||
converted to ticks using the portTICK_RATE_MS constant. */
|
converted to ticks using the portTICK_RATE_MS constant. */
|
||||||
#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_RATE_MS )
|
#define mainQUEUE_SEND_FREQUENCY_MS ( 1000 / portTICK_RATE_MS ) //_RB_ should be 200
|
||||||
|
|
||||||
/* The number of items the queue can hold. This is 1 as the receive task
|
/* The number of items the queue can hold. This is 1 as the receive task
|
||||||
will remove items as they are added, meaning the send task should always find
|
will remove items as they are added, meaning the send task should always find
|
||||||
|
@ -156,6 +156,8 @@ static void prvQueueSendTask( void *pvParameters );
|
||||||
*/
|
*/
|
||||||
static void vLEDTimerCallback( xTimerHandle xTimer );
|
static void vLEDTimerCallback( xTimerHandle xTimer );
|
||||||
|
|
||||||
|
static void prvButtonInputInterruptHandler( void *pvUnused );
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* The queue used by both tasks. */
|
/* The queue used by both tasks. */
|
||||||
|
@ -171,51 +173,10 @@ static volatile unsigned char ucGPIOState = 0U;
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static XTmrCtr xTimer0Instance;
|
static XTmrCtr xTimer0Instance;
|
||||||
static XGpio xOutputGPIOInstance;
|
static XGpio xOutputGPIOInstance, xInputGPIOInstance;
|
||||||
static const unsigned portBASE_TYPE uxGPIOOutputChannel = 1UL;
|
static const unsigned portBASE_TYPE uxGPIOOutputChannel = 1UL, uxGPIOInputChannel = 1UL;
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
#define NOT_JUST_TESTING
|
|
||||||
#ifdef JUST_TESTING
|
|
||||||
volatile unsigned long ul1 = 0, ul2 = 0;
|
|
||||||
|
|
||||||
void vTemp1( void *pvParameters )
|
|
||||||
{
|
|
||||||
for( ;; )
|
|
||||||
{
|
|
||||||
ul1++;
|
|
||||||
//taskYIELD();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void vTemp2( void *pvParameters )
|
|
||||||
{
|
|
||||||
for( ;; )
|
|
||||||
{
|
|
||||||
ul2++;
|
|
||||||
//taskYIELD();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void main( void )
|
|
||||||
{
|
|
||||||
prvSetupHardware();
|
|
||||||
|
|
||||||
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, 1 << 0 );
|
|
||||||
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, 1 << 1 );
|
|
||||||
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, 1 << 2 );
|
|
||||||
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, 1 << 3 );
|
|
||||||
|
|
||||||
|
|
||||||
xTaskCreate( vTemp1, ( signed char * ) "Test1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL );
|
|
||||||
xTaskCreate( vTemp2, ( signed char * ) "Test2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL );
|
|
||||||
|
|
||||||
vTaskStartScheduler();
|
|
||||||
for( ;; );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#else /* JUST_TESTING */
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
@ -254,7 +215,7 @@ int main(void)
|
||||||
for( ;; );
|
for( ;; );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
#endif /* JUST_TESTING */
|
|
||||||
static void vLEDTimerCallback( xTimerHandle xTimer )
|
static void vLEDTimerCallback( xTimerHandle xTimer )
|
||||||
{
|
{
|
||||||
/* The timer has expired - so no button pushes have occurred in the last
|
/* The timer has expired - so no button pushes have occurred in the last
|
||||||
|
@ -262,20 +223,20 @@ static void vLEDTimerCallback( xTimerHandle xTimer )
|
||||||
a critical section because it is accessed from multiple tasks, and the
|
a critical section because it is accessed from multiple tasks, and the
|
||||||
button interrupt - in this trivial case, for simplicity, the critical
|
button interrupt - in this trivial case, for simplicity, the critical
|
||||||
section is omitted. */
|
section is omitted. */
|
||||||
ucGPIOState |= mainTIMER_CONTROLLED_LED;
|
ucGPIOState &= ~mainTIMER_CONTROLLED_LED;
|
||||||
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );
|
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* The ISR executed when the user button is pushed. */
|
/* The ISR executed when the user button is pushed. */
|
||||||
void GPIO8_IRQHandler( void )
|
static void prvButtonInputInterruptHandler( void *pvUnused )
|
||||||
{
|
{
|
||||||
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
|
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
|
||||||
|
|
||||||
/* The button was pushed, so ensure the LED is on before resetting the
|
/* The button was pushed, so ensure the LED is on before resetting the
|
||||||
LED timer. The LED timer will turn the LED off if the button is not
|
LED timer. The LED timer will turn the LED off if the button is not
|
||||||
pushed within 5000ms. */
|
pushed within 5000ms. */
|
||||||
ucGPIOState &= ~mainTIMER_CONTROLLED_LED;
|
ucGPIOState |= mainTIMER_CONTROLLED_LED;
|
||||||
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );
|
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );
|
||||||
|
|
||||||
/* This interrupt safe FreeRTOS function can be called from this interrupt
|
/* This interrupt safe FreeRTOS function can be called from this interrupt
|
||||||
|
@ -284,7 +245,7 @@ portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xTimerResetFromISR( xLEDTimer, &xHigherPriorityTaskWoken );
|
xTimerResetFromISR( xLEDTimer, &xHigherPriorityTaskWoken );
|
||||||
|
|
||||||
/* Clear the interrupt before leaving. */
|
/* Clear the interrupt before leaving. */
|
||||||
//_RB_ MSS_GPIO_clear_irq( MSS_GPIO_8 );
|
XGpio_InterruptClear( &xInputGPIOInstance, uxGPIOInputChannel );
|
||||||
|
|
||||||
/* If calling xTimerResetFromISR() caused a task (in this case the timer
|
/* If calling xTimerResetFromISR() caused a task (in this case the timer
|
||||||
service/daemon task) to unblock, and the unblocked task has a priority
|
service/daemon task) to unblock, and the unblocked task has a priority
|
||||||
|
@ -359,11 +320,11 @@ static void prvSetupHardware( void )
|
||||||
portBASE_TYPE xStatus;
|
portBASE_TYPE xStatus;
|
||||||
const unsigned char ucSetToOutput = 0U;
|
const unsigned char ucSetToOutput = 0U;
|
||||||
|
|
||||||
/* Initialize the GPIO. */
|
/* Initialize the GPIO for the LEDs. */
|
||||||
xStatus = XGpio_Initialize( &xOutputGPIOInstance, XPAR_LEDS_4BITS_DEVICE_ID );
|
xStatus = XGpio_Initialize( &xOutputGPIOInstance, XPAR_LEDS_4BITS_DEVICE_ID );
|
||||||
if( xStatus == XST_SUCCESS )
|
if( xStatus == XST_SUCCESS )
|
||||||
{
|
{
|
||||||
/* All LEDs on this channel are going to be outputs. */
|
/* All bits on this channel are going to be outputs (LEDs). */
|
||||||
XGpio_SetDataDirection( &xOutputGPIOInstance, uxGPIOOutputChannel, ucSetToOutput );
|
XGpio_SetDataDirection( &xOutputGPIOInstance, uxGPIOOutputChannel, ucSetToOutput );
|
||||||
|
|
||||||
/* Start with all LEDs off. */
|
/* Start with all LEDs off. */
|
||||||
|
@ -371,7 +332,32 @@ const unsigned char ucSetToOutput = 0U;
|
||||||
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );
|
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );
|
||||||
}
|
}
|
||||||
|
|
||||||
configASSERT( ( xStatus == XST_SUCCESS ) );
|
/* Initialise the GPIO for the button inputs. */
|
||||||
|
if( xStatus == XST_SUCCESS )
|
||||||
|
{
|
||||||
|
xStatus = XGpio_Initialize( &xInputGPIOInstance, XPAR_PUSH_BUTTONS_4BITS_DEVICE_ID );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xStatus == XST_SUCCESS )
|
||||||
|
{
|
||||||
|
/* Install the handler defined in this task for the button input. */
|
||||||
|
xStatus = xPortInstallInterruptHandler( XPAR_MICROBLAZE_0_INTC_PUSH_BUTTONS_4BITS_IP2INTC_IRPT_INTR, prvButtonInputInterruptHandler, NULL );
|
||||||
|
|
||||||
|
if( xStatus == pdPASS )
|
||||||
|
{
|
||||||
|
/* Set buttons to input. */
|
||||||
|
XGpio_SetDataDirection( &xInputGPIOInstance, uxGPIOInputChannel, ~( ucSetToOutput ) );
|
||||||
|
|
||||||
|
|
||||||
|
vPortEnableInterrupt( XPAR_MICROBLAZE_0_INTC_PUSH_BUTTONS_4BITS_IP2INTC_IRPT_INTR );
|
||||||
|
|
||||||
|
/* Enable GPIO channel interrupts. */
|
||||||
|
XGpio_InterruptEnable( &xInputGPIOInstance, uxGPIOInputChannel ); //_RB_
|
||||||
|
XGpio_InterruptGlobalEnable( &xInputGPIOInstance );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
configASSERT( ( xStatus == pdPASS ) );
|
||||||
|
|
||||||
#ifdef MICROBLAZE_EXCEPTIONS_ENABLED
|
#ifdef MICROBLAZE_EXCEPTIONS_ENABLED
|
||||||
microblaze_enable_exceptions();
|
microblaze_enable_exceptions();
|
||||||
|
|
|
@ -0,0 +1,559 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.0.1 - Copyright (C) 2011 Real Time Engineers Ltd.
|
||||||
|
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* FreeRTOS tutorial books are available in pdf and paperback. *
|
||||||
|
* Complete, revised, and edited pdf reference manuals are also *
|
||||||
|
* available. *
|
||||||
|
* *
|
||||||
|
* Purchasing FreeRTOS documentation will not only help you, by *
|
||||||
|
* ensuring you get running as quickly as possible and with an *
|
||||||
|
* in-depth knowledge of how to use FreeRTOS, it will also help *
|
||||||
|
* the FreeRTOS project to continue with its mission of providing *
|
||||||
|
* professional grade, cross platform, de facto standard solutions *
|
||||||
|
* for microcontrollers - completely free of charge! *
|
||||||
|
* *
|
||||||
|
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
|
||||||
|
* *
|
||||||
|
* Thank you for using FreeRTOS, and thank you for your support! *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
|
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
|
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
||||||
|
>>>NOTE<<< The modification to the GPL is included to allow you to
|
||||||
|
distribute a combined work that includes FreeRTOS without being obliged to
|
||||||
|
provide the source code for proprietary components outside of the FreeRTOS
|
||||||
|
kernel. FreeRTOS is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
|
more details. You should have received a copy of the GNU General Public
|
||||||
|
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
||||||
|
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
||||||
|
by writing to Richard Barry, contact details for whom are available on the
|
||||||
|
FreeRTOS WEB site.
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||||
|
contact details.
|
||||||
|
|
||||||
|
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||||
|
critical systems.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||||
|
licensing and training services.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ****************************************************************************
|
||||||
|
* This project includes a lot of tasks and tests and is therefore complex.
|
||||||
|
* If you would prefer a much simpler project to get started with then select
|
||||||
|
* the 'Blinky' build configuration within the Embedded Workbench IDE.
|
||||||
|
* ****************************************************************************
|
||||||
|
*
|
||||||
|
* Creates all the demo application tasks, then starts the scheduler. The web
|
||||||
|
* documentation provides more details of the standard demo application tasks,
|
||||||
|
* which provide no particular functionality but do provide a good example of
|
||||||
|
* how to use the FreeRTOS API. The tasks defined in flop.c are included in the
|
||||||
|
* set of standard demo tasks to ensure the floating point unit gets some
|
||||||
|
* exercise.
|
||||||
|
*
|
||||||
|
* In addition to the standard demo tasks, the following tasks and tests are
|
||||||
|
* defined and/or created within this file:
|
||||||
|
*
|
||||||
|
* Webserver ("uIP") task - This serves a number of dynamically generated WEB
|
||||||
|
* pages to a standard WEB browser. The IP and MAC addresses are configured by
|
||||||
|
* constants defined at the bottom of FreeRTOSConfig.h. Use either a standard
|
||||||
|
* Ethernet cable to connect through a hug, or a cross over (point to point)
|
||||||
|
* cable to connect directly. Ensure the IP address used is compatible with the
|
||||||
|
* IP address of the machine running the browser - the easiest way to achieve
|
||||||
|
* this is to ensure the first three octets of the IP addresses are the same.
|
||||||
|
*
|
||||||
|
* "Reg test" tasks - These fill the registers with known values, then check
|
||||||
|
* that each register still contains its expected value. Each task uses
|
||||||
|
* different values. The tasks run with very low priority so get preempted
|
||||||
|
* very frequently. A check variable is incremented on each iteration of the
|
||||||
|
* test loop. A register containing an unexpected value is indicative of an
|
||||||
|
* error in the context switching mechanism and will result in a branch to a
|
||||||
|
* null loop - which in turn will prevent the check variable from incrementing
|
||||||
|
* any further and allow the check task (described below) to determine that an
|
||||||
|
* error has occurred. The nature of the reg test tasks necessitates that they
|
||||||
|
* are written in assembly code.
|
||||||
|
*
|
||||||
|
* "Check" task - This only executes every five seconds but has a high priority
|
||||||
|
* to ensure it gets processor time. Its main function is to check that all the
|
||||||
|
* standard demo tasks are still operational. While no errors have been
|
||||||
|
* discovered the check task will toggle LED 5 every 5 seconds - the toggle
|
||||||
|
* rate increasing to 200ms being a visual indication that at least one task has
|
||||||
|
* reported unexpected behaviour.
|
||||||
|
*
|
||||||
|
* "High frequency timer test" - A high frequency periodic interrupt is
|
||||||
|
* generated using a timer - the interrupt is assigned a priority above
|
||||||
|
* configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything
|
||||||
|
* the kernel is doing. The frequency and priority of the interrupt, in
|
||||||
|
* combination with other standard tests executed in this demo, should result
|
||||||
|
* in interrupts nesting at least 3 and probably 4 deep. This test is only
|
||||||
|
* included in build configurations that have the optimiser switched on. In
|
||||||
|
* optimised builds the count of high frequency ticks is used as the time base
|
||||||
|
* for the run time stats.
|
||||||
|
*
|
||||||
|
* *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application
|
||||||
|
* tasks are executing as expected and no errors have been reported in any
|
||||||
|
* tasks. The toggle rate increasing to 200ms indicates that at least one task
|
||||||
|
* has reported unexpected behaviour.
|
||||||
|
*
|
||||||
|
* *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let
|
||||||
|
* the application set up a timer to generate the tick interrupt. In this
|
||||||
|
* example a compare match timer is used for this purpose.
|
||||||
|
*
|
||||||
|
* *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started.
|
||||||
|
* The PowerON_Reset_PC() supplied in resetprg.c with this demo has
|
||||||
|
* Change_PSW_PM_to_UserMode() commented out to ensure this is the case.
|
||||||
|
*
|
||||||
|
* *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use
|
||||||
|
* of all the 8bit timers (as two cascaded 16bit units).
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Standard includes. */
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
/* BSP includes. */
|
||||||
|
#include "xenv_standalone.h"
|
||||||
|
#include "xtmrctr.h"
|
||||||
|
#include "xil_exception.h"
|
||||||
|
#include "microblaze_exceptions_g.h"
|
||||||
|
#include "xgpio.h"
|
||||||
|
|
||||||
|
/* Kernel includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
|
/* Standard demo includes. */
|
||||||
|
#include "partest.h"
|
||||||
|
#include "flash.h"
|
||||||
|
#include "BlockQ.h"
|
||||||
|
#include "death.h"
|
||||||
|
#include "blocktim.h"
|
||||||
|
#include "semtest.h"
|
||||||
|
#include "PollQ.h"
|
||||||
|
#include "GenQTest.h"
|
||||||
|
#include "QPeek.h"
|
||||||
|
#include "recmutex.h"
|
||||||
|
#include "flop.h"
|
||||||
|
#include "dynamic.h"
|
||||||
|
|
||||||
|
#define xPrintf( x )
|
||||||
|
|
||||||
|
/* Values that are passed into the reg test tasks using the task parameter. The
|
||||||
|
tasks check that the values are passed in correctly. */
|
||||||
|
#define mainREG_TEST_1_PARAMETER ( 0x12121212UL )
|
||||||
|
#define mainREG_TEST_2_PARAMETER ( 0x12345678UL )
|
||||||
|
|
||||||
|
/* Priorities at which the tasks are created. */
|
||||||
|
#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
|
||||||
|
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||||
|
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||||
|
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||||
|
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
|
||||||
|
#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||||
|
#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||||
|
#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||||
|
#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||||
|
#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||||
|
|
||||||
|
/* The WEB server uses string handling functions, which in turn use a bit more
|
||||||
|
stack than most of the other tasks. */
|
||||||
|
#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 )
|
||||||
|
|
||||||
|
/* The LED toggled by the check task. */
|
||||||
|
#define mainCHECK_LED ( 5 )
|
||||||
|
|
||||||
|
/* The rate at which mainCHECK_LED will toggle when all the tasks are running
|
||||||
|
without error. Controlled by the check task as described at the top of this
|
||||||
|
file. */
|
||||||
|
#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_RATE_MS )
|
||||||
|
|
||||||
|
/* The rate at which mainCHECK_LED will toggle when an error has been reported
|
||||||
|
by at least one task. Controlled by the check task as described at the top of
|
||||||
|
this file. */
|
||||||
|
#define mainERROR_CYCLE_TIME ( 200 / portTICK_RATE_MS )
|
||||||
|
|
||||||
|
/*
|
||||||
|
* vApplicationMallocFailedHook() will only be called if
|
||||||
|
* configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook
|
||||||
|
* function that will execute if a call to pvPortMalloc() fails.
|
||||||
|
* pvPortMalloc() is called internally by the kernel whenever a task, queue or
|
||||||
|
* semaphore is created. It is also called by various parts of the demo
|
||||||
|
* application.
|
||||||
|
*/
|
||||||
|
void vApplicationMallocFailedHook( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1
|
||||||
|
* in FreeRTOSConfig.h. It is a hook function that is called on each iteration
|
||||||
|
* of the idle task. It is essential that code added to this hook function
|
||||||
|
* never attempts to block in any way (for example, call xQueueReceive() with
|
||||||
|
* a block time specified). If the application makes use of the vTaskDelete()
|
||||||
|
* API function (as this demo application does) then it is also important that
|
||||||
|
* vApplicationIdleHook() is permitted to return to its calling function because
|
||||||
|
* it is the responsibility of the idle task to clean up memory allocated by the
|
||||||
|
* kernel to any task that has since been deleted.
|
||||||
|
*/
|
||||||
|
void vApplicationIdleHook( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* vApplicationStackOverflowHook() will only be called if
|
||||||
|
* configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and
|
||||||
|
* name of the offending task should be passed in the function parameters, but
|
||||||
|
* it is possible that the stack overflow will have corrupted these - in which
|
||||||
|
* case pxCurrentTCB can be inspected to find the same information.
|
||||||
|
*/
|
||||||
|
void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The reg test tasks as described at the top of this file.
|
||||||
|
*/
|
||||||
|
static void prvRegTest1Task( void *pvParameters );
|
||||||
|
static void prvRegTest2Task( void *pvParameters );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The check task as described at the top of this file.
|
||||||
|
*/
|
||||||
|
static void prvCheckTask( void *pvParameters );
|
||||||
|
|
||||||
|
static void prvSetupHardware( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Contains the implementation of the WEB server.
|
||||||
|
*/
|
||||||
|
//_RB_extern void vuIP_Task( void *pvParameters );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Variables that are incremented on each iteration of the reg test tasks -
|
||||||
|
provided the tasks have not reported any errors. The check task inspects these
|
||||||
|
variables to ensure they are still incrementing as expected. If a variable
|
||||||
|
stops incrementing then it is likely that its associate task has stalled. */
|
||||||
|
unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL;
|
||||||
|
|
||||||
|
/* The status message that is displayed at the bottom of the "task stats" web
|
||||||
|
page, which is served by the uIP task. This will report any errors picked up
|
||||||
|
by the reg test task. */
|
||||||
|
static const char *pcStatusMessage = NULL;
|
||||||
|
|
||||||
|
static XTmrCtr xTimer0Instance;
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
/* Configure the interrupt controller, LED outputs and button inputs. */
|
||||||
|
prvSetupHardware();
|
||||||
|
|
||||||
|
/* Start the reg test tasks which test the context switching mechanism. */
|
||||||
|
xTaskCreate( prvRegTest1Task, ( const signed char * const ) "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL );
|
||||||
|
xTaskCreate( prvRegTest2Task, ( const signed char * const ) "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL );
|
||||||
|
|
||||||
|
/* The web server task. */
|
||||||
|
//_RB_ xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL );
|
||||||
|
|
||||||
|
/* Start the check task as described at the top of this file. */
|
||||||
|
xTaskCreate( prvCheckTask, ( const signed char * const ) "Check", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY, NULL );
|
||||||
|
|
||||||
|
/* Create the standard demo tasks. */
|
||||||
|
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
|
||||||
|
vCreateBlockTimeTasks();
|
||||||
|
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
|
||||||
|
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
|
||||||
|
vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );
|
||||||
|
vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY );
|
||||||
|
vStartQueuePeekTasks();
|
||||||
|
vStartRecursiveMutexTasks();
|
||||||
|
vStartMathTasks( mainFLOP_TASK_PRIORITY );
|
||||||
|
|
||||||
|
/* The suicide tasks must be created last as they need to know how many
|
||||||
|
tasks were running prior to their creation in order to ascertain whether
|
||||||
|
or not the correct/expected number of tasks are running at any given time. */
|
||||||
|
vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );
|
||||||
|
|
||||||
|
/* Start the tasks running. */
|
||||||
|
vTaskStartScheduler();
|
||||||
|
|
||||||
|
/* If all is well we will never reach here as the scheduler will now be
|
||||||
|
running. If we do reach here then it is likely that there was insufficient
|
||||||
|
heap available for the idle task to be created. */
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvCheckTask( void *pvParameters )
|
||||||
|
{
|
||||||
|
static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL;
|
||||||
|
portTickType xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME;
|
||||||
|
extern void vSetupHighFrequencyTimer( void );
|
||||||
|
|
||||||
|
/* Initialise xNextWakeTime - this only needs to be done once. */
|
||||||
|
xNextWakeTime = xTaskGetTickCount();
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
/* Place this task in the blocked state until it is time to run again. */
|
||||||
|
vTaskDelayUntil( &xNextWakeTime, xCycleFrequency );
|
||||||
|
|
||||||
|
/* Check the standard demo tasks are running without error. */
|
||||||
|
if( xAreGenericQueueTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
/* Increase the rate at which this task cycles, which will increase the
|
||||||
|
rate at which mainCHECK_LED flashes to give visual feedback that an error
|
||||||
|
has occurred. */
|
||||||
|
pcStatusMessage = "Error: GenQueue";
|
||||||
|
xPrintf( pcStatusMessage );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xAreQueuePeekTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
pcStatusMessage = "Error: QueuePeek\r\n";
|
||||||
|
xPrintf( pcStatusMessage );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xAreBlockingQueuesStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
pcStatusMessage = "Error: BlockQueue\r\n";
|
||||||
|
xPrintf( pcStatusMessage );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
pcStatusMessage = "Error: BlockTime\r\n";
|
||||||
|
xPrintf( pcStatusMessage );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
pcStatusMessage = "Error: SemTest\r\n";
|
||||||
|
xPrintf( pcStatusMessage );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xArePollingQueuesStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
pcStatusMessage = "Error: PollQueue\r\n";
|
||||||
|
xPrintf( pcStatusMessage );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xIsCreateTaskStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
pcStatusMessage = "Error: Death\r\n";
|
||||||
|
xPrintf( pcStatusMessage );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
pcStatusMessage = "Error: RecMutex\r\n";
|
||||||
|
xPrintf( pcStatusMessage );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xAreMathsTaskStillRunning() != pdPASS )
|
||||||
|
{
|
||||||
|
pcStatusMessage = "Error: Flop\r\n";
|
||||||
|
xPrintf( pcStatusMessage );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check the reg test tasks are still cycling. They will stop incrementing
|
||||||
|
their loop counters if they encounter an error. */
|
||||||
|
if( ulRegTest1CycleCount == ulLastRegTest1CycleCount )
|
||||||
|
{
|
||||||
|
pcStatusMessage = "Error: RegTest1\r\n";
|
||||||
|
xPrintf( pcStatusMessage );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ulRegTest2CycleCount == ulLastRegTest2CycleCount )
|
||||||
|
{
|
||||||
|
pcStatusMessage = "Error: RegTest2\r\n";
|
||||||
|
xPrintf( pcStatusMessage );
|
||||||
|
}
|
||||||
|
|
||||||
|
ulLastRegTest1CycleCount = ulRegTest1CycleCount;
|
||||||
|
ulLastRegTest2CycleCount = ulRegTest2CycleCount;
|
||||||
|
|
||||||
|
/* Toggle the check LED to give an indication of the system status. If
|
||||||
|
the LED toggles every 5 seconds then everything is ok. A faster toggle
|
||||||
|
indicates an error. */
|
||||||
|
vParTestToggleLED( mainCHECK_LED );
|
||||||
|
|
||||||
|
/* Ensure the LED toggles at a faster rate if an error has occurred. */
|
||||||
|
if( pcStatusMessage != NULL )
|
||||||
|
{
|
||||||
|
xCycleFrequency = mainERROR_CYCLE_TIME;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vApplicationSetupTimerInterrupt( void )
|
||||||
|
{
|
||||||
|
portBASE_TYPE xStatus;
|
||||||
|
const unsigned char ucTimerCounterNumber = ( unsigned char ) 0U;
|
||||||
|
const unsigned long ulCounterValue = ( ( XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ / configTICK_RATE_HZ ) - 1UL );
|
||||||
|
extern void vTickISR( void *pvUnused );
|
||||||
|
|
||||||
|
/* Initialise the timer/counter. */
|
||||||
|
xStatus = XTmrCtr_Initialize( &xTimer0Instance, XPAR_AXI_TIMER_0_DEVICE_ID );
|
||||||
|
|
||||||
|
if( xStatus == XST_SUCCESS )
|
||||||
|
{
|
||||||
|
/* Install the tick interrupt handler as the timer ISR. */
|
||||||
|
xStatus = xPortInstallInterruptHandler( XPAR_MICROBLAZE_0_INTC_AXI_TIMER_0_INTERRUPT_INTR, vTickISR, NULL );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xStatus == pdPASS )
|
||||||
|
{
|
||||||
|
vPortEnableInterrupt( XPAR_MICROBLAZE_0_INTC_AXI_TIMER_0_INTERRUPT_INTR );
|
||||||
|
|
||||||
|
/* Configure the timer interrupt handler. */
|
||||||
|
XTmrCtr_SetHandler( &xTimer0Instance, ( void * ) vTickISR, NULL );
|
||||||
|
|
||||||
|
/* Set the correct period for the timer. */
|
||||||
|
XTmrCtr_SetResetValue( &xTimer0Instance, ucTimerCounterNumber, ulCounterValue );
|
||||||
|
|
||||||
|
/* Enable the interrupts. Auto-reload mode is used to generate a
|
||||||
|
periodic tick. Note that interrupts are disabled when this function is
|
||||||
|
called, so interrupts will not start to be processed until the first
|
||||||
|
task has started to run. */
|
||||||
|
XTmrCtr_SetOptions( &xTimer0Instance, ucTimerCounterNumber, ( XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION | XTC_DOWN_COUNT_OPTION ) );
|
||||||
|
|
||||||
|
/* Start the timer. */
|
||||||
|
XTmrCtr_Start( &xTimer0Instance, ucTimerCounterNumber );
|
||||||
|
}
|
||||||
|
|
||||||
|
configASSERT( ( xStatus == pdPASS ) );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vApplicationClearTimerInterrupt( void )
|
||||||
|
{
|
||||||
|
unsigned long ulCSR;
|
||||||
|
|
||||||
|
/* Increment the RTOS tick - this might cause a task to unblock. */
|
||||||
|
vTaskIncrementTick();
|
||||||
|
|
||||||
|
/* Clear the timer interrupt */
|
||||||
|
ulCSR = XTmrCtr_GetControlStatusReg( XPAR_AXI_TIMER_0_BASEADDR, 0 );
|
||||||
|
XTmrCtr_SetControlStatusReg( XPAR_AXI_TIMER_0_BASEADDR, 0, ulCSR );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* This function is explained by the comments above its prototype at the top
|
||||||
|
of this file. */
|
||||||
|
void vApplicationMallocFailedHook( void )
|
||||||
|
{
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* This function is explained by the comments above its prototype at the top
|
||||||
|
of this file. */
|
||||||
|
void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName )
|
||||||
|
{
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* This function is explained by the comments above its prototype at the top
|
||||||
|
of this file. */
|
||||||
|
void vApplicationIdleHook( void )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* This function is explained in the comments at the top of this file. */
|
||||||
|
static void prvRegTest1Task( void *pvParameters )
|
||||||
|
{
|
||||||
|
configASSERT( pvParameters == ( void * ) mainREG_TEST_1_PARAMETER );
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
vTaskDelay( 10000 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* This function is explained in the comments at the top of this file. */
|
||||||
|
static void prvRegTest2Task( void *pvParameters )
|
||||||
|
{
|
||||||
|
configASSERT( pvParameters == ( void * ) mainREG_TEST_2_PARAMETER );
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
vTaskDelay( 10000 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
char *pcGetTaskStatusMessage( void )
|
||||||
|
{
|
||||||
|
/* Not bothered about a critical section here although technically because of
|
||||||
|
the task priorities the pointer could change it will be atomic if not near
|
||||||
|
atomic and its not critical. */
|
||||||
|
if( pcStatusMessage == NULL )
|
||||||
|
{
|
||||||
|
return "All tasks running without error";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return ( char * ) pcStatusMessage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvSetupHardware( void )
|
||||||
|
{
|
||||||
|
#if 0
|
||||||
|
portBASE_TYPE xStatus;
|
||||||
|
const unsigned char ucSetToOutput = 0U;
|
||||||
|
|
||||||
|
/* Set up the GPIO port for the LED outputs. */
|
||||||
|
vParTestInitialise();
|
||||||
|
|
||||||
|
/* Initialise the GPIO for the button inputs. */
|
||||||
|
if( xStatus == XST_SUCCESS )
|
||||||
|
{
|
||||||
|
xStatus = XGpio_Initialize( &xInputGPIOInstance, XPAR_PUSH_BUTTONS_4BITS_DEVICE_ID );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xStatus == XST_SUCCESS )
|
||||||
|
{
|
||||||
|
/* Install the handler defined in this task for the button input. */
|
||||||
|
xStatus = xPortInstallInterruptHandler( XPAR_MICROBLAZE_0_INTC_PUSH_BUTTONS_4BITS_IP2INTC_IRPT_INTR, prvButtonInputInterruptHandler, NULL );
|
||||||
|
|
||||||
|
if( xStatus == pdPASS )
|
||||||
|
{
|
||||||
|
/* Set buttons to input. */
|
||||||
|
XGpio_SetDataDirection( &xInputGPIOInstance, uxGPIOInputChannel, ~( ucSetToOutput ) );
|
||||||
|
|
||||||
|
|
||||||
|
vPortEnableInterrupt( XPAR_MICROBLAZE_0_INTC_PUSH_BUTTONS_4BITS_IP2INTC_IRPT_INTR );
|
||||||
|
|
||||||
|
/* Enable GPIO channel interrupts. */
|
||||||
|
XGpio_InterruptEnable( &xInputGPIOInstance, uxGPIOInputChannel ); //_RB_
|
||||||
|
XGpio_InterruptGlobalEnable( &xInputGPIOInstance );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
configASSERT( ( xStatus == pdPASS ) );
|
||||||
|
#else
|
||||||
|
vParTestInitialise();
|
||||||
|
#endif //_RB_
|
||||||
|
|
||||||
|
#ifdef MICROBLAZE_EXCEPTIONS_ENABLED
|
||||||
|
microblaze_enable_exceptions();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
Loading…
Reference in a new issue