]> git.sur5r.net Git - freertos/commitdiff
Fix Xtensa project file and some documentation improvements.
authorgaurav-aws <gaurav-aws@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 2 Oct 2018 23:54:51 +0000 (23:54 +0000)
committergaurav-aws <gaurav-aws@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 2 Oct 2018 23:54:51 +0000 (23:54 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2587 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC/.cproject [deleted file]
FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC/.project
FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC/FreeRTOSConfig.h
FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC/IntQueueTimer.c
FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC/IntQueueTimer.h
FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC/main.c
FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC/main_blinky.c
FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC/main_full.c
FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC/regtest_xtensa.S

diff --git a/FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC/.cproject b/FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC/.cproject
deleted file mode 100644 (file)
index a574d0e..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">\r
-       <storageModule moduleId="org.eclipse.cdt.core.settings">\r
-               <buildSystem id="Xtensa.600602548">\r
-                       <storageModule id="Xtensa.600602548" moduleId="org.eclipse.cdt.core.settings"/>\r
-               </buildSystem>\r
-               <cconfiguration id="Xtensa.600602548">\r
-                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">\r
-                               <configuration buildProperties="" description="" errorParsers="org.eclipse.cdt.core.VCErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.CWDLocator;com.tensilica.xide.cdt.XCCErrorParser;org.eclipse.cdt.core.GASErrorParser;com.tensilica.xide.cdt.XtLDErrorParser;com.tensilica.xide.cdt.TCErrorParser;com.tensilica.xide.cdt.FlexLmErrorParser" id="Xtensa.600602548" name="Xtensa" parent="org.eclipse.cdt.build.core.prefbase.cfg">\r
-                                       <folderInfo id="Xtensa.600602548." name="/" resourcePath="">\r
-                                               <toolChain errorParsers="" id="org.eclipse.cdt.build.core.prefbase.toolchain.1124911838" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">\r
-                                                       <targetPlatform binaryParser="com.tensilica.xide.cdt.XtensaELF" id="org.eclipse.cdt.build.core.prefbase.toolchain.1124911838.1653706502" name=""/>\r
-                                                       <builder command="${default_xttools_make_path}" enableAutoBuild="false" errorParsers="org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.CWDLocator" id="org.eclipse.cdt.build.core.settings.default.builder.1420142413" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder">\r
-                                                               <outputEntries>\r
-                                                                       <entry excluding="**/.genned|**/*.pstamp|**/*.props|**/*.d|**/objFiles.list|**/*.interlock|**/*.icmiss|**/*.dcmiss|**/*.icmiss_cyc|**/*.dcmiss_cyc|**/*.cc_miss|**/*.cc_miss_cyc|**/*.cyc|**/*.insn|**/*.bdelay" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="bin"/>\r
-                                                               </outputEntries>\r
-                                                       </builder>\r
-                                                       <tool errorParsers="org.eclipse.cdt.core.VCErrorParser;org.eclipse.cdt.core.GASErrorParser" id="org.eclipse.cdt.build.core.settings.holder.libs.283188354" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>\r
-                                                       <tool errorParsers="org.eclipse.cdt.core.VCErrorParser;org.eclipse.cdt.core.GASErrorParser" id="org.eclipse.cdt.build.core.settings.holder.1363672131" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">\r
-                                                               <option id="org.eclipse.cdt.build.core.settings.holder.incpaths.818579882" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/builds/RG-2017.8-win32/sample_controller/xtensa-elf/arch/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/builds/RG-2017.8-win32/sample_controller/xtensa-elf/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/tools/RG-2017.8-win32/XtensaTools/lib/xcc/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/tools/RG-2017.8-win32/XtensaTools/xtensa-elf/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/builds/RG-2017.8-win32/sample_controller/xtensa-elf/include/xcc/c++"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/builds/RG-2017.8-win32/sample_controller/xtensa-elf/include/xcc/c++/xtensa-elf"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/Users/ribarry/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/Users/ribarry/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/Common/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/Users/ribarry/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Source/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/Users/ribarry/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Source/portable/XCC/Xtensa"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;../${workspace_loc:RTOSDemo\FreeRTOS_Source\include}&quot;"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;../${workspace_loc:RTOSDemo\FreeRTOS_Source\portable\XCC}&quot;"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;C:\Users\ribarry\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Tensilica_Simulator_Xplorer_XCC&quot;"/>\r
-                                                               </option>\r
-                                                               <option id="org.eclipse.cdt.build.core.settings.holder.symbols.1072492848" name="Symbols" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols">\r
-                                                                       <listOptionValue builtIn="false" value="__CHAR_BIT__=8"/>\r
-                                                                       <listOptionValue builtIn="false" value="__WCHAR_MAX__=65535U"/>\r
-                                                                       <listOptionValue builtIn="false" value="__FLT_EVAL_METHOD__=0"/>\r
-                                                                       <listOptionValue builtIn="false" value="__FINITE_MATH_ONLY__=0"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GNUC_PATCHLEVEL__=0"/>\r
-                                                                       <listOptionValue builtIn="false" value="__SHRT_MAX__=32767"/>\r
-                                                                       <listOptionValue builtIn="false" value="__UINTMAX_TYPE__=long"/>\r
-                                                                       <listOptionValue builtIn="false" value="__CHAR_UNSIGNED__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XCC__=12000"/>\r
-                                                                       <listOptionValue builtIn="false" value="__SCHAR_MAX__=127"/>\r
-                                                                       <listOptionValue builtIn="false" value="__USER_LABEL_PREFIX__"/>\r
-                                                                       <listOptionValue builtIn="false" value="__STDC_HOSTED__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA_EL__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XCC_MINOR__=8"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GNUC__=4"/>\r
-                                                                       <listOptionValue builtIn="false" value="__LONG_LONG_MAX__=9223372036854775807LL"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GXX_ABI_VERSION=1002"/>\r
-                                                                       <listOptionValue builtIn="false" value="__REGISTER_PREFIX__"/>\r
-                                                                       <listOptionValue builtIn="false" value="__NO_INLINE__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__VERSION__=&quot;4.2.0"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA_SOFT_FLOAT__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__SIZE_TYPE__=unsigned"/>\r
-                                                                       <listOptionValue builtIn="false" value="__ELF__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__xtensa__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__LONG_MAX__=2147483647L"/>\r
-                                                                       <listOptionValue builtIn="false" value="__WCHAR_TYPE__=short"/>\r
-                                                                       <listOptionValue builtIn="false" value="__INT_MAX__=2147483647"/>\r
-                                                                       <listOptionValue builtIn="false" value="__WINT_TYPE__=unsigned"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA_WINDOWED_ABI__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__INTMAX_MAX__=9223372036854775807LL"/>\r
-                                                                       <listOptionValue builtIn="false" value="__INTMAX_TYPE__=long"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA_SOFT_DOUBLE__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GNUC_MINOR__=2"/>\r
-                                                                       <listOptionValue builtIn="false" value="__STDC__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__PTRDIFF_TYPE__=int"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GNUC_GNU_INLINE__=1"/>\r
-                                                               </option>\r
-                                                               <inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1208833786" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>\r
-                                                       </tool>\r
-                                                       <tool errorParsers="org.eclipse.cdt.core.VCErrorParser;org.eclipse.cdt.core.GASErrorParser" id="org.eclipse.cdt.build.core.settings.holder.29534978" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">\r
-                                                               <option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1529034681" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/builds/RG-2017.8-win32/sample_controller/xtensa-elf/arch/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/builds/RG-2017.8-win32/sample_controller/xtensa-elf/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/tools/RG-2017.8-win32/XtensaTools/lib/xcc/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/tools/RG-2017.8-win32/XtensaTools/xtensa-elf/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/builds/RG-2017.8-win32/sample_controller/xtensa-elf/include/xcc/c++"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/builds/RG-2017.8-win32/sample_controller/xtensa-elf/include/xcc/c++/xtensa-elf"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/Users/ribarry/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/Users/ribarry/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/Common/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/Users/ribarry/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Source/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/Users/ribarry/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Source/portable/XCC/Xtensa"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;../${workspace_loc:RTOSDemo\FreeRTOS_Source\include}&quot;"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;../${workspace_loc:RTOSDemo\FreeRTOS_Source\portable\XCC}&quot;"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;C:\Users\ribarry\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Tensilica_Simulator_Xplorer_XCC&quot;"/>\r
-                                                               </option>\r
-                                                               <option id="org.eclipse.cdt.build.core.settings.holder.symbols.459736431" name="Symbols" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols">\r
-                                                                       <listOptionValue builtIn="false" value="__CHAR_BIT__=8"/>\r
-                                                                       <listOptionValue builtIn="false" value="__WCHAR_MAX__=65535U"/>\r
-                                                                       <listOptionValue builtIn="false" value="__FLT_EVAL_METHOD__=0"/>\r
-                                                                       <listOptionValue builtIn="false" value="__FINITE_MATH_ONLY__=0"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GNUC_PATCHLEVEL__=0"/>\r
-                                                                       <listOptionValue builtIn="false" value="__SHRT_MAX__=32767"/>\r
-                                                                       <listOptionValue builtIn="false" value="__UINTMAX_TYPE__=long"/>\r
-                                                                       <listOptionValue builtIn="false" value="__CHAR_UNSIGNED__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XCC__=12000"/>\r
-                                                                       <listOptionValue builtIn="false" value="__SCHAR_MAX__=127"/>\r
-                                                                       <listOptionValue builtIn="false" value="__USER_LABEL_PREFIX__"/>\r
-                                                                       <listOptionValue builtIn="false" value="__STDC_HOSTED__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA_EL__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XCC_MINOR__=8"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GNUC__=4"/>\r
-                                                                       <listOptionValue builtIn="false" value="__LONG_LONG_MAX__=9223372036854775807LL"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GXX_ABI_VERSION=1002"/>\r
-                                                                       <listOptionValue builtIn="false" value="__REGISTER_PREFIX__"/>\r
-                                                                       <listOptionValue builtIn="false" value="__NO_INLINE__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__VERSION__=&quot;4.2.0"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA_SOFT_FLOAT__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__SIZE_TYPE__=unsigned"/>\r
-                                                                       <listOptionValue builtIn="false" value="__ELF__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__xtensa__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__LONG_MAX__=2147483647L"/>\r
-                                                                       <listOptionValue builtIn="false" value="__WCHAR_TYPE__=short"/>\r
-                                                                       <listOptionValue builtIn="false" value="__INT_MAX__=2147483647"/>\r
-                                                                       <listOptionValue builtIn="false" value="__WINT_TYPE__=unsigned"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA_WINDOWED_ABI__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__INTMAX_MAX__=9223372036854775807LL"/>\r
-                                                                       <listOptionValue builtIn="false" value="__INTMAX_TYPE__=long"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA_SOFT_DOUBLE__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GNUC_MINOR__=2"/>\r
-                                                                       <listOptionValue builtIn="false" value="__STDC__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__PTRDIFF_TYPE__=int"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GNUC_GNU_INLINE__=1"/>\r
-                                                               </option>\r
-                                                               <inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1865337768" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>\r
-                                                       </tool>\r
-                                                       <tool errorParsers="org.eclipse.cdt.core.VCErrorParser;org.eclipse.cdt.core.GASErrorParser" id="org.eclipse.cdt.build.core.settings.holder.541186543" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">\r
-                                                               <option id="org.eclipse.cdt.build.core.settings.holder.incpaths.2101310742" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/builds/RG-2017.8-win32/sample_controller/xtensa-elf/arch/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/builds/RG-2017.8-win32/sample_controller/xtensa-elf/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/tools/RG-2017.8-win32/XtensaTools/lib/xcc/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/tools/RG-2017.8-win32/XtensaTools/xtensa-elf/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/builds/RG-2017.8-win32/sample_controller/xtensa-elf/include/xcc/c++"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/devtools/xtensa/XtDevTools/install/builds/RG-2017.8-win32/sample_controller/xtensa-elf/include/xcc/c++/xtensa-elf"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/Users/ribarry/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/Tensilica_Simulator_Xplorer_XCC"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/Users/ribarry/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/Common/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/Users/ribarry/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Source/include"/>\r
-                                                                       <listOptionValue builtIn="false" value="C:/Users/ribarry/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Source/portable/XCC/Xtensa"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;../${workspace_loc:RTOSDemo\FreeRTOS_Source\include}&quot;"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;../${workspace_loc:RTOSDemo\FreeRTOS_Source\portable\XCC}&quot;"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;C:\Users\ribarry\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Tensilica_Simulator_Xplorer_XCC&quot;"/>\r
-                                                               </option>\r
-                                                               <option id="org.eclipse.cdt.build.core.settings.holder.symbols.740810983" name="Symbols" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols">\r
-                                                                       <listOptionValue builtIn="false" value="__CHAR_BIT__=8"/>\r
-                                                                       <listOptionValue builtIn="false" value="__WCHAR_MAX__=65535U"/>\r
-                                                                       <listOptionValue builtIn="false" value="__FLT_EVAL_METHOD__=0"/>\r
-                                                                       <listOptionValue builtIn="false" value="__FINITE_MATH_ONLY__=0"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GNUC_PATCHLEVEL__=0"/>\r
-                                                                       <listOptionValue builtIn="false" value="__SHRT_MAX__=32767"/>\r
-                                                                       <listOptionValue builtIn="false" value="__UINTMAX_TYPE__=long"/>\r
-                                                                       <listOptionValue builtIn="false" value="__CHAR_UNSIGNED__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XCC__=12000"/>\r
-                                                                       <listOptionValue builtIn="false" value="__SCHAR_MAX__=127"/>\r
-                                                                       <listOptionValue builtIn="false" value="__USER_LABEL_PREFIX__"/>\r
-                                                                       <listOptionValue builtIn="false" value="__STDC_HOSTED__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA_EL__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XCC_MINOR__=8"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GNUC__=4"/>\r
-                                                                       <listOptionValue builtIn="false" value="__LONG_LONG_MAX__=9223372036854775807LL"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GXX_ABI_VERSION=1002"/>\r
-                                                                       <listOptionValue builtIn="false" value="__REGISTER_PREFIX__"/>\r
-                                                                       <listOptionValue builtIn="false" value="__NO_INLINE__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__VERSION__=&quot;4.2.0"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA_SOFT_FLOAT__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__SIZE_TYPE__=unsigned"/>\r
-                                                                       <listOptionValue builtIn="false" value="__ELF__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__xtensa__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__LONG_MAX__=2147483647L"/>\r
-                                                                       <listOptionValue builtIn="false" value="__WCHAR_TYPE__=short"/>\r
-                                                                       <listOptionValue builtIn="false" value="__INT_MAX__=2147483647"/>\r
-                                                                       <listOptionValue builtIn="false" value="__WINT_TYPE__=unsigned"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA_WINDOWED_ABI__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__INTMAX_MAX__=9223372036854775807LL"/>\r
-                                                                       <listOptionValue builtIn="false" value="__INTMAX_TYPE__=long"/>\r
-                                                                       <listOptionValue builtIn="false" value="__XTENSA_SOFT_DOUBLE__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GNUC_MINOR__=2"/>\r
-                                                                       <listOptionValue builtIn="false" value="__STDC__=1"/>\r
-                                                                       <listOptionValue builtIn="false" value="__PTRDIFF_TYPE__=int"/>\r
-                                                                       <listOptionValue builtIn="false" value="__GNUC_GNU_INLINE__=1"/>\r
-                                                               </option>\r
-                                                               <inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1982908514" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>\r
-                                                       </tool>\r
-                                               </toolChain>\r
-                                       </folderInfo>\r
-                               </configuration>\r
-                       </storageModule>\r
-                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="Xtensa.600602548" moduleId="org.eclipse.cdt.core.settings" name="Xtensa">\r
-                               <externalSettings/>\r
-                               <extensions>\r
-                                       <extension id="com.tensilica.xide.cdt.XtensaELF" point="org.eclipse.cdt.core.BinaryParser"/>\r
-                                       <extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
-                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
-                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>\r
-                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
-                                       <extension id="com.tensilica.xide.cdt.FlexLmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
-                                       <extension id="com.tensilica.xide.cdt.TCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
-                                       <extension id="com.tensilica.xide.cdt.XtLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
-                                       <extension id="com.tensilica.xide.cdt.XCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
-                               </extensions>\r
-                       </storageModule>\r
-                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>\r
-               </cconfiguration>\r
-       </storageModule>\r
-       <storageModule moduleId="cdtBuildSystem" version="4.0.0">\r
-               <project id="RTOSDemo.null.2024905137" name="RTOSDemo"/>\r
-       </storageModule>\r
-       <storageModule moduleId="scannerConfiguration">\r
-               <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>\r
-               <scannerConfigBuildInfo instanceId="Xtensa.600602548">\r
-                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>\r
-               </scannerConfigBuildInfo>\r
-       </storageModule>\r
-</cproject>\r
index e885f1a70d31ccdef3acb664c13be0087e261042..51db76b71e198ea795f400373b5c3fd3a0c996d9 100644 (file)
                        <type>1</type>\r
                        <locationURI>PARENT-1-PROJECT_LOC/Common/Minimal/GenQTest.c</locationURI>\r
                </link>\r
+               <link>\r
+                       <name>CommonDemoTasks/IntQueue.c</name>\r
+                       <type>1</type>\r
+                       <locationURI>PARENT-1-PROJECT_LOC/Common/Minimal/IntQueue.c</locationURI>\r
+               </link>\r
                <link>\r
                        <name>CommonDemoTasks/IntSemTest.c</name>\r
                        <type>1</type>\r
                        <type>1</type>\r
                        <locationURI>PARENT-1-PROJECT_LOC/Common/Minimal/death.c</locationURI>\r
                </link>\r
-               <link>\r
-                       <name>CommonDemoTasks/dynamic.c</name>\r
-                       <type>1</type>\r
-                       <locationURI>PARENT-1-PROJECT_LOC/Common/Minimal/dynamic.c</locationURI>\r
-               </link>\r
                <link>\r
                        <name>CommonDemoTasks/flop.c</name>\r
                        <type>1</type>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/port.c</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/port.c</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/port.c</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/portasm.S</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/portasm.S</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/portasm.S</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/portbenchmark.h</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/portbenchmark.h</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/portbenchmark.h</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/portclib.c</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/portclib.c</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/portclib.c</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/portmacro.h</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/portmacro.h</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/portmacro.h</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/porttrace.h</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/porttrace.h</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/porttrace.h</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/readme_xtensa.txt</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/readme_xtensa.txt</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/readme_xtensa.txt</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/xtensa_api.h</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/xtensa_api.h</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/xtensa_api.h</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/xtensa_config.h</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/xtensa_config.h</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/xtensa_config.h</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/xtensa_context.S</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/xtensa_context.S</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/xtensa_context.S</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/xtensa_context.h</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/xtensa_context.h</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/xtensa_context.h</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/xtensa_init.c</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/xtensa_init.c</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/xtensa_init.c</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/xtensa_intr.c</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/xtensa_intr.c</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/xtensa_intr.c</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/xtensa_intr_asm.S</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/xtensa_intr_asm.S</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/xtensa_intr_asm.S</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/xtensa_overlay_os_hook.c</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/xtensa_overlay_os_hook.c</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/xtensa_overlay_os_hook.c</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/xtensa_rtos.h</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/xtensa_rtos.h</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/xtensa_rtos.h</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/xtensa_timer.h</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/xtensa_timer.h</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/xtensa_timer.h</locationURI>\r
                </link>\r
                <link>\r
                        <name>FreeRTOS_Source/portable/XCC/xtensa_vectors.S</name>\r
                        <type>1</type>\r
-                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/XCC/Xtensa/xtensa_vectors.S</locationURI>\r
+                       <locationURI>PARENT-2-PROJECT_LOC/Source/portable/ThirdParty/XCC/Xtensa/xtensa_vectors.S</locationURI>\r
                </link>\r
        </linkedResources>\r
 </projectDescription>\r
index 397c404a422fef05470206a398be0d809fa08ab2..0af2ca0bffff5c424497937d9288bd1d1e1c99bb 100644 (file)
 #define FREERTOS_CONFIG_H\r
 \r
 \r
-/* Required for configuration-dependent settings */\r
+/* Required for configuration-dependent settings. */\r
 #include "xtensa_config.h"\r
 \r
-/*-----------------------------------------------------------\r
+/*---------------------------------------------------------------------------\r
  * Application specific definitions.\r
  *\r
  * These definitions should be adjusted for your particular hardware and\r
  * application requirements.\r
  *\r
- * Note that the default heap size is deliberately kept small so that\r
- * the build is more likely to succeed for configurations with limited\r
- * memory.\r
- *\r
  * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE\r
- * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. \r
- *----------------------------------------------------------*/\r
+ * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.\r
+ *---------------------------------------------------------------------------\r
+ */\r
 \r
-#define configUSE_PREEMPTION                   1\r
-#define configUSE_IDLE_HOOK                            0\r
+#define configUSE_PREEMPTION                                                   1\r
+#define configUSE_IDLE_HOOK                                                            0\r
 \r
 #ifdef SMALL_TEST\r
-#define configUSE_TICK_HOOK                            0\r
+       #define configUSE_TICK_HOOK                                                     0\r
 #else\r
-#define configUSE_TICK_HOOK                            1\r
+       #define configUSE_TICK_HOOK                                                     1\r
 #endif\r
 \r
-#define configTICK_RATE_HZ                             ( 1000 )\r
+#define configTICK_RATE_HZ                                                             ( 1000 )\r
 \r
 /* Default clock rate for simulator */\r
-#define configCPU_CLOCK_HZ                             10000000 //_RB_ was 2MHz\r
+#define configCPU_CLOCK_HZ                                                             10000000\r
 \r
-/* This has impact on speed of search for highest priority */\r
-#ifdef SMALL_TEST\r
-#define configMAX_PRIORITIES                   ( 7 )\r
-#else\r
-#define configMAX_PRIORITIES                   ( 7 ) //_RB_\r
-#endif\r
+/* Max possible priorities. */\r
+#define configMAX_PRIORITIES                                                   ( 7 )\r
 \r
-/* Minimal stack size. This may need to be increased for your application */\r
-/* NOTE: The FreeRTOS demos may not work reliably with stack size < 4KB.  */\r
-/* The Xtensa-specific examples should be fine with XT_STACK_MIN_SIZE.    */\r
-/* NOTE: the size is defined in terms of StackType_t units not bytes.     */\r
-#if !(defined XT_STACK_MIN_SIZE)\r
-#error XT_STACK_MIN_SIZE not defined, did you include xtensa_config.h ?\r
+/**\r
+ * Minimal stack size. This may need to be increased for your application.\r
+ *\r
+ * @note: The FreeRTOS demos may not work reliably with stack size < 4KB. The\r
+ * Xtensa-specific examples should be fine with XT_STACK_MIN_SIZE.\r
+ *\r
+ * @note: The size is defined in terms of StackType_t units not bytes.\r
+ */\r
+#if !( defined XT_STACK_MIN_SIZE )\r
+       #error XT_STACK_MIN_SIZE not defined, did you include xtensa_config.h ?\r
 #endif\r
 \r
 #ifdef SMALL_TEST\r
-#define configMINIMAL_STACK_SIZE               (XT_STACK_MIN_SIZE / sizeof(StackType_t))\r
+       #define configMINIMAL_STACK_SIZE                                        ( XT_STACK_MIN_SIZE / sizeof( StackType_t ) )\r
 #else\r
-#define configMINIMAL_STACK_SIZE               (XT_STACK_MIN_SIZE > 1024 ? XT_STACK_MIN_SIZE : 1024)\r
+       #define configMINIMAL_STACK_SIZE                                        ( XT_STACK_MIN_SIZE > 1024 ? XT_STACK_MIN_SIZE : 1024 )\r
 #endif\r
 \r
-/* The Xtensa port uses a separate interrupt stack. Adjust the stack size */\r
-/* to suit the needs of your specific application.                        */\r
-/* NOTE: the size is defined in bytes.                                    */\r
+/**\r
+ * The Xtensa port uses a separate interrupt stack. Adjust the stack size  to\r
+ * suit the needs of your specific application.\r
+ *\r
+ * @note: the size is defined in bytes.\r
+ */\r
 #ifndef configISR_STACK_SIZE\r
-#define configISR_STACK_SIZE                   2048\r
+       #define configISR_STACK_SIZE                                            2048\r
 #endif\r
 \r
-/* Minimal heap size to make sure examples can run on memory limited\r
-   configs. Adjust this to suit your system. */\r
+/**\r
+ * Minimal heap size to make sure examples can run on memory limited configs.\r
+ * Adjust this to suit your system.\r
+ */\r
 #ifdef SMALL_TEST\r
-#define configTOTAL_HEAP_SIZE                  ( ( size_t ) (16 * 1024) )\r
+       #define configTOTAL_HEAP_SIZE                                           ( ( size_t ) ( 16 * 1024 ) )\r
 #else\r
-#define configTOTAL_HEAP_SIZE                  ( ( size_t ) (512 * 1024) )\r
+       #define configTOTAL_HEAP_SIZE                                           ( ( size_t ) ( 512 * 1024 ) )\r
 #endif\r
 \r
-#define configMAX_TASK_NAME_LEN                        ( 8 )\r
-#define configUSE_TRACE_FACILITY               0               /* Used by vTaskList in main.c */\r
-#define configUSE_STATS_FORMATTING_FUNCTIONS   0       /* Used by vTaskList in main.c */\r
-#define configUSE_TRACE_FACILITY_2      0              /* Provided by Xtensa port patch */\r
-#define configBENCHMARK                                        0               /* Provided by Xtensa port patch */\r
-#define configUSE_16_BIT_TICKS                 0\r
-#define configIDLE_SHOULD_YIELD                        0\r
-#define configQUEUE_REGISTRY_SIZE              0\r
+#define configMAX_TASK_NAME_LEN                                                        ( 8 )\r
+#define configUSE_TRACE_FACILITY                                               0\r
+#define configUSE_STATS_FORMATTING_FUNCTIONS                   0\r
+#define configUSE_TRACE_FACILITY_2                                             0       /* Provided by Xtensa port patch. */\r
+#define configBENCHMARK                                                                        0       /* Provided by Xtensa port patch. */\r
+#define configUSE_16_BIT_TICKS                                                 0\r
+#define configIDLE_SHOULD_YIELD                                                        0\r
+#define configQUEUE_REGISTRY_SIZE                                              0\r
 \r
 #ifdef SMALL_TEST\r
-#define configUSE_MUTEXES                              1\r
-#define configUSE_RECURSIVE_MUTEXES            1\r
-#define configUSE_COUNTING_SEMAPHORES  1\r
-#define configCHECK_FOR_STACK_OVERFLOW 0\r
+       #define configUSE_MUTEXES                                                       1\r
+       #define configUSE_RECURSIVE_MUTEXES                                     1\r
+       #define configUSE_COUNTING_SEMAPHORES                           1\r
+       #define configCHECK_FOR_STACK_OVERFLOW                          0\r
 #else\r
-#define configUSE_MUTEXES                              1\r
-#define configUSE_RECURSIVE_MUTEXES            1\r
-#define configUSE_COUNTING_SEMAPHORES  1\r
-#define configCHECK_FOR_STACK_OVERFLOW 2\r
+       #define configUSE_MUTEXES                                                       1\r
+       #define configUSE_RECURSIVE_MUTEXES                                     1\r
+       #define configUSE_COUNTING_SEMAPHORES                           1\r
+       #define configCHECK_FOR_STACK_OVERFLOW                          2\r
 #endif\r
 \r
 /* Co-routine definitions. */\r
-#define configUSE_CO_ROUTINES                  0\r
-#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\r
-\r
-/* Set the following definitions to 1 to include the API function, or zero\r
-   to exclude the API function. */\r
-#define INCLUDE_vTaskPrioritySet                       1\r
-#define INCLUDE_uxTaskPriorityGet                      1\r
-#define INCLUDE_vTaskDelete                                    1\r
-#define INCLUDE_vTaskCleanUpResources          0\r
-#define INCLUDE_vTaskSuspend                           1\r
-#define INCLUDE_vTaskDelayUntil                                1\r
-#define INCLUDE_vTaskDelay                                     1\r
-#define INCLUDE_uxTaskGetStackHighWaterMark    1\r
-#define INCLUDE_xTaskAbortDelay                                1\r
-#define INCLUDE_xTaskGetHandle                                 1\r
-#define INCLUDE_xSemaphoreGetMutexHolder       1\r
-\r
-/* The priority at which the tick interrupt runs.  This should probably be\r
-   kept at 1. */\r
-#define configKERNEL_INTERRUPT_PRIORITY                1\r
-\r
-/* The maximum interrupt priority from which FreeRTOS.org API functions can\r
-   be called.  Only API functions that end in ...FromISR() can be used within\r
-   interrupts. */\r
-#define configMAX_SYSCALL_INTERRUPT_PRIORITY   XCHAL_EXCM_LEVEL\r
-\r
-/* XT_USE_THREAD_SAFE_CLIB is defined in xtensa_config.h and can be\r
-   overridden from the compiler/make command line. The small test\r
-   however always disables C lib thread safety to minimize size. */\r
+#define configUSE_CO_ROUTINES                                                  0\r
+#define configMAX_CO_ROUTINE_PRIORITIES                                        ( 2 )\r
+\r
+/**\r
+ * Set the following definitions to 1 to include the API function, or zero to\r
+ * exclude the API function.\r
+ */\r
+#define INCLUDE_vTaskPrioritySet                                               1\r
+#define INCLUDE_uxTaskPriorityGet                                              1\r
+#define INCLUDE_vTaskDelete                                                            1\r
+#define INCLUDE_vTaskCleanUpResources                                  0\r
+#define INCLUDE_vTaskSuspend                                                   1\r
+#define INCLUDE_vTaskDelayUntil                                                        1\r
+#define INCLUDE_vTaskDelay                                                             1\r
+#define INCLUDE_uxTaskGetStackHighWaterMark                            1\r
+#define INCLUDE_xTaskAbortDelay                                                        1\r
+#define INCLUDE_xTaskGetHandle                                                         1\r
+#define INCLUDE_xSemaphoreGetMutexHolder                               1\r
+\r
+/**\r
+ * The priority at which the tick interrupt runs.  This should probably be kept\r
+ * at 1.\r
+ */\r
+#define configKERNEL_INTERRUPT_PRIORITY                                        1\r
+\r
+/**\r
+ * The maximum interrupt priority from which FreeRTOS.org API functions can be\r
+ * called.  Only API functions that end in ...FromISR() can be used within\r
+ * interrupts.\r
+ */\r
+#define configMAX_SYSCALL_INTERRUPT_PRIORITY                   XCHAL_EXCM_LEVEL\r
+\r
+/**\r
+ * XT_USE_THREAD_SAFE_CLIB is defined in xtensa_config.h and can be overridden\r
+ * from the compiler/make command line. The small test however always disables C\r
+ * lib thread safety to minimize size.\r
+ */\r
 #ifdef SMALL_TEST\r
-  #define configUSE_NEWLIB_REENTRANT           0\r
-#else\r
-#if (XT_USE_THREAD_SAFE_CLIB > 0u)\r
-  #if XT_HAVE_THREAD_SAFE_CLIB\r
-    #define configUSE_NEWLIB_REENTRANT         0 //_RB_ 1\r
-  #else\r
-    #error "Error: thread-safe C library support not available for this C library."\r
-  #endif\r
+       #define configUSE_NEWLIB_REENTRANT                                      0\r
 #else\r
-  #define configUSE_NEWLIB_REENTRANT           0\r
-#endif\r
+       #if ( XT_USE_THREAD_SAFE_CLIB > 0u )\r
+               #if XT_HAVE_THREAD_SAFE_CLIB\r
+                       #define configUSE_NEWLIB_REENTRANT                      0\r
+               #else\r
+                       #error "Error: thread-safe C library support not available for this C library."\r
+               #endif\r
+       #else\r
+               #define configUSE_NEWLIB_REENTRANT                              0\r
+       #endif\r
 #endif\r
 \r
 /* Test FreeRTOS timers (with timer task) and more. */\r
-/* Some files don't compile if this flag is disabled */\r
-#define configUSE_TIMERS                    1\r
-#define configTIMER_TASK_PRIORITY           ( configMAX_PRIORITIES - 2 )\r
-#define configTIMER_QUEUE_LENGTH            10\r
-#define configTIMER_TASK_STACK_DEPTH        configMINIMAL_STACK_SIZE\r
+#define configUSE_TIMERS                                                               1\r
+#define configTIMER_TASK_PRIORITY                                              ( configMAX_PRIORITIES - 2 )\r
+#define configTIMER_QUEUE_LENGTH                                               10\r
+#define configTIMER_TASK_STACK_DEPTH                                   configMINIMAL_STACK_SIZE\r
 \r
 #ifdef SMALL_TEST\r
-#define INCLUDE_xTimerPendFunctionCall         0\r
-#define INCLUDE_eTaskGetState                          0\r
-#define configUSE_QUEUE_SETS                           0\r
+       #define INCLUDE_xTimerPendFunctionCall                          0\r
+       #define INCLUDE_eTaskGetState                                           0\r
+       #define configUSE_QUEUE_SETS                                            0\r
 #else\r
-#define INCLUDE_xTimerPendFunctionCall      1\r
-#define INCLUDE_eTaskGetState               1\r
-#define configUSE_QUEUE_SETS                1\r
+       #define INCLUDE_xTimerPendFunctionCall                          1\r
+       #define INCLUDE_eTaskGetState                                           1\r
+       #define configUSE_QUEUE_SETS                                            1\r
 #endif\r
 \r
-/* Specific config for XTENSA (these can be deleted and they will take default values) */\r
-\r
-#if (!defined XT_SIMULATOR) && (!defined XT_BOARD)\r
-#define configXT_SIMULATOR                  1   /* Simulator mode */\r
-#define configXT_BOARD                      0   /* Board mode */\r
+/**\r
+ * Specific config for XTENSA (these can be deleted and they will take default\r
+ * values).\r
+ */\r
+#if ( !defined XT_SIMULATOR ) && ( !defined XT_BOARD )\r
+       #define configXT_SIMULATOR                                                      1       /* Simulator mode. */\r
+       #define configXT_BOARD                                                          0       /* Board mode. */\r
 #endif\r
 \r
 #ifndef SMALL_TEST\r
+       #if ( !defined XT_INTEXC_HOOKS )\r
+               #define configXT_INTEXC_HOOKS                                   1       /* Exception hooks used by certain tests. */\r
+       #endif\r
 \r
-#if (!defined XT_INTEXC_HOOKS)\r
-#define configXT_INTEXC_HOOKS               1   /* Exception hooks used by certain tests */\r
-#endif\r
-\r
-#if configUSE_TRACE_FACILITY_2\r
-#define configASSERT_2                                         1       /* Specific to Xtensa port */\r
+       #if configUSE_TRACE_FACILITY_2\r
+               #define configASSERT_2                                                  1       /* Specific to Xtensa port. */\r
+       #endif\r
 #endif\r
 \r
-#endif\r
-\r
-/* It is a good idea to define configASSERT() while developing.  configASSERT()\r
-uses the same semantics as the standard C assert() macro. */\r
+/**\r
+ * It is a good idea to define configASSERT() while developing.  configASSERT()\r
+ * uses the same semantics as the standard C assert() macro.\r
+ */\r
 #if !defined __ASSEMBLER__\r
        extern void vAssertCalled( unsigned long ulLine, const char * const pcFileName );\r
 #endif\r
 #define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __LINE__, __FILE__ )\r
 \r
-#define configSTREAM_BUFFER_TRIGGER_LEVEL_TEST_MARGIN ( 2 )\r
+#define configSTREAM_BUFFER_TRIGGER_LEVEL_TEST_MARGIN  ( 2 )   /* Used by stream buffer tests. */\r
 \r
 #endif /* FREERTOS_CONFIG_H */\r
-\r
index 8e11945116cef76890f474409c5caf4c7870949c..d413d99d4144a7411d84df487f93fedf09591919 100644 (file)
 \r
 /* Check if Timer1 is available. */\r
 #if XCHAL_TIMER1_INTERRUPT != XTHAL_TIMER_UNCONFIGURED\r
-       #if XCHAL_INT_LEVEL(XCHAL_TIMER1_INTERRUPT) <= XCHAL_EXCM_LEVEL\r
-               #define SECOND_TIMER_AVAILABLE    1\r
+       #if XCHAL_INT_LEVEL( XCHAL_TIMER1_INTERRUPT ) <= XCHAL_EXCM_LEVEL\r
+               #define SECOND_TIMER_AVAILABLE          1\r
        #endif\r
 #endif\r
 \r
 #ifndef SECOND_TIMER_AVAILABLE\r
-       #define SECOND_TIMER_AVAILABLE 0\r
+       #define SECOND_TIMER_AVAILABLE                  0\r
 #endif\r
 \r
-/* Timer0 is used to drive systick and therefore we use Timer1\r
+/**\r
+ * Timer0 is used to drive systick and therefore we use Timer1\r
  * as second interrupt which runs on a higher priority than\r
  * Timer0. This ensures that systick will get interrupted by\r
- * this timer and hence we can test interrupt nesting. */\r
-#define SECOND_TIMER_INDEX          1\r
+ * this timer and hence we can test interrupt nesting.\r
+ */\r
+#define SECOND_TIMER_INDEX                                     1\r
 \r
-/* Frequency of the second timer - This timer is configured at\r
- * a frequency offset of 17 from the systick timer. */\r
-#define SECOND_TIMER_TICK_RATE_HZ   ( configTICK_RATE_HZ + 17 )\r
-#define SECOND_TIMER_TICK_DIVISOR   ( configCPU_CLOCK_HZ / SECOND_TIMER_TICK_RATE_HZ )\r
+/**\r
+ * Frequency of the second timer - This timer is configured at\r
+ * a frequency offset of 17 from the systick timer.\r
+ */\r
+#define SECOND_TIMER_TICK_RATE_HZ                      ( configTICK_RATE_HZ + 17 )\r
+#define SECOND_TIMER_TICK_DIVISOR                      ( configCPU_CLOCK_HZ / SECOND_TIMER_TICK_RATE_HZ )\r
 /*-----------------------------------------------------------*/\r
 \r
 /* Defined in main_full.c. */\r
 extern BaseType_t xTimerForQueueTestInitialized;\r
 /*-----------------------------------------------------------*/\r
 \r
-/* Interrupt handler for timer interrupt. */\r
+/**\r
+ * Interrupt handler for timer interrupt.\r
+ */\r
 #if( SECOND_TIMER_AVAILABLE == 1 )\r
        static void prvTimer2Handler( void *arg );\r
 #endif /* SECOND_TIMER_AVAILABLE */\r
@@ -103,13 +109,15 @@ unsigned currentCycleCount, firstComparatorValue;
 /*-----------------------------------------------------------*/\r
 \r
 /*\r
- * Xtensa timers work by comparing a cycle counter with a preset value.  Once the match occurs\r
- * an interrupt is generated, and the handler has to set a new cycle count into the comparator.\r
- * To avoid clock drift due to interrupt latency, the new cycle count is computed from the old,\r
- * not the time the interrupt was serviced. However if a timer interrupt is ever serviced more\r
- * than one tick late, it is necessary to process multiple ticks until the new cycle count is\r
- * in the future, otherwise the next timer interrupt would not occur until after the cycle\r
- * counter had wrapped (2^32 cycles later).\r
+ * Xtensa timers work by comparing a cycle counter with a preset value.\r
+ * Once the match occurs an interrupt is generated, and the handler has\r
+ * to set a new cycle count into the comparator. To avoid clock drift\r
+ * due to interrupt latency, the new cycle count is computed from the\r
+ * old, not the time the interrupt was serviced. However if a timer\r
+ * interrupt is ever serviced more than one tick late, it is necessary\r
+ * to process multiple ticks until the new cycle count is in the future,\r
+ * otherwise the next timer interrupt would not occur until after the\r
+ * cycle counter had wrapped (2^32 cycles later).\r
 \r
 do {\r
     ticks++;\r
index b7b4a842bffd05034d70dab69b46881ec81079ff..8a9c5b8bebb62d642b4924c0761a5954025d4788 100644 (file)
@@ -29,8 +29,9 @@
 #ifndef INT_QUEUE_TIMER_H\r
 #define INT_QUEUE_TIMER_H\r
 \r
+/**\r
+ * The function called from interrupt tests to initialise timer.\r
+ */\r
 void vInitialiseTimerForIntQueueTest( void );\r
-void vTimer2Handler_C( void );\r
 \r
 #endif /* INT_QUEUE_TIMER_H */\r
-\r
index 57c96c9b003bba8a83758bc00c979e5fbcceac53..7b6423b8e02caac809d77ea06b3d97e87d281b00 100644 (file)
  */\r
 \r
 /******************************************************************************\r
- * This project provides two demo applications.  A simple blinky style project,\r
- * and a more comprehensive test and demo application.  The\r
- * mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting is used to select between the two.\r
- * The simply blinky demo is implemented and described in main_blinky.c.  The\r
- * more comprehensive test and demo application is implemented and described in\r
- * main_full.c.\r
+ * This project provides two demo applications:\r
+ * - A simple blinky style demo application.\r
+ * - A more comprehensive test and demo application.\r
+ * The mainCREATE_SIMPLE_BLINKY_DEMO_ONLY macro is used to select between the two.\r
  *\r
- * This file implements the code that is not demo specific, including the\r
- * hardware setup and FreeRTOS hook functions.\r
+ * The simply blinky demo is implemented and described in the file main_blinky.c.\r
+ * The more comprehensive test and demo application is implemented and described\r
+ * in the file main_full.c.\r
+ *\r
+ * This file implements the code that is not demo specific, including the FreeRTOS\r
+ * hook functions.\r
  *\r
  *******************************************************************************\r
  */\r
 #include "FreeRTOS.h"\r
 #include "task.h"\r
 \r
-/* This project provides two demo applications.  A simple blinky style demo\r
-application, and a more comprehensive test and demo application.  The\r
-mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting is used to select between the two.\r
-\r
-If mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is 1 then the blinky demo will be built.\r
-The blinky demo is implemented and described in main_blinky.c.\r
-\r
-If mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is not 1 then the comprehensive test and\r
-demo application will be built.  The comprehensive test and demo application is\r
-implemented and described in main_full.c. */\r
+/**\r
+ * This project provides two demo applications:\r
+ * - A simple blinky style demo application.\r
+ * - A more comprehensive test and demo application.\r
+ * The mainCREATE_SIMPLE_BLINKY_DEMO_ONLY macro is used to select between the two.\r
+ *\r
+ * If mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1 then the blinky demo will be\r
+ * built. The blinky demo is implemented and described in main_blinky.c.\r
+ *\r
+ * If mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0 then the comprehensive test\r
+ * and demo application will be built. The comprehensive test and demo application\r
+ * is implemented and described in main_full.c.\r
+ */\r
 #define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY     0\r
-\r
 /*-----------------------------------------------------------*/\r
 \r
-/*\r
- * main_blinky() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.\r
- * main_full() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0.\r
+/**\r
+ * The entry function for the blinky demo application.\r
+ *\r
+ * This is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.\r
  */\r
 extern void main_blinky( void );\r
+\r
+/**\r
+ * The entry function for the comprehensive test and demo application.\r
+ *\r
+ * This is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0.\r
+ */\r
 extern void main_full( void );\r
 \r
-/*\r
+/**\r
  * Prototypes for the standard FreeRTOS application hook (callback) functions\r
- * implemented within this file.  See http://www.freertos.org/a00016.html .\r
+ * implemented within this file.\r
+ *\r
+ * @see http://www.freertos.org/a00016.html\r
  */\r
 void vApplicationMallocFailedHook( void );\r
 void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName );\r
 void vApplicationTickHook( void );\r
 \r
