]> git.sur5r.net Git - freertos/commitdiff
Prepare demo for release.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sun, 16 Nov 2008 21:08:33 +0000 (21:08 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sun, 16 Nov 2008 21:08:33 +0000 (21:08 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@553 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs
Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch
Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOSConfig.h
Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/heap_2_modified.c [deleted file]
Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/m52233-rom.ld [deleted file]
Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/main.c
Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/printf-stdarg.c [new file with mode: 0644]
Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.c

index fb75059b9c373fa053f8cca0be32a9e2dd0a89b1..be6f8a5d55413fbf1ad30d7e152ad675188c0886 100644 (file)
Binary files a/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources and b/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ
index b301eb8b2ded222675378d0d9feafbff2ab459e6..1cfed308d99482a634ef3f1155977bc2449950f0 100644 (file)
@@ -1,3 +1,3 @@
-#Sun Nov 16 19:17:14 GMT 2008\r
+#Sun Nov 16 20:38:31 GMT 2008\r
 eclipse.preferences.version=1\r
-properties/RTOSDemo.null.38326818/0.1348192838=\#\r\n\#Sun Nov 16 19\:17\:14 GMT 2008\r\norg.eclipse.cdt.build.core.settings.holder.1053974197\=\\\#\\r\\n\\\#Sun Nov 16 19\\\:17\\\:14 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.804763436\=\\\#\\r\\n\\\#Sun Nov 16 19\\\:17\\\:14 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.libs.1997217404\=\\\#\\r\\n\\\#Sun Nov 16 19\\\:17\\\:14 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.99587291\=\\\#\\r\\n\\\#Sun Nov 16 19\\\:17\\\:14 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.prefbase.toolchain.1423010524\=\\\#\\r\\n\\\#Sun Nov 16 19\\\:17\\\:14 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\n0.1348192838\=\\\#\\r\\n\\\#Sun Nov 16 19\\\:17\\\:14 GMT 2008\\r\\nrcState\\\=0\\r\\nrebuildState\\\=false\\r\\n\r\n\r
+properties/RTOSDemo.null.38326818/0.1348192838=\#\r\n\#Sun Nov 16 20\:38\:31 GMT 2008\r\norg.eclipse.cdt.build.core.settings.holder.1053974197\=\\\#\\r\\n\\\#Sun Nov 16 20\\\:38\\\:31 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.804763436\=\\\#\\r\\n\\\#Sun Nov 16 20\\\:38\\\:31 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.libs.1997217404\=\\\#\\r\\n\\\#Sun Nov 16 20\\\:38\\\:31 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.99587291\=\\\#\\r\\n\\\#Sun Nov 16 20\\\:38\\\:31 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.prefbase.toolchain.1423010524\=\\\#\\r\\n\\\#Sun Nov 16 20\\\:38\\\:31 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\n0.1348192838\=\\\#\\r\\n\\\#Sun Nov 16 20\\\:38\\\:31 GMT 2008\\r\\nrcState\\\=0\\r\\nrebuildState\\\=false\\r\\n\r\n\r
index 3381d666ef53559faa23a6c77958fab26ae978db..de18a664a20dc5d57cb2d0d41cdf70819c418f29 100644 (file)
@@ -13,7 +13,7 @@
 <stringAttribute key="org.eclipse.cdt.debug.mi.core.protocol" value="mi"/>\r
 <booleanAttribute key="org.eclipse.cdt.debug.mi.core.verboseMode" value="false"/>\r
 <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;registerGroups&gt;&#13;&#10;&lt;group memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;registerGroup enabled=&amp;quot;true&amp;quot; name=&amp;quot;Main&amp;quot;&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d0&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d1&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d2&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d3&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d4&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d5&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d6&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d7&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;a0&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;a1&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;a2&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;a3&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;a4&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;a5&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;fp&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;sp&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;ps&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;pc&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;/registerGroup&amp;gt;&amp;#13;&amp;#10;&quot;/&gt;&#13;&#10;&lt;group memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;registerGroup enabled=&amp;quot;true&amp;quot; name=&amp;quot;New Group&amp;quot;&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d0&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d1&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d2&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d3&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d4&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d5&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d6&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;d7&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;a0&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;a1&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;a2&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;a3&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;a4&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;a5&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;fp&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;sp&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;ps&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;register name=&amp;quot;pc&amp;quot; originalGroupName=&amp;quot;Main&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&amp;lt;/registerGroup&amp;gt;&amp;#13;&amp;#10;&quot;/&gt;&#13;&#10;&lt;/registerGroups&gt;&#13;&#10;"/>\r
-<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&lt;contentList&gt;&lt;content id=&quot;us-main-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;d0-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;d1-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;d4-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;d7-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;ps-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;status-null-prvIdleTask-(format)&quot; val=&quot;4&quot;/&gt;&lt;/contentList&gt;"/>\r
+<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&lt;contentList&gt;&lt;content id=&quot;status-null-prvIdleTask-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;ps-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;d7-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;d4-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;d1-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;d0-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;us-main-(format)&quot; val=&quot;4&quot;/&gt;&lt;/contentList&gt;"/>\r
 <stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;globalVariableList/&gt;&#13;&#10;"/>\r
 <stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;memoryBlockExpressionList&gt;&#13;&#10;&lt;memoryBlockExpressionItem&gt;&#13;&#10;&lt;expression text=&quot;536890128&quot;/&gt;&#13;&#10;&lt;/memoryBlockExpressionItem&gt;&#13;&#10;&lt;memoryBlockExpressionItem&gt;&#13;&#10;&lt;expression text=&quot;536891648&quot;/&gt;&#13;&#10;&lt;/memoryBlockExpressionItem&gt;&#13;&#10;&lt;/memoryBlockExpressionList&gt;&#13;&#10;"/>\r
 <stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="bin/RTOSDemo.elf"/>\r
index f1c49cd01909bc960015adbfedda6825acde0a33..f68cbad37ba2d3b628379fee0e68eabdc4923ec0 100644 (file)
@@ -1,69 +1,68 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <workingSetManager>\r
 <workingSet editPageId="org.eclipse.cdt.ui.CElementWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" label="RTOSDemo" name="RTOSDemo">\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOSConfig.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Source/croutine.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Source/include" type="2"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Source/list.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Source/portable/GCC/ColdFire_V2" type="2"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/AltPollQ.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/PollQ.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/integer.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/GenQTest.h" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Source/queue.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Source/tasks.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Tick_Setup.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/ParTest" type="2"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/main.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/serial" type="2"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver" type="2"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/AltBlckQ.c" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/AltBlock.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Source/list.c" type="1"/>\r
+<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/RTOSDemo/m52233-rom.ld" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/AltBlock.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/comtest2.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Source/portable/GCC/ColdFire_V2" type="2"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/BlockQ.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Source/croutine.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/crflash.h" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/AltPollQ.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/AltQTest.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/BlockQ.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/GenQTest.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/IntQueue.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/PollQ.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Source/tasks.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/dynamic.c" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/QPeek.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/blocktim.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/dynamic.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/fileIO.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/AltQTest.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/QPeek.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/death.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/main.c" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/comtest.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/countsem.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/crflash.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/crhook.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/death.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/dynamic.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/flash.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/flop.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Tick_Setup.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/recmutex.h" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/integer.c" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/recmutex.c" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/semtest.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/countsem.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/AltBlckQ.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/flop.c" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/AltBlckQ.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/AltBlock.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/AltPollQ.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/AltQTest.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/BlockQ.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/GenQTest.h" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/IntQueue.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/PollQ.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/QPeek.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/blocktim.h" type="1"/>\r
+<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/RTOSDemo/Makefile" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/print.h" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/comtest.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/comtest2.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/countsem.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/crflash.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/crhook.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/death.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/dynamic.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/fileIO.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/IntQueue.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_uIP" type="2"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOSConfig.h" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/flash.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/flop.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/integer.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/serial.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/blocktim.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/flash.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/blocktim.h" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/mevents.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/partest.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/print.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/recmutex.h" type="1"/>\r
 <item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/semtest.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/serial.h" type="1"/>\r
-<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_uIP" type="2"/>\r
-<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/RTOSDemo/Makefile" type="1"/>\r
-<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/RTOSDemo/m52233-rom.ld" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/ParTest" type="2"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/countsem.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/PollQ.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/partest.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/recmutex.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver" type="2"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/crflash.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/flop.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/GenQTest.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/include/crhook.h" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/BlockQ.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/death.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/AltQTest.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Demo_Source/Minimal/crhook.c" type="1"/>\r
+<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS_Source/include" type="2"/>\r
 </workingSet>\r
 <workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" label="Window Working Set" name="Aggregate for window 1217933244875"/>\r
 <mruList name="RTOSDemo"/>\r
index a3e04a9f22f2358067ad9f620c5689cab283230f..38b08fe00a202c0bbcca3868e26cde154eddf554 100644 (file)
@@ -97,13 +97,20 @@ to exclude the API function. */
 #define INCLUDE_vTaskDelay                                     1\r
 #define INCLUDE_uxTaskGetStackHighWaterMark    1\r
 \r
+/* Port specific definitions. */\r
 #define configYIELD_INTERRUPT_VECTOR                   16UL\r
 #define configKERNEL_INTERRUPT_PRIORITY                1\r
 #define configMAX_SYSCALL_INTERRUPT_PRIORITY   4\r
 \r
+/* The function that initialises the tick and context switch interrupts.  This\r
+function is part of the application side (rather than kernel) to allow users to\r
+change the peripherals and vectors being used should they conflict in any way\r
+with the application itself. */\r
 void vApplicationSetupInterrupts( void );\r
 \r
-/* Ethernet configuration. */\r
+/* Ethernet configuration. **************************/\r
+\r
+/* Defines the MAC address to be used. */\r
 #define configMAC_0    0x00\r
 #define configMAC_1    0x04\r
 #define configMAC_2    0x9F\r
@@ -111,27 +118,29 @@ void vApplicationSetupInterrupts( void );
 #define configMAC_4    0xAB\r
 #define configMAC_5    0x2B\r
 \r
+/* Defines the IP address to be used. */\r
 #define configIP_ADDR0 192\r
 #define configIP_ADDR1 168\r
 #define configIP_ADDR2 0\r
 #define configIP_ADDR3 11\r
 \r
-#define configGW_ADDR0 172\r
-#define configGW_ADDR1 25\r
-#define configGW_ADDR2 218\r
-#define configGW_ADDR3 3\r
+/* Defines the gateway address to be used. */\r
+#define configGW_ADDR0 192\r
+#define configGW_ADDR1 168\r
+#define configGW_ADDR2 0\r
+#define configGW_ADDR3 1\r
 \r
+/* Defins the net mask. */\r
 #define configNET_MASK0        255\r
 #define configNET_MASK1        255\r
 #define configNET_MASK2        255\r
 #define configNET_MASK3        0\r
 \r
+/* FEC driver configuration. */\r
 #define configNUM_FEC_RX_BUFFERS       3\r
 #define configFEC_BUFFER_SIZE          1520\r
-#define configUSE_PROMISCUOUS_MODE     1\r
-#define configETHERNET_INPUT_TASK_STACK_SIZE ( 320 )\r
+#define configUSE_PROMISCUOUS_MODE     0\r
 #define configFEC_INTERRUPT_PRIORITY configMAX_SYSCALL_INTERRUPT_PRIORITY\r
-\r
 #define configPHY_ADDRESS      0\r
 \r
 #if ( configFEC_BUFFER_SIZE & 0x0F ) != 0\r
diff --git a/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/heap_2_modified.c b/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/heap_2_modified.c
deleted file mode 100644 (file)
index 283f089..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-/*\r
-       FreeRTOS.org V5.1.0 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
-       This file is part of the FreeRTOS.org distribution.\r
-\r
-       FreeRTOS.org is free software; you can redistribute it and/or modify\r
-       it under the terms of the GNU General Public License as published by\r
-       the Free Software Foundation; either version 2 of the License, or\r
-       (at your option) any later version.\r
-\r
-       FreeRTOS.org is distributed in the hope that it will be useful,\r
-       but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-       GNU General Public License for more details.\r
-\r
-       You should have received a copy of the GNU General Public License\r
-       along with FreeRTOS.org; if not, write to the Free Software\r
-       Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-\r
-       A special exception to the GPL can be applied should you wish to distribute\r
-       a combined work that includes FreeRTOS.org, without being obliged to provide\r
-       the source code for any proprietary components.  See the licensing section\r
-       of http://www.FreeRTOS.org for full details of how and when the exception\r
-       can be applied.\r
-\r
-    ***************************************************************************\r
-    ***************************************************************************\r
-    *                                                                         *\r
-    * SAVE TIME AND MONEY!  We can port FreeRTOS.org to your own hardware,    *\r
-    * and even write all or part of your application on your behalf.          *\r
-    * See http://www.OpenRTOS.com for details of the services we provide to   *\r
-    * expedite your project.                                                  *\r
-    *                                                                         *\r
-    ***************************************************************************\r
-    ***************************************************************************\r
-\r
-       Please ensure to read the configuration and relevant port sections of the\r
-       online documentation.\r
-\r
-       http://www.FreeRTOS.org - Documentation, latest information, license and\r
-       contact details.\r
-\r
-       http://www.SafeRTOS.com - A version that is certified for use in safety\r
-       critical systems.\r
-\r
-       http://www.OpenRTOS.com - Commercial support, development, porting,\r
-       licensing and training services.\r
-*/\r
-\r
-/*\r
- * A sample implementation of pvPortMalloc() and vPortFree() that permits\r
- * allocated blocks to be freed, but does not combine adjacent free blocks\r
- * into a single larger block.\r
- *\r
- * See heap_1.c and heap_3.c for alternative implementations, and the memory\r
- * management pages of http://www.FreeRTOS.org for more information.\r
- */\r
-#include <stdlib.h>\r
-\r
-#include "FreeRTOS.h"\r
-#include "task.h"\r
-\r
-/* Setup the correct byte alignment mask for the defined byte alignment. */\r
-\r
-#if portBYTE_ALIGNMENT == 8\r
-       #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0007 )\r
-#endif\r
-\r
-#if portBYTE_ALIGNMENT == 4\r
-       #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0003 )\r
-#endif\r
-\r
-#if portBYTE_ALIGNMENT == 2\r
-       #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0001 )\r
-#endif\r
-\r
-#if portBYTE_ALIGNMENT == 1\r
-       #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0000 )\r
-#endif\r
-\r
-#ifndef heapBYTE_ALIGNMENT_MASK\r
-       #error "Invalid portBYTE_ALIGNMENT definition"\r
-#endif\r
-\r
-/* Definitions from linker file. */\r
-extern far unsigned portCHAR __SP_INIT[];\r
-extern far unsigned portCHAR __RAM_ADDRESS[];\r
-extern far unsigned portCHAR __RAM_SIZE[];\r
-extern far unsigned portCHAR __stack_size[];\r
-\r
-#define heapTOP_OF_RAM                         ( ( (unsigned portLONG) __RAM_ADDRESS + (unsigned portLONG ) __RAM_SIZE ) - 4 )\r
-#define heapTOTAL_SIZE                         ( (heapTOP_OF_RAM - (unsigned portLONG)__SP_INIT ) + 4 )\r
-\r
-/* Allocate the memory for the heap.  The struct is used to force byte\r
-alignment without using any non-portable code. */\r
-typedef struct xRTOS_HEAP_t\r
-{\r
-       unsigned portLONG ulDummy;\r
-       unsigned portCHAR *ucHeap;\r
-} xHeapStruct;\r
-\r
-/* Define the linked list structure.  This is used to link free blocks in order\r
-of their size. */\r
-typedef struct A_BLOCK_LINK\r
-{\r
-       struct A_BLOCK_LINK *pxNextFreeBlock;   /*<< The next free block in the list. */\r
-       size_t xBlockSize;                                              /*<< The size of the free block. */\r
-} xBlockLink;\r
-\r
-\r
-static const unsigned portSHORT  heapSTRUCT_SIZE       = ( sizeof( xBlockLink ) + ( sizeof( xBlockLink ) % portBYTE_ALIGNMENT ) );\r
-#define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( heapSTRUCT_SIZE * 2 ) )\r
-\r
-/* Create a couple of list links to mark the start and end of the list. */\r
-static xBlockLink xStart, xEnd;\r
-static xHeapStruct *xHeap = NULL;\r
-       \r
-/* STATIC FUNCTIONS ARE DEFINED AS MACROS TO MINIMIZE THE FUNCTION CALL DEPTH. */\r
-\r
-/*\r
- * Insert a block into the list of free blocks - which is ordered by size of\r
- * the block.  Small blocks at the start of the list and large blocks at the end\r
- * of the list.\r
- */\r
-#define prvInsertBlockIntoFreeList( pxBlockToInsert )                                                          \\r
-{                                                                                                                                                                      \\r
-xBlockLink *pxIterator;                                                                                                                                \\r
-size_t xBlockSize;                                                                                                                                     \\r
-                                                                                                                                                                       \\r
-       xBlockSize = pxBlockToInsert->xBlockSize;                                                                               \\r
-                                                                                                                                                                       \\r
-       /* Iterate through the list until a block is found that has a larger size */    \\r
-       /* than the block we are inserting. */                                                                                  \\r
-       for( pxIterator = &xStart; pxIterator->pxNextFreeBlock->xBlockSize < xBlockSize; pxIterator = pxIterator->pxNextFreeBlock )     \\r
-       {                                                                                                                                                               \\r
-               /* There is nothing to do here - just iterate to the correct position. */       \\r
-       }                                                                                                                                                               \\r
-                                                                                                                                                                       \\r
-       /* Update the list to include the block being inserted in the correct */                \\r
-       /* position. */                                                                                                                                 \\r
-       pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock;                                 \\r
-       pxIterator->pxNextFreeBlock = pxBlockToInsert;                                                                  \\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-#define prvHeapInit()                                                                                                                          \\r
-{                                                                                                                                                                      \\r
-xBlockLink *pxFirstFreeBlock;                                                                                                          \\r
-                                                                                                                                                                       \\r
-       /* Point to the start of the heap. */                                                                                   \\r
-       xHeap = ( void * ) ( ( unsigned portLONG ) __SP_INIT + 4UL );                                   \\r
-       xHeap->ucHeap = ( void * ) xHeap;                                                                                               \\r
-                                                                                                                                                                       \\r
-       /* xStart is used to hold a pointer to the first item in the list of free */    \\r
-       /* blocks.  The void cast is used to prevent compiler warnings. */                              \\r
-       xStart.pxNextFreeBlock = ( void * ) xHeap->ucHeap;                                                              \\r
-       xStart.xBlockSize = ( size_t ) 0;                                                                                               \\r
-                                                                                                                                                                       \\r
-       /* xEnd is used to mark the end of the list of free blocks. */                                  \\r
-       xEnd.xBlockSize = heapTOTAL_SIZE;                                                                                               \\r
-       xEnd.pxNextFreeBlock = NULL;                                                                                                    \\r
-                                                                                                                                                                       \\r
-       /* To start with there is a single free block that is sized to take up the              \\r
-       entire heap space. */                                                                                                                   \\r
-       pxFirstFreeBlock = ( void * ) xHeap->ucHeap;                                                                    \\r
-       pxFirstFreeBlock->xBlockSize = heapTOTAL_SIZE;                                                                  \\r
-       pxFirstFreeBlock->pxNextFreeBlock = &xEnd;                                                                              \\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void *pvPortMalloc( size_t xWantedSize )\r
-{\r
-xBlockLink *pxBlock, *pxPreviousBlock, *pxNewBlockLink;\r
-static portBASE_TYPE xHeapHasBeenInitialised = pdFALSE;\r
-void *pvReturn = NULL;\r
-\r
-       vTaskSuspendAll();\r
-       {\r
-               /* If this is the first call to malloc then the heap will require\r
-               initialisation to setup the list of free blocks. */\r
-               if( xHeapHasBeenInitialised == pdFALSE )\r
-               {\r
-                       prvHeapInit();\r
-                       xHeapHasBeenInitialised = pdTRUE;\r
-               }\r
-\r
-               /* The wanted size is increased so it can contain a xBlockLink\r
-               structure in addition to the requested amount of bytes. */\r
-               if( xWantedSize > 0 )\r
-               {\r
-                       xWantedSize += heapSTRUCT_SIZE;\r
-\r
-                       /* Ensure that blocks are always aligned to the required number of bytes. */\r
-                       if( xWantedSize & heapBYTE_ALIGNMENT_MASK )\r
-                       {\r
-                               /* Byte alignment required. */\r
-                               xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & heapBYTE_ALIGNMENT_MASK ) );\r
-                       }\r
-               }\r
-\r
-               if( ( xWantedSize > 0 ) && ( xWantedSize < heapTOTAL_SIZE ) )\r
-               {\r
-                       /* Blocks are stored in byte order - traverse the list from the start\r
-                       (smallest) block until one of adequate size is found. */\r
-                       pxPreviousBlock = &xStart;\r
-                       pxBlock = xStart.pxNextFreeBlock;\r
-                       while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock ) )\r
-                       {\r
-                               pxPreviousBlock = pxBlock;\r
-                               pxBlock = pxBlock->pxNextFreeBlock;\r
-                       }\r
-\r
-                       /* If we found the end marker then a block of adequate size was not found. */\r
-                       if( pxBlock != &xEnd )\r
-                       {\r
-                               /* Return the memory space - jumping over the xBlockLink structure\r
-                               at its start. */\r
-                               pvReturn = ( void * ) ( ( ( unsigned portCHAR * ) pxPreviousBlock->pxNextFreeBlock ) + heapSTRUCT_SIZE );\r
-\r
-                               /* This block is being returned for use so must be taken our of the\r
-                               list of free blocks. */\r
-                               pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock;\r
-\r
-                               /* If the block is larger than required it can be split into two. */\r
-                               if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE )\r
-                               {\r
-                                       /* This block is to be split into two.  Create a new block\r
-                                       following the number of bytes requested. The void cast is\r
-                                       used to prevent byte alignment warnings from the compiler. */\r
-                                       pxNewBlockLink = ( void * ) ( ( ( unsigned portCHAR * ) pxBlock ) + xWantedSize );\r
-\r
-                                       /* Calculate the sizes of two blocks split from the single\r
-                                       block. */\r
-                                       pxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize;\r
-                                       pxBlock->xBlockSize = xWantedSize;\r
-\r
-                                       /* Insert the new block into the list of free blocks. */\r
-                                       prvInsertBlockIntoFreeList( ( pxNewBlockLink ) );\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       xTaskResumeAll();\r
-\r
-       if( pvReturn == NULL )\r
-       {\r
-               asm volatile ("NOP");\r
-       }\r
-\r
-       return pvReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vPortFree( void *pv )\r
-{\r
-unsigned portCHAR *puc = ( unsigned portCHAR * ) pv;\r
-xBlockLink *pxLink;\r
-\r
-       if( pv )\r
-       {\r
-               /* The memory being freed will have an xBlockLink structure immediately\r
-               before it. */\r
-               puc -= heapSTRUCT_SIZE;\r
-\r
-               /* This casting is to keep the compiler from issuing warnings. */\r
-               pxLink = ( void * ) puc;\r
-\r
-               vTaskSuspendAll();\r
-               {\r
-                       /* Add this block to the list of free blocks. */\r
-                       prvInsertBlockIntoFreeList( ( ( xBlockLink * ) pxLink ) );\r
-               }\r
-               xTaskResumeAll();\r
-       }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
diff --git a/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/m52233-rom.ld b/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/m52233-rom.ld
deleted file mode 100644 (file)
index 8ee2a2e..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-/* Linker script for m52235evb
- *
- * Version:Sourcery G++ Lite 4.2-125
- * BugURL:https://support.codesourcery.com/GNUToolchain/
- *
- *  Copyright 2007, 2008 CodeSourcery.
- *
- * The authors hereby grant permission to use, copy, modify, distribute,
- * and license this software and its documentation for any purpose, provided
- * that existing copyright notices are retained in all copies and that this
- * notice is included verbatim in any distributions. No written agreement,
- * license, or royalty fee is required for any of the authorized uses.
- * Modifications to this software may be copyrighted by their authors
- * and need not follow the licensing terms described here, provided that
- * the new terms are clearly indicated on the first page of each file where
- * they apply. */
-
-OUTPUT_ARCH(m68k)
-ENTRY(_start)
-SEARCH_DIR(.)
-GROUP(-lgcc -lc -lcs3 -lcs3unhosted -lcs3coldfire)
-
-MEMORY
-{
-  ram (rw) : ORIGIN = 0x20000000, LENGTH = 32K
-  vectorrom   (RX)  : ORIGIN = 0x00000000, LENGTH = 0x00000400
-  cfmprotrom  (RX)  : ORIGIN = 0x00000400, LENGTH = 0x00000020   
-  rom (rx) : ORIGIN = 0x00000420, LENGTH = 256K - 0x400 - 0x20
-  ipsbar (rw) : ORIGIN = 0x40000000, LENGTH = 2M
-}
-
-/* These force the linker to search for particular symbols from
- * the start of the link process and thus ensure the user's
- * overrides are picked up
- */
-EXTERN(__cs3_reset_m52235evb)
-INCLUDE coldfire-names.inc
-EXTERN(__cs3_interrupt_vector_coldfire)
-EXTERN(__cs3_start_c main __cs3_stack __cs3_heap_end)
-EXTERN(_start)
-
-PROVIDE(__cs3_heap_start = _end);
-PROVIDE(__cs3_heap_end = __cs3_region_start_ram + __cs3_region_size_ram);
-PROVIDE(__cs3_region_num = (__cs3_regions_end - __cs3_regions) / 20);
-PROVIDE(__cs3_stack = __cs3_region_start_ram + __cs3_region_size_ram);
-
-SECTIONS
-{
-
-       .vectors_table :
-       {
-               CREATE_OBJECT_SYMBOLS
-               __cs3_region_start_rom = .;
-               *(.cs3.region-head.rom)
-               ASSERT (. == __cs3_region_start_rom, ".cs3.region-head.rom not permitted");
-               __cs3_interrupt_vector = __cs3_interrupt_vector_coldfire;
-               *(.cs3.interrupt_vector)
-               /* Make sure we pulled in an interrupt vector.  */
-               ASSERT (. != __cs3_interrupt_vector_coldfire, "No interrupt vector");
-       } > vectorrom
-
-       .cfmprotect :
-       {
-               *(.cfmconfig)
-               . = ALIGN (0x4);
-       } > cfmprotrom
-
-
-  .text :
-  {
-
-    PROVIDE(__cs3_reset_m52235evb = _start);
-    __cs3_reset = __cs3_reset_m52235evb;
-    *(.cs3.reset)
-
-    *(.text .text.* .gnu.linkonce.t.*)
-
-    . = ALIGN(0x4);
-    KEEP (*crtbegin.o(.jcr))
-    KEEP (*(EXCLUDE_FILE (*crtend.o) .jcr))
-    KEEP (*crtend.o(.jcr))
-
-    . = ALIGN(0x4);
-    *(.gcc_except_table .gcc_except_table.*)
-  } >rom
-  .eh_frame_hdr : ALIGN (4)
-  {
-    KEEP (*(.eh_frame_hdr))
-  } >rom
-  .eh_frame : ALIGN (4)
-  {
-    KEEP (*(.eh_frame))
-  } >rom
-  .rodata : ALIGN (4)
-  {
-    *(.rodata .rodata.* .gnu.linkonce.r.*)
-
-    . = ALIGN(4);
-    _init = .;
-    LONG (0x4e560000)  /* linkw %fp,#0 */
-    KEEP(*(.init))
-    SHORT (0x4e5e)     /* unlk %fp */
-    SHORT (0x4e75)     /* rts */
-
-    . = ALIGN(4);
-    __preinit_array_start = .;
-    KEEP (*(.preinit_array))
-    __preinit_array_end = .;
-
-    . = ALIGN(4);
-    __init_array_start = .;
-    KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
-    __init_array_end = .;
-
-    . = ALIGN(4);
-    _fini = .;
-    LONG (0x4e560000)  /* linkw %fp,#0 */
-    KEEP(*(.fini))
-    SHORT (0x4e5e)     /* unlk %fp */
-    SHORT (0x4e75)     /* rts */
-
-    . = ALIGN(4);
-    __fini_array_start = .;
-    KEEP (*(.fini_array))
-    KEEP (*(SORT(.fini_array.*)))
-    __fini_array_end = .;
-
-    . = ALIGN(0x4);
-    KEEP (*crtbegin.o(.ctors))
-    KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
-    KEEP (*(SORT(.ctors.*)))
-    KEEP (*crtend.o(.ctors))
-
-    . = ALIGN(0x4);
-    KEEP (*crtbegin.o(.dtors))
-    KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
-    KEEP (*(SORT(.dtors.*)))
-    KEEP (*crtend.o(.dtors))
-
-    *(.lit)
-
-    . = ALIGN(4);
-    __cs3_regions = .;
-    LONG (0)
-    LONG (__cs3_region_init_ram)
-    LONG (__cs3_region_start_ram)
-    LONG (__cs3_region_init_size_ram)
-    LONG (__cs3_region_zero_size_ram)
-    __cs3_regions_end = .;
-
-    . = ALIGN (8);
-    . = ALIGN (8);
-    *(.rom)
-    *(.rom.b)
-    _etext = .;
-  } >rom
-  /* __cs3_region_end_rom is deprecated */
-  __cs3_region_end_rom = __cs3_region_start_rom + LENGTH(rom);
-  __cs3_region_size_rom = LENGTH(rom);
-
-  .cs3.ipsbar :
-  {
-    __cs3_region_start_ipsbar = .;
-    *(.cs3.region-head.ipsbar)
-    . = ALIGN (8);
-  } >ipsbar
-  /* __cs3_region_end_ipsbar is deprecated */
-  __cs3_region_end_ipsbar = __cs3_region_start_ipsbar + LENGTH(ipsbar);
-  __cs3_region_size_ipsbar = LENGTH(ipsbar);
-
-  .data : ALIGN (8)
-  {
-    __cs3_region_start_ram = .;
-    *(.cs3.region-head.ram)
-    *(.got.plt) *(.got)
-    *(.shdata)
-    *(.data .data.* .gnu.linkonce.d.*)
-    . = ALIGN (8);
-    *(.ram)
-    _edata = .;
-  } >ram AT>rom
-  .bss :
-  {
-    *(.shbss)
-    *(.bss .bss.* .gnu.linkonce.b.*)
-    *(COMMON)
-    . = ALIGN (8);
-    *(.ram.b)
-    _end = .;
-    __end = .;
-  } >ram AT>rom
-  /* __cs3_region_end_ram is deprecated */
-  __cs3_region_end_ram = __cs3_region_start_ram + LENGTH(ram);
-  __cs3_region_size_ram = LENGTH(ram);
-  __cs3_region_init_ram = LOADADDR (.data);
-  __cs3_region_init_size_ram = _edata - ADDR (.data);
-  __cs3_region_zero_size_ram = _end - _edata;
-
-  .stab 0 (NOLOAD) : { *(.stab) }
-  .stabstr 0 (NOLOAD) : { *(.stabstr) }
-  /* DWARF debug sections.
-   * Symbols in the DWARF debugging sections are relative to the beginning
-   * of the section so we begin them at 0.  */
-  /* DWARF 1 */
-  .debug          0 : { *(.debug) }
-  .line           0 : { *(.line) }
-  /* GNU DWARF 1 extensions */
-  .debug_srcinfo  0 : { *(.debug_srcinfo) }
-  .debug_sfnames  0 : { *(.debug_sfnames) }
-  /* DWARF 1.1 and DWARF 2 */
-  .debug_aranges  0 : { *(.debug_aranges) }
-  .debug_pubnames 0 : { *(.debug_pubnames) }
-  /* DWARF 2 */
-  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
-  .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
-  .debug_frame    0 : { *(.debug_frame) }
-  .debug_str      0 : { *(.debug_str) }
-  .debug_loc      0 : { *(.debug_loc) }
-  .debug_macinfo  0 : { *(.debug_macinfo) }
-  /* SGI/MIPS DWARF 2 extensions */
-  .debug_weaknames 0 : { *(.debug_weaknames) }
-  .debug_funcnames 0 : { *(.debug_funcnames) }
-  .debug_typenames 0 : { *(.debug_typenames) }
-  .debug_varnames  0 : { *(.debug_varnames) }
-}
index e3db78268b8bfd55ae8fb8d2888527d18f67e37d..bf9f92132a63f57693754a50a44baffc19fdb8e9 100644 (file)
  * In addition to the standard demo tasks, the following tasks and tests are\r
  * defined and/or created within this file:\r
  *\r
+ * "uIP" task -  This is the task that handles the uIP stack.  All TCP/IP\r
+ * processing is performed in this task.  It manages the WEB server functionality.\r
+ *\r
  * "Check" task -  This only executes every five seconds but has a high priority\r
  * to ensure it gets processor time.  Its main function is to check that all the\r
- * standard demo tasks are still operational.  While no errors have been\r
- * discovered the check task will toggle an LED every 5 seconds - the toggle\r
- * rate increasing to 500ms being a visual indication that at least one task has\r
- * reported unexpected behaviour.\r
+ * standard demo tasks are still operational.  An error found in any task will be\r
+ * latched in the ulErrorCode variable for display through the WEB server (the\r
+ * error code is displayed at the foot of the table that contains information on\r
+ * the state of each task).\r
  *\r
  * "Reg test" tasks - These fill the registers with known values, then check\r
  * that each register still contains its expected value.  Each task uses\r
 \r
 /* The time between cycles of the 'check' functionality - as described at the\r
 top of this file. */\r
-#define mainNO_ERROR_PERIOD                                    ( ( portTickType ) 5000 / portTICK_RATE_MS )\r
-\r
-/* The rate at which the LED controlled by the 'check' task will flash should an\r
-error have been detected. */\r
-#define mainERROR_PERIOD                                       ( ( portTickType ) 500 / portTICK_RATE_MS )\r
-\r
-/* The LED controlled by the 'check' task. */\r
-#define mainCHECK_LED                                          ( 3 )\r
-\r
-/* ComTest constants - there is no free LED for the comtest tasks. */\r
-#define mainCOM_TEST_BAUD_RATE                         ( ( unsigned portLONG ) 19200 )\r
-#define mainCOM_TEST_LED                                       ( 5 )\r
+#define mainCHECK_TASK_PERIOD                                  ( ( portTickType ) 5000 / portTICK_RATE_MS )\r
 \r
 /* Task priorities. */\r
-#define mainCOM_TEST_PRIORITY                          ( tskIDLE_PRIORITY + 2 )\r
 #define mainQUEUE_POLL_PRIORITY                                ( tskIDLE_PRIORITY + 2 )\r
 #define mainCHECK_TASK_PRIORITY                                ( tskIDLE_PRIORITY + 3 )\r
 #define mainSEM_TEST_PRIORITY                          ( tskIDLE_PRIORITY + 1 )\r
@@ -121,8 +112,6 @@ error have been detected. */
 reliance on using sprintf(). */
 #define mainBASIC_WEB_STACK_SIZE                       ( configMINIMAL_STACK_SIZE * 2 )\r
 \r
-static unsigned portLONG ulErrorCode = 0UL;\r
-\r
 /*\r
  * Configure the hardware for the demo.\r
  */\r
@@ -139,6 +128,21 @@ static void prvCheckTask( void *pvParameters );
  */\r
 extern void vuIP_Task( void *pvParameters );\r
 \r
+/*\r
+ * Implement the 'Reg test' functionality as described at the top of this file.\r
+ */\r
+static void vRegTest1Task( void *pvParameters );\r
+static void vRegTest2Task( void *pvParameters );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Counters used to detect errors within the reg test tasks. */\r
+static volatile unsigned portLONG ulRegTest1Counter = 0x11111111, ulRegTest2Counter = 0x22222222;\r
+\r
+/* Any errors that the check task finds in any tasks are latched into \r
+ulErrorCode, and then displayed via the WEB server. */\r
+static unsigned portLONG ulErrorCode = 0UL;\r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 int main( void )\r
@@ -159,13 +163,17 @@ int main( void )
        vStartQueuePeekTasks();\r
     vStartRecursiveMutexTasks();\r
 \r
+       /* Start the reg test tasks - defined in this file. */\r
+       xTaskCreate( vRegTest1Task, ( signed portCHAR * ) "Reg1", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest1Counter, tskIDLE_PRIORITY, NULL );\r
+       xTaskCreate( vRegTest2Task, ( signed portCHAR * ) "Reg2", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest2Counter, tskIDLE_PRIORITY, NULL );\r
+\r
        /* Create the check task. */\r
        xTaskCreate( prvCheckTask, ( signed portCHAR * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );\r
 \r
        /* Start the scheduler. */\r
        vTaskStartScheduler();\r
 \r
-    /* Will only get here if there was insufficient memory to create the idle\r
+    /* Will only get here if there was insufficient heap to create the idle\r
     task. */\r
        for( ;; );\r
 }\r
@@ -173,8 +181,10 @@ int main( void )
 \r
 static void prvCheckTask( void *pvParameters )\r
 {\r
+unsigned ulLastRegTest1Count = 0, ulLastRegTest2Count = 0;\r
 portTickType xLastExecutionTime;\r
 \r
+       /* To prevent compiler warnings. */\r
        ( void ) pvParameters;\r
 \r
        /* Initialise the variable used to control our iteration rate prior to\r
@@ -184,7 +194,7 @@ portTickType xLastExecutionTime;
        for( ;; )\r
        {\r
                /* Wait until it is time to run the tests again. */\r
-               vTaskDelayUntil( &xLastExecutionTime, mainNO_ERROR_PERIOD );\r
+               vTaskDelayUntil( &xLastExecutionTime, mainCHECK_TASK_PERIOD );\r
 \r
                /* Has an error been found in any task? */\r
                if( xAreGenericQueueTasksStillRunning() != pdTRUE )\r
@@ -221,12 +231,28 @@ portTickType xLastExecutionTime;
            {\r
                ulErrorCode |= 0x100UL;\r
            }\r
+\r
+               if( ulLastRegTest1Count == ulRegTest1Counter )\r
+               {\r
+                       ulErrorCode |= 0x200UL;\r
+               }\r
+\r
+               if( ulLastRegTest2Count == ulRegTest2Counter )\r
+               {\r
+                       ulErrorCode |= 0x200UL;\r
+               }\r
+\r
+               /* Remember the reg test counts so a stall in their values can be\r
+               detected next time around. */\r
+               ulLastRegTest1Count = ulRegTest1Counter;\r
+               ulLastRegTest2Count = ulRegTest2Counter;\r
        }\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 unsigned portLONG ulGetErrorCode( void )\r
 {\r
+       /* Returns the error code for display via the WEB server. */\r
        return ulErrorCode;\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -295,3 +321,157 @@ void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed portCHAR *pcTask
 }\r
 /*-----------------------------------------------------------*/\r
 \r
+static void vRegTest1Task( void *pvParameters )\r
+{\r
+       /* Sanity check - did we receive the parameter expected? */\r
+       if( pvParameters != &ulRegTest1Counter )\r
+       {\r
+               /* Change here so the check task can detect that an error occurred. */\r
+               for( ;; );\r
+       }\r
+\r
+       /* Set all the registers to known values, then check that each retains its\r
+       expected value - as described at the top of this file.  If an error is\r
+       found then the loop counter will no longer be incremented allowing the check\r
+       task to recognise the error. */\r
+       asm volatile    (       "reg_test_1_start:                                              \n\t"\r
+                                               "       moveq           #1, %d0                                 \n\t"\r
+                                               "       moveq           #2, %d1                                 \n\t"\r
+                                               "       moveq           #3, %d2                                 \n\t"\r
+                                               "       moveq           #4, %d3                                 \n\t"\r
+                                               "       moveq           #5, %d4                                 \n\t"\r
+                                               "       moveq           #6, %d5                                 \n\t"\r
+                                               "       moveq           #7, %d6                                 \n\t"\r
+                                               "       moveq           #8, %d7                                 \n\t"\r
+                                               "       move            #9, %a0                                 \n\t"\r
+                                               "       move            #10, %a1                                \n\t"\r
+                                               "       move            #11, %a2                                \n\t"\r
+                                               "       move            #12, %a3                                \n\t"\r
+                                               "       move            #13, %a4                                \n\t"\r
+                                               "       move            #14, %a5                                \n\t"\r
+                                               "       move            #15, %a6                                \n\t"\r
+                                               "                                                                               \n\t"\r
+                                               "       cmpi.l          #1, %d0                                 \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       cmpi.l          #2, %d1                                 \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       cmpi.l          #3, %d2                                 \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       cmpi.l          #4, %d3                                 \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       cmpi.l          #5, %d4                                 \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       cmpi.l          #6, %d5                                 \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       cmpi.l          #7, %d6                                 \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       cmpi.l          #8, %d7                                 \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       move            %a0, %d0                                \n\t"\r
+                                               "       cmpi.l          #9, %d0                                 \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       move            %a1, %d0                                \n\t"\r
+                                               "       cmpi.l          #10, %d0                                \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       move            %a2, %d0                                \n\t"\r
+                                               "       cmpi.l          #11, %d0                                \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       move            %a3, %d0                                \n\t"\r
+                                               "       cmpi.l          #12, %d0                                \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       move            %a4, %d0                                \n\t"\r
+                                               "       cmpi.l          #13, %d0                                \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       move            %a5, %d0                                \n\t"\r
+                                               "       cmpi.l          #14, %d0                                \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       move            %a6, %d0                                \n\t"\r
+                                               "       cmpi.l          #15, %d0                                \n\t"\r
+                                               "       bne                     reg_test_1_error                \n\t"\r
+                                               "       movel           ulRegTest1Counter, %d0  \n\t"\r
+                                               "       addql           #1, %d0                                 \n\t"\r
+                                               "       movel           %d0, ulRegTest1Counter  \n\t"\r
+                                               "       bra                     reg_test_1_start                \n\t"\r
+                                               "reg_test_1_error:                                              \n\t"\r
+                                               "       bra                     reg_test_1_error                \n\t"\r
+                                       );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void vRegTest2Task( void *pvParameters )\r
+{\r
+       /* Sanity check - did we receive the parameter expected? */\r
+       if( pvParameters != &ulRegTest2Counter )\r
+       {\r
+               /* Change here so the check task can detect that an error occurred. */\r
+               for( ;; );\r
+       }\r
+\r
+       /* Set all the registers to known values, then check that each retains its\r
+       expected value - as described at the top of this file.  If an error is\r
+       found then the loop counter will no longer be incremented allowing the check\r
+       task to recognise the error. */\r
+       asm volatile    (       "reg_test_2_start:                                              \n\t"\r
+                                               "       moveq           #10, %d0                                \n\t"\r
+                                               "       moveq           #20, %d1                                \n\t"\r
+                                               "       moveq           #30, %d2                                \n\t"\r
+                                               "       moveq           #40, %d3                                \n\t"\r
+                                               "       moveq           #50, %d4                                \n\t"\r
+                                               "       moveq           #60, %d5                                \n\t"\r
+                                               "       moveq           #70, %d6                                \n\t"\r
+                                               "       moveq           #80, %d7                                \n\t"\r
+                                               "       move            #90, %a0                                \n\t"\r
+                                               "       move            #100, %a1                               \n\t"\r
+                                               "       move            #110, %a2                               \n\t"\r
+                                               "       move            #120, %a3                               \n\t"\r
+                                               "       move            #130, %a4                               \n\t"\r
+                                               "       move            #140, %a5                               \n\t"\r
+                                               "       move            #150, %a6                               \n\t"\r
+                                               "                                                                               \n\t"\r
+                                               "       cmpi.l          #10, %d0                                \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       cmpi.l          #20, %d1                                \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       cmpi.l          #30, %d2                                \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       cmpi.l          #40, %d3                                \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       cmpi.l          #50, %d4                                \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       cmpi.l          #60, %d5                                \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       cmpi.l          #70, %d6                                \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       cmpi.l          #80, %d7                                \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       move            %a0, %d0                                \n\t"\r
+                                               "       cmpi.l          #90, %d0                                \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       move            %a1, %d0                                \n\t"\r
+                                               "       cmpi.l          #100, %d0                               \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       move            %a2, %d0                                \n\t"\r
+                                               "       cmpi.l          #110, %d0                               \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       move            %a3, %d0                                \n\t"\r
+                                               "       cmpi.l          #120, %d0                               \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       move            %a4, %d0                                \n\t"\r
+                                               "       cmpi.l          #130, %d0                               \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       move            %a5, %d0                                \n\t"\r
+                                               "       cmpi.l          #140, %d0                               \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       move            %a6, %d0                                \n\t"\r
+                                               "       cmpi.l          #150, %d0                               \n\t"\r
+                                               "       bne                     reg_test_2_error                \n\t"\r
+                                               "       movel           ulRegTest1Counter, %d0  \n\t"\r
+                                               "       addql           #1, %d0                                 \n\t"\r
+                                               "       movel           %d0, ulRegTest2Counter  \n\t"\r
+                                               "       bra                     reg_test_2_start                \n\t"\r
+                                               "reg_test_2_error:                                              \n\t"\r
+                                               "       bra                     reg_test_2_error                \n\t"\r
+                                       );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
diff --git a/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/printf-stdarg.c b/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/printf-stdarg.c
new file mode 100644 (file)
index 0000000..f6139dc
--- /dev/null
@@ -0,0 +1,293 @@
+/*\r
+       Copyright 2001, 2002 Georges Menie (www.menie.org)\r
+       stdarg version contributed by Christian Ettinger\r
+\r
+    This program is free software; you can redistribute it and/or modify\r
+    it under the terms of the GNU Lesser General Public License as published by\r
+    the Free Software Foundation; either version 2 of the License, or\r
+    (at your option) any later version.\r
+\r
+    This program is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    GNU Lesser General Public License for more details.\r
+\r
+    You should have received a copy of the GNU Lesser General Public License\r
+    along with this program; if not, write to the Free Software\r
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+*/\r
+\r
+/*\r
+       putchar is the only external dependency for this file,\r
+       if you have a working putchar, leave it commented out.\r
+       If not, uncomment the define below and\r
+       replace outbyte(c) by your own function call.\r
+\r
+*/\r
+\r
+#define putchar(c) c\r
+\r
+#include <stdarg.h>\r
+\r
+static void printchar(char **str, int c)\r
+{\r
+       //extern int putchar(int c);\r
+       \r
+       if (str) {\r
+               **str = (char)c;\r
+               ++(*str);\r
+       }\r
+       else\r
+       { \r
+               (void)putchar(c);\r
+       }\r
+}\r
+\r
+#define PAD_RIGHT 1\r
+#define PAD_ZERO 2\r
+\r
+static int prints(char **out, const char *string, int width, int pad)\r
+{\r
+       register int pc = 0, padchar = ' ';\r
+\r
+       if (width > 0) {\r
+               register int len = 0;\r
+               register const char *ptr;\r
+               for (ptr = string; *ptr; ++ptr) ++len;\r
+               if (len >= width) width = 0;\r
+               else width -= len;\r
+               if (pad & PAD_ZERO) padchar = '0';\r
+       }\r
+       if (!(pad & PAD_RIGHT)) {\r
+               for ( ; width > 0; --width) {\r
+                       printchar (out, padchar);\r
+                       ++pc;\r
+               }\r
+       }\r
+       for ( ; *string ; ++string) {\r
+               printchar (out, *string);\r
+               ++pc;\r
+       }\r
+       for ( ; width > 0; --width) {\r
+               printchar (out, padchar);\r
+               ++pc;\r
+       }\r
+\r
+       return pc;\r
+}\r
+\r
+/* the following should be enough for 32 bit int */\r
+#define PRINT_BUF_LEN 12\r
+\r
+static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase)\r
+{\r
+       char print_buf[PRINT_BUF_LEN];\r
+       register char *s;\r
+       register int t, neg = 0, pc = 0;\r
+       register unsigned int u = (unsigned int)i;\r
+\r
+       if (i == 0) {\r
+               print_buf[0] = '0';\r
+               print_buf[1] = '\0';\r
+               return prints (out, print_buf, width, pad);\r
+       }\r
+\r
+       if (sg && b == 10 && i < 0) {\r
+               neg = 1;\r
+               u = (unsigned int)-i;\r
+       }\r
+\r
+       s = print_buf + PRINT_BUF_LEN-1;\r
+       *s = '\0';\r
+\r
+       while (u) {\r
+               t = (int)u % b;\r
+               if( t >= 10 )\r
+                       t += letbase - '0' - 10;\r
+               *--s = (char)(t + '0');\r
+               u /= b;\r
+       }\r
+\r
+       if (neg) {\r
+               if( width && (pad & PAD_ZERO) ) {\r
+                       printchar (out, '-');\r
+                       ++pc;\r
+                       --width;\r
+               }\r
+               else {\r
+                       *--s = '-';\r
+               }\r
+       }\r
+\r
+       return pc + prints (out, s, width, pad);\r
+}\r
+\r
+static int print( char **out, const char *format, va_list args )\r
+{\r
+       register int width, pad;\r
+       register int pc = 0;\r
+       char scr[2];\r
+\r
+       for (; *format != 0; ++format) {\r
+               if (*format == '%') {\r
+                       ++format;\r
+                       width = pad = 0;\r
+                       if (*format == '\0') break;\r
+                       if (*format == '%') goto out;\r
+                       if (*format == '-') {\r
+                               ++format;\r
+                               pad = PAD_RIGHT;\r
+                       }\r
+                       while (*format == '0') {\r
+                               ++format;\r
+                               pad |= PAD_ZERO;\r
+                       }\r
+                       for ( ; *format >= '0' && *format <= '9'; ++format) {\r
+                               width *= 10;\r
+                               width += *format - '0';\r
+                       }\r
+                       if( *format == 's' ) {\r
+                               register char *s = (char *)va_arg( args, int );\r
+                               pc += prints (out, s?s:"(null)", width, pad);\r
+                               continue;\r
+                       }\r
+                       if( *format == 'd' ) {\r
+                               pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a');\r
+                               continue;\r
+                       }\r
+                       if( *format == 'x' ) {\r
+                               pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');\r
+                               continue;\r
+                       }\r
+                       if( *format == 'X' ) {\r
+                               pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A');\r
+                               continue;\r
+                       }\r
+                       if( *format == 'u' ) {\r
+                               pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a');\r
+                               continue;\r
+                       }\r
+                       if( *format == 'c' ) {\r
+                               /* char are converted to int then pushed on the stack */\r
+                               scr[0] = (char)va_arg( args, int );\r
+                               scr[1] = '\0';\r
+                               pc += prints (out, scr, width, pad);\r
+                               continue;\r
+                       }\r
+               }\r
+               else {\r
+               out:\r
+                       printchar (out, *format);\r
+                       ++pc;\r
+               }\r
+       }\r
+       if (out) **out = '\0';\r
+       va_end( args );\r
+       return pc;\r
+}\r
+\r
+int printf(const char *format, ...)\r
+{\r
+        va_list args;\r
+        \r
+        va_start( args, format );\r
+        return print( 0, format, args );\r
+}\r
+\r
+int sprintf(char *out, const char *format, ...)\r
+{\r
+        va_list args;\r
+        \r
+        va_start( args, format );\r
+        return print( &out, format, args );\r
+}\r
+\r
+\r
+int snprintf( char *buf, unsigned int count, const char *format, ... )\r
+{\r
+        va_list args;\r
+        \r
+        ( void ) count;\r
+        \r
+        va_start( args, format );\r
+        return print( &buf, format, args );\r
+}\r
+\r
+\r
+#ifdef TEST_PRINTF\r
+int main(void)\r
+{\r
+       char *ptr = "Hello world!";\r
+       char *np = 0;\r
+       int i = 5;\r
+       unsigned int bs = sizeof(int)*8;\r
+       int mi;\r
+       char buf[80];\r
+\r
+       mi = (1 << (bs-1)) + 1;\r
+       printf("%s\n", ptr);\r
+       printf("printf test\n");\r
+       printf("%s is null pointer\n", np);\r
+       printf("%d = 5\n", i);\r
+       printf("%d = - max int\n", mi);\r
+       printf("char %c = 'a'\n", 'a');\r
+       printf("hex %x = ff\n", 0xff);\r
+       printf("hex %02x = 00\n", 0);\r
+       printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3);\r
+       printf("%d %s(s)%", 0, "message");\r
+       printf("\n");\r
+       printf("%d %s(s) with %%\n", 0, "message");\r
+       sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf);\r
+       sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf);\r
+       sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf);\r
+       sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf);\r
+       sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf);\r
+       sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf);\r
+       sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf);\r
+       sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf);\r
+\r
+       return 0;\r
+}\r
+\r
+/*\r
+ * if you compile this file with\r
+ *   gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c\r
+ * you will get a normal warning:\r
+ *   printf.c:214: warning: spurious trailing `%' in format\r
+ * this line is testing an invalid % at the end of the format string.\r
+ *\r
+ * this should display (on 32bit int machine) :\r
+ *\r
+ * Hello world!\r
+ * printf test\r
+ * (null) is null pointer\r
+ * 5 = 5\r
+ * -2147483647 = - max int\r
+ * char a = 'a'\r
+ * hex ff = ff\r
+ * hex 00 = 00\r
+ * signed -3 = unsigned 4294967293 = hex fffffffd\r
+ * 0 message(s)\r
+ * 0 message(s) with %\r
+ * justif: "left      "\r
+ * justif: "     right"\r
+ *  3: 0003 zero padded\r
+ *  3: 3    left justif.\r
+ *  3:    3 right justif.\r
+ * -3: -003 zero padded\r
+ * -3: -3   left justif.\r
+ * -3:   -3 right justif.\r
+ */\r
+\r
+#endif\r
+\r
+\r
+/* To keep linker happy. */\r
+int    write( int i, char* c, int n)\r
+{\r
+       (void)i;\r
+       (void)n;\r
+       (void)c;\r
+       return 0;\r
+}\r
+\r
index ef683fd9f6f05b01aaa89f80c92ac29c24a14311..7b7fef7fd9214077350ce654f7d89b3632848e58 100644 (file)
@@ -50,7 +50,8 @@
 #include "httpd.h"\r
 #include "httpd-cgi.h"\r
 #include "httpd-fs.h"\r
-\r
+#include "FreeRTOS.h"\r
+#include "partest.h"\r
 #include <stdio.h>\r
 #include <string.h>\r
 \r