]> git.sur5r.net Git - freertos/commitdiff
MicroBlaze projects: Split build configurations into blinky and full. Implement...
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Mon, 6 Jun 2011 21:01:42 +0000 (21:01 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Mon, 6 Jun 2011 21:01:42 +0000 (21:01 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1446 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/.cproject
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/CreateProjectDirectoryStructure.bat
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/FreeRTOSConfig.h
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/FreeRTOS_Source/portable/GCC/MicroBlaze/port.c
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/ParTest.c
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/main-blinky.c
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/main-full.c [new file with mode: 0644]

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