-/*\r
- * Only the comprehensive demo uses application hook (callback) functions.  See\r
- * http://www.freertos.org/a00016.html for more information.\r
+/**\r
+ * The function called from the tick hook.\r
+ *\r
+ * @note Only the comprehensive demo uses application hook (callback) functions.\r
+ *\r
+ * @see http://www.freertos.org/a00016.html\r
  */\r
 void vFullDemoTickHookFunction( void );\r
-\r
-\r
 /*-----------------------------------------------------------*/\r
 \r
 int main( void )\r
 {\r
        /* The mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting is described at the top\r
-       of this file. */\r
+        * of this file. */\r
        #if ( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1 )\r
        {\r
                main_blinky();\r
@@ -106,17 +120,17 @@ int main( void )
 void vApplicationMallocFailedHook( void )\r
 {\r
        /* vApplicationMallocFailedHook() will only be called if\r
-       configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h.  It is a hook\r
-       function that will get called if a call to pvPortMalloc() fails.\r
-       pvPortMalloc() is called internally by the kernel whenever a task, queue,\r
-       timer or semaphore is created.  It is also called by various parts of the\r
-       demo application.  If heap_1.c, heap_2.c or heap_4.c is being used, then the\r
-       size of the     heap available to pvPortMalloc() is defined by\r
-       configTOTAL_HEAP_SIZE in FreeRTOSConfig.h, and the xPortGetFreeHeapSize()\r
-       API function can be used to query the size of free heap space that remains\r
-       (although it does not provide information on how the remaining heap might be\r
-       fragmented).  See http://www.freertos.org/a00111.html for more\r
-       information. */\r
+        * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook\r
+        * function that will get called if a call to pvPortMalloc() fails.\r
+        * pvPortMalloc() is called internally by the kernel whenever a task, queue,\r
+        * timer or semaphore is created.  It is also called by various parts of the\r
+        * demo application.  If heap_1.c, heap_2.c or heap_4.c is being used, then\r
+        * the size of the      heap available to pvPortMalloc() is defined by\r
+        * configTOTAL_HEAP_SIZE in FreeRTOSConfig.h, and the xPortGetFreeHeapSize()\r
+        * API function can be used to query the size of free heap space that remains\r
+        * (although it does not provide information on how the remaining heap might be\r
+        * fragmented). See http://www.freertos.org/a00111.html for more information.\r
+        */\r
        vAssertCalled( __LINE__, __FILE__ );\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -127,10 +141,8 @@ void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )
        ( void ) pxTask;\r
 \r
        /* Run time stack overflow checking is performed if\r
-       configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2.  This hook\r
-       function is called if a stack overflow is detected.  This function is\r
-       provided as an example only as stack overflow checking does not function\r
-       when running the FreeRTOS Windows port. */\r
+        * configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2.  This hook\r
+        * function is called if a stack overflow is detected. */\r
        vAssertCalled( __LINE__, __FILE__ );\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -138,11 +150,10 @@ void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )
 void vApplicationTickHook( void )\r
 {\r
        /* This function will be called by each tick interrupt if\r
-       configUSE_TICK_HOOK is set to 1 in FreeRTOSConfig.h.  User code can be\r
-       added here, but the tick hook is called from an interrupt context, so\r
-       code must not attempt to block, and only the interrupt safe FreeRTOS API\r
-       functions can be used (those that end in FromISR()). */\r
-\r
+        * configUSE_TICK_HOOK is set to 1 in FreeRTOSConfig.h.  User code can be\r
+        * added here, but the tick hook is called from an interrupt context, so\r
+        * code must not attempt to block, and only the interrupt safe FreeRTOS API\r
+        * functions can be used (those that end in FromISR()). */\r
        #if ( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY != 1 )\r
        {\r
                vFullDemoTickHookFunction();\r
@@ -157,19 +168,17 @@ static BaseType_t xPrinted = pdFALSE;
 volatile uint32_t ulSetToNonZeroInDebuggerToContinue = 0;\r
 \r
        /* Called if an assertion passed to configASSERT() fails.  See\r
-       http://www.freertos.org/a00110.html#configASSERT for more information. */\r
+        * http://www.freertos.org/a00110.html#configASSERT for more information. */\r
 \r
        /* Parameters are not used. */\r
        ( void ) ulLine;\r
        ( void ) pcFileName;\r
 \r
-       printf( "ASSERT! Line %ld, file %s\r\n", ulLine, pcFileName );\r
-\r
-       taskENTER_CRITICAL();\r
+       taskENTER_CRITICAL();\r
        {\r
                /* You can step out of this function to debug the assertion by using\r
-               the debugger to set ulSetToNonZeroInDebuggerToContinue to a non-zero\r
-               value. */\r
+                * the debugger to set ulSetToNonZeroInDebuggerToContinue to a non-zero\r
+                * value. */\r
                while( ulSetToNonZeroInDebuggerToContinue == 0 )\r
                {\r
                        __asm volatile( "NOP" );\r
index a0a7bf72da7580802246c5069502f00a89140e31..7edb6e9056fb8ac819ea4720cae65623247d0dbe 100644 (file)
  */\r
 \r
 /******************************************************************************\r
- * NOTE 1: Windows will not be running the FreeRTOS demo threads continuously, so\r
- * do not expect to get real time behaviour from the FreeRTOS Windows port, or\r
- * this demo application.  Also, the timing information in the FreeRTOS+Trace\r
- * logs have no meaningful units.  See the documentation page for the Windows\r
- * port for further information:\r
- * http://www.freertos.org/FreeRTOS-Windows-Simulator-Emulator-for-Visual-Studio-and-Eclipse-MingW.html\r
- *\r
- * NOTE 2:  This project provides two demo applications.  A simple blinky style\r
- * project, and a more comprehensive test and demo application.  The\r
- * mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting in main.c is used to select\r
- * between the two.  See the notes on using mainCREATE_SIMPLE_BLINKY_DEMO_ONLY\r
- * in main.c.  This file implements the simply blinky version.  Console output\r
- * is used in place of the normal LED toggling.\r
- *\r
- * NOTE 3:  This file only contains the source code that is specific to the\r
+ * NOTE:  This file only contains the source code that is specific to the\r
  * basic demo.  Generic functions, such FreeRTOS hook functions, are defined\r
  * in main.c.\r
  ******************************************************************************\r
  *\r
- * main_blinky() creates one queue, one software timer, and two tasks.  It then\r
+ * main_blinky() creates one queue, one software timer, and two tasks. It then\r
  * starts the scheduler.\r
  *\r
  * The Queue Send Task:\r
  * The queue send task is implemented by the prvQueueSendTask() function in\r
  * this file.  It uses vTaskDelayUntil() to create a periodic task that sends\r
- * the value 100 to the queue every 200 milliseconds (please read the notes\r
- * above regarding the accuracy of timing under Windows).\r
+ * the value 100 to the queue every 200 milliseconds.\r
  *\r
  * The Queue Send Software Timer:\r
  * The timer is an auto-reload timer with a period of two seconds.  The timer's\r
  * message to indicate if the data came from the queue send task or the queue\r
  * send software timer.\r
  *\r
- * Expected Behaviour:\r
+ * Expected Behavior:\r
  * - The queue send task writes to the queue every 200ms, so every 200ms the\r
  *   queue receive task will output a message indicating that data was received\r
  *   on the queue from the queue send task.\r
- * - The queue send software timer has a period of two seconds, and is reset\r
- *   each time a key is pressed.  So if two seconds expire without a key being\r
- *   pressed then the queue receive task will output a message indicating that\r
- *   data was received on the queue from the queue send software timer.\r
- *\r
- * NOTE:  Console input and output relies on Windows system calls, which can\r
- * interfere with the execution of the FreeRTOS Windows port.  This demo only\r
- * uses Windows system call occasionally.  Heavier use of Windows system calls\r
- * can crash the port.\r
+ * - The queue send software timer has a period of two seconds, so every two\r
+ *   seconds the queue receive task will output a message indicating that data\r
+ *   was received on the queue from the queue send software timer.\r
  */\r
 \r
 /* Standard includes. */\r
 #include "timers.h"\r
 #include "semphr.h"\r
 \r
-/* Priorities at which the tasks are created. */\r
+/**\r
+ * Priorities at which the tasks are created.\r
+ */\r
 #define mainQUEUE_RECEIVE_TASK_PRIORITY                ( tskIDLE_PRIORITY + 2 )\r
 #define        mainQUEUE_SEND_TASK_PRIORITY            ( tskIDLE_PRIORITY + 1 )\r
 \r
-/* The rate at which data is sent to the queue.  The times are converted from\r
-milliseconds to ticks using the pdMS_TO_TICKS() macro. */\r
+/**\r
+ * The rate at which data is sent to the queue.  The times are converted from\r
+ * milliseconds to ticks using the pdMS_TO_TICKS() macro.\r
+ */\r
 #define mainTASK_SEND_FREQUENCY_MS                     pdMS_TO_TICKS( 200UL )\r
 #define mainTIMER_SEND_FREQUENCY_MS                    pdMS_TO_TICKS( 2000UL )\r
 \r
-/* The number of items the queue can hold at once. */\r
+/**\r
+ * The number of items the queue can hold at once.\r
+ */\r
 #define mainQUEUE_LENGTH                                       ( 2 )\r
 \r
-/* The values sent to the queue receive task from the queue send task and the\r
-queue send software timer respectively. */\r
+/**\r
+ * The values sent to the queue receive task from the queue send task and the\r
+ * queue send software timer respectively.\r
+ */\r
 #define mainVALUE_SENT_FROM_TASK                       ( 100UL )\r
 #define mainVALUE_SENT_FROM_TIMER                      ( 200UL )\r
-\r
 /*-----------------------------------------------------------*/\r
 \r
-/*\r
+/**\r
  * The tasks as described in the comments at the top of this file.\r
  */\r
 static void prvQueueReceiveTask( void *pvParameters );\r
 static void prvQueueSendTask( void *pvParameters );\r
 \r
-/*\r
+/**\r
  * The callback function executed when the software timer expires.\r
  */\r
 static void prvQueueSendTimerCallback( TimerHandle_t xTimerHandle );\r
-\r
 /*-----------------------------------------------------------*/\r
 \r
-/* The queue used by both tasks. */\r
+/**\r
+ * The queue used by both tasks.\r
+ */\r
 static QueueHandle_t xQueue = NULL;\r
 \r
-/* A software timer that is started from the tick hook. */\r
+/**\r
+ * A software timer that is started from the tick hook.\r
+ */\r
 static TimerHandle_t xTimer = NULL;\r
-\r
 /*-----------------------------------------------------------*/\r
 \r
-/*** SEE THE COMMENTS AT THE TOP OF THIS FILE ***/\r
 void main_blinky( void )\r
 {\r
 const TickType_t xTimerPeriod = mainTIMER_SEND_FREQUENCY_MS;\r
@@ -141,7 +128,7 @@ const TickType_t xTimerPeriod = mainTIMER_SEND_FREQUENCY_MS;
        if( xQueue != NULL )\r
        {\r
                /* Start the two tasks as described in the comments at the top of this\r
-               file. */\r
+                * file. */\r
                xTaskCreate( prvQueueReceiveTask,                       /* The function that implements the task. */\r
                                        "Rx",                                                   /* The text name assigned to the task - for debug only as it is not used by the kernel. */\r
                                        configMINIMAL_STACK_SIZE,               /* The size of the stack to allocate to the task. */\r
@@ -168,10 +155,10 @@ const TickType_t xTimerPeriod = mainTIMER_SEND_FREQUENCY_MS;
        }\r
 \r
        /* If all is well, the scheduler will now be running, and the following\r
-       line will never be reached.  If the following line does execute, then\r
-       there was insufficient FreeRTOS heap memory available for the idle and/or\r
-       timer tasks     to be created.  See the memory management section on the\r
-       FreeRTOS web site for more details. */\r
+        * line will never be reached.  If the following line does execute, then\r
+        * there was insufficient FreeRTOS heap memory available for the idle and/or\r
+        * timer tasks  to be created.  See the memory management section on the\r
+        * FreeRTOS web site for more details. */\r
        for( ;; );\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -191,15 +178,15 @@ const uint32_t ulValueToSend = mainVALUE_SENT_FROM_TASK;
        for( ;; )\r
        {\r
                /* Place this task in the blocked state until it is time to run again.\r
-               The block time is specified in ticks, pdMS_TO_TICKS() was used to\r
-               convert a time specified in milliseconds into a time specified in ticks.\r
-               While in the Blocked state this task will not consume any CPU time. */\r
+                * The block time is specified in ticks, pdMS_TO_TICKS() was used to\r
+                * convert a time specified in milliseconds into a time specified in ticks.\r
+                * While in the Blocked state this task will not consume any CPU time. */\r
                vTaskDelayUntil( &xNextWakeTime, xBlockTime );\r
 \r
                /* Send to the queue - causing the queue receive task to unblock and\r
-               write to the console.  0 is used as the block time so the send operation\r
-               will not block - it shouldn't need to block as the queue should always\r
-               have at least one space at this point in the code. */\r
+                * write to the console.  0 is used as the block time so the send operation\r
+                * will not block - it shouldn't need to block as the queue should always\r
+                * have at least one space at this point in the code. */\r
                xQueueSend( xQueue, &ulValueToSend, 0U );\r
        }\r
 }\r
@@ -210,16 +197,16 @@ static void prvQueueSendTimerCallback( TimerHandle_t xTimerHandle )
 const uint32_t ulValueToSend = mainVALUE_SENT_FROM_TIMER;\r
 \r
        /* This is the software timer callback function.  The software timer has a\r
-       period of two seconds and is reset each time a key is pressed.  This\r
-       callback function will execute if the timer expires, which will only happen\r
-       if a key is not pressed for two seconds. */\r
+        * period of two seconds and is reset each time a key is pressed.  This\r
+        * callback function will execute if the timer expires, which will only happen\r
+        * if a key is not pressed for two seconds. */\r
 \r
        /* Avoid compiler warnings resulting from the unused parameter. */\r
        ( void ) xTimerHandle;\r
 \r
        /* Send to the queue - causing the queue receive task to unblock and\r
-       write out a message.  This function is called from the timer/daemon task, so\r
-       must not block.  Hence the block time is set to 0. */\r
+        * write out a message.  This function is called from the timer/daemon task,\r
+        * so must not block.  Hence the block time is set to 0. */\r
        xQueueSend( xQueue, &ulValueToSend, 0U );\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -234,17 +221,14 @@ uint32_t ulReceivedValue;
        for( ;; )\r
        {\r
                /* Wait until something arrives in the queue - this task will block\r
-               indefinitely provided INCLUDE_vTaskSuspend is set to 1 in\r
-               FreeRTOSConfig.h.  It will not use any CPU time while it is in the\r
-               Blocked state. */\r
+                * indefinitely provided INCLUDE_vTaskSuspend is set to 1 in\r
+                * FreeRTOSConfig.h.  It will not use any CPU time while it is in the\r
+                * Blocked state. */\r
                xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY );\r
 \r
                /* To get here something must have been received from the queue, but\r
-               is it an expected value?  Normally calling printf() from a task is not\r
-               a good idea.  Here there is lots of stack space and only one task is\r
-               using console IO so it is ok.  However, note the comments at the top of\r
-               this file about the risks of making Windows system calls (such as \r
-               console output) from a FreeRTOS task. */\r
+                * is it an expected value? This is the only task that uses stdout so its\r
+                * ok to call printf() directly. Do not call printf from any other task. */\r
                if( ulReceivedValue == mainVALUE_SENT_FROM_TASK )\r
                {\r
                        printf( "Message received from task\r\n" );\r
@@ -262,4 +246,3 @@ uint32_t ulReceivedValue;
        }\r
 }\r
 /*-----------------------------------------------------------*/\r
-\r
index d8e2561f9a2a41bfcae50fdfe1583f61a8aee9db..be46ea8df82b4fb869ebb894621d7a2f041a65b9 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
- * FreeRTOS Kernel V10.1.1\r
- * Copyright (C) 2018 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
+ * FreeRTOS Kernel V10.0.1\r
+ * Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
  *\r
  * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
  * this software and associated documentation files (the "Software"), to deal in\r
  * 1 tab == 4 spaces!\r
  */\r
 \r
-/*\r
- * main() creates all the demo application tasks, then starts the scheduler.\r
+/******************************************************************************\r
+ * NOTE:  This file only contains the source code that is specific to the\r
+ * basic demo.  Generic functions, such FreeRTOS hook functions, are defined\r
+ * in main.c.\r
+ ******************************************************************************\r
+ *\r
+ * main_full() creates all the demo application tasks, then starts the scheduler.\r
  * The web documentation provides more details of the standard demo application\r
  * tasks, which provide no particular functionality but do provide a good\r
  * example of how to use the FreeRTOS API.\r
  * In addition to the standard demo tasks, the following tasks and tests are\r
  * defined and/or created within this file:\r
  *\r
- * "Check" task - This only executes every five seconds but has a high priority\r
- * to ensure it gets processor time.  Its main function is to check that all the\r
- * standard demo tasks are still operational.  While no errors have been\r
- * discovered the check task will print out "OK" and the current simulated tick\r
- * time.  If an error is discovered in the execution of a task then the check\r
- * task will print out an appropriate error message.\r
+ * "Register tests":\r
+ * prvRegTest1Task and prvRegTest2Task implement register tests. These functions\r
+ * are just entry points and actual tests are written in the assembler file\r
+ * regtest_xtensa.S. These tests populate core registers with a known set of\r
+ * values and keep verifying them in a loop. Any corruption will indicate an\r
+ * error in context switching mechanism.\r
  *\r
+ * "Check" task:\r
+ * This only executes every five seconds but has a high priority to ensure it\r
+ * gets processor time. Its main function is to check that all the standard demo\r
+ * tasks are still operational. While no errors have been discovered the check\r
+ * task will print out "No errors", the current simulated tick time, free heap\r
+ * size and the minimum free heap size so far. If an error is discovered in the\r
+ * execution of a task then the check task will print out an appropriate error\r
+ * message.\r
  */\r
 \r
 \r
@@ -67,7 +80,6 @@
 #include "TimerDemo.h"\r
 #include "countsem.h"\r
 #include "death.h"\r
-#include "dynamic.h"\r
 #include "QueueSet.h"\r
 #include "QueueOverwrite.h"\r
 #include "EventGroupsDemo.h"\r
@@ -81,7 +93,9 @@
 #include "StreamBufferDemo.h"\r
 #include "StreamBufferInterrupt.h"\r
 \r
-/* Priorities at which the tasks are created. */\r
+/**\r
+ * Priorities at which the tasks are created.\r
+ */\r
 #define mainCHECK_TASK_PRIORITY                        ( configMAX_PRIORITIES - 2 )\r
 #define mainQUEUE_POLL_PRIORITY                        ( tskIDLE_PRIORITY + 1 )\r
 #define mainSEM_TEST_PRIORITY                  ( tskIDLE_PRIORITY + 1 )\r
 #define mainFLOP_TASK_PRIORITY                 ( tskIDLE_PRIORITY )\r
 #define mainQUEUE_OVERWRITE_PRIORITY   ( tskIDLE_PRIORITY )\r
 \r
+/**\r
+ * Period used in timer tests.\r
+ */\r
 #define mainTIMER_TEST_PERIOD                  ( 50 )\r
 \r
-/* The task that periodically checks that all the standard demo tasks are\r
+/**\r
+ * Parameters that are passed into the register check tasks solely for the\r
+ * purpose of ensuring parameters are passed into tasks correctly.\r
+ */\r
+#define mainREG_TEST_TASK_1_PARAMETER  ( ( void * ) 0x12345678 )\r
+#define mainREG_TEST_TASK_2_PARAMETER  ( ( void * ) 0x87654321 )\r
+\r
+/**\r
+ * Determines whether to enable interrupt queue tests.\r
+ *\r
+ * Interrupt queue tests are used to test interrupt nesting and enabling them\r
+ * interferes with proper functioning of other tests. This macro controls\r
+ * whether to enable interrupt queue tests or all other tests:\r
+ *\r
+ * * When mainENABLE_INT_QUEUE_TESTS is set to 1, interrupt queue tests are\r
+ *   enabled and every other test is disabled.\r
+ * * When mainENABLE_INT_QUEUE_TESTS is set to 0, interrupt queue tests are\r
+ *   disabled and every other test is enabled.\r
+ */\r
+#define mainENABLE_INT_QUEUE_TESTS             ( 0 )\r
+/*-----------------------------------------------------------*/\r
+\r
+/**\r
+ * The task that periodically checks that all the standard demo tasks are\r
  * still executing and error free.\r
  */\r
 static void prvCheckTask( void *pvParameters );\r
 \r
+/**\r
+ * Tasks that implement register tests.\r
+ */\r
+static void prvRegTest1Task( void *pvParameters );\r
+static void prvRegTest2Task( void *pvParameters );\r
+\r
+/**\r
+ * Functions that implement register tests.\r
+ *\r
+ * These are implemented in assembler file regtest_xtensa.S.\r
+ */\r
+extern void vRegTest1( void );\r
+extern void vRegTest2( void );\r
 /*-----------------------------------------------------------*/\r
 \r
-/* The variable into which error messages are latched. */\r
+/**\r
+ * The variable into which error messages are latched.\r
+ */\r
 static char *pcStatusMessage = "No errors";\r
 \r
+/**\r
+ * The following two variables are used to communicate the status of the\r
+ * register check tasks to the check task.  If the variables keep incrementing,\r
+ * then the register check tasks have not discovered any errors.  If a variable\r
+ * stops incrementing, then an error has been found.\r
+ */\r
+volatile unsigned long ulRegTest1Counter = 0UL, ulRegTest2Counter = 0UL;\r
+\r
+/**\r
+ * The following variable is used to communicate whether the timers for the\r
+ * IntQueue tests have been Initialized. This is needed to ensure that the queues\r
+ * are accessed from the tick hook only after they have been created in the\r
+ * interrupt queue test.\r
+ */\r
+volatile BaseType_t xTimerForQueueTestInitialized = pdFALSE;\r
 /*-----------------------------------------------------------*/\r
 \r
 int main_full( void )\r
@@ -112,51 +182,63 @@ int main_full( void )
        /* Start the check task as described at the top of this file. */\r
        xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );\r
 \r
-       /* Create the standard demo tasks. */\r
-       vStartTaskNotifyTask();\r
-       vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );\r
-       vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );\r
-       vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );\r
-       vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY );\r
-       vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );\r
-\r
-       vStartQueuePeekTasks();\r
-       vStartMathTasks( mainFLOP_TASK_PRIORITY );\r
-       vStartRecursiveMutexTasks();\r
-       vStartCountingSemaphoreTasks();\r
-       vStartDynamicPriorityTasks();\r
-       vStartQueueSetTasks();\r
-\r
-       vStartQueueOverwriteTask( mainQUEUE_OVERWRITE_PRIORITY );\r
-       vStartEventGroupTasks();\r
-       vStartInterruptSemaphoreTasks();\r
-       vStartQueueSetPollingTask();\r
-       vCreateBlockTimeTasks();\r
-\r
-       vCreateAbortDelayTasks();\r
-       vStartMessageBufferTasks( configMINIMAL_STACK_SIZE );\r
-\r
-       vStartStreamBufferTasks();\r
-       vStartStreamBufferInterruptDemo();\r
-\r
-       #if( configUSE_PREEMPTION != 0  )\r
+       #if( mainENABLE_INT_QUEUE_TESTS == 0 )\r
        {\r
-               /* Don't expect these tasks to pass when preemption is not used. */\r
-               vStartTimerDemoTask( mainTIMER_TEST_PERIOD );\r
-       }\r
-       #endif\r
+               /* Create the standard demo tasks. */\r
+               vStartTaskNotifyTask();\r
+               vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );\r
+               vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );\r
+               vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );\r
+               vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY );\r
+               vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );\r
+\r
+               vStartQueuePeekTasks();\r
+               vStartMathTasks( mainFLOP_TASK_PRIORITY );\r
+               vStartRecursiveMutexTasks();\r
+               vStartCountingSemaphoreTasks();\r
+               vStartQueueSetTasks();\r
+\r
+               vStartQueueOverwriteTask( mainQUEUE_OVERWRITE_PRIORITY );\r
+               vStartEventGroupTasks();\r
+               vStartInterruptSemaphoreTasks();\r
+               vStartQueueSetPollingTask();\r
+               vCreateBlockTimeTasks();\r
+\r
+               #if( configUSE_PREEMPTION != 0  )\r
+               {\r
+                       /* Don't expect these tasks to pass when preemption is not used. */\r
+                       vStartTimerDemoTask( mainTIMER_TEST_PERIOD );\r
+               }\r
+               #endif\r
+\r
+               vCreateAbortDelayTasks();\r
+               vStartMessageBufferTasks( configMINIMAL_STACK_SIZE );\r
 \r
