mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Add the SAM7X Eclipse files.
This commit is contained in:
parent
620d3999ef
commit
e8ddef1d93
0
Demo/ARM7_AT91SAM7X256_Eclipse/.metadata/.lock
Normal file
0
Demo/ARM7_AT91SAM7X256_Eclipse/.metadata/.lock
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
*** SESSION Sep 07, 2007 11:40:29.515 ------------------------------------------
|
||||||
|
*** SESSION Sep 26, 2007 20:59:04.640 ------------------------------------------
|
||||||
|
*** SESSION Sep 27, 2007 17:22:58.687 ------------------------------------------
|
||||||
|
*** SESSION Oct 04, 2007 20:29:08.859 ------------------------------------------
|
||||||
|
*** SESSION Oct 23, 2007 19:47:01.875 ------------------------------------------
|
||||||
|
*** SESSION Oct 23, 2007 21:13:26.296 ------------------------------------------
|
||||||
|
*** SESSION Oct 23, 2007 21:22:16.187 ------------------------------------------
|
||||||
|
*** SESSION Oct 28, 2007 12:37:13.93 -------------------------------------------
|
||||||
|
*** SESSION Nov 06, 2007 16:04:46.31 -------------------------------------------
|
||||||
|
*** SESSION Nov 06, 2007 20:19:12.359 ------------------------------------------
|
||||||
|
*** SESSION Nov 07, 2007 18:40:55.281 ------------------------------------------
|
||||||
|
*** SESSION Nov 13, 2007 20:49:09.875 ------------------------------------------
|
||||||
|
*** SESSION Nov 17, 2007 17:59:26.734 ------------------------------------------
|
||||||
|
*** SESSION Nov 17, 2007 19:36:59.656 ------------------------------------------
|
||||||
|
*** SESSION Nov 21, 2007 08:36:47.312 ------------------------------------------
|
||||||
|
*** SESSION Nov 21, 2007 15:42:29.171 ------------------------------------------
|
||||||
|
*** SESSION Nov 21, 2007 17:07:49.515 ------------------------------------------
|
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?><SharedRoot><SharedProperty id="" value=""/></SharedRoot>
|
|
@ -0,0 +1,161 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?scdStore version="2"?>
|
||||||
|
|
||||||
|
<scannerInfo id="org.eclipse.cdt.make.core.discoveredScannerInfo">
|
||||||
|
<instance id="0.1109417601">
|
||||||
|
<collector id="org.eclipse.cdt.make.core.PerProjectSICollector">
|
||||||
|
<includePath path="c:/devtools/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.2.0/include"/>
|
||||||
|
<includePath path="c:/devtools/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.2.0/include-fixed"/>
|
||||||
|
<includePath path="c:/devtools/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.2.0/../../../../arm-none-eabi/include"/>
|
||||||
|
<includePath path="c:/devtools/codesourcery/sourcery g++ lite/lib/gcc/../../lib/gcc/arm-none-eabi/4.2.0/include"/>
|
||||||
|
<includePath path="c:/devtools/codesourcery/sourcery g++ lite/lib/gcc/../../lib/gcc/arm-none-eabi/4.2.0/include-fixed"/>
|
||||||
|
<includePath path="c:/devtools/codesourcery/sourcery g++ lite/lib/gcc/../../lib/gcc/arm-none-eabi/4.2.0/../../../../arm-none-eabi/include"/>
|
||||||
|
<includePath path="C:/E/Dev/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo"/>
|
||||||
|
<includePath path="C:/E/Dev/FreeRTOS/Source/include"/>
|
||||||
|
<includePath path="C:/E/Dev/FreeRTOS/Source/portable/GCC/ARM7_AT91SAM7S"/>
|
||||||
|
<includePath path="C:/E/Dev/FreeRTOS/Source/portable/GCC/ARM7_LPC23xx"/>
|
||||||
|
<includePath path="C:/E/Dev/FreeRTOS/Source/portable/GCC/ARM_CM3"/>
|
||||||
|
<includePath path="C:/E/Dev/FreeRTOS/Demo/Common/include"/>
|
||||||
|
<includePath path="C:/E/Dev/FreeRTOS/Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver"/>
|
||||||
|
<includePath path="C:/E/Dev/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip"/>
|
||||||
|
<includePath path="C:/E/Dev/FreeRTOS/Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/SrcAtmel"/>
|
||||||
|
<includePath path="C:/E/Dev/FreeRTOS/Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/USB"/>
|
||||||
|
<includePath path="c:\devtools\yagarto\bin\../lib/gcc/arm-elf/4.2.1/include"/>
|
||||||
|
<includePath path="C:/devtools/yagarto/lib/gcc/arm-elf/4.2.1/include"/>
|
||||||
|
<includePath path="C:/E/Dev/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver"/>
|
||||||
|
<includePath path="c:\devtools\yagarto\bin\../lib/gcc/arm-elf/4.1.1/include"/>
|
||||||
|
<includePath path="C:/devtools/yagarto/lib/gcc/arm-elf/4.1.1/include"/>
|
||||||
|
<includePath path="C:/devtools/yagarto/arm-elf/include"/>
|
||||||
|
<includePath path="C:/E/Dev/FreeRTOS/Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo"/>
|
||||||
|
<definedSymbol symbol="__STDC__=1"/>
|
||||||
|
<definedSymbol symbol="__STDC_HOSTED__=1"/>
|
||||||
|
<definedSymbol symbol="__GNUC__=4"/>
|
||||||
|
<definedSymbol symbol="__GNUC_MINOR__=2"/>
|
||||||
|
<definedSymbol symbol="__GNUC_MINOR__=1"/>
|
||||||
|
<definedSymbol symbol="__GNUC_PATCHLEVEL__=0"/>
|
||||||
|
<definedSymbol symbol="__GNUC_PATCHLEVEL__=1"/>
|
||||||
|
<definedSymbol symbol="__SIZE_TYPE__=unsigned int"/>
|
||||||
|
<definedSymbol symbol="__SIZE_TYPE__=long unsigned int"/>
|
||||||
|
<definedSymbol symbol="__PTRDIFF_TYPE__=int"/>
|
||||||
|
<definedSymbol symbol="__PTRDIFF_TYPE__=long int"/>
|
||||||
|
<definedSymbol symbol="__WCHAR_TYPE__=unsigned int"/>
|
||||||
|
<definedSymbol symbol="__WCHAR_TYPE__=int"/>
|
||||||
|
<definedSymbol symbol="__WINT_TYPE__=unsigned int"/>
|
||||||
|
<definedSymbol symbol="__INTMAX_TYPE__=long long int"/>
|
||||||
|
<definedSymbol symbol="__UINTMAX_TYPE__=long long unsigned int"/>
|
||||||
|
<definedSymbol symbol="__GXX_ABI_VERSION=1002"/>
|
||||||
|
<definedSymbol symbol="__SCHAR_MAX__=127"/>
|
||||||
|
<definedSymbol symbol="__SHRT_MAX__=32767"/>
|
||||||
|
<definedSymbol symbol="__INT_MAX__=2147483647"/>
|
||||||
|
<definedSymbol symbol="__LONG_MAX__=2147483647L"/>
|
||||||
|
<definedSymbol symbol="__LONG_LONG_MAX__=9223372036854775807LL"/>
|
||||||
|
<definedSymbol symbol="__WCHAR_MAX__=4294967295U"/>
|
||||||
|
<definedSymbol symbol="__WCHAR_MAX__=2147483647"/>
|
||||||
|
<definedSymbol symbol="__CHAR_BIT__=8"/>
|
||||||
|
<definedSymbol symbol="__INTMAX_MAX__=9223372036854775807LL"/>
|
||||||
|
<definedSymbol symbol="__FLT_EVAL_METHOD__=0"/>
|
||||||
|
<definedSymbol symbol="__DEC_EVAL_METHOD__=2"/>
|
||||||
|
<definedSymbol symbol="__FLT_RADIX__=2"/>
|
||||||
|
<definedSymbol symbol="__FLT_MANT_DIG__=24"/>
|
||||||
|
<definedSymbol symbol="__FLT_DIG__=6"/>
|
||||||
|
<definedSymbol symbol="__FLT_MIN_EXP__=(-125)"/>
|
||||||
|
<definedSymbol symbol="__FLT_MIN_10_EXP__=(-37)"/>
|
||||||
|
<definedSymbol symbol="__FLT_MAX_EXP__=128"/>
|
||||||
|
<definedSymbol symbol="__FLT_MAX_10_EXP__=38"/>
|
||||||
|
<definedSymbol symbol="__FLT_MAX__=3.40282347e+38F"/>
|
||||||
|
<definedSymbol symbol="__FLT_MIN__=1.17549435e-38F"/>
|
||||||
|
<definedSymbol symbol="__FLT_EPSILON__=1.19209290e-7F"/>
|
||||||
|
<definedSymbol symbol="__FLT_DENORM_MIN__=1.40129846e-45F"/>
|
||||||
|
<definedSymbol symbol="__FLT_HAS_DENORM__=1"/>
|
||||||
|
<definedSymbol symbol="__FLT_HAS_INFINITY__=1"/>
|
||||||
|
<definedSymbol symbol="__FLT_HAS_QUIET_NAN__=1"/>
|
||||||
|
<definedSymbol symbol="__DBL_MANT_DIG__=53"/>
|
||||||
|
<definedSymbol symbol="__DBL_DIG__=15"/>
|
||||||
|
<definedSymbol symbol="__DBL_MIN_EXP__=(-1021)"/>
|
||||||
|
<definedSymbol symbol="__DBL_MIN_10_EXP__=(-307)"/>
|
||||||
|
<definedSymbol symbol="__DBL_MAX_EXP__=1024"/>
|
||||||
|
<definedSymbol symbol="__DBL_MAX_10_EXP__=308"/>
|
||||||
|
<definedSymbol symbol="__DBL_MAX__=1.7976931348623157e+308"/>
|
||||||
|
<definedSymbol symbol="__DBL_MIN__=2.2250738585072014e-308"/>
|
||||||
|
<definedSymbol symbol="__DBL_EPSILON__=2.2204460492503131e-16"/>
|
||||||
|
<definedSymbol symbol="__DBL_DENORM_MIN__=4.9406564584124654e-324"/>
|
||||||
|
<definedSymbol symbol="__DBL_HAS_DENORM__=1"/>
|
||||||
|
<definedSymbol symbol="__DBL_HAS_INFINITY__=1"/>
|
||||||
|
<definedSymbol symbol="__DBL_HAS_QUIET_NAN__=1"/>
|
||||||
|
<definedSymbol symbol="__LDBL_MANT_DIG__=53"/>
|
||||||
|
<definedSymbol symbol="__LDBL_DIG__=15"/>
|
||||||
|
<definedSymbol symbol="__LDBL_MIN_EXP__=(-1021)"/>
|
||||||
|
<definedSymbol symbol="__LDBL_MIN_10_EXP__=(-307)"/>
|
||||||
|
<definedSymbol symbol="__LDBL_MAX_EXP__=1024"/>
|
||||||
|
<definedSymbol symbol="__LDBL_MAX_10_EXP__=308"/>
|
||||||
|
<definedSymbol symbol="__DECIMAL_DIG__=17"/>
|
||||||
|
<definedSymbol symbol="__LDBL_MAX__=1.7976931348623157e+308L"/>
|
||||||
|
<definedSymbol symbol="__LDBL_MIN__=2.2250738585072014e-308L"/>
|
||||||
|
<definedSymbol symbol="__LDBL_EPSILON__=2.2204460492503131e-16L"/>
|
||||||
|
<definedSymbol symbol="__LDBL_DENORM_MIN__=4.9406564584124654e-324L"/>
|
||||||
|
<definedSymbol symbol="__LDBL_HAS_DENORM__=1"/>
|
||||||
|
<definedSymbol symbol="__LDBL_HAS_INFINITY__=1"/>
|
||||||
|
<definedSymbol symbol="__LDBL_HAS_QUIET_NAN__=1"/>
|
||||||
|
<definedSymbol symbol="__DEC32_MANT_DIG__=7"/>
|
||||||
|
<definedSymbol symbol="__DEC32_MIN_EXP__=(-95)"/>
|
||||||
|
<definedSymbol symbol="__DEC32_MAX_EXP__=96"/>
|
||||||
|
<definedSymbol symbol="__DEC32_MIN__=1E-95DF"/>
|
||||||
|
<definedSymbol symbol="__DEC32_MAX__=9.999999E96DF"/>
|
||||||
|
<definedSymbol symbol="__DEC32_EPSILON__=1E-6DF"/>
|
||||||
|
<definedSymbol symbol="__DEC32_DEN__=0.000001E-95DF"/>
|
||||||
|
<definedSymbol symbol="__DEC64_MANT_DIG__=16"/>
|
||||||
|
<definedSymbol symbol="__DEC64_MIN_EXP__=(-383)"/>
|
||||||
|
<definedSymbol symbol="__DEC64_MAX_EXP__=384"/>
|
||||||
|
<definedSymbol symbol="__DEC64_MIN__=1E-383DD"/>
|
||||||
|
<definedSymbol symbol="__DEC64_MAX__=9.999999999999999E384DD"/>
|
||||||
|
<definedSymbol symbol="__DEC64_EPSILON__=1E-15DD"/>
|
||||||
|
<definedSymbol symbol="__DEC64_DEN__=0.000000000000001E-383DD"/>
|
||||||
|
<definedSymbol symbol="__DEC128_MANT_DIG__=34"/>
|
||||||
|
<definedSymbol symbol="__DEC128_MIN_EXP__=(-6143)"/>
|
||||||
|
<definedSymbol symbol="__DEC128_MAX_EXP__=6144"/>
|
||||||
|
<definedSymbol symbol="__DEC128_MIN__=1E-6143DL"/>
|
||||||
|
<definedSymbol symbol="__DEC128_MAX__=9.999999999999999999999999999999999E6144DL"/>
|
||||||
|
<definedSymbol symbol="__DEC128_EPSILON__=1E-33DL"/>
|
||||||
|
<definedSymbol symbol="__DEC128_DEN__=0.000000000000000000000000000000001E-6143DL"/>
|
||||||
|
<definedSymbol symbol="__REGISTER_PREFIX__"/>
|
||||||
|
<definedSymbol symbol="__USER_LABEL_PREFIX__"/>
|
||||||
|
<definedSymbol symbol="__VERSION__="4.2.0 20070413 (prerelease)""/>
|
||||||
|
<definedSymbol symbol="__VERSION__="4.1.1""/>
|
||||||
|
<definedSymbol removed="true" symbol="__VERSION__="4.2.1""/>
|
||||||
|
<definedSymbol symbol="__GNUC_GNU_INLINE__=1"/>
|
||||||
|
<definedSymbol symbol="__NO_INLINE__=1"/>
|
||||||
|
<definedSymbol symbol="__FINITE_MATH_ONLY__=0"/>
|
||||||
|
<definedSymbol symbol="__CHAR_UNSIGNED__=1"/>
|
||||||
|
<definedSymbol symbol="__arm__=1"/>
|
||||||
|
<definedSymbol symbol="__APCS_32__=1"/>
|
||||||
|
<definedSymbol symbol="__ARMEL__=1"/>
|
||||||
|
<definedSymbol symbol="__SOFTFP__=1"/>
|
||||||
|
<definedSymbol symbol="__VFP_FP__=1"/>
|
||||||
|
<definedSymbol symbol="__THUMB_INTERWORK__=1"/>
|
||||||
|
<definedSymbol symbol="__ARM_ARCH_4T__=1"/>
|
||||||
|
<definedSymbol symbol="__ARM_EABI__=1"/>
|
||||||
|
<definedSymbol symbol="__GXX_TYPEINFO_EQUALITY_INLINE=0"/>
|
||||||
|
<definedSymbol symbol="__ELF__=1"/>
|
||||||
|
<definedSymbol symbol="__USES_INITFINI__=1"/>
|
||||||
|
<definedSymbol symbol="GCC_ARMCM3_LM3S102"/>
|
||||||
|
<definedSymbol symbol="inline="/>
|
||||||
|
<definedSymbol symbol="PACK_STRUCT_END=__attribute\(\(packed\)\)"/>
|
||||||
|
<definedSymbol symbol="ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\)"/>
|
||||||
|
<definedSymbol symbol="sprintf=usprintf"/>
|
||||||
|
<definedSymbol removed="true" symbol="sprintf=xprintf"/>
|
||||||
|
<definedSymbol removed="true" symbol="sprintf=xxprintf"/>
|
||||||
|
<definedSymbol symbol="snprintf=usnprintf"/>
|
||||||
|
<definedSymbol symbol="printf=uipprintf"/>
|
||||||
|
<definedSymbol removed="true" symbol="printf=xprintf"/>
|
||||||
|
<definedSymbol removed="true" symbol="printf=xxprintf"/>
|
||||||
|
<definedSymbol symbol="__USING_SJLJ_EXCEPTIONS__=1"/>
|
||||||
|
<definedSymbol symbol="__thumb__=1"/>
|
||||||
|
<definedSymbol symbol="__THUMBEL__=1"/>
|
||||||
|
<definedSymbol symbol="ROWLEY_LPC23xx"/>
|
||||||
|
<definedSymbol symbol="THUMB_INTERWORK"/>
|
||||||
|
<definedSymbol symbol="__OPTIMIZE__=1"/>
|
||||||
|
<definedSymbol symbol="__OPTIMIZE_SIZE__=1"/>
|
||||||
|
<definedSymbol symbol="SAM7_GCC"/>
|
||||||
|
</collector>
|
||||||
|
</instance>
|
||||||
|
</scannerInfo>
|
|
@ -0,0 +1 @@
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="org.eclipse.cdt.internal.ui.MakeView">
|
||||||
|
</section>
|
||||||
|
</section>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<cHelpSettings>
|
||||||
|
<project name="RTOSDemo"/>
|
||||||
|
</cHelpSettings>
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<item value="1" key="org.eclipse.cdt.uiformatter_page.line_wrapping_tab_page.last_category_index"/>
|
||||||
|
<item value="549" key="org.eclipse.cdt.uiformatter_pagemodify_dialog.preferred_height"/>
|
||||||
|
<item value="138" key="org.eclipse.cdt.uiformatter_pagemodify_dialog.preferred_x"/>
|
||||||
|
<item value="0" key="org.eclipse.cdt.uiformatter_pagemodify_dialog.preferred_y"/>
|
||||||
|
<item value="645" key="org.eclipse.cdt.uiformatter_pagemodify_dialog.preferred_width"/>
|
||||||
|
<section name="completion_proposal_size">
|
||||||
|
</section>
|
||||||
|
<section name="PDOMSearchPage">
|
||||||
|
</section>
|
||||||
|
</section>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
#Sun Aug 19 15:20:24 BST 2007
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
indexer/preferenceScope=0
|
|
@ -0,0 +1,3 @@
|
||||||
|
#Sun Aug 19 15:19:23 BST 2007
|
||||||
|
org.eclipse.cdt.debug.core.cDebug.common_source_containers=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<sourceLookupDirector>\r\n<sourceContainers duplicates\="false"/>\r\n</sourceLookupDirector>\r\n
|
||||||
|
eclipse.preferences.version=1
|
|
@ -0,0 +1,5 @@
|
||||||
|
#Tue Oct 23 21:13:09 BST 2007
|
||||||
|
pref_state_memento.org.eclipse.cdt.debug.ui.ModulesView=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<ModulesViewMemento org.eclipse.cdt.debug.ui.SASH_DETAILS_PART\="570" org.eclipse.cdt.debug.ui.SASH_VIEW_PART\="429"/>
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.debug.ui.DebugView.org.eclipse.cdt.debug.ui.cDebug.show_full_paths=true
|
||||||
|
org.eclipse.debug.ui.BreakpointView.org.eclipse.cdt.debug.ui.cDebug.show_full_paths=true
|
|
@ -0,0 +1,3 @@
|
||||||
|
#Wed Nov 21 16:20:43 GMT 2007
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
properties/RTOSDemo.null.976634949/0.1109417601=\#\r\n\#Wed Nov 21 16\:20\:43 GMT 2007\r\n0.1109417601\=\\\#\\r\\n\\\#Wed Nov 21 16\\\:20\\\:43 GMT 2007\\r\\nrcState\\\=0\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.1502006385\=\\\#\\r\\n\\\#Wed Nov 21 16\\\:20\\\:43 GMT 2007\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.1021181093\=\\\#\\r\\n\\\#Wed Nov 21 16\\\:20\\\:43 GMT 2007\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.164584712\=\\\#\\r\\n\\\#Wed Nov 21 16\\\:20\\\:43 GMT 2007\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.libs.260784574\=\\\#\\r\\n\\\#Wed Nov 21 16\\\:20\\\:43 GMT 2007\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.prefbase.toolchain.1816209921\=\\\#\\r\\n\\\#Wed Nov 21 16\\\:20\\\:43 GMT 2007\\r\\nrebuildState\\\=false\\r\\n\r\n
|
|
@ -0,0 +1,12 @@
|
||||||
|
#Thu Aug 23 20:22:58 BST 2007
|
||||||
|
useQuickDiffPrefPage=true
|
||||||
|
closeBrackets=false
|
||||||
|
ensureNewlineAtEOF=true
|
||||||
|
useAnnotationsPrefPage=true
|
||||||
|
closeAngularBrackets=false
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.cdt.ui.text.templates.custom=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
|
||||||
|
hoverModifierMasks=org.eclipse.cdt.ui.BestMatchHover;0;org.eclipse.cdt.ui.CSourceHover;131072;org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover;0;org.eclipse.cdt.ui.CDocHover;0;org.eclipse.cdt.ui.AnnotationHover;0;
|
||||||
|
hoverModifiers=org.eclipse.cdt.ui.BestMatchHover;0;org.eclipse.cdt.ui.CSourceHover;Shift;org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover;\!0;org.eclipse.cdt.ui.CDocHover;\!0;org.eclipse.cdt.ui.AnnotationHover;\!0;
|
||||||
|
closeBraces=false
|
||||||
|
closeStrings=false
|
|
@ -0,0 +1,5 @@
|
||||||
|
#Fri Aug 31 14:25:00 BST 2007
|
||||||
|
version=1
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
pathvariable.FreeRTOS_ROOT=C\:/E/Dev/FreeRTOS
|
||||||
|
description.autobuilding=false
|
|
@ -0,0 +1,3 @@
|
||||||
|
#Sat Nov 17 13:34:58 GMT 2007
|
||||||
|
prefWatchExpressions=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<watchExpressions/>\r\n
|
||||||
|
eclipse.preferences.version=1
|
|
@ -0,0 +1,14 @@
|
||||||
|
#Wed Nov 07 18:56:22 GMT 2007
|
||||||
|
org.eclipse.debug.ui.PREF_FILTER_WORKING_SETS=false
|
||||||
|
org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<launchPerspectives/>\r\n
|
||||||
|
org.eclipse.debug.ui.BreakpointView+org.eclipse.debug.ui.ShowSupportedBreakpointsAction=true
|
||||||
|
pref_state_memento.org.eclipse.debug.ui.VariableView=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<VariablesViewMemento org.eclipse.debug.ui.SASH_DETAILS_PART\="315" org.eclipse.debug.ui.SASH_VIEW_PART\="684"/>
|
||||||
|
pref_state_memento.org.eclipse.debug.ui.RegisterView=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<VariablesViewMemento org.eclipse.debug.ui.SASH_DETAILS_PART\="198" org.eclipse.debug.ui.SASH_VIEW_PART\="801"/>
|
||||||
|
org.eclipse.debug.ui.memory.columnSize\:org.eclipse.cdt.debug.core=4
|
||||||
|
pref_state_memento.org.eclipse.debug.ui.ExpressionView=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<VariablesViewMemento org.eclipse.debug.ui.SASH_DETAILS_PART\="315" org.eclipse.debug.ui.SASH_VIEW_PART\="684"/>
|
||||||
|
org.eclipse.debug.ui.PREF_FILTER_LAUNCH_CLOSED=false
|
||||||
|
preferredDetailPanes=DefaultDetailPane\:DefaultDetailPane|
|
||||||
|
org.eclipse.debug.ui.PREF_FILTER_LAUNCH_DELETED=false
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.debug.ui.memory.rowSize\:org.eclipse.cdt.debug.core=16
|
||||||
|
org.eclipse.debug.ui.user_view_bindings=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<viewBindings>\r\n<view id\="org.eclipse.debug.ui.ExpressionView">\r\n<perspective id\="org.eclipse.debug.ui.DebugPerspective" userAction\="opened"/>\r\n</view>\r\n</viewBindings>\r\n
|
|
@ -0,0 +1,7 @@
|
||||||
|
#Sun Aug 26 17:32:13 BST 2007
|
||||||
|
browser.x=177
|
||||||
|
browser.w=1024
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
browser.h=768
|
||||||
|
browser.maximized=false
|
||||||
|
browser.y=128
|
|
@ -0,0 +1,3 @@
|
||||||
|
#Sun Aug 19 19:39:29 BST 2007
|
||||||
|
org.eclipse.search.defaultPerspective=org.eclipse.search.defaultPerspective.none
|
||||||
|
eclipse.preferences.version=1
|
|
@ -0,0 +1,3 @@
|
||||||
|
#Fri Aug 31 18:19:04 BST 2007
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.team.ui.first_time=false
|
|
@ -0,0 +1,3 @@
|
||||||
|
#Sun Aug 19 20:45:57 BST 2007
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
overviewRuler_migration=migrated_3.1
|
|
@ -0,0 +1,4 @@
|
||||||
|
#Tue Nov 06 22:57:01 GMT 2007
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
tipsAndTricks=true
|
||||||
|
platformState=1187207632259
|
|
@ -0,0 +1,3 @@
|
||||||
|
#Sun Aug 19 20:45:58 BST 2007
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
showIntro=false
|
|
@ -0,0 +1,3 @@
|
||||||
|
#Mon Aug 20 21:59:49 BST 2007
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.ui.commands=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<org.eclipse.ui.commands>\r\n<keyBinding contextId\="org.eclipse.ui.contexts.window" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="CTRL+B"/>\r\n<keyBinding commandId\="org.eclipse.ui.project.buildAll" contextId\="org.eclipse.ui.contexts.window" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="F7"/>\r\n<keyBinding contextId\="org.eclipse.ui.contexts.window" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="F11"/>\r\n<keyBinding contextId\="org.eclipse.debug.ui.debugging" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="F5"/>\r\n<keyBinding commandId\="org.eclipse.debug.ui.commands.StepInto" contextId\="org.eclipse.ui.contexts.window" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="F11"/>\r\n<keyBinding contextId\="org.eclipse.debug.ui.debugging" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="F6"/>\r\n<keyBinding commandId\="org.eclipse.debug.ui.commands.StepOver" contextId\="org.eclipse.ui.contexts.window" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="F10"/>\r\n<keyBinding commandId\="org.eclipse.debug.ui.commands.DebugLast" contextId\="org.eclipse.ui.contexts.window" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="CTRL+D"/>\r\n<keyBinding contextId\="org.eclipse.ui.textEditorScope" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="CTRL+D"/>\r\n<keyBinding contextId\="org.eclipse.ui.contexts.window" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="CTRL+F11"/>\r\n<keyBinding commandId\="org.eclipse.debug.ui.commands.RunLast" contextId\="org.eclipse.ui.contexts.window" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="F5"/>\r\n<keyBinding contextId\="org.eclipse.ui.contexts.window" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="F5"/>\r\n<keyBinding contextId\="org.eclipse.ui.textEditorScope" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="CTRL+K"/>\r\n<keyBinding commandId\="org.eclipse.ui.edit.findNext" contextId\="org.eclipse.ui.contexts.window" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="F3"/>\r\n<keyBinding contextId\="org.eclipse.cdt.make.ui.makefileEditorScope" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="F3"/>\r\n<keyBinding contextId\="org.eclipse.cdt.ui.cEditorScope" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="F3"/>\r\n<keyBinding contextId\="org.eclipse.cdt.ui.cViewScope" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="F3"/>\r\n</org.eclipse.ui.commands>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
|
||||||
|
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc}/../Common/drivers/OpenOCD/openocd-pp.exe"/>
|
||||||
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="--file SAM7_flash.cfg"/>
|
||||||
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc}"/>
|
||||||
|
</launchConfiguration>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
|
||||||
|
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc}/../Common/drivers/OpenOCD/openocd-pp.exe"/>
|
||||||
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="--file SAM7_pp.cfg"/>
|
||||||
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc}"/>
|
||||||
|
</launchConfiguration>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="org.eclipse.cdt.launch.localCLaunch">
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.mi.core.AUTO_SOLIB" value="true"/>
|
||||||
|
<listAttribute key="org.eclipse.cdt.debug.mi.core.AUTO_SOLIB_LIST"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.mi.core.DEBUG_NAME" value="gdb"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.mi.core.DEV" value="/dev/ttyS0"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.mi.core.DEV_SPEED" value="115200"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.mi.core.GDB_INIT" value=".gdbinit"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.mi.core.HOST" value="localhost"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.mi.core.PORT" value="10000"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.mi.core.REMOTE_TCP" value="false"/>
|
||||||
|
<listAttribute key="org.eclipse.cdt.debug.mi.core.SOLIB_PATH"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.mi.core.STOP_ON_SOLIB_EVENTS" value="false"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.mi.core.commandFactory" value="org.eclipse.cdt.debug.mi.core.standardCommandFactory"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.mi.core.protocol" value="mi"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.mi.core.verboseMode" value="false"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="org.eclipse.cdt.debug.mi.core.GDBServerCDebugger"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.launch.ENABLE_REGISTER_BOOKKEEPING" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.launch.ENABLE_VARIABLE_BOOKKEEPING" value="false"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="RTOSDemo.elf"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="RTOSDemo"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
|
<listEntry value="/RTOSDemo"/>
|
||||||
|
</listAttribute>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
|
<listEntry value="4"/>
|
||||||
|
</listAttribute>
|
||||||
|
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
|
||||||
|
</launchConfiguration>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="org.eclipse.cdt.debug.gdbjtag.launchConfigurationType">
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbremote.core.imageFileName" value="C:\E\Dev\FreeRTOS\Demo\CORTEX_LM3S8962_Eclipse\RTOSDemo\RTOSDemo.elf"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbremote.core.initCommands" value="target remote:3333 monitor sleep 500 monitor arm7_9 force_hw_bkpts enable monitor sleep 500 monitor soft_reset_halt delete monitor sleep 500 b main monitor sleep 500 c monitor sleep 500 delete "/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbremote.core.ipAddress" value="localhost"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbremote.core.loadImage" value="false"/>
|
||||||
|
<intAttribute key="org.eclipse.cdt.debug.gdbremote.core.portNumber" value="3333"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbremote.core.runCommands" value=""/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbremote.core.useRemoteTarget" value="false"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.mi.core.DEBUG_NAME" value="arm-elf-gdb.exe"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.mi.core.GDB_INIT" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.mi.core.commandFactory" value="Standard"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.mi.core.protocol" value="mi"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.mi.core.verboseMode" value="false"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <globalVariableList/> "/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList> <memoryBlockExpressionItem> <expression text="2107200"/> </memoryBlockExpressionItem> </memoryBlockExpressionList> "/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="RTOSDemo.elf"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="RTOSDemo"/>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
|
<listEntry value="/RTOSDemo"/>
|
||||||
|
</listAttribute>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
|
<listEntry value="4"/>
|
||||||
|
</listAttribute>
|
||||||
|
</launchConfiguration>
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="org.eclipse.debug.ui.STRING_VARIABLE_SELECTION_DIALOG_SECTION">
|
||||||
|
<item value="326" key="DIALOG_WIDTH"/>
|
||||||
|
<item value="-33" key="DIALOG_Y_ORIGIN"/>
|
||||||
|
<item value="309" key="DIALOG_X_ORIGIN"/>
|
||||||
|
<item value="530" key="DIALOG_HEIGHT"/>
|
||||||
|
<item value="1|Tahoma|8.25|0|WINDOWS|1|-11|0|0|0|400|0|0|0|1|0|0|0|0|Tahoma" key="DIALOG_FONT_NAME"/>
|
||||||
|
</section>
|
||||||
|
<section name="org.eclipse.debug.ui.LAUNCH_CONFIGURATIONS_DIALOG_SECTION">
|
||||||
|
<item value="966" key="DIALOG_WIDTH"/>
|
||||||
|
<item value="154" key="DIALOG_Y_ORIGIN"/>
|
||||||
|
<item value=", org.eclipse.ui.externaltools.ProgramLaunchConfigurationType, org.eclipse.cdt.debug.gdbjtag.launchConfigurationType, " key="org.eclipse.debug.ui.EXPANDED_NODES"/>
|
||||||
|
<item value="274" key="DIALOG_X_ORIGIN"/>
|
||||||
|
<item value="640" key="DIALOG_HEIGHT"/>
|
||||||
|
<item value="237" key="org.eclipse.debug.ui.DIALOG_SASH_WEIGHTS_1"/>
|
||||||
|
<item value="762" key="org.eclipse.debug.ui.DIALOG_SASH_WEIGHTS_2"/>
|
||||||
|
<item value="1|Tahoma|8.25|0|WINDOWS|1|-11|0|0|0|400|0|0|0|1|0|0|0|0|Tahoma" key="DIALOG_FONT_NAME"/>
|
||||||
|
</section>
|
||||||
|
<section name="org.eclipse.debug.ui.SELECT_LAUNCH_SHORTCUT_DIALOG">
|
||||||
|
<item value="450" key="DIALOG_WIDTH"/>
|
||||||
|
<item value="215" key="DIALOG_Y_ORIGIN"/>
|
||||||
|
<item value="479" key="DIALOG_X_ORIGIN"/>
|
||||||
|
<item value="450" key="DIALOG_HEIGHT"/>
|
||||||
|
<item value="1|Tahoma|8.25|0|WINDOWS|1|-11|0|0|0|400|0|0|0|1|0|0|0|0|Tahoma" key="DIALOG_FONT_NAME"/>
|
||||||
|
</section>
|
||||||
|
<section name="org.eclipse.debug.ui.SELECT_CONFIGURATION_TYPE_DIALOG">
|
||||||
|
<item value="300" key="DIALOG_WIDTH"/>
|
||||||
|
<item value="46" key="DIALOG_Y_ORIGIN"/>
|
||||||
|
<item value="301" key="DIALOG_X_ORIGIN"/>
|
||||||
|
<item value="350" key="DIALOG_HEIGHT"/>
|
||||||
|
<item value="1|Tahoma|8.25|0|WINDOWS|1|-11|0|0|0|400|0|0|0|1|0|0|0|0|Tahoma" key="DIALOG_FONT_NAME"/>
|
||||||
|
</section>
|
||||||
|
<section name="FAVORITES_DIALOG_SECTION">
|
||||||
|
<item value="227" key="DIALOG_WIDTH"/>
|
||||||
|
<item value="360" key="DIALOG_Y_ORIGIN"/>
|
||||||
|
<item value="731" key="DIALOG_X_ORIGIN"/>
|
||||||
|
<item value="233" key="DIALOG_HEIGHT"/>
|
||||||
|
<item value="1|Tahoma|8.25|0|WINDOWS|1|-11|0|0|0|400|0|0|0|1|0|0|0|0|Tahoma" key="DIALOG_FONT_NAME"/>
|
||||||
|
</section>
|
||||||
|
</section>
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchHistory>
|
||||||
|
<launchGroup id="org.eclipse.ui.externaltools.launchGroup">
|
||||||
|
<mruHistory>
|
||||||
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="OpenOCD Server.launch"/> "/>
|
||||||
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="OpenOCD Programmer.launch"/> "/>
|
||||||
|
</mruHistory>
|
||||||
|
<favorites/>
|
||||||
|
</launchGroup>
|
||||||
|
<launchGroup id="org.eclipse.debug.ui.launchGroup.profile">
|
||||||
|
<mruHistory/>
|
||||||
|
<favorites/>
|
||||||
|
</launchGroup>
|
||||||
|
<launchGroup id="org.eclipse.debug.ui.launchGroup.debug">
|
||||||
|
<mruHistory>
|
||||||
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="RTOSDemo.launch"/> "/>
|
||||||
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="RTOSDemo.elf.launch"/> "/>
|
||||||
|
</mruHistory>
|
||||||
|
<favorites/>
|
||||||
|
</launchGroup>
|
||||||
|
<launchGroup id="org.eclipse.debug.ui.launchGroup.run">
|
||||||
|
<mruHistory>
|
||||||
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="RTOSDemo.elf.launch"/> "/>
|
||||||
|
</mruHistory>
|
||||||
|
<favorites/>
|
||||||
|
</launchGroup>
|
||||||
|
</launchHistory>
|
|
@ -0,0 +1,3 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
</section>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#Sun Aug 26 17:54:18 BST 2007
|
||||||
|
__DEFAULT__=true
|
|
@ -0,0 +1,4 @@
|
||||||
|
#Sun Aug 26 17:36:29 BST 2007
|
||||||
|
__DEFAULT__=false
|
||||||
|
org.eclipse.help.ui.localSearch.master=true
|
||||||
|
expression=relative path
|
|
@ -0,0 +1,4 @@
|
||||||
|
#Sun Aug 26 17:29:25 BST 2007
|
||||||
|
__DEFAULT__=false
|
||||||
|
org.eclipse.help.ui.localSearch.master=true
|
||||||
|
expression=working set
|
|
@ -0,0 +1,4 @@
|
||||||
|
#Sun Aug 26 17:54:21 BST 2007
|
||||||
|
__DEFAULT__=false
|
||||||
|
org.eclipse.help.ui.localSearch.master=true
|
||||||
|
expression=working sets
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="RefactoringPropertyPage">
|
||||||
|
<item value="true" key="org.eclipse.ltk.ui.refactoring.sortRefactorings"/>
|
||||||
|
</section>
|
||||||
|
</section>
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="">
|
||||||
|
<item value="1000" key="org.eclipse.search.resultpage.limit"/>
|
||||||
|
</section>
|
||||||
|
<section name="DialogBounds_SearchDialog">
|
||||||
|
<item value="519" key="DIALOG_WIDTH"/>
|
||||||
|
<item value="259" key="DIALOG_Y_ORIGIN"/>
|
||||||
|
<item value="385" key="DIALOG_HEIGHT"/>
|
||||||
|
<item value="445" key="DIALOG_X_ORIGIN"/>
|
||||||
|
<item value="1|Tahoma|8.25|0|WINDOWS|1|-11|0|0|0|400|0|0|0|1|0|0|0|0|Tahoma" key="DIALOG_FONT_NAME"/>
|
||||||
|
</section>
|
||||||
|
<section name="Search">
|
||||||
|
<list key="Search.processedPageIds">
|
||||||
|
<item value="org.eclipse.search.internal.ui.text.TextSearchPage"/>
|
||||||
|
<item value="org.eclipse.cdt.ui.pdomSearchPage"/>
|
||||||
|
</list>
|
||||||
|
<list key="Search.enabledPageIds">
|
||||||
|
<item value="org.eclipse.search.internal.ui.text.TextSearchPage"/>
|
||||||
|
<item value="org.eclipse.cdt.ui.pdomSearchPage"/>
|
||||||
|
</list>
|
||||||
|
</section>
|
||||||
|
<section name="org.eclipse.search.text.FileSearchResultPage">
|
||||||
|
<item value="1000" key="org.eclipse.search.resultpage.limit"/>
|
||||||
|
</section>
|
||||||
|
<section name="TextSearchPage">
|
||||||
|
<item value="false" key="CASE_SENSITIVE"/>
|
||||||
|
<item value="false" key="REG_EX_SEARCH"/>
|
||||||
|
<item value="false" key="SEARCH_DERIVED"/>
|
||||||
|
<item value="1" key="HISTORY_SIZE"/>
|
||||||
|
<section name="HISTORY0">
|
||||||
|
<item value="false" key="isRegExSearch"/>
|
||||||
|
<item value="struct timer" key="textPattern"/>
|
||||||
|
<item value="0" key="scope"/>
|
||||||
|
<item value="true" key="ignoreCase"/>
|
||||||
|
<list key="fileNamePatterns">
|
||||||
|
<item value="*.c *.h"/>
|
||||||
|
</list>
|
||||||
|
<list key="workingSets">
|
||||||
|
</list>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
<section name="SearchDialog.ScopePart">
|
||||||
|
<item value="0" key="scope"/>
|
||||||
|
</section>
|
||||||
|
</section>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="CheatSheetCategoryBasedSelectionDialog">
|
||||||
|
<item value="326" key="DIALOG_WIDTH"/>
|
||||||
|
<item value="154" key="DIALOG_Y_ORIGIN"/>
|
||||||
|
<item value="542" key="DIALOG_HEIGHT"/>
|
||||||
|
<item value="541" key="DIALOG_X_ORIGIN"/>
|
||||||
|
<item value="1|Tahoma|8.25|0|WINDOWS|1|-11|0|0|0|400|0|0|0|1|0|0|0|0|Tahoma" key="DIALOG_FONT_NAME"/>
|
||||||
|
</section>
|
||||||
|
</section>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="ResourceNavigator">
|
||||||
|
<item value="FreeRTOS_LM3S8962_Demo" key="ResourceWorkingSetFilter.STORE_WORKING_SET"/>
|
||||||
|
<item value="1" key="ResourceViewer.STORE_SORT_TYPE"/>
|
||||||
|
</section>
|
||||||
|
<section name="org.eclipse.ui.views.task">
|
||||||
|
</section>
|
||||||
|
<section name="org.eclipse.ui.views.problem">
|
||||||
|
</section>
|
||||||
|
<section name="SaveAsDialogSettings">
|
||||||
|
<item value="438" key="DIALOG_WIDTH"/>
|
||||||
|
<item value="147" key="DIALOG_Y_ORIGIN"/>
|
||||||
|
<item value="625" key="DIALOG_X_ORIGIN"/>
|
||||||
|
<item value="553" key="DIALOG_HEIGHT"/>
|
||||||
|
<item value="1|Tahoma|8.25|0|WINDOWS|1|-11|0|0|0|400|0|0|0|1|0|0|0|0|Tahoma" key="DIALOG_FONT_NAME"/>
|
||||||
|
</section>
|
||||||
|
<section name="CleanDialogSettings">
|
||||||
|
<item value="443" key="DIALOG_WIDTH"/>
|
||||||
|
<item value="true" key="BUILD_NOW"/>
|
||||||
|
<item value="251" key="DIALOG_Y_ORIGIN"/>
|
||||||
|
<item value="391" key="DIALOG_HEIGHT"/>
|
||||||
|
<item value="479" key="DIALOG_X_ORIGIN"/>
|
||||||
|
<item value="false" key="TOGGLE_SELECTED"/>
|
||||||
|
</section>
|
||||||
|
</section>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<item value="1024" key="introLaunchBar.location"/>
|
||||||
|
</section>
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="org.eclipse.ui.texteditor.FindReplaceDialog_dialogBounds">
|
||||||
|
<item value="243" key="DIALOG_WIDTH"/>
|
||||||
|
<item value="209" key="DIALOG_Y_ORIGIN"/>
|
||||||
|
<item value="1044" key="DIALOG_X_ORIGIN"/>
|
||||||
|
<item value="356" key="DIALOG_HEIGHT"/>
|
||||||
|
<item value="1|Tahoma|8.25|0|WINDOWS|1|-11|0|0|0|400|0|0|0|1|0|0|0|0|Tahoma" key="DIALOG_FONT_NAME"/>
|
||||||
|
</section>
|
||||||
|
<section name="org.eclipse.ui.texteditor.FindReplaceDialog">
|
||||||
|
<item value="false" key="wrap"/>
|
||||||
|
<item value="false" key="casesensitive"/>
|
||||||
|
<item value="false" key="isRegEx"/>
|
||||||
|
<item value="false" key="incremental"/>
|
||||||
|
<item value="false" key="wholeword"/>
|
||||||
|
<item value="xTaskCreate" key="selection"/>
|
||||||
|
<list key="findhistory">
|
||||||
|
<item value="xTaskCreate"/>
|
||||||
|
<item value="stallsent"/>
|
||||||
|
<item value="COUNT_MASK"/>
|
||||||
|
<item value="QUEUE_LENGTH"/>
|
||||||
|
<item value="uxQueueMessage"/>
|
||||||
|
<item value="bktALLOWABLE_MARGIN"/>
|
||||||
|
<item value="xAreBlockTimeTestTasksStillRunning"/>
|
||||||
|
<item value="vProcessInput"/>
|
||||||
|
</list>
|
||||||
|
<list key="replacehistory">
|
||||||
|
<item value="lEMACSend"/>
|
||||||
|
<item value="partstNUM_LEDS"/>
|
||||||
|
<item value="DESCRIPTORNUM"/>
|
||||||
|
<item value="MAC_TXPRODUCEINDEX"/>
|
||||||
|
<item value="MAC_TXDESCRIPTORNUMBER"/>
|
||||||
|
<item value="MAC_TXSTATUS"/>
|
||||||
|
<item value="MAC_TXDESCRIPTOR"/>
|
||||||
|
<item value="MAC_RXDESCRIPTORNUMBER"/>
|
||||||
|
</list>
|
||||||
|
</section>
|
||||||
|
</section>
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="WorkbenchPreferenceDialogSettings">
|
||||||
|
<item value="146" key="DIALOG_Y_ORIGIN"/>
|
||||||
|
<item value="269" key="DIALOG_X_ORIGIN"/>
|
||||||
|
</section>
|
||||||
|
<section name="org.eclipse.ui.preferences.keysPreferencePage">
|
||||||
|
<item value="true" key="uncategorizedFilter"/>
|
||||||
|
<item value="false" key="showAllField"/>
|
||||||
|
<item value="true" key="internalFilter"/>
|
||||||
|
<item value="true" key="actionSetFilter"/>
|
||||||
|
</section>
|
||||||
|
<section name="ImportExportAction">
|
||||||
|
<item value="org.eclipse.ui.wizards.import.FileSystem" key="ImportExportPage.STORE_SELECTED_IMPORT_WIZARD_ID"/>
|
||||||
|
<list key="ImportExportPage.STORE_EXPANDED_IMPORT_CATEGORIES">
|
||||||
|
<item value="org.eclipse.ui.Basic"/>
|
||||||
|
</list>
|
||||||
|
</section>
|
||||||
|
</section>
|
|
@ -0,0 +1,358 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<workbench progressCount="21" version="2.0">
|
||||||
|
<workbenchAdvisor/>
|
||||||
|
<window height="768" maximized="true" width="1024" x="66" y="69">
|
||||||
|
<fastViewData fastViewLocation="1024"/>
|
||||||
|
<perspectiveBar>
|
||||||
|
<itemSize x="160"/>
|
||||||
|
</perspectiveBar>
|
||||||
|
<coolbarLayout locked="0">
|
||||||
|
<coolItem id="group.file" itemType="typeGroupMarker"/>
|
||||||
|
<coolItem id="org.eclipse.ui.workbench.file" itemType="typeToolBarContribution" x="130" y="22"/>
|
||||||
|
<coolItem id="additions" itemType="typeGroupMarker"/>
|
||||||
|
<coolItem id="org.eclipse.cdt.ui.CElementCreationActionSet" itemType="typeToolBarContribution" x="161" y="22"/>
|
||||||
|
<coolItem id="org.eclipse.cdt.ui.buildConfigActionSet" itemType="typeToolBarContribution" x="85" y="22"/>
|
||||||
|
<coolItem id="org.eclipse.debug.ui.launchActionSet" itemType="typeToolBarContribution" x="124" y="22"/>
|
||||||
|
<coolItem id="org.eclipse.search.searchActionSet" itemType="typeToolBarContribution" x="61" y="22"/>
|
||||||
|
<coolItem id="org.eclipse.ui.edit.text.actionSet.presentation" itemType="typeToolBarContribution" x="61" y="22"/>
|
||||||
|
<coolItem id="group.nav" itemType="typeGroupMarker"/>
|
||||||
|
<coolItem id="org.eclipse.ui.workbench.navigate" itemType="typeToolBarContribution" x="185" y="22"/>
|
||||||
|
<coolItem id="group.editor" itemType="typeGroupMarker"/>
|
||||||
|
<coolItem id="org.eclipse.cdt.ui.editor.asm.AsmEditor" itemType="typeToolBarContribution" x="-1" y="-1"/>
|
||||||
|
<coolItem id="org.eclipse.ui.DefaultTextEditor" itemType="typePlaceholder" x="-1" y="-1"/>
|
||||||
|
<coolItem id="org.eclipse.cdt.ui.editor.CEditor" itemType="typePlaceholder" x="-1" y="-1"/>
|
||||||
|
<coolItem id="org.eclipse.cdt.make.editor" itemType="typeToolBarContribution" x="-1" y="-1"/>
|
||||||
|
<coolItem id="group.help" itemType="typeGroupMarker"/>
|
||||||
|
<coolItem id="org.eclipse.ui.workbench.help" itemType="typeToolBarContribution" x="-1" y="-1"/>
|
||||||
|
</coolbarLayout>
|
||||||
|
<page aggregateWorkingSetId="Aggregate for window 1188147282312" focus="true" label="Workspace - C/C++">
|
||||||
|
<editors>
|
||||||
|
<editorArea activeWorkbook="DefaultEditorWorkbook">
|
||||||
|
<info part="DefaultEditorWorkbook">
|
||||||
|
<folder appearance="1" expanded="2">
|
||||||
|
<presentation id="org.eclipse.ui.internal.presentations.r33.WorkbenchPresentationFactory_33"/>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
</editorArea>
|
||||||
|
</editors>
|
||||||
|
<views>
|
||||||
|
<view id="org.eclipse.debug.ui.ExpressionView" partName="Expressions">
|
||||||
|
<viewState/>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.ui.navigator.ProjectExplorer" partName="Project Explorer">
|
||||||
|
<viewState CommonNavigator.LINKING_ENABLED="0" CommonNavigator.LINKING_ENABLED.delayed="0" org.eclipse.cdt.ui.cview.groupincludes="false" org.eclipse.cdt.ui.editor.CUChildren="true" org.eclipse.ui.navigator.resources.workingSets.showTopLevelWorkingSets="0"/>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.ui.views.PropertySheet" partName="Properties">
|
||||||
|
<viewState/>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.search.ui.views.SearchView" partName="Search">
|
||||||
|
<viewState isPinned="false">
|
||||||
|
<view IMemento.internal.id="" org.eclipse.search.lastActivation="0"/>
|
||||||
|
</viewState>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.ui.views.ResourceNavigator" partName="Navigator">
|
||||||
|
<viewState LINK_NAVIGATOR_TO_EDITOR="0" sorter="1">
|
||||||
|
<filters>
|
||||||
|
<filter element=".*" isEnabled="false"/>
|
||||||
|
<filter element="*.class" isEnabled="false"/>
|
||||||
|
</filters>
|
||||||
|
<expanded>
|
||||||
|
<element path="/RTOSDemo"/>
|
||||||
|
</expanded>
|
||||||
|
<selection>
|
||||||
|
<element path="/RTOSDemo/main.c"/>
|
||||||
|
</selection>
|
||||||
|
</viewState>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.debug.ui.DebugView" partName="Debug">
|
||||||
|
<viewState/>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.ui.views.ProblemView" partName="Problems">
|
||||||
|
<viewState columnWidth0="781" columnWidth1="78" columnWidth2="153" columnWidth3="63" columnWidth4="0" horizontalPosition="0" verticalPosition="0">
|
||||||
|
<columnOrder columnOrderIndex="0"/>
|
||||||
|
<columnOrder columnOrderIndex="1"/>
|
||||||
|
<columnOrder columnOrderIndex="2"/>
|
||||||
|
<columnOrder columnOrderIndex="3"/>
|
||||||
|
<columnOrder columnOrderIndex="4"/>
|
||||||
|
</viewState>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.ui.console.ConsoleView" partName="Console">
|
||||||
|
<viewState/>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.debug.ui.BreakpointView" partName="Breakpoints">
|
||||||
|
<viewState>
|
||||||
|
<isTrackingSelection value="false"/>
|
||||||
|
</viewState>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.debug.ui.VariableView" partName="Variables">
|
||||||
|
<viewState/>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.ui.views.TaskList" partName="Tasks">
|
||||||
|
<viewState columnWidth0="43" columnWidth1="19" columnWidth2="253" columnWidth3="78" columnWidth4="283" columnWidth5="63" columnWidth6="0" horizontalPosition="0" verticalPosition="0">
|
||||||
|
<columnOrder columnOrderIndex="0"/>
|
||||||
|
<columnOrder columnOrderIndex="1"/>
|
||||||
|
<columnOrder columnOrderIndex="2"/>
|
||||||
|
<columnOrder columnOrderIndex="3"/>
|
||||||
|
<columnOrder columnOrderIndex="4"/>
|
||||||
|
<columnOrder columnOrderIndex="5"/>
|
||||||
|
<columnOrder columnOrderIndex="6"/>
|
||||||
|
</viewState>
|
||||||
|
</view>
|
||||||
|
</views>
|
||||||
|
<perspectives activePart="org.eclipse.ui.views.ResourceNavigator" activePerspective="org.eclipse.cdt.ui.CPerspective">
|
||||||
|
<perspective editorAreaTrimState="2" editorAreaVisible="1" fixed="0" version="0.016">
|
||||||
|
<descriptor class="org.eclipse.cdt.internal.ui.CPerspectiveFactory" id="org.eclipse.cdt.ui.CPerspective" label="C/C++"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.cheatsheets.actionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.search.searchActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.annotationNavigation"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.navigation"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.externaltools.ExternalToolsSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.actionSet.keyBindings"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.WorkingSetActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.actionSet.openFiles"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.update.ui.softwareUpdates"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.ui.SearchActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.ui.CElementCreationActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.NavigateActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.debug.ui.breakpointActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.make.ui.makeTargetActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.ui.CodingActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.debug.ui.launchActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.ui.buildConfigActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.ui.NavigationActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.ui.OpenActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.presentation"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.console.ConsoleView"/>
|
||||||
|
<show_view_action id="org.eclipse.search.ui.views.SearchView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.ContentOutline"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.ProblemView"/>
|
||||||
|
<show_view_action id="org.eclipse.cdt.ui.CView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.ResourceNavigator"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.PropertySheet"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.TaskList"/>
|
||||||
|
<show_view_action id="org.eclipse.cdt.make.ui.views.MakeView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.navigator.ProjectExplorer"/>
|
||||||
|
<show_view_action id="org.eclipse.cdt.ui.includeBrowser"/>
|
||||||
|
<show_in_time id="org.eclipse.ui.views.ResourceNavigator" time="1187629972828"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.ConvertToMakeWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewCWizard2"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewCWizard1"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewSourceFolderCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewFolderCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewSourceFileCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewHeaderFileCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewFileCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewClassCreationWizard"/>
|
||||||
|
<perspective_action id="org.eclipse.debug.ui.DebugPerspective"/>
|
||||||
|
<perspective_action id="org.eclipse.team.ui.TeamSynchronizingPerspective"/>
|
||||||
|
<view id="org.eclipse.ui.navigator.ProjectExplorer"/>
|
||||||
|
<view id="org.eclipse.ui.views.ResourceNavigator"/>
|
||||||
|
<view id="org.eclipse.ui.views.ProblemView"/>
|
||||||
|
<view id="org.eclipse.ui.views.TaskList"/>
|
||||||
|
<view id="org.eclipse.ui.console.ConsoleView"/>
|
||||||
|
<view id="org.eclipse.ui.views.PropertySheet"/>
|
||||||
|
<view id="org.eclipse.search.ui.views.SearchView"/>
|
||||||
|
<fastViewBars/>
|
||||||
|
<layout>
|
||||||
|
<mainWindow>
|
||||||
|
<info folder="true" part="topLeft">
|
||||||
|
<folder activePageID="org.eclipse.ui.views.ResourceNavigator" appearance="2" expanded="2">
|
||||||
|
<page content="org.eclipse.ui.navigator.ProjectExplorer" label="Project Explorer"/>
|
||||||
|
<page content="org.eclipse.ui.views.ResourceNavigator" label="Navigator"/>
|
||||||
|
<page content="org.eclipse.cdt.ui.CView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.views.BookmarkView" label="LabelNotFound"/>
|
||||||
|
<presentation id="org.eclipse.ui.internal.presentations.r33.WorkbenchPresentationFactory_33">
|
||||||
|
<part id="0"/>
|
||||||
|
<part id="1"/>
|
||||||
|
</presentation>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info folder="true" part="org.eclipse.ui.internal.ViewStack@b4d39c" ratio="0.75" ratioLeft="756" ratioRight="252" relationship="2" relative="topLeft">
|
||||||
|
<folder appearance="2" expanded="2">
|
||||||
|
<page content="org.eclipse.help.ui.HelpView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.internal.introview" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.cheatsheets.views.CheatSheetView" label="LabelNotFound"/>
|
||||||
|
<presentation id="org.eclipse.ui.internal.presentations.r33.WorkbenchPresentationFactory_33"/>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info part="org.eclipse.ui.editorss" ratio="0.19510439" ratioLeft="271" ratioRight="1118" relationship="2" relative="topLeft"/>
|
||||||
|
<info folder="true" part="bottom" ratio="0.5195652" ratioLeft="478" ratioRight="442" relationship="4" relative="org.eclipse.ui.editorss">
|
||||||
|
<folder activePageID="org.eclipse.ui.console.ConsoleView" appearance="2" expanded="2">
|
||||||
|
<page content="org.eclipse.ui.views.ProblemView" label="Problems"/>
|
||||||
|
<page content="org.eclipse.ui.views.TaskList" label="Tasks"/>
|
||||||
|
<page content="org.eclipse.ui.console.ConsoleView" label="Console"/>
|
||||||
|
<page content="org.eclipse.ui.views.PropertySheet" label="Properties"/>
|
||||||
|
<page content="org.eclipse.search.ui.views.SearchView" label="Search"/>
|
||||||
|
<presentation id="org.eclipse.ui.internal.presentations.r33.WorkbenchPresentationFactory_33">
|
||||||
|
<part id="0"/>
|
||||||
|
<part id="1"/>
|
||||||
|
<part id="2"/>
|
||||||
|
<part id="3"/>
|
||||||
|
<part id="4"/>
|
||||||
|
</presentation>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info folder="true" part="topRight" ratio="0.75" ratioLeft="567" ratioRight="189" relationship="2" relative="org.eclipse.ui.editorss">
|
||||||
|
<folder appearance="2" expanded="2">
|
||||||
|
<page content="org.eclipse.ui.views.ContentOutline" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.cdt.make.ui.views.MakeView" label="LabelNotFound"/>
|
||||||
|
<presentation id="org.eclipse.ui.internal.presentations.r33.WorkbenchPresentationFactory_33"/>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
</mainWindow>
|
||||||
|
</layout>
|
||||||
|
</perspective>
|
||||||
|
<perspective editorAreaTrimState="2" editorAreaVisible="1" fixed="0" version="0.016">
|
||||||
|
<descriptor class="org.eclipse.debug.internal.ui.DebugPerspectiveFactory" id="org.eclipse.debug.ui.DebugPerspective" label="Debug"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.cheatsheets.actionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.search.searchActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.annotationNavigation"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.navigation"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.externaltools.ExternalToolsSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.actionSet.keyBindings"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.WorkingSetActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.actionSet.openFiles"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.update.ui.softwareUpdates"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.debug.ui.launchActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.debug.ui.debugActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.NavigateActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.debug.ui.breakpointActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.jdt.debug.ui.JDTDebugActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.jdt.ui.JavaActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.debug.ui.debugActionSet"/>
|
||||||
|
<show_view_action id="org.eclipse.debug.ui.DebugView"/>
|
||||||
|
<show_view_action id="org.eclipse.debug.ui.VariableView"/>
|
||||||
|
<show_view_action id="org.eclipse.debug.ui.BreakpointView"/>
|
||||||
|
<show_view_action id="org.eclipse.debug.ui.ExpressionView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.ContentOutline"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.console.ConsoleView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.TaskList"/>
|
||||||
|
<show_view_action id="org.eclipse.cdt.debug.ui.SignalsView"/>
|
||||||
|
<show_view_action id="org.eclipse.debug.ui.RegisterView"/>
|
||||||
|
<show_view_action id="org.eclipse.debug.ui.MemoryView"/>
|
||||||
|
<show_view_action id="org.eclipse.cdt.debug.ui.DisassemblyView"/>
|
||||||
|
<show_view_action id="org.eclipse.cdt.debug.ui.ModulesView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.ProblemView"/>
|
||||||
|
<perspective_action id="org.eclipse.cdt.ui.CPerspective"/>
|
||||||
|
<view id="org.eclipse.ui.console.ConsoleView"/>
|
||||||
|
<view id="org.eclipse.ui.views.TaskList"/>
|
||||||
|
<view id="org.eclipse.ui.views.ProblemView"/>
|
||||||
|
<view id="org.eclipse.debug.ui.DebugView"/>
|
||||||
|
<view id="org.eclipse.debug.ui.VariableView"/>
|
||||||
|
<view id="org.eclipse.debug.ui.BreakpointView"/>
|
||||||
|
<view id="org.eclipse.debug.ui.ExpressionView"/>
|
||||||
|
<fastViewBars/>
|
||||||
|
<layout>
<mainWindow>
<info folder="true" part="org.eclipse.debug.internal.ui.NavigatorFolderView">
<folder activePageID="org.eclipse.debug.ui.DebugView" appearance="2" expanded="2">
<page content="org.eclipse.debug.ui.DebugView" label="Debug"/>
|
||||||
|
<page content="org.eclipse.ui.views.ResourceNavigator" label="LabelNotFound"/>
|
||||||
|
<presentation id="org.eclipse.ui.internal.presentations.r33.WorkbenchPresentationFactory_33">
<part id="0"/>
|
||||||
|
</presentation>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info folder="true" part="stickyFolderRight" ratio="0.75" ratioLeft="1044" ratioRight="348" relationship="2" relative="org.eclipse.debug.internal.ui.NavigatorFolderView">
<folder appearance="2" expanded="2">
<page content="org.eclipse.help.ui.HelpView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.internal.introview" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.cheatsheets.views.CheatSheetView" label="LabelNotFound"/>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info folder="true" part="org.eclipse.debug.internal.ui.ConsoleFolderView" ratio="0.773913" ratioLeft="712" ratioRight="208" relationship="4" relative="org.eclipse.debug.internal.ui.NavigatorFolderView">
<folder activePageID="org.eclipse.ui.console.ConsoleView" appearance="2" expanded="2">
<page content="org.eclipse.ui.console.ConsoleView" label="Console"/>
|
||||||
|
<page content="org.eclipse.ui.views.TaskList" label="Tasks"/>
|
||||||
|
<page content="org.eclipse.ui.views.ProblemView" label="Problems"/>
|
||||||
|
<page content="org.eclipse.debug.ui.MemoryView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.views.BookmarkView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.views.PropertySheet" label="LabelNotFound"/>
|
||||||
|
<presentation id="org.eclipse.ui.internal.presentations.r33.WorkbenchPresentationFactory_33">
<part id="0"/>
|
||||||
|
<part id="1"/>
|
||||||
|
<part id="2"/>
|
||||||
|
</presentation>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info part="org.eclipse.ui.editorss" ratio="0.370945" ratioLeft="263" ratioRight="446" relationship="4" relative="org.eclipse.debug.internal.ui.NavigatorFolderView"/>
|
||||||
|
<info folder="true" part="org.eclipse.debug.internal.ui.OutlineFolderView" ratio="0.475162" ratioLeft="660" ratioRight="729" relationship="2" relative="org.eclipse.ui.editorss">
<folder appearance="2" expanded="2">
<page content="org.eclipse.cdt.debug.ui.DisassemblyView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.views.ContentOutline" label="LabelNotFound"/>
|
||||||
|
<presentation id="org.eclipse.ui.internal.presentations.r33.WorkbenchPresentationFactory_33"/>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info folder="true" part="org.eclipse.debug.internal.ui.ToolsFolderView" ratio="0.49964002" ratioLeft="694" ratioRight="695" relationship="2" relative="org.eclipse.debug.internal.ui.NavigatorFolderView">
<folder activePageID="org.eclipse.debug.ui.BreakpointView" appearance="2" expanded="2">
<page content="org.eclipse.debug.ui.VariableView" label="Variables"/>
|
||||||
|
<page content="org.eclipse.debug.ui.BreakpointView" label="Breakpoints"/>
|
||||||
|
<page content="org.eclipse.debug.ui.ExpressionView" label="Expressions"/>
|
||||||
|
<page content="org.eclipse.debug.ui.RegisterView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.cdt.debug.ui.ModulesView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.cdt.debug.ui.SignalsView" label="LabelNotFound"/>
|
||||||
|
<presentation id="org.eclipse.ui.internal.presentations.r33.WorkbenchPresentationFactory_33">
<part id="0"/>
|
||||||
|
<part id="1"/>
|
||||||
|
<part id="2"/>
|
||||||
|
</presentation>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
</mainWindow>
|
||||||
|
</layout>
|
||||||
|
</perspective>
|
||||||
|
</perspectives>
|
||||||
|
<workingSets>
|
||||||
|
<workingSet IMemento.internal.id="FreeRTOS_LM3S8962_Demo"/>
|
||||||
|
</workingSets>
|
||||||
|
<navigationHistory/>
|
||||||
|
<input factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/" type="8"/>
|
||||||
|
</page>
|
||||||
|
<workbenchWindowAdvisor/>
|
||||||
|
<actionBarAdvisor/>
|
||||||
|
<trimLayout>
|
||||||
|
<trimArea IMemento.internal.id="128">
|
||||||
|
<trimItem IMemento.internal.id="org.eclipse.ui.internal.WorkbenchWindow.topBar"/>
|
||||||
|
</trimArea>
|
||||||
|
<trimArea IMemento.internal.id="1024">
|
||||||
|
<trimItem IMemento.internal.id="org.eclise.ui.internal.FastViewBar"/>
|
||||||
|
<trimItem IMemento.internal.id="org.eclipse.jface.action.StatusLineManager"/>
|
||||||
|
<trimItem IMemento.internal.id="org.eclipse.ui.internal.progress.ProgressRegion"/>
|
||||||
|
</trimArea>
|
||||||
|
</trimLayout>
|
||||||
|
</window>
|
||||||
|
<mruList>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="tasks.c" tooltip="RTOSDemo/FreeRTOS.org Source/tasks.c">
|
||||||
|
<persistable path="/RTOSDemo/FreeRTOS.org Source/tasks.c"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="main.c" tooltip="RTOSDemo/main.c">
|
||||||
|
<persistable path="/RTOSDemo/main.c"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="USB_ISR.c" tooltip="RTOSDemo/USB/USB_ISR.c">
|
||||||
|
<persistable path="/RTOSDemo/USB/USB_ISR.c"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="USBSample.c" tooltip="RTOSDemo/USB/USBSample.c">
|
||||||
|
<persistable path="/RTOSDemo/USB/USBSample.c"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="queue.c" tooltip="RTOSDemo/FreeRTOS.org Source/queue.c">
|
||||||
|
<persistable path="/RTOSDemo/FreeRTOS.org Source/queue.c"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.make.editor" name="Makefile" tooltip="RTOSDemo/Makefile">
|
||||||
|
<persistable path="/RTOSDemo/Makefile"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="blocktim.c" tooltip="RTOSDemo/Common Demo Files/Minimal/blocktim.c">
|
||||||
|
<persistable path="/RTOSDemo/Common Demo Files/Minimal/blocktim.c"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="QPeek.c" tooltip="RTOSDemo/Common Demo Files/Minimal/QPeek.c">
|
||||||
|
<persistable path="/RTOSDemo/Common Demo Files/Minimal/QPeek.c"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="GenQTest.c" tooltip="RTOSDemo/Common Demo Files/Minimal/GenQTest.c">
|
||||||
|
<persistable path="/RTOSDemo/Common Demo Files/Minimal/GenQTest.c"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="dynamic.c" tooltip="RTOSDemo/Common Demo Files/Minimal/dynamic.c">
|
||||||
|
<persistable path="/RTOSDemo/Common Demo Files/Minimal/dynamic.c"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="BlockQ.c" tooltip="RTOSDemo/Common Demo Files/Minimal/BlockQ.c">
|
||||||
|
<persistable path="/RTOSDemo/Common Demo Files/Minimal/BlockQ.c"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="ParTest.c" tooltip="RTOSDemo/ParTest/ParTest.c">
|
||||||
|
<persistable path="/RTOSDemo/ParTest/ParTest.c"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="FreeRTOSConfig.h" tooltip="RTOSDemo/FreeRTOSConfig.h">
|
||||||
|
<persistable path="/RTOSDemo/FreeRTOSConfig.h"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="httpd.c" tooltip="RTOSDemo/webserver/httpd.c">
|
||||||
|
<persistable path="/RTOSDemo/webserver/httpd.c"/>
|
||||||
|
</file>
|
||||||
|
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="portmacro.h" tooltip="RTOSDemo/FreeRTOS.org Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h">
|
||||||
|
<persistable path="/RTOSDemo/FreeRTOS.org Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h"/>
|
||||||
|
</file>
|
||||||
|
</mruList>
|
||||||
|
</workbench>
|
|
@ -0,0 +1,64 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<workingSetManager>
|
||||||
|
<workingSet editPageId="org.eclipse.cdt.ui.CElementWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" label="FreeRTOS_LM3S8962_Demo" name="FreeRTOS_LM3S8962_Demo">
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/httpd-fs.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/timer.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uip.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uip_arp.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uiplib.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS.org Source/queue.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uipopt.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uip.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uip-split.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/Minimal/dynamic.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/psock.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uip-fw.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/httpd-fsdata.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uip-neighbor.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS.org Source/include" type="2"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/httpd-fs" type="2"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/timer.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/ParTest/ParTest.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/Minimal/QPeek.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS.org Source/portable/MemMang/heap_2.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/main.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/Minimal/flash.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS.org Source/portable/GCC/ARM7_AT91SAM7S/lib_AT91SAM7X256.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/EMAC_ISR.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS.org Source/list.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/clock.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/lc.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS.org Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/USB/USB_ISR.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/httpd-cgi.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/uIP_Task.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS.org Source/portable/GCC/ARM7_AT91SAM7S/portISR.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/SAM7_EMAC.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/Minimal/BlockQ.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS.org Source/portable/GCC/ARM7_AT91SAM7S/port.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/psock.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/RTOSDemo/Makefile" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uip-neighbor.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOSConfig.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/lc-switch.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/Minimal/GenQTest.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS.org Source/tasks.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uip-fw.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uiplib.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/lc-addrlabels.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uip-split.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/httpd.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/USB/USBSample.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/boot.s" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/Minimal/blocktim.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/http-strings.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uip_arch.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/uip_arp.c" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/ethernet/uIP/uip-1.0/uip/pt.h" type="1"/>
|
||||||
|
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/Common Demo Files/include" type="2"/>
|
||||||
|
</workingSet>
|
||||||
|
<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" label="Window Working Set" name="Aggregate for window 1188147282312">
|
||||||
|
<workingSet IMemento.internal.id="FreeRTOS_LM3S8962_Demo"/>
|
||||||
|
</workingSet>
|
||||||
|
<mruList name="FreeRTOS_LM3S8962_Demo"/>
|
||||||
|
</workingSetManager>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="FileSystemImportWizard">
|
||||||
|
<item value="false" key="WizardFileSystemResourceImportPage1.STORE_OVERWRITE_EXISTING_RESOURCES_ID"/>
|
||||||
|
<item value="false" key="WizardFileSystemResourceImportPage1.STORE_CREATE_CONTAINER_STRUCTURE_ID"/>
|
||||||
|
<list key="WizardFileSystemResourceImportPage1.STORE_SOURCE_NAMES_ID">
|
||||||
|
<item value="C:\E\Dev\FreeRTOS\Demo\CORTEX_LM3S8962_Eclipse"/>
|
||||||
|
</list>
|
||||||
|
</section>
|
||||||
|
</section>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="ModeSelectionPage">
|
||||||
|
</section>
|
||||||
|
</section>
|
1
Demo/ARM7_AT91SAM7X256_Eclipse/.metadata/version.ini
Normal file
1
Demo/ARM7_AT91SAM7X256_Eclipse/.metadata/version.ini
Normal file
|
@ -0,0 +1 @@
|
||||||
|
org.eclipse.core.runtime=1
|
230
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/.cproject
Normal file
230
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/.cproject
Normal file
|
@ -0,0 +1,230 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?>
|
||||||
|
|
||||||
|
<cproject>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="0.1109417601">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.1109417601" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactExtension="" artifactName="RTOSDemo" buildProperties="" description="" id="0.1109417601" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
|
||||||
|
<folderInfo id="0.1109417601." name="/" resourcePath="">
|
||||||
|
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.1816209921" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
|
||||||
|
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.eclipse.cdt.build.core.prefbase.toolchain.1816209921.1299943801" name=""/>
|
||||||
|
<builder autoBuildTarget="all" buildPath="${workspace_loc:/RTOSDemo}" cleanBuildTarget="clean" command="make" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="org.eclipse.cdt.build.core.settings.default.builder.116472864" incrementalBuildTarget="all" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder">
|
||||||
|
<outputEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name=""/>
|
||||||
|
</outputEntries>
|
||||||
|
</builder>
|
||||||
|
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.260784574" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
|
||||||
|
<tool id="org.eclipse.cdt.build.core.settings.holder.1502006385" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
|
||||||
|
<option id="org.eclipse.cdt.build.core.settings.holder.undef.incpaths.578007234" name="Undefined Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.undef.incpaths"/>
|
||||||
|
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.685511860" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="org.eclipse.cdt.build.core.settings.holder.1021181093" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
|
||||||
|
<option id="org.eclipse.cdt.build.core.settings.holder.undef.incpaths.1567637665" name="Undefined Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.undef.incpaths"/>
|
||||||
|
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1828415025" 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"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="org.eclipse.cdt.build.core.settings.holder.164584712" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
|
||||||
|
<option id="org.eclipse.cdt.build.core.settings.holder.undef.incpaths.1309366258" name="Undefined Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.undef.incpaths"/>
|
||||||
|
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1667472855" 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"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry excluding="Common Demo Files|FreeRTOS.org Source|Source|Minimal" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="FreeRTOS.org Source"/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Common Demo Files"/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="makefileGenerator">
|
||||||
|
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="false" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="false" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="false" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="false" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="false" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="false" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<scannerConfigBuildInfo instanceId="0.1109417601">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-elf-gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="makefileGenerator">
|
||||||
|
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.language.mapping">
|
||||||
|
<project-mappings/>
|
||||||
|
</storageModule>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="RTOSDemo.null.976634949" name="RTOSDemo"/>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
97
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/.project
Normal file
97
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/.project
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>RTOSDemo</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<triggers>clean,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||||
|
<value>clean</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>make</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.contents</key>
|
||||||
|
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildLocation</key>
|
||||||
|
<value>${workspace_loc:/RTOSDemo}</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
|
<value>false</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
||||||
|
<value>all</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>?children?</key>
|
||||||
|
<value>?name?=outputEntries\|?children?=?name?=entry\\\\\\\\\\\\\\\|\\\\\\\|\||</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
|
||||||
|
<value>all</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
</natures>
|
||||||
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>Common Demo Files</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>FreeRTOS_ROOT/Demo/Common</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>FreeRTOS.org Source</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>FreeRTOS_ROOT/Source</locationURI>
|
||||||
|
</link>
|
||||||
|
</linkedResources>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,3 @@
|
||||||
|
#Sun Aug 19 20:36:58 BST 2007
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
|
99
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/FreeRTOSConfig.h
Normal file
99
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/FreeRTOSConfig.h
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.
|
||||||
|
|
||||||
|
This file is part of the FreeRTOS.org distribution.
|
||||||
|
|
||||||
|
FreeRTOS.org is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
FreeRTOS.org is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with FreeRTOS.org; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
A special exception to the GPL can be applied should you wish to distribute
|
||||||
|
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||||
|
the source code for any proprietary components. See the licensing section
|
||||||
|
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||||
|
can be applied.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||||
|
and contact details. Please ensure to read the configuration and relevant
|
||||||
|
port sections of the online documentation.
|
||||||
|
|
||||||
|
Also see http://www.SafeRTOS.com a version that has been certified for use
|
||||||
|
in safety critical systems, plus commercial licensing, development and
|
||||||
|
support options.
|
||||||
|
***************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FREERTOS_CONFIG_H
|
||||||
|
#define FREERTOS_CONFIG_H
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "AT91SAM7X256.h"
|
||||||
|
/*-----------------------------------------------------------
|
||||||
|
* Application specific definitions.
|
||||||
|
*
|
||||||
|
* These definitions should be adjusted for your particular hardware and
|
||||||
|
* application requirements.
|
||||||
|
*
|
||||||
|
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
|
||||||
|
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
|
||||||
|
*----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#define configUSE_PREEMPTION 1
|
||||||
|
#define configUSE_IDLE_HOOK 0
|
||||||
|
#define configUSE_TICK_HOOK 1
|
||||||
|
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 47923200 )
|
||||||
|
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||||
|
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 4 )
|
||||||
|
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 130 )
|
||||||
|
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 24 * 1024 ) )
|
||||||
|
#define configMAX_TASK_NAME_LEN ( 10 )
|
||||||
|
#define configUSE_TRACE_FACILITY 1
|
||||||
|
#define configUSE_16_BIT_TICKS 0
|
||||||
|
#define configIDLE_SHOULD_YIELD 1
|
||||||
|
#define configUSE_MUTEXES 1
|
||||||
|
|
||||||
|
/* Co-routine definitions. */
|
||||||
|
#define configUSE_CO_ROUTINES 0
|
||||||
|
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
|
||||||
|
|
||||||
|
|
||||||
|
/* Set the following definitions to 1 to include the API function, or zero
|
||||||
|
to exclude the API function. */
|
||||||
|
|
||||||
|
#define INCLUDE_vTaskPrioritySet 1
|
||||||
|
#define INCLUDE_uxTaskPriorityGet 1
|
||||||
|
#define INCLUDE_vTaskDelete 1
|
||||||
|
#define INCLUDE_vTaskCleanUpResources 0
|
||||||
|
#define INCLUDE_vTaskSuspend 1
|
||||||
|
#define INCLUDE_vTaskDelayUntil 1
|
||||||
|
#define INCLUDE_vTaskDelay 1
|
||||||
|
#define INCLUDE_xTaskGetCurrentTaskHandle 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* MAC address configuration. */
|
||||||
|
#define uipMAC_ADDR0 0x00
|
||||||
|
#define uipMAC_ADDR1 0x12
|
||||||
|
#define uipMAC_ADDR2 0x13
|
||||||
|
#define uipMAC_ADDR3 0x10
|
||||||
|
#define uipMAC_ADDR4 0x15
|
||||||
|
#define uipMAC_ADDR5 0x11
|
||||||
|
|
||||||
|
/* IP address configuration. */
|
||||||
|
#define uipIP_ADDR0 172
|
||||||
|
#define uipIP_ADDR1 25
|
||||||
|
#define uipIP_ADDR2 218
|
||||||
|
#define uipIP_ADDR3 10
|
||||||
|
|
||||||
|
#endif /* FREERTOS_CONFIG_H */
|
132
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/Makefile
Normal file
132
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/Makefile
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
# FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.
|
||||||
|
#
|
||||||
|
# This file is part of the FreeRTOS.org distribution.
|
||||||
|
#
|
||||||
|
# FreeRTOS.org is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# FreeRTOS.org is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with FreeRTOS.org; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# A special exception to the GPL can be applied should you wish to distribute
|
||||||
|
# a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||||
|
# the source code for any proprietary components. See the licensing section
|
||||||
|
# of http://www.FreeRTOS.org for full details of how and when the exception
|
||||||
|
# can be applied.
|
||||||
|
#
|
||||||
|
# ***************************************************************************
|
||||||
|
# See http://www.FreeRTOS.org for documentation, latest information, license
|
||||||
|
# and contact details. Please ensure to read the configuration and relevant
|
||||||
|
# port sections of the online documentation.
|
||||||
|
# ***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
RTOS_SOURCE_DIR=../../../Source
|
||||||
|
DEMO_COMMON_DIR=../../Common/Minimal
|
||||||
|
DEMO_INCLUDE_DIR=../../Common/include
|
||||||
|
UIP_COMMON_DIR=../../Common/ethernet/uIP/uip-1.0/uip
|
||||||
|
|
||||||
|
CC=arm-elf-gcc
|
||||||
|
OBJCOPY=arm-elf-objcopy
|
||||||
|
LDSCRIPT=atmel-rom.ld
|
||||||
|
|
||||||
|
LINKER_FLAGS=-mthumb -nostartfiles -Xlinker -oRTOSDemo.elf -Xlinker -M -Xlinker -Map=rtosdemo.map
|
||||||
|
|
||||||
|
DEBUG=-g
|
||||||
|
OPTIM=-O3
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS= $(DEBUG) \
|
||||||
|
$(OPTIM) \
|
||||||
|
-T$(LDSCRIPT) \
|
||||||
|
-I . \
|
||||||
|
-I $(RTOS_SOURCE_DIR)/include \
|
||||||
|
-I $(RTOS_SOURCE_DIR)/portable/GCC/ARM7_AT91SAM7S \
|
||||||
|
-I $(DEMO_INCLUDE_DIR) \
|
||||||
|
-I ./webserver \
|
||||||
|
-I $(UIP_COMMON_DIR) \
|
||||||
|
-I ./SrcAtmel \
|
||||||
|
-I ./USB \
|
||||||
|
-D SAM7_GCC \
|
||||||
|
-D THUMB_INTERWORK \
|
||||||
|
-mcpu=arm7tdmi \
|
||||||
|
-D PACK_STRUCT_END=__attribute\(\(packed\)\) \
|
||||||
|
-D ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\) \
|
||||||
|
-fomit-frame-pointer \
|
||||||
|
-mthumb-interwork
|
||||||
|
|
||||||
|
THUMB_SOURCE= \
|
||||||
|
main.c \
|
||||||
|
./ParTest/ParTest.c \
|
||||||
|
$(DEMO_COMMON_DIR)/BlockQ.c \
|
||||||
|
$(DEMO_COMMON_DIR)/blocktim.c \
|
||||||
|
$(DEMO_COMMON_DIR)/flash.c \
|
||||||
|
$(DEMO_COMMON_DIR)/integer.c \
|
||||||
|
$(DEMO_COMMON_DIR)/GenQTest.c \
|
||||||
|
$(DEMO_COMMON_DIR)/QPeek.c \
|
||||||
|
$(DEMO_COMMON_DIR)/dynamic.c \
|
||||||
|
./webserver/uIP_Task.c \
|
||||||
|
./webserver/httpd.c \
|
||||||
|
./webserver/httpd-cgi.c \
|
||||||
|
./webserver/httpd-fs.c \
|
||||||
|
./webserver/http-strings.c \
|
||||||
|
./webserver/SAM7_EMAC.c \
|
||||||
|
$(UIP_COMMON_DIR)/uip_arp.c \
|
||||||
|
$(UIP_COMMON_DIR)/psock.c \
|
||||||
|
$(UIP_COMMON_DIR)/timer.c \
|
||||||
|
$(UIP_COMMON_DIR)/uip.c \
|
||||||
|
$(RTOS_SOURCE_DIR)/list.c \
|
||||||
|
$(RTOS_SOURCE_DIR)/queue.c \
|
||||||
|
$(RTOS_SOURCE_DIR)/tasks.c \
|
||||||
|
$(RTOS_SOURCE_DIR)/portable/GCC/ARM7_AT91SAM7S/port.c \
|
||||||
|
$(RTOS_SOURCE_DIR)/portable/MemMang/heap_2.c \
|
||||||
|
./USB/USBSample.c
|
||||||
|
|
||||||
|
ARM_SOURCE= \
|
||||||
|
$(RTOS_SOURCE_DIR)/portable/GCC/ARM7_AT91SAM7S/portISR.c \
|
||||||
|
./webserver/emac_isr.c \
|
||||||
|
./SrcAtmel/Cstartup_SAM7.c \
|
||||||
|
./USB/USB_ISR.c
|
||||||
|
|
||||||
|
THUMB_OBJS = $(THUMB_SOURCE:.c=.o)
|
||||||
|
ARM_OBJS = $(ARM_SOURCE:.c=.o)
|
||||||
|
|
||||||
|
|
||||||
|
all: RTOSDemo.bin
|
||||||
|
|
||||||
|
RTOSDemo.bin : RTOSDemo.hex
|
||||||
|
$(OBJCOPY) RTOSDemo.elf -O binary RTOSDemo.bin
|
||||||
|
|
||||||
|
RTOSDemo.hex : RTOSDemo.elf
|
||||||
|
$(OBJCOPY) RTOSDemo.elf -O ihex RTOSDemo.hex
|
||||||
|
|
||||||
|
RTOSDemo.elf : $(THUMB_OBJS) $(ARM_OBJS) boot.s Makefile
|
||||||
|
$(CC) $(CFLAGS) $(ARM_OBJS) $(THUMB_OBJS) $(LIBS) boot.s $(LINKER_FLAGS)
|
||||||
|
|
||||||
|
$(THUMB_OBJS) : %.o : %.c Makefile FreeRTOSConfig.h
|
||||||
|
$(CC) -c $(CFLAGS) -mthumb $< -o $@
|
||||||
|
|
||||||
|
$(ARM_OBJS) : %.o : %.c Makefile FreeRTOSConfig.h
|
||||||
|
$(CC) -c $(CFLAGS) $< -o $@
|
||||||
|
|
||||||
|
clean :
|
||||||
|
rm $(THUMB_OBJS)
|
||||||
|
rm $(ARM_OBJS)
|
||||||
|
touch Makefile
|
||||||
|
rm RTOSDemo.elf
|
||||||
|
rm RTOSDemo.hex
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
101
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/ParTest/ParTest.c
Normal file
101
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/ParTest/ParTest.c
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.
|
||||||
|
|
||||||
|
This file is part of the FreeRTOS.org distribution.
|
||||||
|
|
||||||
|
FreeRTOS.org is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
FreeRTOS.org is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with FreeRTOS.org; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
A special exception to the GPL can be applied should you wish to distribute
|
||||||
|
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||||
|
the source code for any proprietary components. See the licensing section
|
||||||
|
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||||
|
can be applied.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||||
|
and contact details. Please ensure to read the configuration and relevant
|
||||||
|
port sections of the online documentation.
|
||||||
|
|
||||||
|
Also see http://www.SafeRTOS.com a version that has been certified for use
|
||||||
|
in safety critical systems, plus commercial licensing, development and
|
||||||
|
support options.
|
||||||
|
***************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Scheduler includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
|
||||||
|
/* Demo application includes. */
|
||||||
|
#include "partest.h"
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------
|
||||||
|
* Simple parallel port IO routines for the LED's. LED's can be set, cleared
|
||||||
|
* or toggled.
|
||||||
|
*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#define partstNUM_LEDS ( 4 )
|
||||||
|
#define partstALL_LEDS ( ulLED_Mask[ 0 ] | ulLED_Mask[ 1 ] | ulLED_Mask[ 2 ] | ulLED_Mask[ 3 ] )
|
||||||
|
const unsigned portLONG ulLED_Mask[ partstNUM_LEDS ]= { (1<<19), (1<<20), (1<<21), (1<<22) };
|
||||||
|
|
||||||
|
|
||||||
|
void vParTestInitialise( void )
|
||||||
|
{
|
||||||
|
/* Configure the PIO Lines corresponding to LED1 to LED4 to be outputs. */
|
||||||
|
AT91C_BASE_PIOB->PIO_PER = partstALL_LEDS;
|
||||||
|
AT91C_BASE_PIOB->PIO_OER = partstALL_LEDS;
|
||||||
|
|
||||||
|
/* Start with all LED's off. */
|
||||||
|
AT91C_BASE_PIOB->PIO_SODR = partstALL_LEDS;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
|
||||||
|
{
|
||||||
|
if( uxLED < ( portBASE_TYPE ) partstNUM_LEDS )
|
||||||
|
{
|
||||||
|
if( xValue )
|
||||||
|
{
|
||||||
|
AT91C_BASE_PIOB->PIO_SODR = ulLED_Mask[ uxLED ];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AT91C_BASE_PIOB->PIO_CODR = ulLED_Mask[ uxLED ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
|
||||||
|
{
|
||||||
|
if( uxLED < ( portBASE_TYPE ) partstNUM_LEDS )
|
||||||
|
{
|
||||||
|
if( AT91C_BASE_PIOB->PIO_PDSR & ulLED_Mask[ uxLED ] )
|
||||||
|
{
|
||||||
|
AT91C_BASE_PIOB->PIO_CODR = ulLED_Mask[ uxLED ];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AT91C_BASE_PIOB->PIO_SODR = ulLED_Mask[ uxLED ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
unsigned portBASE_TYPE uxParTestGetLED( void )
|
||||||
|
{
|
||||||
|
/* Return the value of LED DS4 for use by the WEB server. */
|
||||||
|
return !( AT91C_BASE_PIOB->PIO_PDSR & ulLED_Mask[ partstNUM_LEDS - 1 ] );
|
||||||
|
}
|
||||||
|
|
68
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/SrcAtmel/Board.h
Normal file
68
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/SrcAtmel/Board.h
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
* ATMEL Microcontroller Software Support - ROUSSET -
|
||||||
|
*----------------------------------------------------------------------------
|
||||||
|
* The software is delivered "AS IS" without warranty or condition of any
|
||||||
|
* kind, either express, implied or statutory. This includes without
|
||||||
|
* limitation any warranty or condition with respect to merchantability or
|
||||||
|
* fitness for any particular purpose, or against the infringements of
|
||||||
|
* intellectual property rights of others.
|
||||||
|
*----------------------------------------------------------------------------
|
||||||
|
* File Name : Board.h
|
||||||
|
* Object : AT91SAM7X Evaluation Board Features Definition File.
|
||||||
|
*
|
||||||
|
* Creation : JG 20/Jun/2005
|
||||||
|
*----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
#ifndef Board_h
|
||||||
|
#define Board_h
|
||||||
|
|
||||||
|
#include "AT91SAM7X256.h"
|
||||||
|
#include "ioat91sam7x256.h"
|
||||||
|
|
||||||
|
#define true -1
|
||||||
|
#define false 0
|
||||||
|
|
||||||
|
/*-------------------------------*/
|
||||||
|
/* SAM7Board Memories Definition */
|
||||||
|
/*-------------------------------*/
|
||||||
|
// The AT91SAM7X128 embeds a 32-Kbyte SRAM bank, and 128K-Byte Flash
|
||||||
|
|
||||||
|
#define FLASH_PAGE_NB 256
|
||||||
|
#define FLASH_PAGE_SIZE 128
|
||||||
|
|
||||||
|
/*-----------------*/
|
||||||
|
/* Leds Definition */
|
||||||
|
/*-----------------*/
|
||||||
|
#define LED1 (1<<19) // PB19
|
||||||
|
#define LED2 (1<<20) // PB20
|
||||||
|
#define LED3 (1<<21) // PB21
|
||||||
|
#define LED4 (1<<22) // PB22
|
||||||
|
#define NB_LED 4
|
||||||
|
|
||||||
|
#define LED_MASK (LED1|LED2|LED3|LED4)
|
||||||
|
|
||||||
|
/*-------------------------*/
|
||||||
|
/* Push Buttons Definition */
|
||||||
|
/*-------------------------*/
|
||||||
|
|
||||||
|
#define SW1_MASK (1<<21) // PA21
|
||||||
|
#define SW2_MASK (1<<22) // PA22
|
||||||
|
#define SW3_MASK (1<<23) // PA23
|
||||||
|
#define SW4_MASK (1<<24) // PA24
|
||||||
|
#define SW_MASK (SW1_MASK|SW2_MASK|SW3_MASK|SW4_MASK)
|
||||||
|
|
||||||
|
|
||||||
|
#define SW1 (1<<21) // PA21
|
||||||
|
#define SW2 (1<<22) // PA22
|
||||||
|
#define SW3 (1<<23) // PA23
|
||||||
|
#define SW4 (1<<24) // PA24
|
||||||
|
#define SWPUSH (1<<25) // PA25
|
||||||
|
/*--------------*/
|
||||||
|
/* Master Clock */
|
||||||
|
/*--------------*/
|
||||||
|
|
||||||
|
#define EXT_OC 18432000 // Exetrnal ocilator MAINCK
|
||||||
|
#define MCK 47923200 // MCK (PLLRC div by 2)
|
||||||
|
#define MCKKHz (MCK/1000) //
|
||||||
|
|
||||||
|
#endif /* Board_h */
|
223
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/SrcAtmel/Cstartup.s79
Normal file
223
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/SrcAtmel/Cstartup.s79
Normal file
|
@ -0,0 +1,223 @@
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
;- ATMEL Microcontroller Software Support - ROUSSET -
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; The software is delivered "AS IS" without warranty or condition of any
|
||||||
|
; kind, either express, implied or statutory. This includes without
|
||||||
|
; limitation any warranty or condition with respect to merchantability or
|
||||||
|
; fitness for any particular purpose, or against the infringements of
|
||||||
|
; intellectual property rights of others.
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
;- File source : Cstartup.s79
|
||||||
|
;- Object : Generic CStartup for IAR No Use REMAP
|
||||||
|
;- Compilation flag : None
|
||||||
|
;-
|
||||||
|
;- 1.0 15/Jun/04 JPP : Creation
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include "AT91SAM7X256_inc.h"
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
;- Area Definition
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;---------------------------------------------------------------
|
||||||
|
; ?RESET
|
||||||
|
; Reset Vector.
|
||||||
|
; Normally, segment INTVEC is linked at address 0.
|
||||||
|
; For debugging purposes, INTVEC may be placed at other
|
||||||
|
; addresses.
|
||||||
|
; A debugger that honors the entry point will start the
|
||||||
|
; program in a normal way even if INTVEC is not at address 0.
|
||||||
|
;-------------------------------------------------------------
|
||||||
|
|
||||||
|
PROGRAM ?RESET
|
||||||
|
RSEG INTRAMSTART_REMAP
|
||||||
|
RSEG INTRAMEND_REMAP
|
||||||
|
|
||||||
|
EXTERN vPortYieldProcessor
|
||||||
|
|
||||||
|
RSEG ICODE:CODE:ROOT(2)
|
||||||
|
CODE32 ; Always ARM mode after reset
|
||||||
|
org 0
|
||||||
|
reset
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
;- Exception vectors
|
||||||
|
;--------------------
|
||||||
|
;- These vectors can be read at address 0 or at RAM address
|
||||||
|
;- They ABSOLUTELY requires to be in relative addresssing mode in order to
|
||||||
|
;- guarantee a valid jump. For the moment, all are just looping.
|
||||||
|
;- If an exception occurs before remap, this would result in an infinite loop.
|
||||||
|
;- To ensure if a exeption occurs before start application to infinite loop.
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
B InitReset ; 0x00 Reset handler
|
||||||
|
undefvec:
|
||||||
|
B undefvec ; 0x04 Undefined Instruction
|
||||||
|
swivec:
|
||||||
|
B vPortYieldProcessor ; 0x08 Software Interrupt
|
||||||
|
pabtvec:
|
||||||
|
B pabtvec ; 0x0C Prefetch Abort
|
||||||
|
dabtvec:
|
||||||
|
B dabtvec ; 0x10 Data Abort
|
||||||
|
rsvdvec:
|
||||||
|
B rsvdvec ; 0x14 reserved
|
||||||
|
irqvec:
|
||||||
|
LDR PC, [PC, #-0xF20] ; Jump directly to the address given by the AIC
|
||||||
|
|
||||||
|
fiqvec: ; 0x1c FIQ
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
;- Function : FIQ_Handler_Entry
|
||||||
|
;- Treatments : FIQ Controller Interrupt Handler.
|
||||||
|
;- Called Functions : AIC_FVR[interrupt]
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
FIQ_Handler_Entry:
|
||||||
|
|
||||||
|
;- Switch in SVC/User Mode to allow User Stack access for C code
|
||||||
|
; because the FIQ is not yet acknowledged
|
||||||
|
|
||||||
|
;- Save and r0 in FIQ_Register
|
||||||
|
mov r9,r0
|
||||||
|
ldr r0 , [r8, #AIC_FVR]
|
||||||
|
msr CPSR_c,#I_BIT | F_BIT | ARM_MODE_SVC
|
||||||
|
|
||||||
|
;- Save scratch/used registers and LR in User Stack
|
||||||
|
stmfd sp!, { r1-r3, r12, lr}
|
||||||
|
|
||||||
|
;- Branch to the routine pointed by the AIC_FVR
|
||||||
|
mov r14, pc
|
||||||
|
bx r0
|
||||||
|
|
||||||
|
;- Restore scratch/used registers and LR from User Stack
|
||||||
|
ldmia sp!, { r1-r3, r12, lr}
|
||||||
|
|
||||||
|
;- Leave Interrupts disabled and switch back in FIQ mode
|
||||||
|
msr CPSR_c, #I_BIT | F_BIT | ARM_MODE_FIQ
|
||||||
|
|
||||||
|
;- Restore the R0 ARM_MODE_SVC register
|
||||||
|
mov r0,r9
|
||||||
|
|
||||||
|
;- Restore the Program Counter using the LR_fiq directly in the PC
|
||||||
|
subs pc,lr,#4
|
||||||
|
|
||||||
|
InitReset:
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
;- Low level Init (PMC, AIC, ? ....) by C function AT91F_LowLevelInit
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
EXTERN AT91F_LowLevelInit
|
||||||
|
|
||||||
|
#define __iramend SFB(INTRAMEND_REMAP)
|
||||||
|
|
||||||
|
;- minumum C initialization
|
||||||
|
;- call AT91F_LowLevelInit( void)
|
||||||
|
|
||||||
|
ldr r13,=__iramend ; temporary stack in internal RAM
|
||||||
|
;--Call Low level init function in ABSOLUTE through the Interworking
|
||||||
|
ldr r0,=AT91F_LowLevelInit
|
||||||
|
mov lr, pc
|
||||||
|
bx r0
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
;- Stack Sizes Definition
|
||||||
|
;------------------------
|
||||||
|
;- Interrupt Stack requires 2 words x 8 priority level x 4 bytes when using
|
||||||
|
;- the vectoring. This assume that the IRQ management.
|
||||||
|
;- The Interrupt Stack must be adjusted depending on the interrupt handlers.
|
||||||
|
;- Fast Interrupt not requires stack If in your application it required you must
|
||||||
|
;- be definehere.
|
||||||
|
;- The System stack size is not defined and is limited by the free internal
|
||||||
|
;- SRAM.
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
;- Top of Stack Definition
|
||||||
|
;-------------------------
|
||||||
|
;- Interrupt and Supervisor Stack are located at the top of internal memory in
|
||||||
|
;- order to speed the exception handling context saving and restoring.
|
||||||
|
;- ARM_MODE_SVC (Application, C) Stack is located at the top of the external memory.
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IRQ_STACK_SIZE EQU 300
|
||||||
|
|
||||||
|
ARM_MODE_FIQ EQU 0x11
|
||||||
|
ARM_MODE_IRQ EQU 0x12
|
||||||
|
ARM_MODE_SVC EQU 0x13
|
||||||
|
|
||||||
|
I_BIT EQU 0x80
|
||||||
|
F_BIT EQU 0x40
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
;- Setup the stack for each mode
|
||||||
|
;-------------------------------
|
||||||
|
ldr r0, =__iramend
|
||||||
|
|
||||||
|
;- Set up Fast Interrupt Mode and set FIQ Mode Stack
|
||||||
|
msr CPSR_c, #ARM_MODE_FIQ | I_BIT | F_BIT
|
||||||
|
;- Init the FIQ register
|
||||||
|
ldr r8, =AT91C_BASE_AIC
|
||||||
|
|
||||||
|
;- Set up Interrupt Mode and set IRQ Mode Stack
|
||||||
|
msr CPSR_c, #ARM_MODE_IRQ | I_BIT | F_BIT
|
||||||
|
mov r13, r0 ; Init stack IRQ
|
||||||
|
sub r0, r0, #IRQ_STACK_SIZE
|
||||||
|
|
||||||
|
;- Enable interrupt & Set up Supervisor Mode and set Supervisor Mode Stack
|
||||||
|
msr CPSR_c, #ARM_MODE_SVC
|
||||||
|
mov r13, r0
|
||||||
|
|
||||||
|
|
||||||
|
;---------------------------------------------------------------
|
||||||
|
; ?CSTARTUP
|
||||||
|
;---------------------------------------------------------------
|
||||||
|
EXTERN __segment_init
|
||||||
|
EXTERN main
|
||||||
|
; Initialize segments.
|
||||||
|
; __segment_init is assumed to use
|
||||||
|
; instruction set and to be reachable by BL from the ICODE segment
|
||||||
|
; (it is safest to link them in segment ICODE).
|
||||||
|
ldr r0,=__segment_init
|
||||||
|
mov lr, pc
|
||||||
|
bx r0
|
||||||
|
|
||||||
|
PUBLIC __main
|
||||||
|
?jump_to_main:
|
||||||
|
ldr lr,=?call_exit
|
||||||
|
ldr r0,=main
|
||||||
|
__main:
|
||||||
|
bx r0
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
;- Loop for ever
|
||||||
|
;---------------
|
||||||
|
;- End of application. Normally, never occur.
|
||||||
|
;- Could jump on Software Reset ( B 0x0 ).
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
?call_exit:
|
||||||
|
End
|
||||||
|
b End
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;---------------------------------------------------------------
|
||||||
|
; ?EXEPTION_VECTOR
|
||||||
|
; This module is only linked if needed for closing files.
|
||||||
|
;---------------------------------------------------------------
|
||||||
|
PUBLIC AT91F_Default_FIQ_handler
|
||||||
|
PUBLIC AT91F_Default_IRQ_handler
|
||||||
|
PUBLIC AT91F_Spurious_handler
|
||||||
|
|
||||||
|
CODE32 ; Always ARM mode after exeption
|
||||||
|
|
||||||
|
AT91F_Default_FIQ_handler
|
||||||
|
b AT91F_Default_FIQ_handler
|
||||||
|
|
||||||
|
AT91F_Default_IRQ_handler
|
||||||
|
b AT91F_Default_IRQ_handler
|
||||||
|
|
||||||
|
AT91F_Spurious_handler
|
||||||
|
b AT91F_Spurious_handler
|
||||||
|
|
||||||
|
ENDMOD
|
||||||
|
|
||||||
|
END
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
//* ATMEL Microcontroller Software Support - ROUSSET -
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
//* The software is delivered "AS IS" without warranty or condition of any
|
||||||
|
//* kind, either express, implied or statutory. This includes without
|
||||||
|
//* limitation any warranty or condition with respect to merchantability or
|
||||||
|
//* fitness for any particular purpose, or against the infringements of
|
||||||
|
//* intellectual property rights of others.
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
//* File Name : Cstartup_SAM7.c
|
||||||
|
//* Object : Low level initializations written in C for IAR
|
||||||
|
//* tools
|
||||||
|
//* 1.0 08/Sep/04 JPP : Creation
|
||||||
|
//* 1.10 10/Sep/04 JPP : Update AT91C_CKGR_PLLCOUNT filed
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// Include the board file description
|
||||||
|
#include "Board.h"
|
||||||
|
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
//* \fn AT91F_LowLevelInit
|
||||||
|
//* \brief This function performs very low level HW initialization
|
||||||
|
//* this function can be use a Stack, depending the compilation
|
||||||
|
//* optimization mode
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
void AT91F_LowLevelInit( void);
|
||||||
|
void AT91F_LowLevelInit( void )
|
||||||
|
{
|
||||||
|
AT91PS_PMC pPMC = AT91C_BASE_PMC;
|
||||||
|
|
||||||
|
//* Set Flash Waite sate
|
||||||
|
// Single Cycle Access at Up to 30 MHz, or 40
|
||||||
|
// if MCK = 47923200 I have 50 Cycle for 1 useconde ( flied MC_FMR->FMCN
|
||||||
|
AT91C_BASE_MC->MC_FMR = ((AT91C_MC_FMCN)&(75 <<16)) | AT91C_MC_FWS_1FWS ;
|
||||||
|
|
||||||
|
//* Watchdog Disable
|
||||||
|
AT91C_BASE_WDTC->WDTC_WDMR= AT91C_WDTC_WDDIS;
|
||||||
|
|
||||||
|
//* Set MCK at 47 923 200
|
||||||
|
// 1 Enabling the Main Oscillator:
|
||||||
|
// SCK = 1/32768 = 30.51 uSeconde
|
||||||
|
// Start up time = 8 * 6 / SCK = 56 * 30.51 = 1,46484375 ms
|
||||||
|
pPMC->PMC_MOR = ((( AT91C_CKGR_OSCOUNT & (0x06 <<8)) | AT91C_CKGR_MOSCEN ));
|
||||||
|
// Wait the startup time
|
||||||
|
while(!(pPMC->PMC_SR & AT91C_PMC_MOSCS));
|
||||||
|
// 2 Checking the Main Oscillator Frequency (Optional)
|
||||||
|
// 3 Setting PLL and divider:
|
||||||
|
// - div by 5 Fin = 3,6864 =(18,432 / 5)
|
||||||
|
// - Mul 25+1: Fout = 95,8464 =(3,6864 *26)
|
||||||
|
// for 96 MHz the erroe is 0.16%
|
||||||
|
//eld out NOT USED = 0 Fi
|
||||||
|
pPMC->PMC_PLLR = ((AT91C_CKGR_DIV & 5) |
|
||||||
|
(AT91C_CKGR_PLLCOUNT & (28<<8)) |
|
||||||
|
(AT91C_CKGR_MUL & (25<<16)));
|
||||||
|
|
||||||
|
// Wait the startup time
|
||||||
|
while(!(pPMC->PMC_SR & AT91C_PMC_LOCK));
|
||||||
|
// 4. Selection of Master Clock and Processor Clock
|
||||||
|
// select the PLL clock divided by 2
|
||||||
|
pPMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2 ;
|
||||||
|
while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));
|
||||||
|
|
||||||
|
pPMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK ;
|
||||||
|
while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
195
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/SrcAtmel/Emac.h
Normal file
195
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/SrcAtmel/Emac.h
Normal file
|
@ -0,0 +1,195 @@
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
//* ATMEL Microcontroller Software Support - ROUSSET -
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
//* The software is delivered "AS IS" without warranty or condition of any
|
||||||
|
//* kind, either express, implied or statutory. This includes without
|
||||||
|
//* limitation any warranty or condition with respect to merchantability or
|
||||||
|
//* fitness for any particular purpose, or against the infringements of
|
||||||
|
//* intellectual property rights of others.
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
//* File Name : Emac.h
|
||||||
|
//* Object : Emac header file
|
||||||
|
//* Creation : Hi 11/18/2002
|
||||||
|
//*
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
#ifndef AT91C_EMAC_H
|
||||||
|
#define AT91C_EMAC_H
|
||||||
|
|
||||||
|
|
||||||
|
//* Allows to display all IP header in the main.c
|
||||||
|
//* If not defined, only ICMP packets are displayed
|
||||||
|
#define AT91C_DISPLAY_ALL_IPHEADER 0
|
||||||
|
|
||||||
|
#define NB_RX_BUFFERS 25 //* Number of receive buffers
|
||||||
|
#define ETH_RX_BUFFER_SIZE 128 //*
|
||||||
|
|
||||||
|
#define NB_TX_BUFFERS 2 //* Number of Transmit buffers
|
||||||
|
#define ETH_TX_BUFFER_SIZE UIP_BUFSIZE //*
|
||||||
|
|
||||||
|
#define AT91C_NO_IPPACKET 0
|
||||||
|
#define AT91C_IPPACKET 1
|
||||||
|
|
||||||
|
#define ARP_REQUEST 0x0001
|
||||||
|
#define ARP_REPLY 0x0002
|
||||||
|
#define PROT_ARP 0x0806
|
||||||
|
#define PROT_IP 0x0800
|
||||||
|
#define PROT_ICMP 0x01
|
||||||
|
#define ICMP_ECHO_REQUEST 0x08
|
||||||
|
#define ICMP_ECHO_REPLY 0x00
|
||||||
|
|
||||||
|
#define AT91C_EMAC_CLKEN 0x2
|
||||||
|
#define SWAP16(x) (((x & 0xff) << 8) | (x >> 8))
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
//* Transfer descriptor structure
|
||||||
|
typedef struct _AT91S_TdDescriptor {
|
||||||
|
unsigned int addr;
|
||||||
|
unsigned int status;
|
||||||
|
}AT91S_TdDescriptor, *AT91PS_TdDescriptor;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//* Receive Transfer descriptor structure
|
||||||
|
typedef struct _AT91S_RxTdDescriptor {
|
||||||
|
unsigned int addr;
|
||||||
|
union
|
||||||
|
{
|
||||||
|
unsigned int status;
|
||||||
|
struct {
|
||||||
|
unsigned int Length:11;
|
||||||
|
unsigned int Res0:1;
|
||||||
|
unsigned int Rxbuf_off:2;
|
||||||
|
unsigned int StartOfFrame:1;
|
||||||
|
unsigned int EndOfFrame:1;
|
||||||
|
unsigned int Cfi:1;
|
||||||
|
unsigned int VlanPriority:3;
|
||||||
|
unsigned int PriorityTag:1;
|
||||||
|
unsigned int VlanTag:1;
|
||||||
|
unsigned int TypeID:1;
|
||||||
|
unsigned int Sa4Match:1;
|
||||||
|
unsigned int Sa3Match:1;
|
||||||
|
unsigned int Sa2Match:1;
|
||||||
|
unsigned int Sa1Match:1;
|
||||||
|
unsigned int Res1:1;
|
||||||
|
unsigned int ExternalAdd:1;
|
||||||
|
unsigned int UniCast:1;
|
||||||
|
unsigned int MultiCast:1;
|
||||||
|
unsigned int BroadCast:1;
|
||||||
|
}S_Status;
|
||||||
|
}U_Status;
|
||||||
|
}AT91S_RxTdDescriptor, *AT91PS_RxTdDescriptor;
|
||||||
|
|
||||||
|
|
||||||
|
//* Transmit Transfer descriptor structure
|
||||||
|
typedef struct _AT91S_TxTdDescriptor {
|
||||||
|
unsigned int addr;
|
||||||
|
union
|
||||||
|
{
|
||||||
|
unsigned int status;
|
||||||
|
struct {
|
||||||
|
unsigned int Length:11;
|
||||||
|
unsigned int Res0:4;
|
||||||
|
unsigned int LastBuff:1;
|
||||||
|
unsigned int NoCrc:1;
|
||||||
|
unsigned int Res1:10;
|
||||||
|
unsigned int BufExhausted:1;
|
||||||
|
unsigned int TransmitUnderrun:1;
|
||||||
|
unsigned int TransmitError:1;
|
||||||
|
unsigned int Wrap:1;
|
||||||
|
unsigned int BuffUsed:1;
|
||||||
|
}S_Status;
|
||||||
|
}U_Status;
|
||||||
|
}AT91S_TxTdDescriptor, *AT91PS_TxTdDescriptor;
|
||||||
|
|
||||||
|
#define AT91C_OWNERSHIP_BIT 0x00000001
|
||||||
|
|
||||||
|
/* Receive status defintion */
|
||||||
|
#define AT91C_BROADCAST_ADDR ((unsigned int) (1 << 31)) //* Broadcat address detected
|
||||||
|
#define AT91C_MULTICAST_HASH ((unsigned int) (1 << 30)) //* MultiCast hash match
|
||||||
|
#define AT91C_UNICAST_HASH ((unsigned int) (1 << 29)) //* UniCast hash match
|
||||||
|
#define AT91C_EXTERNAL_ADDR ((unsigned int) (1 << 28)) //* External Address match
|
||||||
|
#define AT91C_SA1_ADDR ((unsigned int) (1 << 26)) //* Specific address 1 match
|
||||||
|
#define AT91C_SA2_ADDR ((unsigned int) (1 << 25)) //* Specific address 2 match
|
||||||
|
#define AT91C_SA3_ADDR ((unsigned int) (1 << 24)) //* Specific address 3 match
|
||||||
|
#define AT91C_SA4_ADDR ((unsigned int) (1 << 23)) //* Specific address 4 match
|
||||||
|
#define AT91C_TYPE_ID ((unsigned int) (1 << 22)) //* Type ID match
|
||||||
|
#define AT91C_VLAN_TAG ((unsigned int) (1 << 21)) //* VLAN tag detected
|
||||||
|
#define AT91C_PRIORITY_TAG ((unsigned int) (1 << 20)) //* PRIORITY tag detected
|
||||||
|
#define AT91C_VLAN_PRIORITY ((unsigned int) (7 << 17)) //* PRIORITY Mask
|
||||||
|
#define AT91C_CFI_IND ((unsigned int) (1 << 16)) //* CFI indicator
|
||||||
|
#define AT91C_EOF ((unsigned int) (1 << 15)) //* EOF
|
||||||
|
#define AT91C_SOF ((unsigned int) (1 << 14)) //* SOF
|
||||||
|
#define AT91C_RBF_OFFSET ((unsigned int) (3 << 12)) //* Receive Buffer Offset Mask
|
||||||
|
#define AT91C_LENGTH_FRAME ((unsigned int) 0x07FF) //* Length of frame
|
||||||
|
|
||||||
|
/* Transmit Status definition */
|
||||||
|
#define AT91C_TRANSMIT_OK ((unsigned int) (1 << 31)) //*
|
||||||
|
#define AT91C_TRANSMIT_WRAP ((unsigned int) (1 << 30)) //* Wrap bit: mark the last descriptor
|
||||||
|
#define AT91C_TRANSMIT_ERR ((unsigned int) (1 << 29)) //* RLE:transmit error
|
||||||
|
#define AT91C_TRANSMIT_UND ((unsigned int) (1 << 28)) //* Transmit Underrun
|
||||||
|
#define AT91C_BUF_EX ((unsigned int) (1 << 27)) //* Buffers exhausted in mid frame
|
||||||
|
#define AT91C_TRANSMIT_NO_CRC ((unsigned int) (1 << 16)) //* No CRC will be appended to the current frame
|
||||||
|
#define AT91C_LAST_BUFFER ((unsigned int) (1 << 15)) //*
|
||||||
|
|
||||||
|
#define ARP_ETHER 1 /* Ethernet hardware address */
|
||||||
|
#define ARPOP_REQUEST 1 /* Request to resolve address */
|
||||||
|
#define ARPOP_REPLY 2 /* Response to previous request */
|
||||||
|
#define RARPOP_REQUEST 3 /* Request to resolve address */
|
||||||
|
#define RARPOP_REPLY 4 /* Response to previous request */
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _AT91S_EthHdr
|
||||||
|
{
|
||||||
|
unsigned char et_dest[6]; /* Destination node */
|
||||||
|
unsigned char et_src[6]; /* Source node */
|
||||||
|
unsigned short et_protlen; /* Protocol or length */
|
||||||
|
} AT91S_EthHdr, *AT91PS_EthHdr;
|
||||||
|
|
||||||
|
typedef struct _AT91S_ArpHdr
|
||||||
|
{
|
||||||
|
unsigned short ar_hrd; /* Format of hardware address */
|
||||||
|
unsigned short ar_pro; /* Format of protocol address */
|
||||||
|
unsigned char ar_hln; /* Length of hardware address */
|
||||||
|
unsigned char ar_pln; /* Length of protocol address */
|
||||||
|
unsigned short ar_op; /* Operation */
|
||||||
|
unsigned char ar_sha[6]; /* Sender hardware address */
|
||||||
|
unsigned char ar_spa[4]; /* Sender protocol address */
|
||||||
|
unsigned char ar_tha[6]; /* Target hardware address */
|
||||||
|
unsigned char ar_tpa[4]; /* Target protocol address */
|
||||||
|
} AT91S_ArpHdr, *AT91PS_ArpHdr;
|
||||||
|
|
||||||
|
//* IP Header structure
|
||||||
|
typedef struct _AT91S_IPheader {
|
||||||
|
unsigned char ip_hl_v; /* header length and version */
|
||||||
|
unsigned char ip_tos; /* type of service */
|
||||||
|
unsigned short ip_len; /* total length */
|
||||||
|
unsigned short ip_id; /* identification */
|
||||||
|
unsigned short ip_off; /* fragment offset field */
|
||||||
|
unsigned char ip_ttl; /* time to live */
|
||||||
|
unsigned char ip_p; /* protocol */
|
||||||
|
unsigned short ip_sum; /* checksum */
|
||||||
|
unsigned char ip_src[4]; /* Source IP address */
|
||||||
|
unsigned char ip_dst[4]; /* Destination IP address */
|
||||||
|
unsigned short udp_src; /* UDP source port */
|
||||||
|
unsigned short udp_dst; /* UDP destination port */
|
||||||
|
unsigned short udp_len; /* Length of UDP packet */
|
||||||
|
unsigned short udp_xsum; /* Checksum */
|
||||||
|
} AT91S_IPheader, *AT91PS_IPheader;
|
||||||
|
|
||||||
|
//* ICMP echo header structure
|
||||||
|
typedef struct _AT91S_IcmpEchoHdr {
|
||||||
|
unsigned char type; /* type of message */
|
||||||
|
unsigned char code; /* type subcode */
|
||||||
|
unsigned short cksum; /* ones complement cksum of struct */
|
||||||
|
unsigned short id; /* identifier */
|
||||||
|
unsigned short seq; /* sequence number */
|
||||||
|
}AT91S_IcmpEchoHdr, *AT91PS_IcmpEchoHdr;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _AT91S_EthPack
|
||||||
|
{
|
||||||
|
AT91S_EthHdr EthHdr;
|
||||||
|
AT91S_ArpHdr ArpHdr;
|
||||||
|
} AT91S_EthPack, *AT91PS_EthPack;
|
||||||
|
|
||||||
|
|
||||||
|
#endif //* AT91C_EMAC_H
|
105
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/SrcAtmel/mii.h
Normal file
105
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/SrcAtmel/mii.h
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
/* Generic MII registers. */
|
||||||
|
|
||||||
|
#define MII_BMCR 0x00 /* Basic mode control register */
|
||||||
|
#define MII_BMSR 0x01 /* Basic mode status register */
|
||||||
|
#define MII_PHYSID1 0x02 /* PHYS ID 1 */
|
||||||
|
#define MII_PHYSID2 0x03 /* PHYS ID 2 */
|
||||||
|
#define MII_ADVERTISE 0x04 /* Advertisement control reg */
|
||||||
|
#define MII_LPA 0x05 /* Link partner ability reg */
|
||||||
|
#define MII_EXPANSION 0x06 /* Expansion register */
|
||||||
|
#define MII_DCOUNTER 0x12 /* Disconnect counter */
|
||||||
|
#define MII_FCSCOUNTER 0x13 /* False carrier counter */
|
||||||
|
#define MII_NWAYTEST 0x14 /* N-way auto-neg test reg */
|
||||||
|
#define MII_RERRCOUNTER 0x15 /* Receive error counter */
|
||||||
|
#define MII_SREVISION 0x16 /* Silicon revision */
|
||||||
|
#define MII_RESV1 0x17 /* Reserved... */
|
||||||
|
#define MII_LBRERROR 0x18 /* Lpback, rx, bypass error */
|
||||||
|
#define MII_PHYADDR 0x19 /* PHY address */
|
||||||
|
#define MII_RESV2 0x1a /* Reserved... */
|
||||||
|
#define MII_TPISTATUS 0x1b /* TPI status for 10mbps */
|
||||||
|
#define MII_NCONFIG 0x1c /* Network interface config */
|
||||||
|
|
||||||
|
/* Basic mode control register. */
|
||||||
|
#define BMCR_RESV 0x007f /* Unused... */
|
||||||
|
#define BMCR_CTST 0x0080 /* Collision test */
|
||||||
|
#define BMCR_FULLDPLX 0x0100 /* Full duplex */
|
||||||
|
#define BMCR_ANRESTART 0x0200 /* Auto negotiation restart */
|
||||||
|
#define BMCR_ISOLATE 0x0400 /* Disconnect DP83840 from MII */
|
||||||
|
#define BMCR_PDOWN 0x0800 /* Powerdown the DP83840 */
|
||||||
|
#define BMCR_ANENABLE 0x1000 /* Enable auto negotiation */
|
||||||
|
#define BMCR_SPEED100 0x2000 /* Select 100Mbps */
|
||||||
|
#define BMCR_LOOPBACK 0x4000 /* TXD loopback bits */
|
||||||
|
#define BMCR_RESET 0x8000 /* Reset the DP83840 */
|
||||||
|
|
||||||
|
/* Basic mode status register. */
|
||||||
|
#define BMSR_ERCAP 0x0001 /* Ext-reg capability */
|
||||||
|
#define BMSR_JCD 0x0002 /* Jabber detected */
|
||||||
|
#define BMSR_LSTATUS 0x0004 /* Link status */
|
||||||
|
#define BMSR_ANEGCAPABLE 0x0008 /* Able to do auto-negotiation */
|
||||||
|
#define BMSR_RFAULT 0x0010 /* Remote fault detected */
|
||||||
|
#define BMSR_ANEGCOMPLETE 0x0020 /* Auto-negotiation complete */
|
||||||
|
#define BMSR_RESV 0x07c0 /* Unused... */
|
||||||
|
#define BMSR_10HALF 0x0800 /* Can do 10mbps, half-duplex */
|
||||||
|
#define BMSR_10FULL 0x1000 /* Can do 10mbps, full-duplex */
|
||||||
|
#define BMSR_100HALF 0x2000 /* Can do 100mbps, half-duplex */
|
||||||
|
#define BMSR_100FULL 0x4000 /* Can do 100mbps, full-duplex */
|
||||||
|
#define BMSR_100BASE4 0x8000 /* Can do 100mbps, 4k packets */
|
||||||
|
|
||||||
|
/* Advertisement control register. */
|
||||||
|
#define ADVERTISE_SLCT 0x001f /* Selector bits */
|
||||||
|
#define ADVERTISE_CSMA 0x0001 /* Only selector supported */
|
||||||
|
#define ADVERTISE_10HALF 0x0020 /* Try for 10mbps half-duplex */
|
||||||
|
#define ADVERTISE_10FULL 0x0040 /* Try for 10mbps full-duplex */
|
||||||
|
#define ADVERTISE_100HALF 0x0080 /* Try for 100mbps half-duplex */
|
||||||
|
#define ADVERTISE_100FULL 0x0100 /* Try for 100mbps full-duplex */
|
||||||
|
#define ADVERTISE_100BASE4 0x0200 /* Try for 100mbps 4k packets */
|
||||||
|
#define ADVERTISE_RESV 0x1c00 /* Unused... */
|
||||||
|
#define ADVERTISE_RFAULT 0x2000 /* Say we can detect faults */
|
||||||
|
#define ADVERTISE_LPACK 0x4000 /* Ack link partners response */
|
||||||
|
#define ADVERTISE_NPAGE 0x8000 /* Next page bit */
|
||||||
|
|
||||||
|
#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | \
|
||||||
|
ADVERTISE_CSMA)
|
||||||
|
#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL | \
|
||||||
|
ADVERTISE_100HALF | ADVERTISE_100FULL)
|
||||||
|
|
||||||
|
/* Link partner ability register. */
|
||||||
|
#define LPA_SLCT 0x001f /* Same as advertise selector */
|
||||||
|
#define LPA_10HALF 0x0020 /* Can do 10mbps half-duplex */
|
||||||
|
#define LPA_10FULL 0x0040 /* Can do 10mbps full-duplex */
|
||||||
|
#define LPA_100HALF 0x0080 /* Can do 100mbps half-duplex */
|
||||||
|
#define LPA_100FULL 0x0100 /* Can do 100mbps full-duplex */
|
||||||
|
#define LPA_100BASE4 0x0200 /* Can do 100mbps 4k packets */
|
||||||
|
#define LPA_RESV 0x1c00 /* Unused... */
|
||||||
|
#define LPA_RFAULT 0x2000 /* Link partner faulted */
|
||||||
|
#define LPA_LPACK 0x4000 /* Link partner acked us */
|
||||||
|
#define LPA_NPAGE 0x8000 /* Next page bit */
|
||||||
|
|
||||||
|
#define LPA_DUPLEX (LPA_10FULL | LPA_100FULL)
|
||||||
|
#define LPA_100 (LPA_100FULL | LPA_100HALF | LPA_100BASE4)
|
||||||
|
|
||||||
|
/* Expansion register for auto-negotiation. */
|
||||||
|
#define EXPANSION_NWAY 0x0001 /* Can do N-way auto-nego */
|
||||||
|
#define EXPANSION_LCWP 0x0002 /* Got new RX page code word */
|
||||||
|
#define EXPANSION_ENABLENPAGE 0x0004 /* This enables npage words */
|
||||||
|
#define EXPANSION_NPCAPABLE 0x0008 /* Link partner supports npage */
|
||||||
|
#define EXPANSION_MFAULTS 0x0010 /* Multiple faults detected */
|
||||||
|
#define EXPANSION_RESV 0xffe0 /* Unused... */
|
||||||
|
|
||||||
|
/* N-way test register. */
|
||||||
|
#define NWAYTEST_RESV1 0x00ff /* Unused... */
|
||||||
|
#define NWAYTEST_LOOPBACK 0x0100 /* Enable loopback for N-way */
|
||||||
|
#define NWAYTEST_RESV2 0xfe00 /* Unused... */
|
||||||
|
|
||||||
|
#define SPEED_10 10
|
||||||
|
#define SPEED_100 100
|
||||||
|
|
||||||
|
/* Duplex, half or full. */
|
||||||
|
#define DUPLEX_HALF 0x00
|
||||||
|
#define DUPLEX_FULL 0x01
|
||||||
|
|
||||||
|
/* PHY ID */
|
||||||
|
#define MII_DM9161_ID 0x0181b8a0
|
||||||
|
#define MII_AM79C875_ID 0x00225540 /* 0x00225541 */
|
||||||
|
|
||||||
|
#define AT91C_PHY_ADDR 31
|
1164
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/USB/USBSample.c
Normal file
1164
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/USB/USBSample.c
Normal file
File diff suppressed because it is too large
Load diff
84
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/USB/USBSample.h
Normal file
84
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/USB/USBSample.h
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.
|
||||||
|
|
||||||
|
This file is part of the FreeRTOS.org distribution.
|
||||||
|
|
||||||
|
FreeRTOS.org is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
FreeRTOS.org is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with FreeRTOS.org; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
A special exception to the GPL can be applied should you wish to distribute
|
||||||
|
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||||
|
the source code for any proprietary components. See the licensing section
|
||||||
|
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||||
|
can be applied.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||||
|
and contact details. Please ensure to read the configuration and relevant
|
||||||
|
port sections of the online documentation.
|
||||||
|
|
||||||
|
Also see http://www.SafeRTOS.com a version that has been certified for use
|
||||||
|
in safety critical systems, plus commercial licensing, development and
|
||||||
|
support options.
|
||||||
|
***************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef USB_DEMO_H
|
||||||
|
#define USB_DEMO_H
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#define usbQUEUE_LENGTH ( 0x3 ) /* Must have all bits set! */
|
||||||
|
#define usbEND_POINT_0 ( 0 )
|
||||||
|
#define usbEND_POINT_1 ( 1 )
|
||||||
|
#define usbRX_COUNT_MASK ( ( unsigned portLONG ) 0x7ff )
|
||||||
|
#define AT91C_UDP_STALLSENT AT91C_UDP_ISOERROR
|
||||||
|
|
||||||
|
/* Structure used to take a snapshot of the USB status from within the ISR. */
|
||||||
|
typedef struct X_ISR_STATUS
|
||||||
|
{
|
||||||
|
unsigned portLONG ulISR;
|
||||||
|
unsigned portLONG ulCSR0;
|
||||||
|
unsigned portCHAR ucFifoData[ 8 ];
|
||||||
|
} xISRStatus;
|
||||||
|
|
||||||
|
/* Macros to manipulate the control and status registers. These registers
|
||||||
|
cannot be accessed using a direct read modify write operation outside of the
|
||||||
|
ISR as some bits are left unchanged by writing with a 0, and some are left
|
||||||
|
unchanged by writing with a 1. */
|
||||||
|
|
||||||
|
#define usbCSR_SET_BIT( pulValueNow, ulBit ) \
|
||||||
|
{ \
|
||||||
|
/* Set TXCOMP, RX_DATA_BK0, RXSETUP, */ \
|
||||||
|
/* STALLSENT and RX_DATA_BK1 to 1 so the */ \
|
||||||
|
/* write has no effect. */ \
|
||||||
|
( * ( ( unsigned portLONG * ) pulValueNow ) ) |= ( unsigned portLONG ) 0x4f; \
|
||||||
|
\
|
||||||
|
/* Clear the FORCE_STALL and TXPKTRDY bits */ \
|
||||||
|
/* so the write has no effect. */ \
|
||||||
|
( * ( ( unsigned portLONG * ) pulValueNow ) ) &= ( unsigned portLONG ) 0xffffffcf; \
|
||||||
|
\
|
||||||
|
/* Set whichever bit we want set. */ \
|
||||||
|
( * ( ( unsigned portLONG * ) pulValueNow ) ) |= ( ulBit ); \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates the queue used to communicate between the USB task and the USB ISR, then
|
||||||
|
* createst the task that manages the USB peripheral.
|
||||||
|
*/
|
||||||
|
void vStartUSBTask( unsigned portBASE_TYPE uxPriority );
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
180
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/USB/USB_ISR.c
Normal file
180
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/USB/USB_ISR.c
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.
|
||||||
|
|
||||||
|
This file is part of the FreeRTOS.org distribution.
|
||||||
|
|
||||||
|
FreeRTOS.org is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
FreeRTOS.org is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with FreeRTOS.org; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
A special exception to the GPL can be applied should you wish to distribute
|
||||||
|
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||||
|
the source code for any proprietary components. See the licensing section
|
||||||
|
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||||
|
can be applied.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||||
|
and contact details. Please ensure to read the configuration and relevant
|
||||||
|
port sections of the online documentation.
|
||||||
|
|
||||||
|
Also see http://www.SafeRTOS.com a version that has been certified for use
|
||||||
|
in safety critical systems, plus commercial licensing, development and
|
||||||
|
support options.
|
||||||
|
***************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Scheduler includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
#include "queue.h"
|
||||||
|
|
||||||
|
/* Demo app includes. */
|
||||||
|
#include "USBSample.h"
|
||||||
|
|
||||||
|
#define usbINT_CLEAR_MASK (AT91C_UDP_TXCOMP | AT91C_UDP_STALLSENT | AT91C_UDP_RXSETUP | AT91C_UDP_RX_DATA_BK0 | AT91C_UDP_RX_DATA_BK1 )
|
||||||
|
|
||||||
|
#define usbCSR_CLEAR_BIT( pulValueNow, ulBit ) \
|
||||||
|
{ \
|
||||||
|
/* Set TXCOMP, RX_DATA_BK0, RXSETUP, */ \
|
||||||
|
/* STALLSENT and RX_DATA_BK1 to 1 so the */ \
|
||||||
|
/* write has no effect. */ \
|
||||||
|
( * ( ( unsigned portLONG * ) pulValueNow ) ) |= ( unsigned portLONG ) 0x4f; \
|
||||||
|
\
|
||||||
|
/* Clear the FORCE_STALL and TXPKTRDY bits */ \
|
||||||
|
/* so the write has no effect. */ \
|
||||||
|
( * ( ( unsigned portLONG * ) pulValueNow ) ) &= ( unsigned portLONG ) 0xffffffcf; \
|
||||||
|
\
|
||||||
|
/* Clear whichever bit we want clear. */ \
|
||||||
|
( * ( ( unsigned portLONG * ) pulValueNow ) ) &= ( ~ulBit ); \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ISR entry point.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void vUSB_ISR_Wrapper( void ) __attribute__((naked));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Actual ISR handler. This must be separate from the entry point as the stack
|
||||||
|
* is used.
|
||||||
|
*/
|
||||||
|
void vUSB_ISR_Handler( void );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Array in which the USB interrupt status is passed between the ISR and task. */
|
||||||
|
static xISRStatus xISRMessages[ usbQUEUE_LENGTH + 1 ];
|
||||||
|
|
||||||
|
/* Queue used to pass messages between the ISR and the task. */
|
||||||
|
extern xQueueHandle xUSBInterruptQueue;
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vUSB_ISR_Handler( void )
|
||||||
|
{
|
||||||
|
portBASE_TYPE xTaskWokenByPost = pdFALSE;
|
||||||
|
static volatile unsigned portLONG ulNextMessage = 0;
|
||||||
|
xISRStatus *pxMessage;
|
||||||
|
unsigned portLONG ulTemp, ulRxBytes;
|
||||||
|
|
||||||
|
/* To reduce the amount of time spent in this interrupt it would be
|
||||||
|
possible to defer the majority of this processing to an 'interrupt task',
|
||||||
|
that is a task that runs at a higher priority than any of the application
|
||||||
|
tasks. */
|
||||||
|
|
||||||
|
/* Take the next message from the queue. Note that usbQUEUE_LENGTH *must*
|
||||||
|
be all 1's, as in 0x01, 0x03, 0x07, etc. */
|
||||||
|
pxMessage = &( xISRMessages[ ( ulNextMessage & usbQUEUE_LENGTH ) ] );
|
||||||
|
ulNextMessage++;
|
||||||
|
|
||||||
|
/* Take a snapshot of the current USB state for processing at the task
|
||||||
|
level. */
|
||||||
|
pxMessage->ulISR = AT91C_BASE_UDP->UDP_ISR;
|
||||||
|
pxMessage->ulCSR0 = AT91C_BASE_UDP->UDP_CSR[ usbEND_POINT_0 ];
|
||||||
|
|
||||||
|
/* Clear the interrupts from the ICR register. The bus end interrupt is
|
||||||
|
cleared separately as it does not appear in the mask register. */
|
||||||
|
AT91C_BASE_UDP->UDP_ICR = AT91C_BASE_UDP->UDP_IMR | AT91C_UDP_ENDBUSRES;
|
||||||
|
|
||||||
|
/* If there are bytes in the FIFO then we have to retrieve them here.
|
||||||
|
Ideally this would be done at the task level. However we need to clear the
|
||||||
|
RXSETUP interrupt before leaving the ISR, and this may cause the data in
|
||||||
|
the FIFO to be overwritten. Also the DIR bit has to be changed before the
|
||||||
|
RXSETUP bit is cleared (as per the SAM7 manual). */
|
||||||
|
ulTemp = pxMessage->ulCSR0;
|
||||||
|
|
||||||
|
/* Are there any bytes in the FIFO? */
|
||||||
|
ulRxBytes = ulTemp >> 16;
|
||||||
|
ulRxBytes &= usbRX_COUNT_MASK;
|
||||||
|
|
||||||
|
/* With this minimal implementation we are only interested in receiving
|
||||||
|
setup bytes on the control end point. */
|
||||||
|
if( ( ulRxBytes > 0 ) && ( ulTemp & AT91C_UDP_RXSETUP ) )
|
||||||
|
{
|
||||||
|
/* Take off 1 for a zero based index. */
|
||||||
|
while( ulRxBytes > 0 )
|
||||||
|
{
|
||||||
|
ulRxBytes--;
|
||||||
|
pxMessage->ucFifoData[ ulRxBytes ] = AT91C_BASE_UDP->UDP_FDR[ usbEND_POINT_0 ];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The direction must be changed first. */
|
||||||
|
usbCSR_SET_BIT( &ulTemp, ( AT91C_UDP_DIR ) );
|
||||||
|
AT91C_BASE_UDP->UDP_CSR[ usbEND_POINT_0 ] = ulTemp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Must write zero's to TXCOMP, STALLSENT, RXSETUP, and the RX DATA
|
||||||
|
registers to clear the interrupts in the CSR register. */
|
||||||
|
usbCSR_CLEAR_BIT( &ulTemp, usbINT_CLEAR_MASK );
|
||||||
|
AT91C_BASE_UDP->UDP_CSR[ usbEND_POINT_0 ] = ulTemp;
|
||||||
|
|
||||||
|
/* Also clear the interrupts in the CSR1 register. */
|
||||||
|
ulTemp = AT91C_BASE_UDP->UDP_CSR[ usbEND_POINT_1 ];
|
||||||
|
usbCSR_CLEAR_BIT( &ulTemp, usbINT_CLEAR_MASK );
|
||||||
|
AT91C_BASE_UDP->UDP_CSR[ usbEND_POINT_1 ] = ulTemp;
|
||||||
|
|
||||||
|
/* The message now contains the entire state and optional data from
|
||||||
|
the USB interrupt. This can now be posted on the Rx queue ready for
|
||||||
|
processing at the task level. */
|
||||||
|
xTaskWokenByPost = xQueueSendFromISR( xUSBInterruptQueue, &pxMessage, xTaskWokenByPost );
|
||||||
|
|
||||||
|
/* We may want to switch to the USB task, if this message has made
|
||||||
|
it the highest priority task that is ready to execute. */
|
||||||
|
if( xTaskWokenByPost )
|
||||||
|
{
|
||||||
|
portYIELD_FROM_ISR();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Clear the AIC ready for the next interrupt. */
|
||||||
|
AT91C_BASE_AIC->AIC_EOICR = 0;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vUSB_ISR_Wrapper( void )
|
||||||
|
{
|
||||||
|
/* Save the context of the interrupted task. */
|
||||||
|
portSAVE_CONTEXT();
|
||||||
|
|
||||||
|
/* Call the handler itself. This must be a separate function as it uses
|
||||||
|
the stack. */
|
||||||
|
vUSB_ISR_Handler();
|
||||||
|
|
||||||
|
/* Restore the context of the task that is going to
|
||||||
|
execute next. This might not be the same as the originally
|
||||||
|
interrupted task.*/
|
||||||
|
portRESTORE_CONTEXT();
|
||||||
|
}
|
49
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/atmel-rom.ld
Normal file
49
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/atmel-rom.ld
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
flash : ORIGIN = 0x00100000, LENGTH = 256K
|
||||||
|
ram : ORIGIN = 0x00200000, LENGTH = 64K
|
||||||
|
}
|
||||||
|
|
||||||
|
__stack_end__ = 0x00200000 + 64K - 4;
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
. = 0;
|
||||||
|
startup : { *(.startup)} >flash
|
||||||
|
|
||||||
|
prog :
|
||||||
|
{
|
||||||
|
*(.text)
|
||||||
|
*(.rodata)
|
||||||
|
*(.rodata*)
|
||||||
|
*(.glue_7)
|
||||||
|
*(.glue_7t)
|
||||||
|
} >flash
|
||||||
|
|
||||||
|
__end_of_text__ = .;
|
||||||
|
|
||||||
|
.data :
|
||||||
|
{
|
||||||
|
__data_beg__ = .;
|
||||||
|
__data_beg_src__ = __end_of_text__;
|
||||||
|
*(.data)
|
||||||
|
__data_end__ = .;
|
||||||
|
} >ram AT>flash
|
||||||
|
|
||||||
|
.bss :
|
||||||
|
{
|
||||||
|
__bss_beg__ = .;
|
||||||
|
*(.bss)
|
||||||
|
} >ram
|
||||||
|
|
||||||
|
/* Align here to ensure that the .bss section occupies space up to
|
||||||
|
_end. Align after .bss to ensure correct alignment even if the
|
||||||
|
.bss section disappears because there are no input sections. */
|
||||||
|
. = ALIGN(32 / 8);
|
||||||
|
}
|
||||||
|
. = ALIGN(32 / 8);
|
||||||
|
_end = .;
|
||||||
|
_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
|
||||||
|
PROVIDE (end = .);
|
||||||
|
|
||||||
|
|
162
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/boot.s
Normal file
162
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/boot.s
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
/* Sample initialization file */
|
||||||
|
|
||||||
|
.extern main
|
||||||
|
.extern exit
|
||||||
|
.extern AT91F_LowLevelInit
|
||||||
|
.extern vPortYieldProcessor
|
||||||
|
|
||||||
|
.text
|
||||||
|
.code 32
|
||||||
|
|
||||||
|
|
||||||
|
.align 0
|
||||||
|
|
||||||
|
.extern __stack_end__
|
||||||
|
.extern __bss_beg__
|
||||||
|
.extern __bss_end__
|
||||||
|
.extern __data_beg__
|
||||||
|
.extern __data_end__
|
||||||
|
.extern __data+beg_src__
|
||||||
|
|
||||||
|
.global start
|
||||||
|
.global endless_loop
|
||||||
|
|
||||||
|
/* Stack Sizes */
|
||||||
|
.set UND_STACK_SIZE, 0x00000004
|
||||||
|
.set ABT_STACK_SIZE, 0x00000004
|
||||||
|
.set FIQ_STACK_SIZE, 0x00000004
|
||||||
|
.set IRQ_STACK_SIZE, 0X00000400
|
||||||
|
.set SVC_STACK_SIZE, 0x00000400
|
||||||
|
|
||||||
|
/* Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs */
|
||||||
|
.set MODE_USR, 0x10 /* User Mode */
|
||||||
|
.set MODE_FIQ, 0x11 /* FIQ Mode */
|
||||||
|
.set MODE_IRQ, 0x12 /* IRQ Mode */
|
||||||
|
.set MODE_SVC, 0x13 /* Supervisor Mode */
|
||||||
|
.set MODE_ABT, 0x17 /* Abort Mode */
|
||||||
|
.set MODE_UND, 0x1B /* Undefined Mode */
|
||||||
|
.set MODE_SYS, 0x1F /* System Mode */
|
||||||
|
|
||||||
|
.equ I_BIT, 0x80 /* when I bit is set, IRQ is disabled */
|
||||||
|
.equ F_BIT, 0x40 /* when F bit is set, FIQ is disabled */
|
||||||
|
|
||||||
|
|
||||||
|
start:
|
||||||
|
_start:
|
||||||
|
_mainCRTStartup:
|
||||||
|
|
||||||
|
/* Setup a stack for each mode - note that this only sets up a usable stack
|
||||||
|
for system/user, SWI and IRQ modes. Also each mode is setup with
|
||||||
|
interrupts initially disabled. */
|
||||||
|
ldr r0, .LC6
|
||||||
|
msr CPSR_c, #MODE_UND|I_BIT|F_BIT /* Undefined Instruction Mode */
|
||||||
|
mov sp, r0
|
||||||
|
sub r0, r0, #UND_STACK_SIZE
|
||||||
|
msr CPSR_c, #MODE_ABT|I_BIT|F_BIT /* Abort Mode */
|
||||||
|
mov sp, r0
|
||||||
|
sub r0, r0, #ABT_STACK_SIZE
|
||||||
|
msr CPSR_c, #MODE_FIQ|I_BIT|F_BIT /* FIQ Mode */
|
||||||
|
mov sp, r0
|
||||||
|
sub r0, r0, #FIQ_STACK_SIZE
|
||||||
|
msr CPSR_c, #MODE_IRQ|I_BIT|F_BIT /* IRQ Mode */
|
||||||
|
mov sp, r0
|
||||||
|
sub r0, r0, #IRQ_STACK_SIZE
|
||||||
|
msr CPSR_c, #MODE_SVC|I_BIT|F_BIT /* Supervisor Mode */
|
||||||
|
mov sp, r0
|
||||||
|
sub r0, r0, #SVC_STACK_SIZE
|
||||||
|
msr CPSR_c, #MODE_SYS|I_BIT|F_BIT /* System Mode */
|
||||||
|
mov sp, r0
|
||||||
|
|
||||||
|
/* We want to start in supervisor mode. Operation will switch to system
|
||||||
|
mode when the first task starts. */
|
||||||
|
msr CPSR_c, #MODE_SVC|I_BIT|F_BIT
|
||||||
|
|
||||||
|
bl AT91F_LowLevelInit
|
||||||
|
|
||||||
|
/* Clear BSS. */
|
||||||
|
|
||||||
|
mov a2, #0 /* Fill value */
|
||||||
|
mov fp, a2 /* Null frame pointer */
|
||||||
|
mov r7, a2 /* Null frame pointer for Thumb */
|
||||||
|
|
||||||
|
ldr r1, .LC1 /* Start of memory block */
|
||||||
|
ldr r3, .LC2 /* End of memory block */
|
||||||
|
subs r3, r3, r1 /* Length of block */
|
||||||
|
beq .end_clear_loop
|
||||||
|
mov r2, #0
|
||||||
|
|
||||||
|
.clear_loop:
|
||||||
|
strb r2, [r1], #1
|
||||||
|
subs r3, r3, #1
|
||||||
|
bgt .clear_loop
|
||||||
|
|
||||||
|
.end_clear_loop:
|
||||||
|
|
||||||
|
/* Initialise data. */
|
||||||
|
|
||||||
|
ldr r1, .LC3 /* Start of memory block */
|
||||||
|
ldr r2, .LC4 /* End of memory block */
|
||||||
|
ldr r3, .LC5
|
||||||
|
subs r3, r3, r1 /* Length of block */
|
||||||
|
beq .end_set_loop
|
||||||
|
|
||||||
|
.set_loop:
|
||||||
|
ldrb r4, [r2], #1
|
||||||
|
strb r4, [r1], #1
|
||||||
|
subs r3, r3, #1
|
||||||
|
bgt .set_loop
|
||||||
|
|
||||||
|
.end_set_loop:
|
||||||
|
|
||||||
|
mov r0, #0 /* no arguments */
|
||||||
|
mov r1, #0 /* no argv either */
|
||||||
|
|
||||||
|
ldr lr, =main
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
endless_loop:
|
||||||
|
b endless_loop
|
||||||
|
|
||||||
|
|
||||||
|
.align 0
|
||||||
|
|
||||||
|
.LC1:
|
||||||
|
.word __bss_beg__
|
||||||
|
.LC2:
|
||||||
|
.word __bss_end__
|
||||||
|
.LC3:
|
||||||
|
.word __data_beg__
|
||||||
|
.LC4:
|
||||||
|
.word __data_beg_src__
|
||||||
|
.LC5:
|
||||||
|
.word __data_end__
|
||||||
|
.LC6:
|
||||||
|
.word __stack_end__
|
||||||
|
|
||||||
|
|
||||||
|
/* Setup vector table. Note that undf, pabt, dabt, fiq just execute
|
||||||
|
a null loop. */
|
||||||
|
|
||||||
|
.section .startup,"ax"
|
||||||
|
.code 32
|
||||||
|
.align 0
|
||||||
|
|
||||||
|
b _start /* reset - _start */
|
||||||
|
ldr pc, _undf /* undefined - _undf */
|
||||||
|
ldr pc, _swi /* SWI - _swi */
|
||||||
|
ldr pc, _pabt /* program abort - _pabt */
|
||||||
|
ldr pc, _dabt /* data abort - _dabt */
|
||||||
|
nop /* reserved */
|
||||||
|
ldr pc, [pc,#-0xF20] /* IRQ - read the AIC */
|
||||||
|
ldr pc, _fiq /* FIQ - _fiq */
|
||||||
|
|
||||||
|
_undf: .word __undf /* undefined */
|
||||||
|
_swi: .word vPortYieldProcessor /* SWI */
|
||||||
|
_pabt: .word __pabt /* program abort */
|
||||||
|
_dabt: .word __dabt /* data abort */
|
||||||
|
_fiq: .word __fiq /* FIQ */
|
||||||
|
|
||||||
|
__undf: b . /* undefined */
|
||||||
|
__pabt: b . /* program abort */
|
||||||
|
__dabt: b . /* data abort */
|
||||||
|
__fiq: b . /* FIQ */
|
236
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/main.c
Normal file
236
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/main.c
Normal file
|
@ -0,0 +1,236 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.
|
||||||
|
|
||||||
|
This file is part of the FreeRTOS.org distribution.
|
||||||
|
|
||||||
|
FreeRTOS.org is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
FreeRTOS.org is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with FreeRTOS.org; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
A special exception to the GPL can be applied should you wish to distribute
|
||||||
|
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||||
|
the source code for any proprietary components. See the licensing section
|
||||||
|
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||||
|
can be applied.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||||
|
and contact details. Please ensure to read the configuration and relevant
|
||||||
|
port sections of the online documentation.
|
||||||
|
|
||||||
|
Also see http://www.SafeRTOS.com a version that has been certified for use
|
||||||
|
in safety critical systems, plus commercial licensing, development and
|
||||||
|
support options.
|
||||||
|
***************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
NOTE : Tasks run in System mode and the scheduler runs in Supervisor mode.
|
||||||
|
The processor MUST be in supervisor mode when vTaskStartScheduler is
|
||||||
|
called. The demo applications included in the FreeRTOS.org download switch
|
||||||
|
to supervisor mode prior to main being called. If you are not using one of
|
||||||
|
these demo application projects then ensure Supervisor mode is used.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This demo includes a (basic) USB mouse driver and a WEB server. It is
|
||||||
|
* targeted for the AT91SAM7X EK prototyping board which includes a small
|
||||||
|
* joystick to provide the mouse inputs. The WEB interface provides some basic
|
||||||
|
* interactivity through the use of a check box to turn on and off an LED.
|
||||||
|
*
|
||||||
|
* main() creates the WEB server, USB, and a set of the standard demo tasks
|
||||||
|
* before starting the scheduler. See the online FreeRTOS.org documentation
|
||||||
|
* for more information on the standard demo tasks.
|
||||||
|
*
|
||||||
|
* LEDs D1 to D3 are controlled by the standard 'flash' tasks - each will
|
||||||
|
* toggle at a different fixed frequency.
|
||||||
|
*
|
||||||
|
* A tick hook function is used to monitor the standard demo tasks - with LED
|
||||||
|
* D4 being used to indicate the system status. D4 toggling every 5 seconds
|
||||||
|
* indicates that all the standard demo tasks are executing without error. The
|
||||||
|
* toggle rate increasing to 500ms is indicative of an error having been found
|
||||||
|
* in at least one demo task.
|
||||||
|
*
|
||||||
|
* See the online documentation page that accompanies this demo for full setup
|
||||||
|
* and usage information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Standard includes. */
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
/* Scheduler includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
|
/* Demo application includes. */
|
||||||
|
#include "partest.h"
|
||||||
|
#include "USBSample.h"
|
||||||
|
#include "uip_task.h"
|
||||||
|
#include "BlockQ.h"
|
||||||
|
#include "blocktim.h"
|
||||||
|
#include "flash.h"
|
||||||
|
#include "QPeek.h"
|
||||||
|
#include "dynamic.h"
|
||||||
|
|
||||||
|
/* Priorities for the demo application tasks. */
|
||||||
|
#define mainUIP_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||||
|
#define mainUSB_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||||
|
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||||
|
#define mainFLASH_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||||
|
#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||||
|
|
||||||
|
/* The task allocated to the uIP task is large to account for its use of the
|
||||||
|
sprintf() library function. Use of a cut down printf() library would allow
|
||||||
|
the stack usage to be greatly reduced. */
|
||||||
|
#define mainUIP_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE * 6 )
|
||||||
|
|
||||||
|
/* The LED toggle by the tick hook should an error have been found in a task. */
|
||||||
|
#define mainERROR_LED ( 3 )
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Configure the processor for use with the Atmel demo board. Setup is minimal
|
||||||
|
* as the low level init function (called from the startup asm file) takes care
|
||||||
|
* of most things.
|
||||||
|
*/
|
||||||
|
static void prvSetupHardware( void );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Starts all the other tasks, then starts the scheduler.
|
||||||
|
*/
|
||||||
|
int main( void )
|
||||||
|
{
|
||||||
|
/* Setup any hardware that has not already been configured by the low
|
||||||
|
level init routines. */
|
||||||
|
prvSetupHardware();
|
||||||
|
|
||||||
|
/* Start the task that handles the TCP/IP and WEB server functionality. */
|
||||||
|
xTaskCreate( vuIP_Task, "uIP", mainUIP_TASK_STACK_SIZE, NULL, mainUIP_PRIORITY, NULL );
|
||||||
|
|
||||||
|
/* Also start the USB demo which is just for the SAM7. */
|
||||||
|
vStartUSBTask( mainUSB_PRIORITY );
|
||||||
|
|
||||||
|
/* Start the standard demo tasks. */
|
||||||
|
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
|
||||||
|
vCreateBlockTimeTasks();
|
||||||
|
vStartLEDFlashTasks( mainFLASH_PRIORITY );
|
||||||
|
vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );
|
||||||
|
vStartQueuePeekTasks();
|
||||||
|
vStartDynamicPriorityTasks();
|
||||||
|
|
||||||
|
/* Start the scheduler.
|
||||||
|
|
||||||
|
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
|
||||||
|
The processor MUST be in supervisor mode when vTaskStartScheduler is
|
||||||
|
called. The demo applications included in the FreeRTOS.org download switch
|
||||||
|
to supervisor mode prior to main being called. If you are not using one of
|
||||||
|
these demo application projects then ensure Supervisor mode is used here. */
|
||||||
|
|
||||||
|
vTaskStartScheduler();
|
||||||
|
|
||||||
|
/* We should never get here as control is now taken by the scheduler. */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvSetupHardware( void )
|
||||||
|
{
|
||||||
|
portDISABLE_INTERRUPTS();
|
||||||
|
|
||||||
|
/* When using the JTAG debugger the hardware is not always initialised to
|
||||||
|
the correct default state. This line just ensures that this does not
|
||||||
|
cause all interrupts to be masked at the start. */
|
||||||
|
AT91C_BASE_AIC->AIC_EOICR = 0;
|
||||||
|
|
||||||
|
/* Most setup is performed by the low level init function called from the
|
||||||
|
startup asm file. */
|
||||||
|
|
||||||
|
/* Enable the peripheral clock. */
|
||||||
|
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA;
|
||||||
|
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOB;
|
||||||
|
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_EMAC;
|
||||||
|
|
||||||
|
/* Initialise the LED outputs for use by the demo application tasks. */
|
||||||
|
vParTestInitialise();
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vApplicationTickHook( void )
|
||||||
|
{
|
||||||
|
static unsigned portLONG ulCallCount = 0, ulErrorFound = pdFALSE;
|
||||||
|
|
||||||
|
/* The rate at which LED D4 will toggle if an error has been found in one or
|
||||||
|
more of the standard demo tasks. */
|
||||||
|
const unsigned portLONG ulErrorFlashRate = 500 / portTICK_RATE_MS;
|
||||||
|
|
||||||
|
/* The rate at which LED D4 will toggle if no errors have been found in any
|
||||||
|
of the standard demo tasks. */
|
||||||
|
const unsigned portLONG ulNoErrorCheckRate = 5000 / portTICK_RATE_MS;
|
||||||
|
|
||||||
|
ulCallCount++;
|
||||||
|
|
||||||
|
if( ulErrorFound != pdFALSE )
|
||||||
|
{
|
||||||
|
/* We have already found an error, so flash the LED with the appropriate
|
||||||
|
frequency. */
|
||||||
|
if( ulCallCount > ulErrorFlashRate )
|
||||||
|
{
|
||||||
|
ulCallCount = 0;
|
||||||
|
vParTestToggleLED( mainERROR_LED );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if( ulCallCount > ulNoErrorCheckRate )
|
||||||
|
{
|
||||||
|
ulCallCount = 0;
|
||||||
|
|
||||||
|
/* We have not yet found an error. Check all the demo tasks to ensure
|
||||||
|
this is still the case. */
|
||||||
|
|
||||||
|
if( xAreBlockingQueuesStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
ulErrorFound |= 0x01;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
ulErrorFound |= 0x02;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
ulErrorFound |= 0x04;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xAreGenericQueueTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
ulErrorFound |= 0x08;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xAreQueuePeekTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
ulErrorFound |= 0x10;
|
||||||
|
}
|
||||||
|
|
||||||
|
vParTestToggleLED( mainERROR_LED );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
101
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/EMAC_ISR.c
Normal file
101
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/EMAC_ISR.c
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.
|
||||||
|
|
||||||
|
This file is part of the FreeRTOS.org distribution.
|
||||||
|
|
||||||
|
FreeRTOS.org is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
FreeRTOS.org is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with FreeRTOS.org; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
A special exception to the GPL can be applied should you wish to distribute
|
||||||
|
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||||
|
the source code for any proprietary components. See the licensing section
|
||||||
|
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||||
|
can be applied.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||||
|
and contact details. Please ensure to read the configuration and relevant
|
||||||
|
port sections of the online documentation.
|
||||||
|
|
||||||
|
Also see http://www.SafeRTOS.com a version that has been certified for use
|
||||||
|
in safety critical systems, plus commercial licensing, development and
|
||||||
|
support options.
|
||||||
|
***************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "Semphr.h"
|
||||||
|
#include "Task.h"
|
||||||
|
|
||||||
|
/* Wrapper for the EMAC interrupt. */
|
||||||
|
void vEMACISR_Wrapper( void ) __attribute__((naked));
|
||||||
|
|
||||||
|
/* Handler called by the ISR wrapper. This must be kept a separate
|
||||||
|
function to ensure the stack frame is correctly set up. */
|
||||||
|
void vEMACISR_Handler( void );
|
||||||
|
|
||||||
|
static xSemaphoreHandle xEMACSemaphore;
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vPassEMACSemaphore( xSemaphoreHandle xSemaphore )
|
||||||
|
{
|
||||||
|
xEMACSemaphore = xSemaphore;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vEMACISR_Handler( void )
|
||||||
|
{
|
||||||
|
volatile unsigned portLONG ulIntStatus, ulRxStatus;
|
||||||
|
portBASE_TYPE xSwitchRequired = pdFALSE;
|
||||||
|
|
||||||
|
ulIntStatus = AT91C_BASE_EMAC->EMAC_ISR;
|
||||||
|
ulRxStatus = AT91C_BASE_EMAC->EMAC_RSR;
|
||||||
|
|
||||||
|
if( ( ulIntStatus & AT91C_EMAC_RCOMP ) || ( ulRxStatus & AT91C_EMAC_REC ) )
|
||||||
|
{
|
||||||
|
/* A frame has been received, signal the uIP task so it can process
|
||||||
|
the Rx descriptors. */
|
||||||
|
xSwitchRequired = xSemaphoreGiveFromISR( xEMACSemaphore, pdFALSE );
|
||||||
|
AT91C_BASE_EMAC->EMAC_RSR = AT91C_EMAC_REC;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Clear the interrupt. */
|
||||||
|
AT91C_BASE_AIC->AIC_EOICR = 0;
|
||||||
|
|
||||||
|
/* Switch to the uIP task. */
|
||||||
|
if( xSwitchRequired )
|
||||||
|
{
|
||||||
|
/* If a task of higher priority than the interrupted task was
|
||||||
|
unblocked by the ISR then this call will ensure that the
|
||||||
|
unblocked task is the task the ISR returns to. */
|
||||||
|
portYIELD_FROM_ISR();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vEMACISR_Wrapper( void )
|
||||||
|
{
|
||||||
|
/* Save the context of the interrupted task. */
|
||||||
|
portSAVE_CONTEXT();
|
||||||
|
|
||||||
|
/* Call the handler task to do the actual work. This must be a separate
|
||||||
|
function to ensure the stack frame is correctly set up. */
|
||||||
|
vEMACISR_Handler();
|
||||||
|
|
||||||
|
/* Restore the context of whichever task is the next to run. */
|
||||||
|
portRESTORE_CONTEXT();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
APP_SOURCES += httpd.c http-strings.c httpd-fs.c httpd-cgi.c
|
674
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/SAM7_EMAC.c
Normal file
674
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/SAM7_EMAC.c
Normal file
|
@ -0,0 +1,674 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.
|
||||||
|
|
||||||
|
This file is part of the FreeRTOS.org distribution.
|
||||||
|
|
||||||
|
FreeRTOS.org is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
FreeRTOS.org is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with FreeRTOS.org; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
A special exception to the GPL can be applied should you wish to distribute
|
||||||
|
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||||
|
the source code for any proprietary components. See the licensing section
|
||||||
|
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||||
|
can be applied.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||||
|
and contact details. Please ensure to read the configuration and relevant
|
||||||
|
port sections of the online documentation.
|
||||||
|
|
||||||
|
Also see http://www.SafeRTOS.com a version that has been certified for use
|
||||||
|
in safety critical systems, plus commercial licensing, development and
|
||||||
|
support options.
|
||||||
|
***************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Standard includes. */
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* Scheduler includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "semphr.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
|
/* Demo application includes. */
|
||||||
|
#include "SAM7_EMAC.h"
|
||||||
|
|
||||||
|
/* uIP includes. */
|
||||||
|
#include "uip.h"
|
||||||
|
|
||||||
|
/* Hardware specific includes. */
|
||||||
|
#include "Emac.h"
|
||||||
|
#include "mii.h"
|
||||||
|
#include "AT91SAM7X256.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* USE_RMII_INTERFACE must be defined as 1 to use an RMII interface, or 0
|
||||||
|
to use an MII interface. */
|
||||||
|
#define USE_RMII_INTERFACE 0
|
||||||
|
|
||||||
|
/* The buffer addresses written into the descriptors must be aligned so the
|
||||||
|
last few bits are zero. These bits have special meaning for the EMAC
|
||||||
|
peripheral and cannot be used as part of the address. */
|
||||||
|
#define emacADDRESS_MASK ( ( unsigned portLONG ) 0xFFFFFFFC )
|
||||||
|
|
||||||
|
/* Bit used within the address stored in the descriptor to mark the last
|
||||||
|
descriptor in the array. */
|
||||||
|
#define emacRX_WRAP_BIT ( ( unsigned portLONG ) 0x02 )
|
||||||
|
|
||||||
|
/* Bit used within the Tx descriptor status to indicate whether the
|
||||||
|
descriptor is under the control of the EMAC or the software. */
|
||||||
|
#define emacTX_BUF_USED ( ( unsigned portLONG ) 0x80000000 )
|
||||||
|
|
||||||
|
/* A short delay is used to wait for a buffer to become available, should
|
||||||
|
one not be immediately available when trying to transmit a frame. */
|
||||||
|
#define emacBUFFER_WAIT_DELAY ( 2 )
|
||||||
|
#define emacMAX_WAIT_CYCLES ( configTICK_RATE_HZ / 40 )
|
||||||
|
|
||||||
|
/* Misc defines. */
|
||||||
|
#define emacINTERRUPT_LEVEL ( 5 )
|
||||||
|
#define emacNO_DELAY ( 0 )
|
||||||
|
#define emacTOTAL_FRAME_HEADER_SIZE ( 54 )
|
||||||
|
#define emacPHY_INIT_DELAY ( 5000 / portTICK_RATE_MS )
|
||||||
|
#define emacRESET_KEY ( ( unsigned portLONG ) 0xA5000000 )
|
||||||
|
#define emacRESET_LENGTH ( ( unsigned portLONG ) ( 0x01 << 8 ) )
|
||||||
|
|
||||||
|
/* The Atmel header file only defines the TX frame length mask. */
|
||||||
|
#define emacRX_LENGTH_FRAME ( 0xfff )
|
||||||
|
|
||||||
|
/* Peripheral setup for the EMAC. */
|
||||||
|
#define emacPERIPHERAL_A_SETUP ( ( unsigned portLONG ) AT91C_PB2_ETX0 ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB12_ETXER ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB16_ECOL ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB11_ETX3 ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB6_ERX1 ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB15_ERXDV ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB13_ERX2 ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB3_ETX1 ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB8_EMDC ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB5_ERX0 ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB14_ERX3 ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB4_ECRS_ECRSDV ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB1_ETXEN ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB10_ETX2 ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB0_ETXCK_EREFCK ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB9_EMDIO ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB7_ERXER ) | \
|
||||||
|
( ( unsigned portLONG ) AT91C_PB17_ERXCK );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prototype for the EMAC interrupt function - called by the asm wrapper.
|
||||||
|
*/
|
||||||
|
extern void vEMACISR_Wrapper( void ) __attribute__((naked));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialise both the Tx and Rx descriptors used by the EMAC.
|
||||||
|
*/
|
||||||
|
static void prvSetupDescriptors(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write our MAC address into the EMAC. The MAC address is set as one of the
|
||||||
|
* uip options.
|
||||||
|
*/
|
||||||
|
static void prvSetupMACAddress( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Configure the EMAC and AIC for EMAC interrupts.
|
||||||
|
*/
|
||||||
|
static void prvSetupEMACInterrupt( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some initialisation functions taken from the Atmel EMAC sample code.
|
||||||
|
*/
|
||||||
|
static void vReadPHY( unsigned portCHAR ucPHYAddress, unsigned portCHAR ucAddress, unsigned portLONG *pulValue );
|
||||||
|
#if USE_RMII_INTERFACE != 1
|
||||||
|
static void vWritePHY( unsigned portCHAR ucPHYAddress, unsigned portCHAR ucAddress, unsigned portLONG ulValue);
|
||||||
|
#endif
|
||||||
|
static portBASE_TYPE xGetLinkSpeed( void );
|
||||||
|
static portBASE_TYPE prvProbePHY( void );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Buffer written to by the EMAC DMA. Must be aligned as described by the
|
||||||
|
comment above the emacADDRESS_MASK definition. */
|
||||||
|
#pragma data_alignment=8
|
||||||
|
static volatile portCHAR pcRxBuffer[ NB_RX_BUFFERS * ETH_RX_BUFFER_SIZE ];
|
||||||
|
|
||||||
|
/* Buffer read by the EMAC DMA. Must be aligned as described by he comment
|
||||||
|
above the emacADDRESS_MASK definition. */
|
||||||
|
#pragma data_alignment=8
|
||||||
|
static portCHAR pcTxBuffer[ NB_TX_BUFFERS * ETH_TX_BUFFER_SIZE ];
|
||||||
|
|
||||||
|
/* Descriptors used to communicate between the program and the EMAC peripheral.
|
||||||
|
These descriptors hold the locations and state of the Rx and Tx buffers. */
|
||||||
|
static volatile AT91S_TxTdDescriptor xTxDescriptors[ NB_TX_BUFFERS ];
|
||||||
|
static volatile AT91S_RxTdDescriptor xRxDescriptors[ NB_RX_BUFFERS ];
|
||||||
|
|
||||||
|
/* The IP and Ethernet addresses are read from the uIP setup. */
|
||||||
|
const portCHAR cMACAddress[ 6 ] = { uipMAC_ADDR0, uipMAC_ADDR1, uipMAC_ADDR2, uipMAC_ADDR3, uipMAC_ADDR4, uipMAC_ADDR5 };
|
||||||
|
const unsigned char ucIPAddress[ 4 ] = { uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 };
|
||||||
|
|
||||||
|
/* The semaphore used by the EMAC ISR to wake the EMAC task. */
|
||||||
|
static xSemaphoreHandle xSemaphore = NULL;
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
xSemaphoreHandle xEMACInit( void )
|
||||||
|
{
|
||||||
|
/* Code supplied by Atmel -------------------------------*/
|
||||||
|
|
||||||
|
/* Disable pull up on RXDV => PHY normal mode (not in test mode),
|
||||||
|
PHY has internal pull down. */
|
||||||
|
AT91C_BASE_PIOB->PIO_PPUDR = 1 << 15;
|
||||||
|
|
||||||
|
#if USE_RMII_INTERFACE != 1
|
||||||
|
/* PHY has internal pull down : set MII mode. */
|
||||||
|
AT91C_BASE_PIOB->PIO_PPUDR = 1 << 16;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Clear PB18 <=> PHY powerdown. */
|
||||||
|
AT91C_BASE_PIOB->PIO_PER = 1 << 18;
|
||||||
|
AT91C_BASE_PIOB->PIO_OER = 1 << 18;
|
||||||
|
AT91C_BASE_PIOB->PIO_CODR = 1 << 18;
|
||||||
|
|
||||||
|
/* After PHY power up, hardware reset. */
|
||||||
|
AT91C_BASE_RSTC->RSTC_RMR = emacRESET_KEY | emacRESET_LENGTH;
|
||||||
|
AT91C_BASE_RSTC->RSTC_RCR = emacRESET_KEY | AT91C_RSTC_EXTRST;
|
||||||
|
|
||||||
|
/* Wait for hardware reset end. */
|
||||||
|
while( !( AT91C_BASE_RSTC->RSTC_RSR & AT91C_RSTC_NRSTL ) )
|
||||||
|
{
|
||||||
|
__asm volatile ( "NOP" );
|
||||||
|
}
|
||||||
|
__asm volatile ( "NOP" );
|
||||||
|
|
||||||
|
/* Setup the pins. */
|
||||||
|
AT91C_BASE_PIOB->PIO_ASR = emacPERIPHERAL_A_SETUP;
|
||||||
|
AT91C_BASE_PIOB->PIO_PDR = emacPERIPHERAL_A_SETUP;
|
||||||
|
|
||||||
|
/* Enable com between EMAC PHY.
|
||||||
|
|
||||||
|
Enable management port. */
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCR |= AT91C_EMAC_MPE;
|
||||||
|
|
||||||
|
/* MDC = MCK/32. */
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCFGR |= ( 2 ) << 10;
|
||||||
|
|
||||||
|
/* Wait for PHY auto init end (rather crude delay!). */
|
||||||
|
vTaskDelay( emacPHY_INIT_DELAY );
|
||||||
|
|
||||||
|
/* PHY configuration. */
|
||||||
|
#if USE_RMII_INTERFACE != 1
|
||||||
|
{
|
||||||
|
unsigned portLONG ulControl;
|
||||||
|
|
||||||
|
/* PHY has internal pull down : disable MII isolate. */
|
||||||
|
vReadPHY( AT91C_PHY_ADDR, MII_BMCR, &ulControl );
|
||||||
|
vReadPHY( AT91C_PHY_ADDR, MII_BMCR, &ulControl );
|
||||||
|
ulControl &= ~BMCR_ISOLATE;
|
||||||
|
vWritePHY( AT91C_PHY_ADDR, MII_BMCR, ulControl );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Disable management port again. */
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCR &= ~AT91C_EMAC_MPE;
|
||||||
|
|
||||||
|
#if USE_RMII_INTERFACE != 1
|
||||||
|
/* Enable EMAC in MII mode, enable clock ERXCK and ETXCK. */
|
||||||
|
AT91C_BASE_EMAC->EMAC_USRIO = AT91C_EMAC_CLKEN ;
|
||||||
|
#else
|
||||||
|
/* Enable EMAC in RMII mode, enable RMII clock (50MHz from oscillator
|
||||||
|
on ERFCK). */
|
||||||
|
AT91C_BASE_EMAC->EMAC_USRIO = AT91C_EMAC_RMII | AT91C_EMAC_CLKEN ;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* End of code supplied by Atmel ------------------------*/
|
||||||
|
|
||||||
|
/* Setup the buffers and descriptors. */
|
||||||
|
prvSetupDescriptors();
|
||||||
|
|
||||||
|
/* Load our MAC address into the EMAC. */
|
||||||
|
prvSetupMACAddress();
|
||||||
|
|
||||||
|
/* Are we connected? */
|
||||||
|
if( prvProbePHY() )
|
||||||
|
{
|
||||||
|
/* Enable the interrupt! */
|
||||||
|
portENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
prvSetupEMACInterrupt();
|
||||||
|
vPassEMACSemaphore( xSemaphore );
|
||||||
|
}
|
||||||
|
portEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
|
||||||
|
return xSemaphore;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
portLONG lEMACSend( void )
|
||||||
|
{
|
||||||
|
static unsigned portBASE_TYPE uxTxBufferIndex = 0;
|
||||||
|
portBASE_TYPE xWaitCycles = 0;
|
||||||
|
portLONG lReturn = pdPASS;
|
||||||
|
portCHAR *pcBuffer;
|
||||||
|
|
||||||
|
/* Is a buffer available? */
|
||||||
|
while( !( xTxDescriptors[ uxTxBufferIndex ].U_Status.status & AT91C_TRANSMIT_OK ) )
|
||||||
|
{
|
||||||
|
/* There is no room to write the Tx data to the Tx buffer. Wait a
|
||||||
|
short while, then try again. */
|
||||||
|
xWaitCycles++;
|
||||||
|
if( xWaitCycles > emacMAX_WAIT_CYCLES )
|
||||||
|
{
|
||||||
|
/* Give up. */
|
||||||
|
lReturn = pdFAIL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vTaskDelay( emacBUFFER_WAIT_DELAY );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* lReturn will only be pdPASS if a buffer is available. */
|
||||||
|
if( lReturn == pdPASS )
|
||||||
|
{
|
||||||
|
/* Copy the headers into the Tx buffer. These will be in the uIP buffer. */
|
||||||
|
pcBuffer = ( portCHAR * ) xTxDescriptors[ uxTxBufferIndex ].addr;
|
||||||
|
memcpy( ( void * ) pcBuffer, ( void * ) uip_buf, emacTOTAL_FRAME_HEADER_SIZE );
|
||||||
|
|
||||||
|
/* If there is room, also copy in the application data if any. */
|
||||||
|
if( ( uip_len > emacTOTAL_FRAME_HEADER_SIZE ) && ( uip_len <= ( ETH_TX_BUFFER_SIZE - emacTOTAL_FRAME_HEADER_SIZE ) ) )
|
||||||
|
{
|
||||||
|
memcpy( ( void * ) &( pcBuffer[ emacTOTAL_FRAME_HEADER_SIZE ] ), ( void * ) uip_appdata, ( uip_len - emacTOTAL_FRAME_HEADER_SIZE ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Send. */
|
||||||
|
portENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
if( uxTxBufferIndex >= ( NB_TX_BUFFERS - 1 ) )
|
||||||
|
{
|
||||||
|
/* Fill out the necessary in the descriptor to get the data sent. */
|
||||||
|
xTxDescriptors[ uxTxBufferIndex ].U_Status.status = ( uip_len & ( unsigned portLONG ) AT91C_LENGTH_FRAME )
|
||||||
|
| AT91C_LAST_BUFFER
|
||||||
|
| AT91C_TRANSMIT_WRAP;
|
||||||
|
uxTxBufferIndex = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Fill out the necessary in the descriptor to get the data sent. */
|
||||||
|
xTxDescriptors[ uxTxBufferIndex ].U_Status.status = ( uip_len & ( unsigned portLONG ) AT91C_LENGTH_FRAME )
|
||||||
|
| AT91C_LAST_BUFFER;
|
||||||
|
uxTxBufferIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCR |= AT91C_EMAC_TSTART;
|
||||||
|
}
|
||||||
|
portEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
|
||||||
|
return lReturn;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
unsigned portLONG ulEMACPoll( void )
|
||||||
|
{
|
||||||
|
static unsigned portBASE_TYPE ulNextRxBuffer = 0;
|
||||||
|
unsigned portLONG ulSectionLength = 0, ulLengthSoFar = 0, ulEOF = pdFALSE;
|
||||||
|
portCHAR *pcSource;
|
||||||
|
|
||||||
|
/* Skip any fragments. */
|
||||||
|
while( ( xRxDescriptors[ ulNextRxBuffer ].addr & AT91C_OWNERSHIP_BIT ) && !( xRxDescriptors[ ulNextRxBuffer ].U_Status.status & AT91C_SOF ) )
|
||||||
|
{
|
||||||
|
/* Mark the buffer as free again. */
|
||||||
|
xRxDescriptors[ ulNextRxBuffer ].addr &= ~( AT91C_OWNERSHIP_BIT );
|
||||||
|
ulNextRxBuffer++;
|
||||||
|
if( ulNextRxBuffer >= NB_RX_BUFFERS )
|
||||||
|
{
|
||||||
|
ulNextRxBuffer = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Is there a packet ready? */
|
||||||
|
|
||||||
|
while( ( xRxDescriptors[ ulNextRxBuffer ].addr & AT91C_OWNERSHIP_BIT ) && !ulSectionLength )
|
||||||
|
{
|
||||||
|
pcSource = ( portCHAR * )( xRxDescriptors[ ulNextRxBuffer ].addr & emacADDRESS_MASK );
|
||||||
|
ulSectionLength = xRxDescriptors[ ulNextRxBuffer ].U_Status.status & emacRX_LENGTH_FRAME;
|
||||||
|
|
||||||
|
if( ulSectionLength == 0 )
|
||||||
|
{
|
||||||
|
/* The frame is longer than the buffer pointed to by this
|
||||||
|
descriptor so copy the entire buffer to uIP - then move onto
|
||||||
|
the next descriptor to get the rest of the frame. */
|
||||||
|
if( ( ulLengthSoFar + ETH_RX_BUFFER_SIZE ) <= UIP_BUFSIZE )
|
||||||
|
{
|
||||||
|
memcpy( &( uip_buf[ ulLengthSoFar ] ), pcSource, ETH_RX_BUFFER_SIZE );
|
||||||
|
ulLengthSoFar += ETH_RX_BUFFER_SIZE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* This is the last section of the frame. Copy the section to
|
||||||
|
uIP. */
|
||||||
|
if( ulSectionLength < UIP_BUFSIZE )
|
||||||
|
{
|
||||||
|
/* The section length holds the length of the entire frame.
|
||||||
|
ulLengthSoFar holds the length of the frame sections already
|
||||||
|
copied to uIP, so the length of the final section is
|
||||||
|
ulSectionLength - ulLengthSoFar; */
|
||||||
|
if( ulSectionLength > ulLengthSoFar )
|
||||||
|
{
|
||||||
|
memcpy( &( uip_buf[ ulLengthSoFar ] ), pcSource, ( ulSectionLength - ulLengthSoFar ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Is this the last buffer for the frame? If not why? */
|
||||||
|
ulEOF = xRxDescriptors[ ulNextRxBuffer ].U_Status.status & AT91C_EOF;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mark the buffer as free again. */
|
||||||
|
xRxDescriptors[ ulNextRxBuffer ].addr &= ~( AT91C_OWNERSHIP_BIT );
|
||||||
|
|
||||||
|
/* Increment to the next buffer, wrapping if necessary. */
|
||||||
|
ulNextRxBuffer++;
|
||||||
|
if( ulNextRxBuffer >= NB_RX_BUFFERS )
|
||||||
|
{
|
||||||
|
ulNextRxBuffer = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If we obtained data but for some reason did not find the end of the
|
||||||
|
frame then discard the data as it must contain an error. */
|
||||||
|
if( !ulEOF )
|
||||||
|
{
|
||||||
|
ulSectionLength = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ulSectionLength;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvSetupDescriptors(void)
|
||||||
|
{
|
||||||
|
unsigned portBASE_TYPE xIndex;
|
||||||
|
unsigned portLONG ulAddress;
|
||||||
|
|
||||||
|
/* Initialise xRxDescriptors descriptor. */
|
||||||
|
for( xIndex = 0; xIndex < NB_RX_BUFFERS; ++xIndex )
|
||||||
|
{
|
||||||
|
/* Calculate the address of the nth buffer within the array. */
|
||||||
|
ulAddress = ( unsigned portLONG )( pcRxBuffer + ( xIndex * ETH_RX_BUFFER_SIZE ) );
|
||||||
|
|
||||||
|
/* Write the buffer address into the descriptor. The DMA will place
|
||||||
|
the data at this address when this descriptor is being used. Mask off
|
||||||
|
the bottom bits of the address as these have special meaning. */
|
||||||
|
xRxDescriptors[ xIndex ].addr = ulAddress & emacADDRESS_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The last buffer has the wrap bit set so the EMAC knows to wrap back
|
||||||
|
to the first buffer. */
|
||||||
|
xRxDescriptors[ NB_RX_BUFFERS - 1 ].addr |= emacRX_WRAP_BIT;
|
||||||
|
|
||||||
|
/* Initialise xTxDescriptors. */
|
||||||
|
for( xIndex = 0; xIndex < NB_TX_BUFFERS; ++xIndex )
|
||||||
|
{
|
||||||
|
/* Calculate the address of the nth buffer within the array. */
|
||||||
|
ulAddress = ( unsigned portLONG )( pcTxBuffer + ( xIndex * ETH_TX_BUFFER_SIZE ) );
|
||||||
|
|
||||||
|
/* Write the buffer address into the descriptor. The DMA will read
|
||||||
|
data from here when the descriptor is being used. */
|
||||||
|
xTxDescriptors[ xIndex ].addr = ulAddress & emacADDRESS_MASK;
|
||||||
|
xTxDescriptors[ xIndex ].U_Status.status = AT91C_TRANSMIT_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The last buffer has the wrap bit set so the EMAC knows to wrap back
|
||||||
|
to the first buffer. */
|
||||||
|
xTxDescriptors[ NB_TX_BUFFERS - 1 ].U_Status.status = AT91C_TRANSMIT_WRAP | AT91C_TRANSMIT_OK;
|
||||||
|
|
||||||
|
/* Tell the EMAC where to find the descriptors. */
|
||||||
|
AT91C_BASE_EMAC->EMAC_RBQP = ( unsigned portLONG ) xRxDescriptors;
|
||||||
|
AT91C_BASE_EMAC->EMAC_TBQP = ( unsigned portLONG ) xTxDescriptors;
|
||||||
|
|
||||||
|
/* Clear all the bits in the receive status register. */
|
||||||
|
AT91C_BASE_EMAC->EMAC_RSR = ( AT91C_EMAC_OVR | AT91C_EMAC_REC | AT91C_EMAC_BNA );
|
||||||
|
|
||||||
|
/* Enable the copy of data into the buffers, ignore broadcasts,
|
||||||
|
and don't copy FCS. */
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCFGR |= ( AT91C_EMAC_CAF | AT91C_EMAC_NBC | AT91C_EMAC_DRFCS);
|
||||||
|
|
||||||
|
/* Enable Rx and Tx, plus the stats register. */
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCR |= ( AT91C_EMAC_TE | AT91C_EMAC_RE | AT91C_EMAC_WESTAT );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvSetupMACAddress( void )
|
||||||
|
{
|
||||||
|
/* Must be written SA1L then SA1H. */
|
||||||
|
AT91C_BASE_EMAC->EMAC_SA1L = ( ( unsigned portLONG ) cMACAddress[ 3 ] << 24 ) |
|
||||||
|
( ( unsigned portLONG ) cMACAddress[ 2 ] << 16 ) |
|
||||||
|
( ( unsigned portLONG ) cMACAddress[ 1 ] << 8 ) |
|
||||||
|
cMACAddress[ 0 ];
|
||||||
|
|
||||||
|
AT91C_BASE_EMAC->EMAC_SA1H = ( ( unsigned portLONG ) cMACAddress[ 5 ] << 8 ) |
|
||||||
|
cMACAddress[ 4 ];
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvSetupEMACInterrupt( void )
|
||||||
|
{
|
||||||
|
/* Create the semaphore used to trigger the EMAC task. */
|
||||||
|
vSemaphoreCreateBinary( xSemaphore );
|
||||||
|
if( xSemaphore )
|
||||||
|
{
|
||||||
|
/* We start by 'taking' the semaphore so the ISR can 'give' it when the
|
||||||
|
first interrupt occurs. */
|
||||||
|
xSemaphoreTake( xSemaphore, emacNO_DELAY );
|
||||||
|
portENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
/* We want to interrupt on Rx events. */
|
||||||
|
AT91C_BASE_EMAC->EMAC_IER = AT91C_EMAC_RCOMP;
|
||||||
|
|
||||||
|
/* Enable the interrupts in the AIC. */
|
||||||
|
AT91F_AIC_ConfigureIt( AT91C_ID_EMAC, emacINTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, ( void (*)( void ) ) vEMACISR_Wrapper );
|
||||||
|
AT91C_BASE_AIC->AIC_IECR = 0x1 << AT91C_ID_EMAC;
|
||||||
|
}
|
||||||
|
portEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following functions are initialisation functions taken from the Atmel
|
||||||
|
* EMAC sample code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static portBASE_TYPE prvProbePHY( void )
|
||||||
|
{
|
||||||
|
unsigned portLONG ulPHYId1, ulPHYId2, ulStatus;
|
||||||
|
portBASE_TYPE xReturn = pdPASS;
|
||||||
|
|
||||||
|
/* Code supplied by Atmel (reformatted) -----------------*/
|
||||||
|
|
||||||
|
/* Enable management port */
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCR |= AT91C_EMAC_MPE;
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCFGR |= ( 2 ) << 10;
|
||||||
|
|
||||||
|
/* Read the PHY ID. */
|
||||||
|
vReadPHY( AT91C_PHY_ADDR, MII_PHYSID1, &ulPHYId1 );
|
||||||
|
vReadPHY( AT91C_PHY_ADDR, MII_PHYSID2, &ulPHYId2 );
|
||||||
|
|
||||||
|
/* AMD AM79C875:
|
||||||
|
PHY_ID1 = 0x0022
|
||||||
|
PHY_ID2 = 0x5541
|
||||||
|
Bits 3:0 Revision Number Four bit manufacturer’s revision number.
|
||||||
|
0001 stands for Rev. A, etc.
|
||||||
|
*/
|
||||||
|
if( ( ( ulPHYId1 << 16 ) | ( ulPHYId2 & 0xfff0 ) ) != MII_DM9161_ID )
|
||||||
|
{
|
||||||
|
/* Did not expect this ID. */
|
||||||
|
xReturn = pdFAIL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ulStatus = xGetLinkSpeed();
|
||||||
|
|
||||||
|
if( ulStatus != pdPASS )
|
||||||
|
{
|
||||||
|
xReturn = pdFAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Disable management port */
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCR &= ~AT91C_EMAC_MPE;
|
||||||
|
|
||||||
|
/* End of code supplied by Atmel ------------------------*/
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void vReadPHY( unsigned portCHAR ucPHYAddress, unsigned portCHAR ucAddress, unsigned portLONG *pulValue )
|
||||||
|
{
|
||||||
|
/* Code supplied by Atmel (reformatted) ----------------------*/
|
||||||
|
|
||||||
|
AT91C_BASE_EMAC->EMAC_MAN = (AT91C_EMAC_SOF & (0x01<<30))
|
||||||
|
| (2 << 16) | (2 << 28)
|
||||||
|
| ((ucPHYAddress & 0x1f) << 23)
|
||||||
|
| (ucAddress << 18);
|
||||||
|
|
||||||
|
/* Wait until IDLE bit in Network Status register is cleared. */
|
||||||
|
while( !( AT91C_BASE_EMAC->EMAC_NSR & AT91C_EMAC_IDLE ) )
|
||||||
|
{
|
||||||
|
__asm( "NOP" );
|
||||||
|
}
|
||||||
|
|
||||||
|
*pulValue = ( AT91C_BASE_EMAC->EMAC_MAN & 0x0000ffff );
|
||||||
|
|
||||||
|
/* End of code supplied by Atmel ------------------------*/
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if USE_RMII_INTERFACE != 1
|
||||||
|
static void vWritePHY( unsigned portCHAR ucPHYAddress, unsigned portCHAR ucAddress, unsigned portLONG ulValue )
|
||||||
|
{
|
||||||
|
/* Code supplied by Atmel (reformatted) ----------------------*/
|
||||||
|
|
||||||
|
AT91C_BASE_EMAC->EMAC_MAN = (( AT91C_EMAC_SOF & (0x01<<30))
|
||||||
|
| (2 << 16) | (1 << 28)
|
||||||
|
| ((ucPHYAddress & 0x1f) << 23)
|
||||||
|
| (ucAddress << 18))
|
||||||
|
| (ulValue & 0xffff);
|
||||||
|
|
||||||
|
/* Wait until IDLE bit in Network Status register is cleared */
|
||||||
|
while( !( AT91C_BASE_EMAC->EMAC_NSR & AT91C_EMAC_IDLE ) )
|
||||||
|
{
|
||||||
|
__asm( "NOP" );
|
||||||
|
};
|
||||||
|
|
||||||
|
/* End of code supplied by Atmel ------------------------*/
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static portBASE_TYPE xGetLinkSpeed( void )
|
||||||
|
{
|
||||||
|
unsigned portLONG ulBMSR, ulBMCR, ulLPA, ulMACCfg, ulSpeed, ulDuplex;
|
||||||
|
|
||||||
|
/* Code supplied by Atmel (reformatted) -----------------*/
|
||||||
|
|
||||||
|
/* Link status is latched, so read twice to get current value */
|
||||||
|
vReadPHY(AT91C_PHY_ADDR, MII_BMSR, &ulBMSR);
|
||||||
|
vReadPHY(AT91C_PHY_ADDR, MII_BMSR, &ulBMSR);
|
||||||
|
|
||||||
|
if( !( ulBMSR & BMSR_LSTATUS ) )
|
||||||
|
{
|
||||||
|
/* No Link. */
|
||||||
|
return pdFAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
vReadPHY(AT91C_PHY_ADDR, MII_BMCR, &ulBMCR);
|
||||||
|
if (ulBMCR & BMCR_ANENABLE)
|
||||||
|
{
|
||||||
|
/* AutoNegotiation is enabled. */
|
||||||
|
if (!(ulBMSR & BMSR_ANEGCOMPLETE))
|
||||||
|
{
|
||||||
|
/* Auto-negotiation in progress. */
|
||||||
|
return pdFAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
vReadPHY(AT91C_PHY_ADDR, MII_LPA, &ulLPA);
|
||||||
|
if( ( ulLPA & LPA_100FULL ) || ( ulLPA & LPA_100HALF ) )
|
||||||
|
{
|
||||||
|
ulSpeed = SPEED_100;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ulSpeed = SPEED_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ( ulLPA & LPA_100FULL ) || ( ulLPA & LPA_10FULL ) )
|
||||||
|
{
|
||||||
|
ulDuplex = DUPLEX_FULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ulDuplex = DUPLEX_HALF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ulSpeed = ( ulBMCR & BMCR_SPEED100 ) ? SPEED_100 : SPEED_10;
|
||||||
|
ulDuplex = ( ulBMCR & BMCR_FULLDPLX ) ? DUPLEX_FULL : DUPLEX_HALF;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Update the MAC */
|
||||||
|
ulMACCfg = AT91C_BASE_EMAC->EMAC_NCFGR & ~( AT91C_EMAC_SPD | AT91C_EMAC_FD );
|
||||||
|
if( ulSpeed == SPEED_100 )
|
||||||
|
{
|
||||||
|
if( ulDuplex == DUPLEX_FULL )
|
||||||
|
{
|
||||||
|
/* 100 Full Duplex */
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCFGR = ulMACCfg | AT91C_EMAC_SPD | AT91C_EMAC_FD;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* 100 Half Duplex */
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCFGR = ulMACCfg | AT91C_EMAC_SPD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ulDuplex == DUPLEX_FULL)
|
||||||
|
{
|
||||||
|
/* 10 Full Duplex */
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCFGR = ulMACCfg | AT91C_EMAC_FD;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* 10 Half Duplex */
|
||||||
|
AT91C_BASE_EMAC->EMAC_NCFGR = ulMACCfg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* End of code supplied by Atmel ------------------------*/
|
||||||
|
|
||||||
|
return pdPASS;
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.
|
||||||
|
|
||||||
|
This file is part of the FreeRTOS.org distribution.
|
||||||
|
|
||||||
|
FreeRTOS.org is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
FreeRTOS.org is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with FreeRTOS.org; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
A special exception to the GPL can be applied should you wish to distribute
|
||||||
|
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||||
|
the source code for any proprietary components. See the licensing section
|
||||||
|
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||||
|
can be applied.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||||
|
and contact details. Please ensure to read the configuration and relevant
|
||||||
|
port sections of the online documentation.
|
||||||
|
|
||||||
|
Also see http://www.SafeRTOS.com a version that has been certified for use
|
||||||
|
in safety critical systems, plus commercial licensing, development and
|
||||||
|
support options.
|
||||||
|
***************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SAM_7_EMAC_H
|
||||||
|
#define SAM_7_EMAC_H
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialise the EMAC driver. If successful a semaphore is returned that
|
||||||
|
* is used by the EMAC ISR to indicate that Rx packets have been received.
|
||||||
|
* If the initialisation fails then NULL is returned.
|
||||||
|
*/
|
||||||
|
xSemaphoreHandle xEMACInit( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Send the current uIP buffer. This copies the uIP buffer to one of the
|
||||||
|
* EMAC Tx buffers, then indicates to the EMAC that the buffer is ready.
|
||||||
|
*/
|
||||||
|
portLONG lEMACSend( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Called in response to an EMAC Rx interrupt. Copies the received frame
|
||||||
|
* into the uIP buffer.
|
||||||
|
*/
|
||||||
|
unsigned portLONG ulEMACPoll( void );
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2006, Swedish Institute of Computer Science.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the Institute nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* This file is part of the uIP TCP/IP stack
|
||||||
|
*
|
||||||
|
* $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __CLOCK_ARCH_H__
|
||||||
|
#define __CLOCK_ARCH_H__
|
||||||
|
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
|
||||||
|
typedef unsigned long clock_time_t;
|
||||||
|
#define CLOCK_CONF_SECOND configTICK_RATE_HZ
|
||||||
|
|
||||||
|
#endif /* __CLOCK_ARCH_H__ */
|
195
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/emac_atmel.h
Normal file
195
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/emac_atmel.h
Normal file
|
@ -0,0 +1,195 @@
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
//* ATMEL Microcontroller Software Support - ROUSSET -
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
//* The software is delivered "AS IS" without warranty or condition of any
|
||||||
|
//* kind, either express, implied or statutory. This includes without
|
||||||
|
//* limitation any warranty or condition with respect to merchantability or
|
||||||
|
//* fitness for any particular purpose, or against the infringements of
|
||||||
|
//* intellectual property rights of others.
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
//* File Name : Emac.h
|
||||||
|
//* Object : Emac header file
|
||||||
|
//* Creation : Hi 11/18/2002
|
||||||
|
//*
|
||||||
|
//*----------------------------------------------------------------------------
|
||||||
|
#ifndef AT91C_EMAC_H
|
||||||
|
#define AT91C_EMAC_H
|
||||||
|
|
||||||
|
|
||||||
|
//* Allows to display all IP header in the main.c
|
||||||
|
//* If not defined, only ICMP packets are displayed
|
||||||
|
#define AT91C_DISPLAY_ALL_IPHEADER 0
|
||||||
|
|
||||||
|
#define NB_RX_BUFFERS 25 //* Number of receive buffers
|
||||||
|
#define ETH_RX_BUFFER_SIZE 128 //*
|
||||||
|
|
||||||
|
#define NB_TX_BUFFERS 2 //* Number of Transmit buffers
|
||||||
|
#define ETH_TX_BUFFER_SIZE UIP_BUFSIZE //*
|
||||||
|
|
||||||
|
#define AT91C_NO_IPPACKET 0
|
||||||
|
#define AT91C_IPPACKET 1
|
||||||
|
|
||||||
|
#define ARP_REQUEST 0x0001
|
||||||
|
#define ARP_REPLY 0x0002
|
||||||
|
#define PROT_ARP 0x0806
|
||||||
|
#define PROT_IP 0x0800
|
||||||
|
#define PROT_ICMP 0x01
|
||||||
|
#define ICMP_ECHO_REQUEST 0x08
|
||||||
|
#define ICMP_ECHO_REPLY 0x00
|
||||||
|
|
||||||
|
#define AT91C_EMAC_CLKEN 0x2
|
||||||
|
#define SWAP16(x) (((x & 0xff) << 8) | (x >> 8))
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
//* Transfer descriptor structure
|
||||||
|
typedef struct _AT91S_TdDescriptor {
|
||||||
|
unsigned int addr;
|
||||||
|
unsigned int status;
|
||||||
|
}AT91S_TdDescriptor, *AT91PS_TdDescriptor;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//* Receive Transfer descriptor structure
|
||||||
|
typedef struct _AT91S_RxTdDescriptor {
|
||||||
|
unsigned int addr;
|
||||||
|
union
|
||||||
|
{
|
||||||
|
unsigned int status;
|
||||||
|
struct {
|
||||||
|
unsigned int Length:11;
|
||||||
|
unsigned int Res0:1;
|
||||||
|
unsigned int Rxbuf_off:2;
|
||||||
|
unsigned int StartOfFrame:1;
|
||||||
|
unsigned int EndOfFrame:1;
|
||||||
|
unsigned int Cfi:1;
|
||||||
|
unsigned int VlanPriority:3;
|
||||||
|
unsigned int PriorityTag:1;
|
||||||
|
unsigned int VlanTag:1;
|
||||||
|
unsigned int TypeID:1;
|
||||||
|
unsigned int Sa4Match:1;
|
||||||
|
unsigned int Sa3Match:1;
|
||||||
|
unsigned int Sa2Match:1;
|
||||||
|
unsigned int Sa1Match:1;
|
||||||
|
unsigned int Res1:1;
|
||||||
|
unsigned int ExternalAdd:1;
|
||||||
|
unsigned int UniCast:1;
|
||||||
|
unsigned int MultiCast:1;
|
||||||
|
unsigned int BroadCast:1;
|
||||||
|
}S_Status;
|
||||||
|
}U_Status;
|
||||||
|
}AT91S_RxTdDescriptor, *AT91PS_RxTdDescriptor;
|
||||||
|
|
||||||
|
|
||||||
|
//* Transmit Transfer descriptor structure
|
||||||
|
typedef struct _AT91S_TxTdDescriptor {
|
||||||
|
unsigned int addr;
|
||||||
|
union
|
||||||
|
{
|
||||||
|
unsigned int status;
|
||||||
|
struct {
|
||||||
|
unsigned int Length:11;
|
||||||
|
unsigned int Res0:4;
|
||||||
|
unsigned int LastBuff:1;
|
||||||
|
unsigned int NoCrc:1;
|
||||||
|
unsigned int Res1:10;
|
||||||
|
unsigned int BufExhausted:1;
|
||||||
|
unsigned int TransmitUnderrun:1;
|
||||||
|
unsigned int TransmitError:1;
|
||||||
|
unsigned int Wrap:1;
|
||||||
|
unsigned int BuffUsed:1;
|
||||||
|
}S_Status;
|
||||||
|
}U_Status;
|
||||||
|
}AT91S_TxTdDescriptor, *AT91PS_TxTdDescriptor;
|
||||||
|
|
||||||
|
#define AT91C_OWNERSHIP_BIT 0x00000001
|
||||||
|
|
||||||
|
/* Receive status defintion */
|
||||||
|
#define AT91C_BROADCAST_ADDR ((unsigned int) (1 << 31)) //* Broadcat address detected
|
||||||
|
#define AT91C_MULTICAST_HASH ((unsigned int) (1 << 30)) //* MultiCast hash match
|
||||||
|
#define AT91C_UNICAST_HASH ((unsigned int) (1 << 29)) //* UniCast hash match
|
||||||
|
#define AT91C_EXTERNAL_ADDR ((unsigned int) (1 << 28)) //* External Address match
|
||||||
|
#define AT91C_SA1_ADDR ((unsigned int) (1 << 26)) //* Specific address 1 match
|
||||||
|
#define AT91C_SA2_ADDR ((unsigned int) (1 << 25)) //* Specific address 2 match
|
||||||
|
#define AT91C_SA3_ADDR ((unsigned int) (1 << 24)) //* Specific address 3 match
|
||||||
|
#define AT91C_SA4_ADDR ((unsigned int) (1 << 23)) //* Specific address 4 match
|
||||||
|
#define AT91C_TYPE_ID ((unsigned int) (1 << 22)) //* Type ID match
|
||||||
|
#define AT91C_VLAN_TAG ((unsigned int) (1 << 21)) //* VLAN tag detected
|
||||||
|
#define AT91C_PRIORITY_TAG ((unsigned int) (1 << 20)) //* PRIORITY tag detected
|
||||||
|
#define AT91C_VLAN_PRIORITY ((unsigned int) (7 << 17)) //* PRIORITY Mask
|
||||||
|
#define AT91C_CFI_IND ((unsigned int) (1 << 16)) //* CFI indicator
|
||||||
|
#define AT91C_EOF ((unsigned int) (1 << 15)) //* EOF
|
||||||
|
#define AT91C_SOF ((unsigned int) (1 << 14)) //* SOF
|
||||||
|
#define AT91C_RBF_OFFSET ((unsigned int) (3 << 12)) //* Receive Buffer Offset Mask
|
||||||
|
#define AT91C_LENGTH_FRAME ((unsigned int) 0x07FF) //* Length of frame
|
||||||
|
|
||||||
|
/* Transmit Status definition */
|
||||||
|
#define AT91C_TRANSMIT_OK ((unsigned int) (1 << 31)) //*
|
||||||
|
#define AT91C_TRANSMIT_WRAP ((unsigned int) (1 << 30)) //* Wrap bit: mark the last descriptor
|
||||||
|
#define AT91C_TRANSMIT_ERR ((unsigned int) (1 << 29)) //* RLE:transmit error
|
||||||
|
#define AT91C_TRANSMIT_UND ((unsigned int) (1 << 28)) //* Transmit Underrun
|
||||||
|
#define AT91C_BUF_EX ((unsigned int) (1 << 27)) //* Buffers exhausted in mid frame
|
||||||
|
#define AT91C_TRANSMIT_NO_CRC ((unsigned int) (1 << 16)) //* No CRC will be appended to the current frame
|
||||||
|
#define AT91C_LAST_BUFFER ((unsigned int) (1 << 15)) //*
|
||||||
|
|
||||||
|
#define ARP_ETHER 1 /* Ethernet hardware address */
|
||||||
|
#define ARPOP_REQUEST 1 /* Request to resolve address */
|
||||||
|
#define ARPOP_REPLY 2 /* Response to previous request */
|
||||||
|
#define RARPOP_REQUEST 3 /* Request to resolve address */
|
||||||
|
#define RARPOP_REPLY 4 /* Response to previous request */
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _AT91S_EthHdr
|
||||||
|
{
|
||||||
|
unsigned char et_dest[6]; /* Destination node */
|
||||||
|
unsigned char et_src[6]; /* Source node */
|
||||||
|
unsigned short et_protlen; /* Protocol or length */
|
||||||
|
} AT91S_EthHdr, *AT91PS_EthHdr;
|
||||||
|
|
||||||
|
typedef struct _AT91S_ArpHdr
|
||||||
|
{
|
||||||
|
unsigned short ar_hrd; /* Format of hardware address */
|
||||||
|
unsigned short ar_pro; /* Format of protocol address */
|
||||||
|
unsigned char ar_hln; /* Length of hardware address */
|
||||||
|
unsigned char ar_pln; /* Length of protocol address */
|
||||||
|
unsigned short ar_op; /* Operation */
|
||||||
|
unsigned char ar_sha[6]; /* Sender hardware address */
|
||||||
|
unsigned char ar_spa[4]; /* Sender protocol address */
|
||||||
|
unsigned char ar_tha[6]; /* Target hardware address */
|
||||||
|
unsigned char ar_tpa[4]; /* Target protocol address */
|
||||||
|
} AT91S_ArpHdr, *AT91PS_ArpHdr;
|
||||||
|
|
||||||
|
//* IP Header structure
|
||||||
|
typedef struct _AT91S_IPheader {
|
||||||
|
unsigned char ip_hl_v; /* header length and version */
|
||||||
|
unsigned char ip_tos; /* type of service */
|
||||||
|
unsigned short ip_len; /* total length */
|
||||||
|
unsigned short ip_id; /* identification */
|
||||||
|
unsigned short ip_off; /* fragment offset field */
|
||||||
|
unsigned char ip_ttl; /* time to live */
|
||||||
|
unsigned char ip_p; /* protocol */
|
||||||
|
unsigned short ip_sum; /* checksum */
|
||||||
|
unsigned char ip_src[4]; /* Source IP address */
|
||||||
|
unsigned char ip_dst[4]; /* Destination IP address */
|
||||||
|
unsigned short udp_src; /* UDP source port */
|
||||||
|
unsigned short udp_dst; /* UDP destination port */
|
||||||
|
unsigned short udp_len; /* Length of UDP packet */
|
||||||
|
unsigned short udp_xsum; /* Checksum */
|
||||||
|
} AT91S_IPheader, *AT91PS_IPheader;
|
||||||
|
|
||||||
|
//* ICMP echo header structure
|
||||||
|
typedef struct _AT91S_IcmpEchoHdr {
|
||||||
|
unsigned char type; /* type of message */
|
||||||
|
unsigned char code; /* type subcode */
|
||||||
|
unsigned short cksum; /* ones complement cksum of struct */
|
||||||
|
unsigned short id; /* identifier */
|
||||||
|
unsigned short seq; /* sequence number */
|
||||||
|
}AT91S_IcmpEchoHdr, *AT91PS_IcmpEchoHdr;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _AT91S_EthPack
|
||||||
|
{
|
||||||
|
AT91S_EthHdr EthHdr;
|
||||||
|
AT91S_ArpHdr ArpHdr;
|
||||||
|
} AT91S_EthPack, *AT91PS_EthPack;
|
||||||
|
|
||||||
|
|
||||||
|
#endif //* AT91C_EMAC_H
|
|
@ -0,0 +1,35 @@
|
||||||
|
http_http "http://"
|
||||||
|
http_200 "200 "
|
||||||
|
http_301 "301 "
|
||||||
|
http_302 "302 "
|
||||||
|
http_get "GET "
|
||||||
|
http_10 "HTTP/1.0"
|
||||||
|
http_11 "HTTP/1.1"
|
||||||
|
http_content_type "content-type: "
|
||||||
|
http_texthtml "text/html"
|
||||||
|
http_location "location: "
|
||||||
|
http_host "host: "
|
||||||
|
http_crnl "\r\n"
|
||||||
|
http_index_html "/index.html"
|
||||||
|
http_404_html "/404.html"
|
||||||
|
http_referer "Referer:"
|
||||||
|
http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n"
|
||||||
|
http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n"
|
||||||
|
http_content_type_plain "Content-type: text/plain\r\n\r\n"
|
||||||
|
http_content_type_html "Content-type: text/html\r\n\r\n"
|
||||||
|
http_content_type_css "Content-type: text/css\r\n\r\n"
|
||||||
|
http_content_type_text "Content-type: text/text\r\n\r\n"
|
||||||
|
http_content_type_png "Content-type: image/png\r\n\r\n"
|
||||||
|
http_content_type_gif "Content-type: image/gif\r\n\r\n"
|
||||||
|
http_content_type_jpg "Content-type: image/jpeg\r\n\r\n"
|
||||||
|
http_content_type_binary "Content-type: application/octet-stream\r\n\r\n"
|
||||||
|
http_html ".html"
|
||||||
|
http_shtml ".shtml"
|
||||||
|
http_htm ".htm"
|
||||||
|
http_css ".css"
|
||||||
|
http_png ".png"
|
||||||
|
http_gif ".gif"
|
||||||
|
http_jpg ".jpg"
|
||||||
|
http_text ".txt"
|
||||||
|
http_txt ".txt"
|
||||||
|
|
102
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/http-strings.c
Normal file
102
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/http-strings.c
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
const char http_http[8] =
|
||||||
|
/* "http://" */
|
||||||
|
{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, };
|
||||||
|
const char http_200[5] =
|
||||||
|
/* "200 " */
|
||||||
|
{0x32, 0x30, 0x30, 0x20, };
|
||||||
|
const char http_301[5] =
|
||||||
|
/* "301 " */
|
||||||
|
{0x33, 0x30, 0x31, 0x20, };
|
||||||
|
const char http_302[5] =
|
||||||
|
/* "302 " */
|
||||||
|
{0x33, 0x30, 0x32, 0x20, };
|
||||||
|
const char http_get[5] =
|
||||||
|
/* "GET " */
|
||||||
|
{0x47, 0x45, 0x54, 0x20, };
|
||||||
|
const char http_10[9] =
|
||||||
|
/* "HTTP/1.0" */
|
||||||
|
{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, };
|
||||||
|
const char http_11[9] =
|
||||||
|
/* "HTTP/1.1" */
|
||||||
|
{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, };
|
||||||
|
const char http_content_type[15] =
|
||||||
|
/* "content-type: " */
|
||||||
|
{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, };
|
||||||
|
const char http_texthtml[10] =
|
||||||
|
/* "text/html" */
|
||||||
|
{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, };
|
||||||
|
const char http_location[11] =
|
||||||
|
/* "location: " */
|
||||||
|
{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, };
|
||||||
|
const char http_host[7] =
|
||||||
|
/* "host: " */
|
||||||
|
{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, };
|
||||||
|
const char http_crnl[3] =
|
||||||
|
/* "\r\n" */
|
||||||
|
{0xd, 0xa, };
|
||||||
|
const char http_index_html[12] =
|
||||||
|
/* "/index.html" */
|
||||||
|
{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, };
|
||||||
|
const char http_404_html[10] =
|
||||||
|
/* "/404.html" */
|
||||||
|
{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, };
|
||||||
|
const char http_referer[9] =
|
||||||
|
/* "Referer:" */
|
||||||
|
{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, };
|
||||||
|
const char http_header_200[84] =
|
||||||
|
/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */
|
||||||
|
{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, };
|
||||||
|
const char http_header_404[91] =
|
||||||
|
/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */
|
||||||
|
{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, };
|
||||||
|
const char http_content_type_plain[29] =
|
||||||
|
/* "Content-type: text/plain\r\n\r\n" */
|
||||||
|
{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, };
|
||||||
|
const char http_content_type_html[28] =
|
||||||
|
/* "Content-type: text/html\r\n\r\n" */
|
||||||
|
{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, };
|
||||||
|
const char http_content_type_css [27] =
|
||||||
|
/* "Content-type: text/css\r\n\r\n" */
|
||||||
|
{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, };
|
||||||
|
const char http_content_type_text[28] =
|
||||||
|
/* "Content-type: text/text\r\n\r\n" */
|
||||||
|
{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, };
|
||||||
|
const char http_content_type_png [28] =
|
||||||
|
/* "Content-type: image/png\r\n\r\n" */
|
||||||
|
{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, };
|
||||||
|
const char http_content_type_gif [28] =
|
||||||
|
/* "Content-type: image/gif\r\n\r\n" */
|
||||||
|
{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, };
|
||||||
|
const char http_content_type_jpg [29] =
|
||||||
|
/* "Content-type: image/jpeg\r\n\r\n" */
|
||||||
|
{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, };
|
||||||
|
const char http_content_type_binary[43] =
|
||||||
|
/* "Content-type: application/octet-stream\r\n\r\n" */
|
||||||
|
{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, };
|
||||||
|
const char http_html[6] =
|
||||||
|
/* ".html" */
|
||||||
|
{0x2e, 0x68, 0x74, 0x6d, 0x6c, };
|
||||||
|
const char http_shtml[7] =
|
||||||
|
/* ".shtml" */
|
||||||
|
{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, };
|
||||||
|
const char http_htm[5] =
|
||||||
|
/* ".htm" */
|
||||||
|
{0x2e, 0x68, 0x74, 0x6d, };
|
||||||
|
const char http_css[5] =
|
||||||
|
/* ".css" */
|
||||||
|
{0x2e, 0x63, 0x73, 0x73, };
|
||||||
|
const char http_png[5] =
|
||||||
|
/* ".png" */
|
||||||
|
{0x2e, 0x70, 0x6e, 0x67, };
|
||||||
|
const char http_gif[5] =
|
||||||
|
/* ".gif" */
|
||||||
|
{0x2e, 0x67, 0x69, 0x66, };
|
||||||
|
const char http_jpg[5] =
|
||||||
|
/* ".jpg" */
|
||||||
|
{0x2e, 0x6a, 0x70, 0x67, };
|
||||||
|
const char http_text[5] =
|
||||||
|
/* ".txt" */
|
||||||
|
{0x2e, 0x74, 0x78, 0x74, };
|
||||||
|
const char http_txt[5] =
|
||||||
|
/* ".txt" */
|
||||||
|
{0x2e, 0x74, 0x78, 0x74, };
|
|
@ -0,0 +1,34 @@
|
||||||
|
extern const char http_http[8];
|
||||||
|
extern const char http_200[5];
|
||||||
|
extern const char http_301[5];
|
||||||
|
extern const char http_302[5];
|
||||||
|
extern const char http_get[5];
|
||||||
|
extern const char http_10[9];
|
||||||
|
extern const char http_11[9];
|
||||||
|
extern const char http_content_type[15];
|
||||||
|
extern const char http_texthtml[10];
|
||||||
|
extern const char http_location[11];
|
||||||
|
extern const char http_host[7];
|
||||||
|
extern const char http_crnl[3];
|
||||||
|
extern const char http_index_html[12];
|
||||||
|
extern const char http_404_html[10];
|
||||||
|
extern const char http_referer[9];
|
||||||
|
extern const char http_header_200[84];
|
||||||
|
extern const char http_header_404[91];
|
||||||
|
extern const char http_content_type_plain[29];
|
||||||
|
extern const char http_content_type_html[28];
|
||||||
|
extern const char http_content_type_css [27];
|
||||||
|
extern const char http_content_type_text[28];
|
||||||
|
extern const char http_content_type_png [28];
|
||||||
|
extern const char http_content_type_gif [28];
|
||||||
|
extern const char http_content_type_jpg [29];
|
||||||
|
extern const char http_content_type_binary[43];
|
||||||
|
extern const char http_html[6];
|
||||||
|
extern const char http_shtml[7];
|
||||||
|
extern const char http_htm[5];
|
||||||
|
extern const char http_css[5];
|
||||||
|
extern const char http_png[5];
|
||||||
|
extern const char http_gif[5];
|
||||||
|
extern const char http_jpg[5];
|
||||||
|
extern const char http_text[5];
|
||||||
|
extern const char http_txt[5];
|
268
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/httpd-cgi.c
Normal file
268
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/httpd-cgi.c
Normal file
|
@ -0,0 +1,268 @@
|
||||||
|
/**
|
||||||
|
* \addtogroup httpd
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file
|
||||||
|
* Web server script interface
|
||||||
|
* \author
|
||||||
|
* Adam Dunkels <adam@sics.se>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2001-2006, Adam Dunkels.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. The name of the author may not be used to endorse or promote
|
||||||
|
* products derived from this software without specific prior
|
||||||
|
* written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||||
|
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||||
|
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* This file is part of the uIP TCP/IP stack.
|
||||||
|
*
|
||||||
|
* $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "uip.h"
|
||||||
|
#include "psock.h"
|
||||||
|
#include "httpd.h"
|
||||||
|
#include "httpd-cgi.h"
|
||||||
|
#include "httpd-fs.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
HTTPD_CGI_CALL(file, "file-stats", file_stats);
|
||||||
|
HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats);
|
||||||
|
HTTPD_CGI_CALL(net, "net-stats", net_stats);
|
||||||
|
HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats );
|
||||||
|
HTTPD_CGI_CALL(io, "led-io", led_io );
|
||||||
|
|
||||||
|
|
||||||
|
static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &io, NULL };
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static
|
||||||
|
PT_THREAD(nullfunction(struct httpd_state *s, char *ptr))
|
||||||
|
{
|
||||||
|
PSOCK_BEGIN(&s->sout);
|
||||||
|
PSOCK_END(&s->sout);
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
httpd_cgifunction
|
||||||
|
httpd_cgi(char *name)
|
||||||
|
{
|
||||||
|
const struct httpd_cgi_call **f;
|
||||||
|
|
||||||
|
/* Find the matching name in the table, return the function. */
|
||||||
|
for(f = calls; *f != NULL; ++f) {
|
||||||
|
if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) {
|
||||||
|
return (*f)->function;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nullfunction;
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static unsigned short
|
||||||
|
generate_file_stats(void *arg)
|
||||||
|
{
|
||||||
|
char *f = (char *)arg;
|
||||||
|
return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f));
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static
|
||||||
|
PT_THREAD(file_stats(struct httpd_state *s, char *ptr))
|
||||||
|
{
|
||||||
|
PSOCK_BEGIN(&s->sout);
|
||||||
|
|
||||||
|
PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1);
|
||||||
|
|
||||||
|
PSOCK_END(&s->sout);
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static const char closed[] = /* "CLOSED",*/
|
||||||
|
{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0};
|
||||||
|
static const char syn_rcvd[] = /* "SYN-RCVD",*/
|
||||||
|
{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56,
|
||||||
|
0x44, 0};
|
||||||
|
static const char syn_sent[] = /* "SYN-SENT",*/
|
||||||
|
{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e,
|
||||||
|
0x54, 0};
|
||||||
|
static const char established[] = /* "ESTABLISHED",*/
|
||||||
|
{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48,
|
||||||
|
0x45, 0x44, 0};
|
||||||
|
static const char fin_wait_1[] = /* "FIN-WAIT-1",*/
|
||||||
|
{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
|
||||||
|
0x54, 0x2d, 0x31, 0};
|
||||||
|
static const char fin_wait_2[] = /* "FIN-WAIT-2",*/
|
||||||
|
{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
|
||||||
|
0x54, 0x2d, 0x32, 0};
|
||||||
|
static const char closing[] = /* "CLOSING",*/
|
||||||
|
{0x43, 0x4c, 0x4f, 0x53, 0x49,
|
||||||
|
0x4e, 0x47, 0};
|
||||||
|
static const char time_wait[] = /* "TIME-WAIT,"*/
|
||||||
|
{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41,
|
||||||
|
0x49, 0x54, 0};
|
||||||
|
static const char last_ack[] = /* "LAST-ACK"*/
|
||||||
|
{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43,
|
||||||
|
0x4b, 0};
|
||||||
|
|
||||||
|
static const char *states[] = {
|
||||||
|
closed,
|
||||||
|
syn_rcvd,
|
||||||
|
syn_sent,
|
||||||
|
established,
|
||||||
|
fin_wait_1,
|
||||||
|
fin_wait_2,
|
||||||
|
closing,
|
||||||
|
time_wait,
|
||||||
|
last_ack};
|
||||||
|
|
||||||
|
|
||||||
|
static unsigned short
|
||||||
|
generate_tcp_stats(void *arg)
|
||||||
|
{
|
||||||
|
struct uip_conn *conn;
|
||||||
|
struct httpd_state *s = (struct httpd_state *)arg;
|
||||||
|
|
||||||
|
conn = &uip_conns[s->count];
|
||||||
|
return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
|
||||||
|
"<tr><td>%d</td><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
|
||||||
|
htons(conn->lport),
|
||||||
|
htons(conn->ripaddr[0]) >> 8,
|
||||||
|
htons(conn->ripaddr[0]) & 0xff,
|
||||||
|
htons(conn->ripaddr[1]) >> 8,
|
||||||
|
htons(conn->ripaddr[1]) & 0xff,
|
||||||
|
htons(conn->rport),
|
||||||
|
states[conn->tcpstateflags & UIP_TS_MASK],
|
||||||
|
conn->nrtx,
|
||||||
|
conn->timer,
|
||||||
|
(uip_outstanding(conn))? '*':' ',
|
||||||
|
(uip_stopped(conn))? '!':' ');
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static
|
||||||
|
PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr))
|
||||||
|
{
|
||||||
|
|
||||||
|
PSOCK_BEGIN(&s->sout);
|
||||||
|
|
||||||
|
for(s->count = 0; s->count < UIP_CONNS; ++s->count) {
|
||||||
|
if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) {
|
||||||
|
PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PSOCK_END(&s->sout);
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static unsigned short
|
||||||
|
generate_net_stats(void *arg)
|
||||||
|
{
|
||||||
|
struct httpd_state *s = (struct httpd_state *)arg;
|
||||||
|
return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
|
||||||
|
"%5u\n", ((uip_stats_t *)&uip_stat)[s->count]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
PT_THREAD(net_stats(struct httpd_state *s, char *ptr))
|
||||||
|
{
|
||||||
|
PSOCK_BEGIN(&s->sout);
|
||||||
|
|
||||||
|
#if UIP_STATISTICS
|
||||||
|
|
||||||
|
for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t);
|
||||||
|
++s->count) {
|
||||||
|
PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* UIP_STATISTICS */
|
||||||
|
|
||||||
|
PSOCK_END(&s->sout);
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern void vTaskList( signed char *pcWriteBuffer );
|
||||||
|
static char cCountBuf[ 32 ];
|
||||||
|
long lRefreshCount = 0;
|
||||||
|
static unsigned short
|
||||||
|
generate_rtos_stats(void *arg)
|
||||||
|
{
|
||||||
|
lRefreshCount++;
|
||||||
|
sprintf( cCountBuf, "<p><br>Refresh count = %ld", lRefreshCount );
|
||||||
|
vTaskList( uip_appdata );
|
||||||
|
strcat( uip_appdata, cCountBuf );
|
||||||
|
|
||||||
|
return strlen( uip_appdata );
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
static
|
||||||
|
PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr))
|
||||||
|
{
|
||||||
|
PSOCK_BEGIN(&s->sout);
|
||||||
|
PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL);
|
||||||
|
PSOCK_END(&s->sout);
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
char *pcStatus;
|
||||||
|
unsigned long ulString;
|
||||||
|
extern unsigned long uxParTextGetLED( unsigned long uxLED );
|
||||||
|
|
||||||
|
static unsigned short generate_io_state( void *arg )
|
||||||
|
{
|
||||||
|
if( uxParTestGetLED() )
|
||||||
|
{
|
||||||
|
pcStatus = "checked";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pcStatus = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf( uip_appdata,
|
||||||
|
"<input type=\"checkbox\" name=\"LED0\" value=\"1\" %s>LED DS4,"\
|
||||||
|
"<p>",
|
||||||
|
pcStatus );
|
||||||
|
|
||||||
|
return strlen( uip_appdata );
|
||||||
|
}
|
||||||
|
|
||||||
|
static PT_THREAD(led_io(struct httpd_state *s, char *ptr))
|
||||||
|
{
|
||||||
|
PSOCK_BEGIN(&s->sout);
|
||||||
|
PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL);
|
||||||
|
PSOCK_END(&s->sout);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
/**
|
||||||
|
* \addtogroup httpd
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file
|
||||||
|
* Web server script interface header file
|
||||||
|
* \author
|
||||||
|
* Adam Dunkels <adam@sics.se>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2001, Adam Dunkels.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. The name of the author may not be used to endorse or promote
|
||||||
|
* products derived from this software without specific prior
|
||||||
|
* written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||||
|
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||||
|
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* This file is part of the uIP TCP/IP stack.
|
||||||
|
*
|
||||||
|
* $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __HTTPD_CGI_H__
|
||||||
|
#define __HTTPD_CGI_H__
|
||||||
|
|
||||||
|
#include "psock.h"
|
||||||
|
#include "httpd.h"
|
||||||
|
|
||||||
|
typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *));
|
||||||
|
|
||||||
|
httpd_cgifunction httpd_cgi(char *name);
|
||||||
|
|
||||||
|
struct httpd_cgi_call {
|
||||||
|
const char *name;
|
||||||
|
const httpd_cgifunction function;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief HTTPD CGI function declaration
|
||||||
|
* \param name The C variable name of the function
|
||||||
|
* \param str The string name of the function, used in the script file
|
||||||
|
* \param function A pointer to the function that implements it
|
||||||
|
*
|
||||||
|
* This macro is used for declaring a HTTPD CGI
|
||||||
|
* function. This function is then added to the list of
|
||||||
|
* HTTPD CGI functions with the httpd_cgi_add() function.
|
||||||
|
*
|
||||||
|
* \hideinitializer
|
||||||
|
*/
|
||||||
|
#define HTTPD_CGI_CALL(name, str, function) \
|
||||||
|
static PT_THREAD(function(struct httpd_state *, char *)); \
|
||||||
|
static const struct httpd_cgi_call name = {str, function}
|
||||||
|
|
||||||
|
void httpd_cgi_init(void);
|
||||||
|
#endif /* __HTTPD_CGI_H__ */
|
||||||
|
|
||||||
|
/** @} */
|
132
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/httpd-fs.c
Normal file
132
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/httpd-fs.c
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2001, Swedish Institute of Computer Science.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the Institute nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* This file is part of the lwIP TCP/IP stack.
|
||||||
|
*
|
||||||
|
* Author: Adam Dunkels <adam@sics.se>
|
||||||
|
*
|
||||||
|
* $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "httpd.h"
|
||||||
|
#include "httpd-fs.h"
|
||||||
|
#include "httpd-fsdata.h"
|
||||||
|
|
||||||
|
#ifndef NULL
|
||||||
|
#define NULL 0
|
||||||
|
#endif /* NULL */
|
||||||
|
|
||||||
|
#include "httpd-fsdata.c"
|
||||||
|
|
||||||
|
#if HTTPD_FS_STATISTICS
|
||||||
|
static u16_t count[HTTPD_FS_NUMFILES];
|
||||||
|
#endif /* HTTPD_FS_STATISTICS */
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------------------*/
|
||||||
|
static u8_t
|
||||||
|
httpd_fs_strcmp(const char *str1, const char *str2)
|
||||||
|
{
|
||||||
|
u8_t i;
|
||||||
|
i = 0;
|
||||||
|
loop:
|
||||||
|
|
||||||
|
if(str2[i] == 0 ||
|
||||||
|
str1[i] == '\r' ||
|
||||||
|
str1[i] == '\n') {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(str1[i] != str2[i]) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
++i;
|
||||||
|
goto loop;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------------------------------*/
|
||||||
|
int
|
||||||
|
httpd_fs_open(const char *name, struct httpd_fs_file *file)
|
||||||
|
{
|
||||||
|
#if HTTPD_FS_STATISTICS
|
||||||
|
u16_t i = 0;
|
||||||
|
#endif /* HTTPD_FS_STATISTICS */
|
||||||
|
struct httpd_fsdata_file_noconst *f;
|
||||||
|
|
||||||
|
for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
|
||||||
|
f != NULL;
|
||||||
|
f = (struct httpd_fsdata_file_noconst *)f->next) {
|
||||||
|
|
||||||
|
if(httpd_fs_strcmp(name, f->name) == 0) {
|
||||||
|
file->data = f->data;
|
||||||
|
file->len = f->len;
|
||||||
|
#if HTTPD_FS_STATISTICS
|
||||||
|
++count[i];
|
||||||
|
#endif /* HTTPD_FS_STATISTICS */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#if HTTPD_FS_STATISTICS
|
||||||
|
++i;
|
||||||
|
#endif /* HTTPD_FS_STATISTICS */
|
||||||
|
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
httpd_fs_init(void)
|
||||||
|
{
|
||||||
|
#if HTTPD_FS_STATISTICS
|
||||||
|
u16_t i;
|
||||||
|
for(i = 0; i < HTTPD_FS_NUMFILES; i++) {
|
||||||
|
count[i] = 0;
|
||||||
|
}
|
||||||
|
#endif /* HTTPD_FS_STATISTICS */
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------------------------------*/
|
||||||
|
#if HTTPD_FS_STATISTICS
|
||||||
|
u16_t httpd_fs_count
|
||||||
|
(char *name)
|
||||||
|
{
|
||||||
|
struct httpd_fsdata_file_noconst *f;
|
||||||
|
u16_t i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
|
||||||
|
f != NULL;
|
||||||
|
f = (struct httpd_fsdata_file_noconst *)f->next) {
|
||||||
|
|
||||||
|
if(httpd_fs_strcmp(name, f->name) == 0) {
|
||||||
|
return count[i];
|
||||||
|
}
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /* HTTPD_FS_STATISTICS */
|
||||||
|
/*-----------------------------------------------------------------------------------*/
|
57
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/httpd-fs.h
Normal file
57
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/httpd-fs.h
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2001, Swedish Institute of Computer Science.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the Institute nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* This file is part of the lwIP TCP/IP stack.
|
||||||
|
*
|
||||||
|
* Author: Adam Dunkels <adam@sics.se>
|
||||||
|
*
|
||||||
|
* $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $
|
||||||
|
*/
|
||||||
|
#ifndef __HTTPD_FS_H__
|
||||||
|
#define __HTTPD_FS_H__
|
||||||
|
|
||||||
|
#define HTTPD_FS_STATISTICS 1
|
||||||
|
|
||||||
|
struct httpd_fs_file {
|
||||||
|
char *data;
|
||||||
|
int len;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* file must be allocated by caller and will be filled in
|
||||||
|
by the function. */
|
||||||
|
int httpd_fs_open(const char *name, struct httpd_fs_file *file);
|
||||||
|
|
||||||
|
#ifdef HTTPD_FS_STATISTICS
|
||||||
|
#if HTTPD_FS_STATISTICS == 1
|
||||||
|
u16_t httpd_fs_count(char *name);
|
||||||
|
#endif /* HTTPD_FS_STATISTICS */
|
||||||
|
#endif /* HTTPD_FS_STATISTICS */
|
||||||
|
|
||||||
|
void httpd_fs_init(void);
|
||||||
|
|
||||||
|
#endif /* __HTTPD_FS_H__ */
|
|
@ -0,0 +1,8 @@
|
||||||
|
<html>
|
||||||
|
<body bgcolor="white">
|
||||||
|
<center>
|
||||||
|
<h1>404 - file not found</h1>
|
||||||
|
<h3>Go <a href="/">here</a> instead.</h3>
|
||||||
|
</center>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>FreeRTOS.org uIP WEB server demo</title>
|
||||||
|
</head>
|
||||||
|
<BODY onLoad="window.setTimeout("location.href='index.shtml'",100)"bgcolor="#CCCCff">
|
||||||
|
<font face="arial">
|
||||||
|
Loading index.shtml. Click <a href="index.shtml">here</a> if not automatically redirected.
|
||||||
|
</font>
|
||||||
|
</font>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>FreeRTOS.org uIP WEB server demo</title>
|
||||||
|
</head>
|
||||||
|
<BODY onLoad="window.setTimeout("location.href='index.shtml'",2000)"bgcolor="#CCCCff">
|
||||||
|
<font face="arial">
|
||||||
|
<a href="index.shtml">RTOS Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS.org Homepage</a> <b>|</b> <a href="io.shtml">IO</a>
|
||||||
|
<br><p>
|
||||||
|
<hr>
|
||||||
|
<br><p>
|
||||||
|
<h2>Task statistics</h2>
|
||||||
|
Page will refresh evey 2 seconds.<p>
|
||||||
|
<font face="courier"><pre>Task State Priority Stack #<br>************************************************<br>
|
||||||
|
%! rtos-stats
|
||||||
|
</pre></font>
|
||||||
|
</font>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>FreeRTOS.org uIP WEB server demo</title>
|
||||||
|
</head>
|
||||||
|
<BODY bgcolor="#CCCCff">
|
||||||
|
<font face="arial">
|
||||||
|
<a href="index.shtml">RTOS Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS.org Homepage</a> <b>|</b> <a href="io.shtml">IO</a>
|
||||||
|
<br><p>
|
||||||
|
<hr>
|
||||||
|
<b>LED IO</b><br>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
Use the check box to set the LED state, then click "Update IO" to send the new state to the microcontroller.
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<form name="aForm" action="/io.shtml" method="get">
|
||||||
|
%! led-io
|
||||||
|
<p>
|
||||||
|
<input type="submit" value="Update IO">
|
||||||
|
</form>
|
||||||
|
<br><p>
|
||||||
|
</font>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>FreeRTOS.org uIP WEB server demo</title>
|
||||||
|
</head>
|
||||||
|
<BODY bgcolor="#CCCCff">
|
||||||
|
<font face="arial">
|
||||||
|
<a href="index.shtml">RTOS Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS.org Homepage</a> <b>|</b> <a href="io.shtml">IO</a>
|
||||||
|
<br><p>
|
||||||
|
<hr>
|
||||||
|
<br><p>
|
||||||
|
<h2>Network statistics</h2>
|
||||||
|
<table width="300" border="0">
|
||||||
|
<tr><td align="left"><font face="courier"><pre>
|
||||||
|
IP Packets dropped
|
||||||
|
Packets received
|
||||||
|
Packets sent
|
||||||
|
IP errors IP version/header length
|
||||||
|
IP length, high byte
|
||||||
|
IP length, low byte
|
||||||
|
IP fragments
|
||||||
|
Header checksum
|
||||||
|
Wrong protocol
|
||||||
|
ICMP Packets dropped
|
||||||
|
Packets received
|
||||||
|
Packets sent
|
||||||
|
Type errors
|
||||||
|
TCP Packets dropped
|
||||||
|
Packets received
|
||||||
|
Packets sent
|
||||||
|
Checksum errors
|
||||||
|
Data packets without ACKs
|
||||||
|
Resets
|
||||||
|
Retransmissions
|
||||||
|
No connection avaliable
|
||||||
|
Connection attempts to closed ports
|
||||||
|
</pre></font></td><td><pre>%! net-stats
|
||||||
|
</pre></table>
|
||||||
|
</font>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,21 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>FreeRTOS.org uIP WEB server demo</title>
|
||||||
|
</head>
|
||||||
|
<BODY bgcolor="#CCCCff">
|
||||||
|
<font face="arial">
|
||||||
|
<a href="index.shtml">RTOS Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS.org Homepage</a> <b>|</b> <a href="io.shtml">IO</a>
|
||||||
|
<br><p>
|
||||||
|
<hr>
|
||||||
|
<br>
|
||||||
|
<h2>Network connections</h2>
|
||||||
|
<p>
|
||||||
|
<table>
|
||||||
|
<tr><th>Local</th><th>Remote</th><th>State</th><th>Retransmissions</th><th>Timer</th><th>Flags</th></tr>
|
||||||
|
%! tcp-connections
|
||||||
|
</pre></font>
|
||||||
|
</font>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
468
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/httpd-fsdata.c
Normal file
468
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/httpd-fsdata.c
Normal file
|
@ -0,0 +1,468 @@
|
||||||
|
static const unsigned char data_404_html[] = {
|
||||||
|
/* /404.html */
|
||||||
|
0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
|
0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20,
|
||||||
|
0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f,
|
||||||
|
0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65,
|
||||||
|
0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63,
|
||||||
|
0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30,
|
||||||
|
0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e,
|
||||||
|
0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f,
|
||||||
|
0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61,
|
||||||
|
0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e,
|
||||||
|
0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69,
|
||||||
|
0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68,
|
||||||
|
0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f,
|
||||||
|
0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20,
|
||||||
|
0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa,
|
||||||
|
0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0};
|
||||||
|
|
||||||
|
static const unsigned char data_index_html[] = {
|
||||||
|
/* /index.html */
|
||||||
|
0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
|
0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
|
||||||
|
0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
|
||||||
|
0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
|
||||||
|
0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
|
||||||
|
0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
|
||||||
|
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
|
||||||
|
0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
||||||
|
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
|
||||||
|
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
|
||||||
|
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
|
||||||
|
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||||
|
0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
|
||||||
|
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74,
|
||||||
|
0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
|
||||||
|
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20,
|
||||||
|
0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||||
|
0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74,
|
||||||
|
0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68,
|
||||||
|
0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42,
|
||||||
|
0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64,
|
||||||
|
0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73,
|
||||||
|
0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28,
|
||||||
|
0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61,
|
||||||
|
0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d,
|
||||||
|
0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74,
|
||||||
|
0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c,
|
||||||
|
0x31, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, 0x6c,
|
||||||
|
0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66,
|
||||||
|
0x66, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74,
|
||||||
|
0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69,
|
||||||
|
0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, 0x6f, 0x61, 0x64,
|
||||||
|
0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
|
||||||
|
0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c,
|
||||||
|
0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
|
||||||
|
0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73,
|
||||||
|
0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65,
|
||||||
|
0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f,
|
||||||
|
0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69,
|
||||||
|
0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x64, 0x69,
|
||||||
|
0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0xd, 0xa, 0x3c,
|
||||||
|
0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f,
|
||||||
|
0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62,
|
||||||
|
0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74,
|
||||||
|
0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0};
|
||||||
|
|
||||||
|
static const unsigned char data_index_shtml[] = {
|
||||||
|
/* /index.shtml */
|
||||||
|
0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
|
0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
|
||||||
|
0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
|
||||||
|
0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
|
||||||
|
0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
|
||||||
|
0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
|
||||||
|
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
|
||||||
|
0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
||||||
|
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
|
||||||
|
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
|
||||||
|
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
|
||||||
|
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||||
|
0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
|
||||||
|
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74,
|
||||||
|
0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
|
||||||
|
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20,
|
||||||
|
0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||||
|
0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74,
|
||||||
|
0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68,
|
||||||
|
0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42,
|
||||||
|
0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64,
|
||||||
|
0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73,
|
||||||
|
0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28,
|
||||||
|
0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61,
|
||||||
|
0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d,
|
||||||
|
0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74,
|
||||||
|
0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c,
|
||||||
|
0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f,
|
||||||
|
0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43,
|
||||||
|
0x66, 0x66, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e,
|
||||||
|
0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72,
|
||||||
|
0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20,
|
||||||
|
0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65,
|
||||||
|
0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52,
|
||||||
|
0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c,
|
||||||
|
0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f,
|
||||||
|
0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
|
||||||
|
0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68,
|
||||||
|
0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53,
|
||||||
|
0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c,
|
||||||
|
0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61,
|
||||||
|
0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70,
|
||||||
|
0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f,
|
||||||
|
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c,
|
||||||
|
0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f,
|
||||||
|
0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
|
||||||
|
0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
|
||||||
|
0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f,
|
||||||
|
0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72,
|
||||||
|
0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67,
|
||||||
|
0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c,
|
||||||
|
0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f,
|
||||||
|
0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
|
||||||
|
0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c,
|
||||||
|
0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa,
|
||||||
|
0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c,
|
||||||
|
0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c,
|
||||||
|
0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61,
|
||||||
|
0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74,
|
||||||
|
0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa,
|
||||||
|
0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20,
|
||||||
|
0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76,
|
||||||
|
0x65, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e,
|
||||||
|
0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66,
|
||||||
|
0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22,
|
||||||
|
0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c,
|
||||||
|
0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x74,
|
||||||
|
0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, 0x6f, 0x72,
|
||||||
|
0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, 0x63, 0x6b,
|
||||||
|
0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a,
|
||||||
|
0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
|
||||||
|
0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
|
||||||
|
0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
|
||||||
|
0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
|
||||||
|
0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa,
|
||||||
|
0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, 0x73, 0x74,
|
||||||
|
0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65,
|
||||||
|
0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa,
|
||||||
|
0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c,
|
||||||
|
0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f,
|
||||||
|
0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0};
|
||||||
|
|
||||||
|
static const unsigned char data_io_shtml[] = {
|
||||||
|
/* /io.shtml */
|
||||||
|
0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
|
0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
|
||||||
|
0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
|
||||||
|
0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
|
||||||
|
0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
|
||||||
|
0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
|
||||||
|
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
|
||||||
|
0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
||||||
|
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
|
||||||
|
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
|
||||||
|
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
|
||||||
|
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||||
|
0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
|
||||||
|
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74,
|
||||||
|
0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
|
||||||
|
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20,
|
||||||
|
0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||||
|
0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74,
|
||||||
|
0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68,
|
||||||
|
0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42,
|
||||||
|
0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f,
|
||||||
|
0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66,
|
||||||
|
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20,
|
||||||
|
0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61,
|
||||||
|
0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72,
|
||||||
|
0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
|
||||||
|
0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f,
|
||||||
|
0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61,
|
||||||
|
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||||
|
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||||
|
0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d,
|
||||||
|
0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61,
|
||||||
|
0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e,
|
||||||
|
0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68,
|
||||||
|
0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73,
|
||||||
|
0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e,
|
||||||
|
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61,
|
||||||
|
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||||
|
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||||
|
0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
|
||||||
|
0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e,
|
||||||
|
0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65,
|
||||||
|
0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48,
|
||||||
|
0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61,
|
||||||
|
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||||
|
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||||
|
0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e,
|
||||||
|
0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62,
|
||||||
|
0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72,
|
||||||
|
0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20,
|
||||||
|
0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e,
|
||||||
|
0xd, 0xa, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd,
|
||||||
|
0xa, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63,
|
||||||
|
0x68, 0x65, 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74,
|
||||||
|
0x6f, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20,
|
||||||
|
0x4c, 0x45, 0x44, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2c,
|
||||||
|
0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63,
|
||||||
|
0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20,
|
||||||
|
0x49, 0x4f, 0x22, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x65, 0x6e,
|
||||||
|
0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x77, 0x20,
|
||||||
|
0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74,
|
||||||
|
0x68, 0x65, 0x20, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x63, 0x6f,
|
||||||
|
0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0xd,
|
||||||
|
0xa, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa,
|
||||||
|
0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65,
|
||||||
|
0x3d, 0x22, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61,
|
||||||
|
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f,
|
||||||
|
0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65,
|
||||||
|
0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22,
|
||||||
|
0x3e, 0xd, 0xa, 0x25, 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d,
|
||||||
|
0x69, 0x6f, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c,
|
||||||
|
0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65,
|
||||||
|
0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20,
|
||||||
|
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64,
|
||||||
|
0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa,
|
||||||
|
0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c,
|
||||||
|
0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f,
|
||||||
|
0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62,
|
||||||
|
0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74,
|
||||||
|
0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0};
|
||||||
|
|
||||||
|
static const unsigned char data_stats_shtml[] = {
|
||||||
|
/* /stats.shtml */
|
||||||
|
0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
|
0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
|
||||||
|
0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
|
||||||
|
0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
|
||||||
|
0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
|
||||||
|
0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
|
||||||
|
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
|
||||||
|
0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
||||||
|
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
|
||||||
|
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
|
||||||
|
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
|
||||||
|
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||||
|
0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
|
||||||
|
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74,
|
||||||
|
0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
|
||||||
|
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20,
|
||||||
|
0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||||
|
0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74,
|
||||||
|
0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68,
|
||||||
|
0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42,
|
||||||
|
0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f,
|
||||||
|
0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66,
|
||||||
|
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20,
|
||||||
|
0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61,
|
||||||
|
0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72,
|
||||||
|
0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
|
||||||
|
0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f,
|
||||||
|
0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61,
|
||||||
|
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||||
|
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||||
|
0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d,
|
||||||
|
0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61,
|
||||||
|
0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e,
|
||||||
|
0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68,
|
||||||
|
0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73,
|
||||||
|
0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e,
|
||||||
|
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61,
|
||||||
|
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||||
|
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||||
|
0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
|
||||||
|
0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e,
|
||||||
|
0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65,
|
||||||
|
0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48,
|
||||||
|
0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61,
|
||||||
|
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||||
|
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||||
|
0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e,
|
||||||
|
0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62,
|
||||||
|
0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72,
|
||||||
|
0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e,
|
||||||
|
0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77,
|
||||||
|
0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73,
|
||||||
|
0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd,
|
||||||
|
0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69,
|
||||||
|
0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20,
|
||||||
|
0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22,
|
||||||
|
0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64,
|
||||||
|
0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65,
|
||||||
|
0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20,
|
||||||
|
0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72,
|
||||||
|
0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e,
|
||||||
|
0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65,
|
||||||
|
0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64,
|
||||||
|
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65,
|
||||||
|
0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
|
||||||
|
0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b,
|
||||||
|
0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa,
|
||||||
|
0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73,
|
||||||
|
0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
|
||||||
|
0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0xd, 0xa, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74,
|
||||||
|
0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, 0x62, 0x79,
|
||||||
|
0x74, 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20,
|
||||||
|
0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x6c, 0x6f,
|
||||||
|
0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65,
|
||||||
|
0x6e, 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65,
|
||||||
|
0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b,
|
||||||
|
0x73, 0x75, 0x6d, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x72,
|
||||||
|
0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
|
||||||
|
0x6f, 0x6c, 0xd, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74,
|
||||||
|
0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd,
|
||||||
|
0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74,
|
||||||
|
0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64,
|
||||||
|
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65,
|
||||||
|
0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72,
|
||||||
|
0x6f, 0x72, 0x73, 0xd, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61,
|
||||||
|
0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70,
|
||||||
|
0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61,
|
||||||
|
0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65,
|
||||||
|
0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50,
|
||||||
|
0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e,
|
||||||
|
0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63,
|
||||||
|
0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72,
|
||||||
|
0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61,
|
||||||
|
0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x77,
|
||||||
|
0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, 0x43, 0x4b,
|
||||||
|
0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x73, 0x65,
|
||||||
|
0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x74,
|
||||||
|
0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
|
||||||
|
0x6e, 0x73, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
|
||||||
|
0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61,
|
||||||
|
0x62, 0x6c, 0x65, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
|
||||||
|
0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73,
|
||||||
|
0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64,
|
||||||
|
0x20, 0x70, 0x6f, 0x72, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f,
|
||||||
|
0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74,
|
||||||
|
0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e,
|
||||||
|
0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65,
|
||||||
|
0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c,
|
||||||
|
0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62,
|
||||||
|
0x6c, 0x65, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e,
|
||||||
|
0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79,
|
||||||
|
0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||||
|
0xd, 0xa, 0};
|
||||||
|
|
||||||
|
static const unsigned char data_tcp_shtml[] = {
|
||||||
|
/* /tcp.shtml */
|
||||||
|
0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
|
0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
|
||||||
|
0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
|
||||||
|
0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
|
||||||
|
0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
|
||||||
|
0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
|
||||||
|
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
|
||||||
|
0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
||||||
|
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
|
||||||
|
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
|
||||||
|
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
|
||||||
|
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||||
|
0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
|
||||||
|
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74,
|
||||||
|
0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
|
||||||
|
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20,
|
||||||
|
0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||||
|
0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74,
|
||||||
|
0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68,
|
||||||
|
0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42,
|
||||||
|
0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f,
|
||||||
|
0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66,
|
||||||
|
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20,
|
||||||
|
0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61,
|
||||||
|
0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72,
|
||||||
|
0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
|
||||||
|
0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f,
|
||||||
|
0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61,
|
||||||
|
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||||
|
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||||
|
0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d,
|
||||||
|
0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61,
|
||||||
|
0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e,
|
||||||
|
0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68,
|
||||||
|
0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73,
|
||||||
|
0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e,
|
||||||
|
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61,
|
||||||
|
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||||
|
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||||
|
0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
|
||||||
|
0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e,
|
||||||
|
0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65,
|
||||||
|
0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48,
|
||||||
|
0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61,
|
||||||
|
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||||
|
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||||
|
0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e,
|
||||||
|
0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62,
|
||||||
|
0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72,
|
||||||
|
0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c,
|
||||||
|
0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
|
||||||
|
0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
|
||||||
|
0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c,
|
||||||
|
0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65,
|
||||||
|
0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68,
|
||||||
|
0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68,
|
||||||
|
0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74,
|
||||||
|
0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e,
|
||||||
|
0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e,
|
||||||
|
0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e,
|
||||||
|
0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c,
|
||||||
|
0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69,
|
||||||
|
0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74,
|
||||||
|
0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74,
|
||||||
|
0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25,
|
||||||
|
0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e,
|
||||||
|
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c,
|
||||||
|
0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e,
|
||||||
|
0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74,
|
||||||
|
0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
|
||||||
|
0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd,
|
||||||
|
0xa, 0xd, 0xa, 0};
|
||||||
|
|
||||||
|
const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}};
|
||||||
|
|
||||||
|
const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}};
|
||||||
|
|
||||||
|
const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}};
|
||||||
|
|
||||||
|
const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}};
|
||||||
|
|
||||||
|
const struct httpd_fsdata_file file_stats_shtml[] = {{file_io_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}};
|
||||||
|
|
||||||
|
const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}};
|
||||||
|
|
||||||
|
#define HTTPD_FS_ROOT file_tcp_shtml
|
||||||
|
|
||||||
|
#define HTTPD_FS_NUMFILES 6
|
|
@ -0,0 +1,64 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2001, Swedish Institute of Computer Science.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the Institute nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* This file is part of the lwIP TCP/IP stack.
|
||||||
|
*
|
||||||
|
* Author: Adam Dunkels <adam@sics.se>
|
||||||
|
*
|
||||||
|
* $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $
|
||||||
|
*/
|
||||||
|
#ifndef __HTTPD_FSDATA_H__
|
||||||
|
#define __HTTPD_FSDATA_H__
|
||||||
|
|
||||||
|
#include "uip.h"
|
||||||
|
|
||||||
|
struct httpd_fsdata_file {
|
||||||
|
const struct httpd_fsdata_file *next;
|
||||||
|
const char *name;
|
||||||
|
const char *data;
|
||||||
|
const int len;
|
||||||
|
#ifdef HTTPD_FS_STATISTICS
|
||||||
|
#if HTTPD_FS_STATISTICS == 1
|
||||||
|
u16_t count;
|
||||||
|
#endif /* HTTPD_FS_STATISTICS */
|
||||||
|
#endif /* HTTPD_FS_STATISTICS */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct httpd_fsdata_file_noconst {
|
||||||
|
struct httpd_fsdata_file *next;
|
||||||
|
char *name;
|
||||||
|
char *data;
|
||||||
|
int len;
|
||||||
|
#ifdef HTTPD_FS_STATISTICS
|
||||||
|
#if HTTPD_FS_STATISTICS == 1
|
||||||
|
u16_t count;
|
||||||
|
#endif /* HTTPD_FS_STATISTICS */
|
||||||
|
#endif /* HTTPD_FS_STATISTICS */
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __HTTPD_FSDATA_H__ */
|
413
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/httpd.c
Normal file
413
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/httpd.c
Normal file
|
@ -0,0 +1,413 @@
|
||||||
|
/*$T httpd.c GC 1.138 11/17/07 13:10:22 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* \addtogroup apps @{ £
|
||||||
|
* \defgroup httpd Web server @{ The uIP web server is a very simplistic
|
||||||
|
* implementation of an HTTP server. It can serve web pages and files from a
|
||||||
|
* read-only ROM filesystem, and provides a very small scripting language. £
|
||||||
|
* \file Web server \author Adam Dunkels <adam@sics.se> £
|
||||||
|
* Copyright (c) 2004, Adam Dunkels. All rights reserved. Redistribution and use
|
||||||
|
* in source and binary forms, with or without modification, are permitted
|
||||||
|
* provided that the following conditions are met: 1. Redistributions of source
|
||||||
|
* code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer. 2. Redistributions in binary form must reproduce the
|
||||||
|
* above copyright notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the distribution. 3.
|
||||||
|
* Neither the name of the Institute nor the names of its contributors may be used
|
||||||
|
* to endorse or promote products derived from this software without specific
|
||||||
|
* prior written permission. THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND
|
||||||
|
* CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
|
||||||
|
* NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||||
|
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||||
|
* OF SUCH DAMAGE. This file is part of the uIP TCP/IP stack. Author: Adam Dunkels
|
||||||
|
* <adam@sics.se> $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $
|
||||||
|
*/
|
||||||
|
#include "uip.h"
|
||||||
|
#include "httpd.h"
|
||||||
|
#include "httpd-fs.h"
|
||||||
|
#include "httpd-cgi.h"
|
||||||
|
#include "http-strings.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define STATE_WAITING 0
|
||||||
|
#define STATE_OUTPUT 1
|
||||||
|
|
||||||
|
#define ISO_nl 0x0a
|
||||||
|
#define ISO_space 0x20
|
||||||
|
#define ISO_bang 0x21
|
||||||
|
#define ISO_percent 0x25
|
||||||
|
#define ISO_period 0x2e
|
||||||
|
#define ISO_slash 0x2f
|
||||||
|
#define ISO_colon 0x3a
|
||||||
|
|
||||||
|
/*
|
||||||
|
=======================================================================================================================
|
||||||
|
=======================================================================================================================
|
||||||
|
*/
|
||||||
|
static unsigned short generate_part_of_file(void *state)
|
||||||
|
{
|
||||||
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
||||||
|
struct httpd_state *s = (struct httpd_state *) state;
|
||||||
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
||||||
|
|
||||||
|
if(s->file.len > uip_mss())
|
||||||
|
{
|
||||||
|
s->len = uip_mss();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s->len = s->file.len;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(uip_appdata, s->file.data, s->len);
|
||||||
|
|
||||||
|
return s->len;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
=======================================================================================================================
|
||||||
|
=======================================================================================================================
|
||||||
|
*/
|
||||||
|
static PT_THREAD(send_file (struct httpd_state *s))
|
||||||
|
{
|
||||||
|
PSOCK_BEGIN(&s->sout);
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s);
|
||||||
|
s->file.len -= s->len;
|
||||||
|
s->file.data += s->len;
|
||||||
|
} while(s->file.len > 0);
|
||||||
|
|
||||||
|
PSOCK_END(&s->sout);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
=======================================================================================================================
|
||||||
|
=======================================================================================================================
|
||||||
|
*/
|
||||||
|
static PT_THREAD(send_part_of_file (struct httpd_state *s))
|
||||||
|
{
|
||||||
|
PSOCK_BEGIN(&s->sout);
|
||||||
|
|
||||||
|
PSOCK_SEND(&s->sout, s->file.data, s->len);
|
||||||
|
|
||||||
|
PSOCK_END(&s->sout);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
=======================================================================================================================
|
||||||
|
=======================================================================================================================
|
||||||
|
*/
|
||||||
|
static void next_scriptstate(struct httpd_state *s)
|
||||||
|
{
|
||||||
|
/*~~~~~~~*/
|
||||||
|
char *p;
|
||||||
|
/*~~~~~~~*/
|
||||||
|
|
||||||
|
p = strchr(s->scriptptr, ISO_nl) + 1;
|
||||||
|
s->scriptlen -= (unsigned short) (p - s->scriptptr);
|
||||||
|
s->scriptptr = p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
=======================================================================================================================
|
||||||
|
=======================================================================================================================
|
||||||
|
*/
|
||||||
|
static PT_THREAD(handle_script (struct httpd_state *s))
|
||||||
|
{
|
||||||
|
/*~~~~~~~~~*/
|
||||||
|
char *ptr;
|
||||||
|
/*~~~~~~~~~*/
|
||||||
|
|
||||||
|
PT_BEGIN(&s->scriptpt);
|
||||||
|
|
||||||
|
while(s->file.len > 0)
|
||||||
|
{
|
||||||
|
/* Check if we should start executing a script. */
|
||||||
|
if(*s->file.data == ISO_percent && *(s->file.data + 1) == ISO_bang)
|
||||||
|
{
|
||||||
|
s->scriptptr = s->file.data + 3;
|
||||||
|
s->scriptlen = s->file.len - 3;
|
||||||
|
if(*(s->scriptptr - 1) == ISO_colon)
|
||||||
|
{
|
||||||
|
httpd_fs_open(s->scriptptr + 1, &s->file);
|
||||||
|
PT_WAIT_THREAD(&s->scriptpt, send_file(s));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PT_WAIT_THREAD(&s->scriptpt, httpd_cgi(s->scriptptr) (s, s->scriptptr));
|
||||||
|
}
|
||||||
|
|
||||||
|
next_scriptstate(s);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The script is over, so we reset the pointers and continue sending the rest of
|
||||||
|
* the file.
|
||||||
|
*/
|
||||||
|
s->file.data = s->scriptptr;
|
||||||
|
s->file.len = s->scriptlen;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* See if we find the start of script marker in the block of HTML to be sent. */
|
||||||
|
if(s->file.len > uip_mss())
|
||||||
|
{
|
||||||
|
s->len = uip_mss();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s->len = s->file.len;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(*s->file.data == ISO_percent)
|
||||||
|
{
|
||||||
|
ptr = strchr(s->file.data + 1, ISO_percent);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ptr = strchr(s->file.data, ISO_percent);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ptr != NULL && ptr != s->file.data)
|
||||||
|
{
|
||||||
|
s->len = (int) (ptr - s->file.data);
|
||||||
|
if(s->len >= uip_mss())
|
||||||
|
{
|
||||||
|
s->len = uip_mss();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s));
|
||||||
|
s->file.data += s->len;
|
||||||
|
s->file.len -= s->len;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PT_END(&s->scriptpt);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
=======================================================================================================================
|
||||||
|
=======================================================================================================================
|
||||||
|
*/
|
||||||
|
static PT_THREAD(send_headers (struct httpd_state *s, const char *statushdr))
|
||||||
|
{
|
||||||
|
/*~~~~~~~~~*/
|
||||||
|
char *ptr;
|
||||||
|
/*~~~~~~~~~*/
|
||||||
|
|
||||||
|
PSOCK_BEGIN(&s->sout);
|
||||||
|
|
||||||
|
PSOCK_SEND_STR(&s->sout, statushdr);
|
||||||
|
|
||||||
|
ptr = strrchr(s->filename, ISO_period);
|
||||||
|
if(ptr == NULL)
|
||||||
|
{
|
||||||
|
PSOCK_SEND_STR(&s->sout, http_content_type_binary);
|
||||||
|
}
|
||||||
|
else if(strncmp(http_html, ptr, 5) == 0 || strncmp(http_shtml, ptr, 6) == 0)
|
||||||
|
{
|
||||||
|
PSOCK_SEND_STR(&s->sout, http_content_type_html);
|
||||||
|
}
|
||||||
|
else if(strncmp(http_css, ptr, 4) == 0)
|
||||||
|
{
|
||||||
|
PSOCK_SEND_STR(&s->sout, http_content_type_css);
|
||||||
|
}
|
||||||
|
else if(strncmp(http_png, ptr, 4) == 0)
|
||||||
|
{
|
||||||
|
PSOCK_SEND_STR(&s->sout, http_content_type_png);
|
||||||
|
}
|
||||||
|
else if(strncmp(http_gif, ptr, 4) == 0)
|
||||||
|
{
|
||||||
|
PSOCK_SEND_STR(&s->sout, http_content_type_gif);
|
||||||
|
}
|
||||||
|
else if(strncmp(http_jpg, ptr, 4) == 0)
|
||||||
|
{
|
||||||
|
PSOCK_SEND_STR(&s->sout, http_content_type_jpg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PSOCK_SEND_STR(&s->sout, http_content_type_plain);
|
||||||
|
}
|
||||||
|
|
||||||
|
PSOCK_END(&s->sout);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
=======================================================================================================================
|
||||||
|
=======================================================================================================================
|
||||||
|
*/
|
||||||
|
static PT_THREAD(handle_output (struct httpd_state *s))
|
||||||
|
{
|
||||||
|
/*~~~~~~~~~*/
|
||||||
|
char *ptr;
|
||||||
|
/*~~~~~~~~~*/
|
||||||
|
|
||||||
|
PT_BEGIN(&s->outputpt);
|
||||||
|
|
||||||
|
if(!httpd_fs_open(s->filename, &s->file))
|
||||||
|
{
|
||||||
|
httpd_fs_open(http_404_html, &s->file);
|
||||||
|
strcpy(s->filename, http_404_html);
|
||||||
|
PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_404));
|
||||||
|
PT_WAIT_THREAD(&s->outputpt, send_file(s));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_200));
|
||||||
|
ptr = strchr(s->filename, ISO_period);
|
||||||
|
if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0)
|
||||||
|
{
|
||||||
|
vProcessInput( s->filename );
|
||||||
|
PT_INIT(&s->scriptpt);
|
||||||
|
PT_WAIT_THREAD(&s->outputpt, handle_script(s));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PT_WAIT_THREAD(&s->outputpt, send_file(s));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PSOCK_CLOSE(&s->sout);
|
||||||
|
PT_END(&s->outputpt);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
=======================================================================================================================
|
||||||
|
=======================================================================================================================
|
||||||
|
*/
|
||||||
|
static PT_THREAD(handle_input (struct httpd_state *s))
|
||||||
|
{
|
||||||
|
PSOCK_BEGIN(&s->sin);
|
||||||
|
|
||||||
|
PSOCK_READTO(&s->sin, ISO_space);
|
||||||
|
|
||||||
|
if(strncmp(s->inputbuf, http_get, 4) != 0)
|
||||||
|
{
|
||||||
|
PSOCK_CLOSE_EXIT(&s->sin);
|
||||||
|
}
|
||||||
|
|
||||||
|
PSOCK_READTO(&s->sin, ISO_space);
|
||||||
|
|
||||||
|
if(s->inputbuf[0] != ISO_slash)
|
||||||
|
{
|
||||||
|
PSOCK_CLOSE_EXIT(&s->sin);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(s->inputbuf[1] == ISO_space)
|
||||||
|
{
|
||||||
|
strncpy(s->filename, http_index_html, sizeof(s->filename));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0;
|
||||||
|
|
||||||
|
/* Process any form input being sent to the server. */
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* extern void vApplicationProcessFormInput( char *pcInputString, long
|
||||||
|
* xInputLength ); £
|
||||||
|
* vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) );
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* httpd_log_file(uip_conn->ripaddr, s->filename); */
|
||||||
|
s->state = STATE_OUTPUT;
|
||||||
|
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
PSOCK_READTO(&s->sin, ISO_nl);
|
||||||
|
|
||||||
|
if(strncmp(s->inputbuf, http_referer, 8) == 0)
|
||||||
|
{
|
||||||
|
s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0;
|
||||||
|
|
||||||
|
/* httpd_log(&s->inputbuf[9]); */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PSOCK_END(&s->sin);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
=======================================================================================================================
|
||||||
|
=======================================================================================================================
|
||||||
|
*/
|
||||||
|
static void handle_connection(struct httpd_state *s)
|
||||||
|
{
|
||||||
|
handle_input(s);
|
||||||
|
if(s->state == STATE_OUTPUT)
|
||||||
|
{
|
||||||
|
handle_output(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
=======================================================================================================================
|
||||||
|
=======================================================================================================================
|
||||||
|
*/
|
||||||
|
void httpd_appcall(void)
|
||||||
|
{
|
||||||
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
||||||
|
struct httpd_state *s = (struct httpd_state *) &(uip_conn->appstate);
|
||||||
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
||||||
|
|
||||||
|
if(uip_closed() || uip_aborted() || uip_timedout())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else if(uip_connected())
|
||||||
|
{
|
||||||
|
PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1);
|
||||||
|
PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1);
|
||||||
|
PT_INIT(&s->outputpt);
|
||||||
|
s->state = STATE_WAITING;
|
||||||
|
|
||||||
|
/* timer_set(&s->timer, CLOCK_SECOND * 100); */
|
||||||
|
s->timer = 0;
|
||||||
|
handle_connection(s);
|
||||||
|
}
|
||||||
|
else if(s != NULL)
|
||||||
|
{
|
||||||
|
if(uip_poll())
|
||||||
|
{
|
||||||
|
++s->timer;
|
||||||
|
if(s->timer >= 20)
|
||||||
|
{
|
||||||
|
uip_abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s->timer = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
handle_connection(s);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uip_abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
=======================================================================================================================
|
||||||
|
\brief Initialize the web server This function initializes the web server and should be called at system boot-up.
|
||||||
|
=======================================================================================================================
|
||||||
|
*/
|
||||||
|
void httpd_init(void)
|
||||||
|
{
|
||||||
|
uip_listen(HTONS(80));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @} */
|
62
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/httpd.h
Normal file
62
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/httpd.h
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2001-2005, Adam Dunkels.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. The name of the author may not be used to endorse or promote
|
||||||
|
* products derived from this software without specific prior
|
||||||
|
* written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||||
|
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||||
|
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* This file is part of the uIP TCP/IP stack.
|
||||||
|
*
|
||||||
|
* $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __HTTPD_H__
|
||||||
|
#define __HTTPD_H__
|
||||||
|
|
||||||
|
#include "psock.h"
|
||||||
|
#include "httpd-fs.h"
|
||||||
|
|
||||||
|
struct httpd_state {
|
||||||
|
unsigned char timer;
|
||||||
|
struct psock sin, sout;
|
||||||
|
struct pt outputpt, scriptpt;
|
||||||
|
char inputbuf[50];
|
||||||
|
char filename[20];
|
||||||
|
char state;
|
||||||
|
struct httpd_fs_file file;
|
||||||
|
int len;
|
||||||
|
char *scriptptr;
|
||||||
|
int scriptlen;
|
||||||
|
|
||||||
|
unsigned short count;
|
||||||
|
};
|
||||||
|
|
||||||
|
void httpd_init(void);
|
||||||
|
void httpd_appcall(void);
|
||||||
|
|
||||||
|
void httpd_log(char *msg);
|
||||||
|
void httpd_log_file(u16_t *requester, char *file);
|
||||||
|
|
||||||
|
#endif /* __HTTPD_H__ */
|
78
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/makefsdata
Normal file
78
Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/webserver/makefsdata
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
open(OUTPUT, "> httpd-fsdata.c");
|
||||||
|
|
||||||
|
chdir("httpd-fs");
|
||||||
|
|
||||||
|
opendir(DIR, ".");
|
||||||
|
@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR);
|
||||||
|
closedir(DIR);
|
||||||
|
|
||||||
|
foreach $file (@files) {
|
||||||
|
|
||||||
|
if(-d $file && $file !~ /^\./) {
|
||||||
|
print "Processing directory $file\n";
|
||||||
|
opendir(DIR, $file);
|
||||||
|
@newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR);
|
||||||
|
closedir(DIR);
|
||||||
|
printf "Adding files @newfiles\n";
|
||||||
|
@files = (@files, map { $_ = "$file/$_" } @newfiles);
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach $file (@files) {
|
||||||
|
if(-f $file) {
|
||||||
|
|
||||||
|
print "Adding file $file\n";
|
||||||
|
|
||||||
|
open(FILE, $file) || die "Could not open file $file\n";
|
||||||
|
|
||||||
|
$file =~ s-^-/-;
|
||||||
|
$fvar = $file;
|
||||||
|
$fvar =~ s-/-_-g;
|
||||||
|
$fvar =~ s-\.-_-g;
|
||||||
|
# for AVR, add PROGMEM here
|
||||||
|
print(OUTPUT "static const unsigned char data".$fvar."[] = {\n");
|
||||||
|
print(OUTPUT "\t/* $file */\n\t");
|
||||||
|
for($j = 0; $j < length($file); $j++) {
|
||||||
|
printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1)));
|
||||||
|
}
|
||||||
|
printf(OUTPUT "0,\n");
|
||||||
|
|
||||||
|
|
||||||
|
$i = 0;
|
||||||
|
while(read(FILE, $data, 1)) {
|
||||||
|
if($i == 0) {
|
||||||
|
print(OUTPUT "\t");
|
||||||
|
}
|
||||||
|
printf(OUTPUT "%#02x, ", unpack("C", $data));
|
||||||
|
$i++;
|
||||||
|
if($i == 10) {
|
||||||
|
print(OUTPUT "\n");
|
||||||
|
$i = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print(OUTPUT "0};\n\n");
|
||||||
|
close(FILE);
|
||||||
|
push(@fvars, $fvar);
|
||||||
|
push(@pfiles, $file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for($i = 0; $i < @fvars; $i++) {
|
||||||
|
$file = $pfiles[$i];
|
||||||
|
$fvar = $fvars[$i];
|
||||||
|
|
||||||
|
if($i == 0) {
|
||||||
|
$prevfile = "NULL";
|
||||||
|
} else {
|
||||||
|
$prevfile = "file" . $fvars[$i - 1];
|
||||||
|
}
|
||||||
|
print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, ");
|
||||||
|
print(OUTPUT "data$fvar + ". (length($file) + 1) .", ");
|
||||||
|
print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n");
|
||||||
|
print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n");
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue