]> git.sur5r.net Git - freertos/commitdiff
Add a register test to the new MicroBlaze demo - still a work in progress.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Fri, 10 Jun 2011 09:43:12 +0000 (09:43 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Fri, 10 Jun 2011 09:43:12 +0000 (09:43 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1447 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/.cproject
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/RegisterTests.c [new file with mode: 0644]
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/main-blinky.c
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/main-full.c

index 760cf9c2f34222d341dc39b55dc036de93d56367..de261f961f5c52e762a4f9ed589920b14ab238b7 100644 (file)
@@ -44,6 +44,7 @@
                                                                        <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
+                                                               <option id="xilinx.gnu.compiler.symbols.defined.522894226" name="Defined symbols (-D)" superClass="xilinx.gnu.compiler.symbols.defined" valueType="definedSymbols"/>\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.1757864406" name="MicroBlaze g++ compiler" superClass="xilinx.gnu.mb.cxx.toolchain.compiler.debug">\r
                                                </toolChain>\r
                                        </folderInfo>\r
                                        <sourceEntries>\r
-                                               <entry excluding="main-full.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>\r
+                                               <entry excluding="src/testperiph.c|ParTest.c|src/xuartlite_selftest_example.c|src/xtmrctr_selftest_example.c|src/xtmrctr_intr_example.c|src/xintc_tapp_example.c|src/xgpio_tapp_example.c|src/xgpio_intr_tapp_example.c|src/xemaclite_polled_example.c|src/xemaclite_intr_example.c|Demo_Source|RegisterTests.c|main-full.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>\r
                                        </sourceEntries>\r
                                </configuration>\r
                        </storageModule>\r
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>\r
+                       <storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>\r
+                       <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>\r
                        <storageModule moduleId="scannerConfiguration">\r
                                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>\r
                                <profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">\r
                                                </scannerInfoProvider>\r
                                        </profile>\r
                                </scannerConfigBuildInfo>\r
+                               <scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.1890710697.1551842913;xilinx.gnu.mb.exe.debug.1890710697.1551842913.">\r
+                                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="makefileGenerator">\r
+                                                       <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                               </scannerConfigBuildInfo>\r
+                               <scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.1890710697.1551842913;xilinx.gnu.mb.exe.debug.1890710697.1551842913.;xilinx.gnu.mb.c.toolchain.compiler.debug.835271198;xilinx.gnu.compiler.input.264309084">\r
+                                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="makefileGenerator">\r
+                                                       <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                               </scannerConfigBuildInfo>\r
                                <scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.1890710697;xilinx.gnu.mb.exe.debug.1890710697.;xilinx.gnu.mb.c.toolchain.compiler.debug.1867440614;xilinx.gnu.compiler.input.2107818916">\r
                                        <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>\r
                                        <profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">\r
                                        </profile>\r
                                </scannerConfigBuildInfo>\r
                        </storageModule>\r
-                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>\r
                </cconfiguration>\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
                                                                <inputType id="xilinx.gnu.assembler.input.828396103" superClass="xilinx.gnu.assembler.input"/>\r
                                                        </tool>\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 defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.116271748" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" value="gnu.c.optimization.level.none" 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
                                                </toolChain>\r
                                        </folderInfo>\r
                                        <sourceEntries>\r
-                                               <entry excluding="main-blinky.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>\r
+                                               <entry excluding="src/xuartlite_selftest_example.c|src/xtmrctr_selftest_example.c|src/xtmrctr_intr_example.c|src/xintc_tapp_example.c|src/xgpio_tapp_example.c|src/xgpio_intr_tapp_example.c|src/xemaclite_polled_example.c|src/xemaclite_intr_example.c|src/testperiph.c|main-blinky.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>\r
                                        </sourceEntries>\r
                                </configuration>\r
                        </storageModule>\r
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>\r
+                       <storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>\r
+                       <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>\r
                        <storageModule moduleId="scannerConfiguration">\r
                                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>\r
                                <profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">\r
                                                </scannerInfoProvider>\r
                                        </profile>\r
                                </scannerConfigBuildInfo>\r
+                               <scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.1890710697.1551842913;xilinx.gnu.mb.exe.debug.1890710697.1551842913.">\r
+                                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="makefileGenerator">\r
+                                                       <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                               </scannerConfigBuildInfo>\r
+                               <scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.1890710697.1551842913;xilinx.gnu.mb.exe.debug.1890710697.1551842913.;xilinx.gnu.mb.c.toolchain.compiler.debug.835271198;xilinx.gnu.compiler.input.264309084">\r
+                                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="makefileGenerator">\r
+                                                       <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">\r
+                                               <buildOutputProvider>\r
+                                                       <openAction enabled="true" filePath=""/>\r
+                                                       <parser enabled="true"/>\r
+                                               </buildOutputProvider>\r
+                                               <scannerInfoProvider id="specsFile">\r
+                                                       <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>\r
+                                                       <parser enabled="true"/>\r
+                                               </scannerInfoProvider>\r
+                                       </profile>\r
+                               </scannerConfigBuildInfo>\r
                                <scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.1890710697;xilinx.gnu.mb.exe.debug.1890710697.;xilinx.gnu.mb.c.toolchain.compiler.debug.1867440614;xilinx.gnu.compiler.input.2107818916">\r
                                        <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>\r
                                        <profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">\r
                                        </profile>\r
                                </scannerConfigBuildInfo>\r
                        </storageModule>\r
-                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>\r
                </cconfiguration>\r
        </storageModule>\r
        <storageModule moduleId="cdtBuildSystem" version="4.0.0">\r
index 565e72b5cecc429c1338683aa9abf7c4a7d32b3c..77d37d9bcfbaa3b419958f80c4fc736d2f6b0169 100644 (file)
@@ -82,7 +82,7 @@
 #define configUSE_TICK_HOOK                            0\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 configMAX_PRIORITIES                   ( ( unsigned portBASE_TYPE ) 6 )\r
 #define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 40 * 1024 ) )\r
 #define configMAX_TASK_NAME_LEN                        ( 10 )\r
 #define configUSE_TRACE_FACILITY               0\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 ) 180 )\r
+#define configMINIMAL_STACK_SIZE               ( ( unsigned short ) 230 )\r
 #define configINTERRUPT_STACK_SIZE             configMINIMAL_STACK_SIZE\r
 \r
 /* Co-routine definitions. */\r
@@ -119,7 +119,8 @@ to exclude the API function. */
 #define INCLUDE_vTaskDelayUntil                        1\r
 #define INCLUDE_vTaskDelay                             1\r
 \r
-#define configASSERT( x ) if( ( x ) == 0 ) { portDISABLE_INTERRUPTS(); for( ;; ); }\r
+extern void vAssertCalled( char *pcFile, long lLine );\r
+#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ );\r
        \r
 #define configINTERRUPT_CONTROLLER_TO_USE XPAR_INTC_SINGLE_DEVICE_ID\r
 \r
index 0e758601fa487dec5cfba551336a205cf2b3fd25..fad034c36809454a05b6b2b4258250c64b233150 100644 (file)
@@ -239,6 +239,7 @@ extern void ( vStartFirstTask )( void );
 \r
        /* Allocate the stack to be used by the interrupt handler. */\r
        pulISRStack = ( unsigned long * ) pvPortMalloc( configINTERRUPT_STACK_SIZE * sizeof( portSTACK_TYPE ) );\r
+       configASSERT( pulISRStack != NULL );\r
 \r
        /* Restore the context of the first task that is going to run. */\r
        if( pulISRStack != NULL )\r
@@ -273,10 +274,12 @@ extern void VPortYieldASM( void );
        not interrupted by the tick ISR.  It is not a problem to do this as\r
        each task maintains it's own interrupt status. */\r
        portENTER_CRITICAL();\r
+       {\r
                /* Jump directly to the yield function to ensure there is no\r
                compiler generated prologue code. */\r
                asm volatile (  "bralid r14, VPortYieldASM              \n\t" \\r
                                                "or r0, r0, r0                                  \n\t" );\r
+       }\r
        portEXIT_CRITICAL();\r
 }\r
 /*-----------------------------------------------------------*/\r
diff --git a/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/RegisterTests.c b/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/RegisterTests.c
new file mode 100644 (file)
index 0000000..867d56f
--- /dev/null
@@ -0,0 +1,290 @@
+/*\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
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+\r
+/*\r
+ * The register test task as described at the top of this file.\r
+ */\r
+void vRegisterTest1( void *pvParameters );\r
+void vRegisterTest2( void *pvParameters );\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
+volatile unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void vRegisterTest1( void *pvParameters )\r
+{\r
+//_RB_ Why can R5 not be used in this test?\r
+\r
+       /* This task uses an infinite loop that is implemented in the assembly \r
+       code.\r
+       \r
+       First fill the registers with known values. */\r
+       asm volatile (  "       addi r3, r0, 3          \n\t" \\r
+                                       "       addi r4, r0, 4          \n\t" \\r
+                                       "       addi r6, r0, 6          \n\t" \\r
+                                       "       addi r7, r0, 7          \n\t" \\r
+                                       "       addi r8, r0, 8          \n\t" \\r
+                                       "       addi r9, r0, 9          \n\t" \\r
+                                       "       addi r10, r0, 10        \n\t" \\r
+                                       "       addi r11, r0, 11        \n\t" \\r
+                                       "       addi r12, r0, 12        \n\t" \\r
+                                       "       addi r16, r0, 16        \n\t" \\r
+                                       "       addi r19, r0, 19        \n\t" \\r
+                                       "       addi r20, r0, 20        \n\t" \\r
+                                       "       addi r21, r0, 21        \n\t" \\r
+                                       "       addi r22, r0, 22        \n\t" \\r
+                                       "       addi r23, r0, 23        \n\t" \\r
+                                       "       addi r24, r0, 24        \n\t" \\r
+                                       "       addi r25, r0, 25        \n\t" \\r
+                                       "       addi r26, r0, 26        \n\t" \\r
+                                       "       addi r27, r0, 27        \n\t" \\r
+                                       "       addi r28, r0, 28        \n\t" \\r
+                                       "       addi r29, r0, 29        \n\t" \\r
+                                       "       addi r30, r0, 30        \n\t" \\r
+                                       "       addi r31, r0, 31        \n\t"\r
+                               );\r
+\r
+       /* Now test the register values to ensure they contain the same value that\r
+       was written to them above.       This task will get preempted frequently so \r
+       other tasks are likely to have executed since the register values were \r
+       written. */\r
+\r
+       asm volatile (  "Loop_Start_1:                          \n\t" \\r
+                                       "       xori r18, r3, 3                 \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r4, 4                 \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r6, 6                 \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r7, 7                 \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r8, 8                 \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r9, 9                 \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r10, 10               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r11, 11               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r12, 12               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r16, 16               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r19, 19               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r20, 20               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r21, 21               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r22, 22               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r23, 23               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r24, 24               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r25, 25               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r26, 26               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r27, 27               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r28, 28               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r29, 29               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r30, 30               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t" \\r
+                                       "       xori r18, r31, 31               \n\t" \\r
+                                       "       bnei r18, Error_Loop_1  \n\t"\r
+                                );\r
+\r
+       /* If this task has not branched to the error loop, then everything is ok,\r
+       and the check variable should be incremented to indicate that this task\r
+       is still running.  Then, brach back to the top to check the registers\r
+       again. */\r
+       asm volatile (  "       lwi r18, r0, ulRegTest1CycleCount       \n\t" \\r
+                                       "       addik r18, r18, 1                                       \n\t" \\r
+                                       "       swi r18, r0, ulRegTest1CycleCount       \n\t" \\r
+                                       "                                                                               \n\t" \\r
+                                       "       bri Loop_Start_1 "\r
+                                );\r
+\r
+        /* The test function will branch here if it discovers an error.  This part\r
+       of the code just sits in a NULL loop, which prevents the check variable\r
+       incrementing any further to allow the check timer to recognize that this\r
+       test has failed. */\r
+       asm volatile (  "Error_Loop_1:                  \n\t" \\r
+                                       "       bri 0                           \n\t" \\r
+                                       "       nop                                     \n\t" \\r
+                                );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vRegisterTest2( void *pvParameters )\r
+{\r
+       /* This task uses an infinite loop that is implemented in the assembly \r
+       code.\r
+       \r
+       First fill the registers with known values. */\r
+       asm volatile (  "       addi r3, r0, 103        \n\t" \\r
+                                       "       addi r4, r0, 104        \n\t" \\r
+                                       "       addi r6, r0, 106        \n\t" \\r
+                                       "       addi r7, r0, 107        \n\t" \\r
+                                       "       addi r8, r0, 108        \n\t" \\r
+                                       "       addi r9, r0, 109        \n\t" \\r
+                                       "       addi r10, r0, 1010      \n\t" \\r
+                                       "       addi r11, r0, 1011      \n\t" \\r
+                                       "       addi r12, r0, 1012      \n\t" \\r
+                                       "       addi r16, r0, 1016      \n\t" \\r
+                                       "       addi r19, r0, 1019      \n\t" \\r
+                                       "       addi r20, r0, 1020      \n\t" \\r
+                                       "       addi r21, r0, 1021      \n\t" \\r
+                                       "       addi r22, r0, 1022      \n\t" \\r
+                                       "       addi r23, r0, 1023      \n\t" \\r
+                                       "       addi r24, r0, 1024      \n\t" \\r
+                                       "       addi r25, r0, 1025      \n\t" \\r
+                                       "       addi r26, r0, 1026      \n\t" \\r
+                                       "       addi r27, r0, 1027      \n\t" \\r
+                                       "       addi r28, r0, 1028      \n\t" \\r
+                                       "       addi r29, r0, 1029      \n\t" \\r
+                                       "       addi r30, r0, 1030      \n\t" \\r
+                                       "       addi r31, r0, 1031      \n\t"\r
+                               );\r
+\r
+       /* Now test the register values to ensure they contain the same value that\r
+       was written to them above.       This task will get preempted frequently so \r
+       other tasks are likely to have executed since the register values were \r
+       written. */\r
+\r
+       asm volatile (  "Loop_Start_2:                          \n\t" \\r
+                                       "       xori r18, r3, 103               \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r4, 104               \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r6, 106               \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r7, 107               \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r8, 108               \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r9, 109               \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r10, 1010             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r11, 1011             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r12, 1012             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r16, 1016             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r19, 1019             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r20, 1020             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r21, 1021             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r22, 1022             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r23, 1023             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r24, 1024             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r25, 1025             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r26, 1026             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r27, 1027             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r28, 1028             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r29, 1029             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r30, 1030             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t" \\r
+                                       "       xori r18, r31, 1031             \n\t" \\r
+                                       "       bnei r18, Error_Loop_2  \n\t"\r
+                                );\r
+\r
+       /* If this task has not branched to the error loop, then everything is ok,\r
+       and the check variable should be incremented to indicate that this task\r
+       is still running.  Then, brach back to the top to check the registers\r
+       again. */\r
+       asm volatile (  "       lwi r18, r0, ulRegTest2CycleCount       \n\t" \\r
+                                       "       addik r18, r18, 1                                       \n\t" \\r
+                                       "       swi r18, r0, ulRegTest2CycleCount       \n\t" \\r
+                                       "                                                                               \n\t" \\r
+                                       "       bri Loop_Start_2 "\r
+                                );\r
+\r
+        /* The test function will branch here if it discovers an error.  This part\r
+       of the code just sits in a NULL loop, which prevents the check variable\r
+       incrementing any further to allow the check timer to recognize that this\r
+       test has failed. */\r
+       asm volatile (  "Error_Loop_2:                  \n\t" \\r
+                                       "       bri 0                           \n\t" \\r
+                                       "       nop                                     \n\t" \\r
+                                );\r
+}\r
+\r
+\r
+\r
+\r
+\r
+\r
index 01a8036de5fd7b7c8085e9382979cff7fb3db700..8ec39211f33eb29f616c4ab10360fb7a0bfcf3d3 100644 (file)
@@ -178,7 +178,7 @@ static const unsigned portBASE_TYPE uxGPIOOutputChannel = 1UL, uxGPIOInputChanne
 \r
 /*-----------------------------------------------------------*/\r
 \r
-int main(void)\r
+int main( void )\r
 {\r
        /* Configure the interrupt controller, LED outputs and button inputs. */\r
        prvSetupHardware();\r
index 1f3109d930cae12ef6452cddc6d201b282e5faa8..78e9c77749ff27d532c6b7089cfdbb32da54c73b 100644 (file)
 /* Kernel includes. */\r
 #include "FreeRTOS.h"\r
 #include "task.h"\r
+#include "timers.h"\r
 \r
 /* Standard demo includes. */\r
 #include "partest.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
@@ -173,17 +169,20 @@ stack than most of the other tasks. */
 #define mainuIP_STACK_SIZE                     ( configMINIMAL_STACK_SIZE * 3 )\r
 \r
 /* The LED toggled by the check task. */\r
-#define mainCHECK_LED                          ( 5 )\r
+#define mainCHECK_LED                          ( 3 )\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
+#define mainNO_ERROR_CHECK_TIMER_PERIOD                ( 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
+#define mainERROR_CHECK_TIMER_PERIOD           ( 200 / portTICK_RATE_MS )\r
+\r
+/* A block time of zero means "don't block". */
+#define mainDONT_BLOCK                         ( ( portTickType ) 0 )\r
 \r
 /*\r
  * vApplicationMallocFailedHook() will only be called if\r
@@ -220,13 +219,15 @@ void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName
 /*\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
+extern void vRegisterTest1( void *pvParameters );\r
+extern void vRegisterTest2( void *pvParameters );\r
 \r
 /*\r
- * The check task as described at the top of this file.\r
+ * Defines the 'check' functionality as described at the top of this file.  This\r
+ * function is the callback function for the 'check' timer.\r
  */\r
-static void prvCheckTask( void *pvParameters );\r
+static void vCheckTimerCallback( xTimerHandle xTimer );\r
+\r
 \r
 static void prvSetupHardware( void );\r
 \r
@@ -237,12 +238,6 @@ static void prvSetupHardware( void );
 \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
@@ -250,38 +245,52 @@ static const char *pcStatusMessage = NULL;
 \r
 static XTmrCtr xTimer0Instance;\r
 \r
+/* The 'check' timer, as described at the top of this file. */\r
+static xTimerHandle xCheckTimer = NULL;\r
+\r
 /*-----------------------------------------------------------*/\r
+volatile int xyz = 1;\r
 \r
-int main(void)\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
+//     xTaskCreate( vRegisterTest1, ( const signed char * const ) "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) 0, tskIDLE_PRIORITY, NULL );\r
+//     xTaskCreate( vRegisterTest2, ( const signed char * const ) "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) 0, 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
+//     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
+//     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
+//     vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );\r
+\r
+       /* Create the 'check' timer - the timer that periodically calls the\r
+       check function as described at the top of this file.  Note that, for\r
+       the reasons stated in the comments above the call to\r
+       vStartTimerDemoTask(), that the check timer is not actually started\r
+       until after the scheduler has been started. */\r
+       xCheckTimer = xTimerCreate( ( const signed char * ) "Check timer", mainNO_ERROR_CHECK_TIMER_PERIOD, pdTRUE, ( void * ) 0, vCheckTimerCallback );\r
+\r
+       /* Ensure the check timer will start running as soon as the scheduler\r
+       starts.  The block time is set to 0 (mainDONT_BLOCK), but would be\r
+       ingnored at this point anyway as block times can only be specified when\r
+       the scheduler is running. */\r
+       xTimerStart( xCheckTimer, mainDONT_BLOCK );\r
 \r
        /* Start the tasks running. */\r
        vTaskStartScheduler();\r
@@ -293,104 +302,107 @@ int main(void)
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-static void prvCheckTask( void *pvParameters )\r
+static void vCheckTimerCallback( xTimerHandle xTimer )\r
 {\r
+extern unsigned long ulRegTest1CycleCount, ulRegTest2CycleCount;\r
 static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL;\r
-portTickType xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME;\r
-extern void vSetupHighFrequencyTimer( void );\r
+static long lErrorAlreadyLatched = pdFALSE;\r
 \r
-       /* Initialise xNextWakeTime - this only needs to be done once. */\r
-       xNextWakeTime = xTaskGetTickCount();\r
+       /* This is the callback function used by the 'check' timer, as described\r
+       at the top of this file. */\r
 \r
-       for( ;; )\r
+#if 0\r
+       /* Check the standard demo tasks are running without error. */\r
+       if( xAreGenericQueueTasksStillRunning() != pdTRUE )\r
        {\r
-               /* Place this task in the blocked state until it is time to run again. */\r
-               vTaskDelayUntil( &xNextWakeTime, xCycleFrequency );\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
-               /* 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
+       if( xAreQueuePeekTasksStillRunning() != pdTRUE )\r
+       {\r
+               pcStatusMessage = "Error: QueuePeek\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
+       if( xAreBlockingQueuesStillRunning() != pdTRUE )\r
+       {\r
+               pcStatusMessage = "Error: BlockQueue\r\n";\r
+               xPrintf( pcStatusMessage );\r
+       }\r
 \r
-               if( ulRegTest2CycleCount == ulLastRegTest2CycleCount )\r
-               {\r
-                       pcStatusMessage = "Error: RegTest2\r\n";\r
-                       xPrintf( pcStatusMessage );\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
-               ulLastRegTest1CycleCount = ulRegTest1CycleCount;\r
-               ulLastRegTest2CycleCount = ulRegTest2CycleCount;\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
-               /* 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
+       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
+#endif //_RB_\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
+       if( pcStatusMessage != NULL )\r
+       {\r
+               if( lErrorAlreadyLatched == pdFALSE )\r
                {\r
-                       xCycleFrequency = mainERROR_CYCLE_TIME;\r
+                       /* Ensure the LED toggles at a faster rate if an error has occurred.\r
+                       This is called from a timer callback so must not attempt to block. */
+                       xTimerChangePeriod( xTimer, mainERROR_CHECK_TIMER_PERIOD, mainDONT_BLOCK );\r
+\r
+                       /* Just to ensure the timer period is not changed on each execution\r
+                       of the callback. */
+                       lErrorAlreadyLatched = pdTRUE;\r
                }\r
        }\r
 }\r
@@ -400,7 +412,8 @@ void vApplicationSetupTimerInterrupt( void )
 {\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
+//const unsigned long ulCounterValue = ( ( XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ / configTICK_RATE_HZ ) - 1UL );\r
+const unsigned long ulCounterValue = ( ( ( XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ / configTICK_RATE_HZ ) - 1UL ) ) * 2UL; //_RB_ there is a clock set up incorrectly somwehre, the *2 should not be required.\r
 extern void vTickISR( void *pvUnused );\r
 \r
        /* Initialise the timer/counter. */\r
@@ -472,30 +485,6 @@ void vApplicationIdleHook( void )
 }\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
@@ -552,8 +541,21 @@ const unsigned char ucSetToOutput = 0U;
 #endif //_RB_\r
 \r
        #ifdef MICROBLAZE_EXCEPTIONS_ENABLED\r
-               microblaze_enable_exceptions();\r
+//_RB_         microblaze_enable_exceptions();\r
        #endif\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
+extern void vAssertCalled( char *pcFile, long lLine )\r
+{\r
+volatile unsigned long ul = 1;\r
+\r
+       taskDISABLE_INTERRUPTS();\r
+       while( ul == 1 )\r
+       {\r
+               /* Just for somewhere to put a breakpoint. */\r
+               portNOP();\r
+       }\r
+       taskENABLE_INTERRUPTS();\r
+}\r
+\r