-       /* The suicide tasks must be created last as they need to know how many\r
-       tasks were running prior to their creation.  This then allows them to\r
-       ascertain whether or not the correct/expected number of tasks are running at\r
-       any given time. */\r
-       vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );\r
+               vStartStreamBufferTasks();\r
+               vStartStreamBufferInterruptDemo();\r
+\r
+               /* Create the register check tasks, as described at the top of this     file */\r
+               xTaskCreate( prvRegTest1Task, "Reg1", configMINIMAL_STACK_SIZE, mainREG_TEST_TASK_1_PARAMETER, tskIDLE_PRIORITY, NULL );\r
+               xTaskCreate( prvRegTest2Task, "Reg2", configMINIMAL_STACK_SIZE, mainREG_TEST_TASK_2_PARAMETER, tskIDLE_PRIORITY, NULL );\r
+\r
+               /* The suicide tasks must be created last as they need to know how many\r
+                * tasks were running prior to their creation.  This then allows them to\r
+                * ascertain whether or not the correct/expected number of tasks are\r
+                * running at any given time. */\r
+               vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );\r
+       }\r
+       #else /* mainENABLE_INT_QUEUE_TESTS */\r
+       {\r
+               /* Start interrupt queue test tasks. */\r
+               vStartInterruptQueueTasks();\r
+       }\r
+       #endif /* mainENABLE_INT_QUEUE_TESTS */\r
 \r
        /* Start the scheduler itself. */\r
        vTaskStartScheduler();\r
 \r
        /* Should never get here unless there was not enough heap space to create\r
-       the idle and other system tasks. */\r
+        * the idle and other system tasks. */\r
        return 0;\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -165,6 +247,7 @@ static void prvCheckTask( void *pvParameters )
 {\r
 TickType_t xNextWakeTime;\r
 const TickType_t xCycleFrequency = pdMS_TO_TICKS( 5000UL );\r
+static unsigned long ulLastRegTest1Value = 0, ulLastRegTest2Value = 0;\r
 \r
        /* Just to remove compiler warning. */\r
        ( void ) pvParameters;\r
@@ -177,108 +260,127 @@ const TickType_t xCycleFrequency = pdMS_TO_TICKS( 5000UL );
                /* Place this task in the blocked state until it is time to run again. */\r
                vTaskDelayUntil( &xNextWakeTime, xCycleFrequency );\r
 \r
-               /* Check the standard demo tasks are running without error. */\r
-               #if( configUSE_PREEMPTION != 0 )\r
+               #if( mainENABLE_INT_QUEUE_TESTS == 0 )\r
                {\r
-                       /* These tasks are only created when preemption is used. */\r
-                       if( xAreTimerDemoTasksStillRunning( xCycleFrequency ) != pdTRUE )\r
+                       /* Check the standard demo tasks are running without error. */\r
+                       #if( configUSE_PREEMPTION != 0 )\r
                        {\r
-                               pcStatusMessage = "Error: TimerDemo";\r
+                               /* These tasks are only created when preemption is used. */\r
+                               if( xAreTimerDemoTasksStillRunning( xCycleFrequency ) != pdTRUE )\r
+                               {\r
+                                       pcStatusMessage = "Error: TimerDemo";\r
+                               }\r
                        }\r
-               }\r
-               #endif\r
+                       #endif\r
 \r
-               if( xAreTaskNotificationTasksStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error:  Notification";\r
-               }\r
-               else if( xAreIntegerMathsTaskStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error: IntMath";\r
-               }\r
-               else if( xAreGenericQueueTasksStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error: GenQueue";\r
-               }\r
-               else if( xAreBlockingQueuesStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error: BlockQueue";\r
-               }\r
-               else if( xAreSemaphoreTasksStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error: SemTest";\r
-               }\r
-               else if( xArePollingQueuesStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error: PollQueue";\r
-               }\r
-               else if( xAreQueuePeekTasksStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error: QueuePeek";\r
-               }\r
-               else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error: RecMutex";\r
-               }\r
-               else if( xAreCountingSemaphoreTasksStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error: CountSem";\r
-               }\r
-               else if( xAreDynamicPriorityTasksStillRunning() != pdPASS )\r
-               {\r
-                       pcStatusMessage = "Error: Dynamic";\r
-               }\r
-               else if( xAreQueueSetTasksStillRunning() != pdPASS )\r
-               {\r
-                       pcStatusMessage = "Error: Queue set";\r
-               }\r
-               else if( xAreEventGroupTasksStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error: EventGroup";\r
-               }\r
-               else if( xIsQueueOverwriteTaskStillRunning() != pdPASS )\r
-               {\r
-                       pcStatusMessage = "Error: Queue overwrite";\r
-               }\r
-               else if( xAreQueueSetPollTasksStillRunning() != pdPASS )\r
-               {\r
-                       pcStatusMessage = "Error: Queue set polling";\r
-               }\r
-               else if( xAreBlockTimeTestTasksStillRunning() != pdPASS )\r
-               {\r
-                       pcStatusMessage = "Error: Block time";\r
-               }\r
-               else if( xAreMessageBufferTasksStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error:  MessageBuffer";\r
-               }\r
-               else if( xAreAbortDelayTestTasksStillRunning() != pdPASS )\r
-               {\r
-                       pcStatusMessage = "Error: Abort delay";\r
-               }\r
-               else if( xAreStreamBufferTasksStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error:  StreamBuffer";\r
-               }\r
-               else if( xIsInterruptStreamBufferDemoStillRunning() != pdPASS )\r
-               {\r
-                       pcStatusMessage = "Error: Stream buffer interrupt";\r
-               }\r
-               else if( xAreInterruptSemaphoreTasksStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error: IntSem";\r
-               }\r
-               else if( xIsCreateTaskStillRunning() != pdTRUE )\r
-               {\r
-                       pcStatusMessage = "Error: Death";\r
+                       if( xAreTaskNotificationTasksStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error:  Notification";\r
+                       }\r
+                       else if( xAreBlockingQueuesStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error: BlockQueue";\r
+                       }\r
+                       else if( xAreSemaphoreTasksStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error: SemTest";\r
+                       }\r
+                       else if( xArePollingQueuesStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error: PollQueue";\r
+                       }\r
+                       else if( xAreIntegerMathsTaskStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error: IntMath";\r
+                       }\r
+                       else if( xAreGenericQueueTasksStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error: GenQueue";\r
+                       }\r
+                       else if( xAreQueuePeekTasksStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error: QueuePeek";\r
+                       }\r
+                       else if( xAreMathsTaskStillRunning() != pdPASS )\r
+                       {\r
+                               pcStatusMessage = "Error: Flop";\r
+                       }\r
+                       else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error: RecMutex";\r
+                       }\r
+                       else if( xAreCountingSemaphoreTasksStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error: CountSem";\r
+                       }\r
+                       else if( xAreQueueSetTasksStillRunning() != pdPASS )\r
+                       {\r
+                               pcStatusMessage = "Error: Queue set";\r
+                       }\r
+                       else if( xIsQueueOverwriteTaskStillRunning() != pdPASS )\r
+                       {\r
+                               pcStatusMessage = "Error: Queue overwrite";\r
+                       }\r
+                       else if( xAreEventGroupTasksStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error: EventGroup";\r
+                       }\r
+                       else if( xAreInterruptSemaphoreTasksStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error: IntSem";\r
+                       }\r
+                       else if( xAreQueueSetPollTasksStillRunning() != pdPASS )\r
+                       {\r
+                               pcStatusMessage = "Error: Queue set polling";\r
+                       }\r
+                       else if( xAreBlockTimeTestTasksStillRunning() != pdPASS )\r
+                       {\r
+                               pcStatusMessage = "Error: Block time";\r
+                       }\r
+                       else if( xAreAbortDelayTestTasksStillRunning() != pdPASS )\r
+                       {\r
+                               pcStatusMessage = "Error: Abort delay";\r
+                       }\r
+                       else if( xAreMessageBufferTasksStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error:  MessageBuffer";\r
+                       }\r
+                       else if( xAreStreamBufferTasksStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error:  StreamBuffer";\r
+                       }\r
+                       else if( xIsInterruptStreamBufferDemoStillRunning() != pdPASS )\r
+                       {\r
+                               pcStatusMessage = "Error: Stream buffer interrupt";\r
+                       }\r
+                       else if( xIsCreateTaskStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error: Death";\r
+                       }\r
+                       else if( ulLastRegTest1Value == ulRegTest1Counter )\r
+                       {\r
+                               pcStatusMessage = "Error: Reg Test 1";\r
+                       }\r
+                       else if( ulLastRegTest2Value == ulRegTest2Counter )\r
+                       {\r
+                               pcStatusMessage = "Error: Reg Test 2";\r
+                       }\r
+\r
+                       /* Update register test counters. */\r
+                       ulLastRegTest1Value = ulRegTest1Counter;\r
+                       ulLastRegTest2Value = ulRegTest2Counter;\r
                }\r
-               else if( xAreMathsTaskStillRunning() != pdPASS )\r
+               #else /* mainENABLE_INT_QUEUE_TESTS */\r
                {\r
-                       pcStatusMessage = "Error: Flop";\r
+                       if( xAreIntQueueTasksStillRunning() != pdTRUE )\r
+                       {\r
+                               pcStatusMessage = "Error: IntQueue";\r
+                       }\r
                }\r
+               #endif /* mainENABLE_INT_QUEUE_TESTS */\r
 \r
                /* This is the only task that uses stdout so its ok to call printf()\r
-               directly. */\r
+                * directly. Do not call printf from any other task. */\r
                printf( "%s - tick count %zu - free heap %zu - min free heap %zu\r\n", pcStatusMessage,\r
                                                                                                                                                           xTaskGetTickCount(),\r
                                                                                                                                                           xPortGetFreeHeapSize(),\r
@@ -292,39 +394,89 @@ void vFullDemoTickHookFunction( void )
 {\r
 TaskHandle_t xTimerTask;\r
 \r
-       /* Call the periodic timer test, which tests the timer API functions that\r
-       can be called from an ISR. */\r
-       #if( configUSE_PREEMPTION != 0 )\r
+       #if( mainENABLE_INT_QUEUE_TESTS == 0 )\r
        {\r
-               /* Only created when preemption is used. */\r
-               vTimerPeriodicISRTests();\r
-       }\r
-       #endif\r
+               /* Exercise using task notifications from an interrupt. */\r
+               xNotifyTaskFromISR();\r
+\r
+               /* Write to a queue that is in use as part of the queue set demo to\r
+                * demonstrate using queue sets from an ISR. */\r
+               vQueueSetAccessQueueSetFromISR();\r
 \r
-       /* Call the periodic queue overwrite from ISR demo. */\r
-       vQueueOverwritePeriodicISRDemo();\r
+               /* Call the periodic queue overwrite from ISR demo. */\r
+               vQueueOverwritePeriodicISRDemo();\r
 \r
-       /* Write to a queue that is in use as part of the queue set demo to\r
-       demonstrate using queue sets from an ISR. */\r
-       vQueueSetAccessQueueSetFromISR();\r
-       vQueueSetPollingInterruptAccess();\r
+               /* Exercise event groups from interrupts. */\r
+               vPeriodicEventGroupsProcessing();\r
 \r
-       /* Exercise event groups from interrupts. */\r
-       vPeriodicEventGroupsProcessing();\r
+               /* Exercise giving mutexes from an interrupt. */\r
+               vInterruptSemaphorePeriodicTest();\r
+\r
+               /* Queue set access from interrupt. */\r
+               vQueueSetPollingInterruptAccess();\r
+\r
+               /* Call the periodic timer test, which tests the timer API functions that\r
+                * can be called from an ISR. */\r
+               #if( configUSE_PREEMPTION != 0 )\r
+               {\r
+                       /* Only created when preemption is used. */\r
+                       vTimerPeriodicISRTests();\r
+               }\r
+               #endif\r
 \r
-       /* Exercise giving mutexes from an interrupt. */\r
-       vInterruptSemaphorePeriodicTest();\r
+               /* Writes to stream buffer byte by byte to test the stream buffer trigger\r
+                * level functionality. */\r
+               vPeriodicStreamBufferProcessing();\r
 \r
-       /* Exercise using task notifications from an interrupt. */\r
-       xNotifyTaskFromISR();\r
+               /* Writes a string to a string buffer four bytes at a time to demonstrate\r
+                * a stream being sent from an interrupt to a task. */\r
+               vBasicStreamBufferSendFromISR();\r
+       }\r
+       #else /* mainENABLE_INT_QUEUE_TESTS */\r
+       {\r
+               /* Access queues from interrupt. Make sure to access after the queues have\r
+                * been created. */\r
+               if( xTimerForQueueTestInitialized == pdTRUE )\r
+               {\r
+                       portYIELD_FROM_ISR( xFirstTimerHandler() );\r
+               }\r
+       }\r
+       #endif /* mainENABLE_INT_QUEUE_TESTS */\r
+}\r
+/*-----------------------------------------------------------*/\r
 \r
-       /* Writes to stream buffer byte by byte to test the stream buffer trigger\r
-       level functionality. */\r
-       vPeriodicStreamBufferProcessing();\r
+static void prvRegTest1Task( void *pvParameters )\r
+{\r
+       /* Although the regtest task is written in assembly, its entry point is\r
+        * written in C for convenience of checking the task parameter is being\r
+        * passed in correctly. */\r
+       if( pvParameters == mainREG_TEST_TASK_1_PARAMETER )\r
+       {\r
+               /* Start the part of the test that is written in assembly. */\r
+               vRegTest1();\r
+       }\r
 \r
-       /* Writes a string to a string buffer four bytes at a time to demonstrate\r
-       a stream being sent from an interrupt to a task. */\r
-       vBasicStreamBufferSendFromISR();\r
+       /* The following line will only execute if the task parameter is found to\r
+        * be incorrect. The check task will detect that the regtest loop counter is\r
+        * not being incremented and flag an error. */\r
+       vTaskDelete( NULL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
+static void prvRegTest2Task( void *pvParameters )\r
+{\r
+       /* Although the regtest task is written in assembly, its entry point is\r
+        * written in C for convenience of checking the task parameter is being\r
+        * passed in correctly. */\r
+       if( pvParameters == mainREG_TEST_TASK_2_PARAMETER )\r
+       {\r
+               /* Start the part of the test that is written in assembly. */\r
+               vRegTest2();\r
+       }\r
+\r
+       /* The following line will only execute if the task parameter is found to\r
+        * be incorrect. The check task will detect that the regtest loop counter is\r
+        * not being incremented and flag an error. */\r
+       vTaskDelete( NULL );\r
+}\r
+/*-----------------------------------------------------------*/\r
index bd700f09a03b8ef01149257c49f65f2e2298c5fa..aea93409094ce6bc5fff2560fee0251700901b94 100644 (file)
 \r
 vRegTest1:\r
 \r
-       /* Set initial values into the general purpose registers. */\r
-       /* a0 = return address, a1 = stack pointer.               */\r
+       /* Set initial values into the general purpose registers.\r
+        * a0 = return address, a1 = stack pointer. */\r
 #ifdef __XTENSA_WINDOWED_ABI__\r
        entry   a1, 64\r
-       s32i    a0, a1, 0               /* Save return address */\r
+       s32i    a0, a1, 0               /* Save return address. */\r
 #else\r
        addi    a1, a1, -64\r
-       s32i    a0, a1, 0               /* Save return address */\r
-       s32i    a12, a1, 4              /* Save callee-saved regs if call0 ABI */\r
+       s32i    a0, a1, 0               /* Save return address. */\r
+       s32i    a12, a1, 4              /* Save callee-saved regs if call0 ABI. */\r
        s32i    a13, a1, 8\r
        s32i    a14, a1, 12\r
        s32i    a15, a1, 16\r
@@ -74,7 +74,7 @@ vRegTest1:
 _RegTest1Loop:\r
 \r
        /* Loop checking the values originally loaded into the general purpose\r
-       registers remain through the life of the task. */\r
+        * registers remain through the life of the task. */\r
        movi    a0, 0x11111111\r
        bne             a0, a2, _RegTest1Error\r
        movi    a0, 0x22222222\r
@@ -105,7 +105,7 @@ _RegTest1Loop:
        bne             a0, a15, _RegTest1Error\r
 \r
        /* Incrememnt the loop counter to prove this task has not gone into the\r
-       error null loop. */\r
+        * error null loop. */\r
        s32i    a2, a1, 20\r
        movi    a2, ulRegTest1Counter\r
        l32i    a0, a2, 0\r
@@ -127,15 +127,15 @@ _RegTest1Error:
 \r
 vRegTest2:\r
 \r
-       /* Set initial values into the general purpose registers. */\r
-       /* a0 = return address, a1 = stack pointer.               */\r
+       /* Set initial values into the general purpose registers.\r
+        * a0 = return address, a1 = stack pointer. */\r
 #ifdef __XTENSA_WINDOWED_ABI__\r
        entry   a1, 64\r
-       s32i    a0, a1, 0               /* Save return address */\r
+       s32i    a0, a1, 0               /* Save return address. */\r
 #else\r
        addi    a1, a1, -64\r
-       s32i    a0, a1, 0               /* Save return address */\r
-       s32i    a12, a1, 4              /* Save callee-saved regs if call0 ABI */\r
+       s32i    a0, a1, 0               /* Save return address. */\r
+       s32i    a12, a1, 4              /* Save callee-saved regs if call0 ABI. */\r
        s32i    a13, a1, 8\r
        s32i    a14, a1, 12\r
        s32i    a15, a1, 16\r
@@ -161,7 +161,7 @@ _ReInit:
 _RegTest2Loop:\r
 \r
        /* Loop checking the values originally loaded into the general purpose\r
-       registers remain through the life of the task. */\r
+        * registers remain through the life of the task. */\r
        movi    a0, 0x01010101\r
        bne             a0, a2, _RegTest1Error\r
        movi    a0, 0x02020202\r
@@ -191,9 +191,9 @@ _RegTest2Loop:
        movi    a0, 0x0e0e0e0e\r
        bne             a0, a15, _RegTest1Error\r
 \r
-       /* Force a yield from one of the reg test tasks to increase coverage. */\r
-       /* IMPORTANT: this call will trash some number of registers. Branch   */\r
-       /* to _ReInit to set things up again.                                 */\r
+       /* Force a yield from one of the reg test tasks to increase coverage.\r
+        * IMPORTANT: this call will trash some number of registers. Branch\r
+        * to _ReInit to set things up again. */\r
 #ifdef __XTENSA_WINDOWED_ABI__\r
        call8   vPortYield\r
 #else\r
@@ -201,7 +201,7 @@ _RegTest2Loop:
 #endif\r
 \r
        /* Increment the loop counter to prove this task has not gone into the\r
-       error null loop. */\r
+        * error null loop. */\r
        s32i    a2, a1, 20\r
        movi    a2, ulRegTest2Counter\r
        l32i    a0, a2, 0\r
@@ -210,10 +210,8 @@ _RegTest2Loop:
        l32i    a2, a1, 20\r
 \r
        /* Loop again. */\r
-       j               _ReInit                 /* See comments above */\r
-       /* j            _RegTest2Loop */\r
+       j               _ReInit                 /* See comments above about not using  j _RegTest2Loop.  */\r
 \r
 _RegTest2Error:\r
 .L2:\r
        j               .L2\r
-\r