mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-08-20 10:08:33 -04:00
Before changing headers to V6 and changing portLONG, portSHORt and portCHAR to their standard C types.
This commit is contained in:
parent
3dfbb349ca
commit
5c64e1fad9
4417 changed files with 1261274 additions and 0 deletions
|
@ -0,0 +1,23 @@
|
|||
*** SESSION Aug 19, 2007 15:19:16.906 ------------------------------------------
|
||||
*** SESSION Aug 19, 2007 20:47:55.734 ------------------------------------------
|
||||
*** SESSION Aug 19, 2007 20:58:19.953 ------------------------------------------
|
||||
*** SESSION Aug 20, 2007 10:30:54.968 ------------------------------------------
|
||||
*** SESSION Aug 20, 2007 15:43:10.859 ------------------------------------------
|
||||
*** SESSION Aug 21, 2007 13:05:50.828 ------------------------------------------
|
||||
*** SESSION Aug 21, 2007 19:01:46.812 ------------------------------------------
|
||||
*** SESSION Aug 22, 2007 14:47:56.156 ------------------------------------------
|
||||
*** SESSION Aug 23, 2007 11:52:49.406 ------------------------------------------
|
||||
*** SESSION Aug 23, 2007 19:24:16.984 ------------------------------------------
|
||||
*** SESSION Aug 23, 2007 22:26:06.78 -------------------------------------------
|
||||
*** SESSION Aug 24, 2007 12:43:08.578 ------------------------------------------
|
||||
*** SESSION Aug 24, 2007 17:08:36.187 ------------------------------------------
|
||||
*** SESSION Aug 26, 2007 11:13:57.906 ------------------------------------------
|
||||
*** SESSION Aug 26, 2007 14:24:42.656 ------------------------------------------
|
||||
*** SESSION Aug 26, 2007 14:34:02.93 -------------------------------------------
|
||||
*** SESSION Aug 26, 2007 17:35:44.937 ------------------------------------------
|
||||
*** SESSION Aug 27, 2007 10:56:42.953 ------------------------------------------
|
||||
*** SESSION Aug 27, 2007 13:13:37.593 ------------------------------------------
|
||||
*** SESSION May 19, 2009 12:45:26.544 ------------------------------------------
|
||||
*** SESSION May 19, 2009 14:04:21.908 ------------------------------------------
|
||||
*** SESSION May 19, 2009 14:10:00.66 -------------------------------------------
|
||||
*** SESSION May 21, 2009 13:38:50.32 -------------------------------------------
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><SharedRoot><SharedProperty id="" value=""/></SharedRoot>
|
|
@ -0,0 +1,157 @@
|
|||
<?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:/E/Dev/FreeRTOS/WorkingCopy3/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo"/>
|
||||
<includePath path="C:/E/Dev/FreeRTOS/WorkingCopy3/Source/include"/>
|
||||
<includePath path="C:/E/Dev/FreeRTOS/WorkingCopy3/Source/portable/GCC/ARM_CM3"/>
|
||||
<includePath path="C:/E/Dev/FreeRTOS/WorkingCopy3/Demo/Common/include"/>
|
||||
<includePath path="C:/E/Dev/FreeRTOS/WorkingCopy3/Demo/Common/ethernet/uIP/uip-1.0/uip"/>
|
||||
<includePath path="C:/E/Dev/FreeRTOS/WorkingCopy3/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/webserver"/>
|
||||
<includePath path="C:/E/Dev/FreeRTOS/WorkingCopy3/Demo/Common/drivers/LuminaryMicro"/>
|
||||
<includePath path="c:\devtools\codesourcery\sourcery g++ lite arm\bin\../lib/gcc/arm-none-eabi/4.3.2/include"/>
|
||||
<includePath path="c:\devtools\codesourcery\sourcery g++ lite arm\bin\../lib/gcc/arm-none-eabi/4.3.2/include-fixed"/>
|
||||
<includePath path="c:\devtools\codesourcery\sourcery g++ lite arm\bin\../lib/gcc/arm-none-eabi/4.3.2/../../../../arm-none-eabi/include"/>
|
||||
<includePath path="c:/devtools/codesourcery/sourcery g++ lite arm/lib/gcc/../../lib/gcc/arm-none-eabi/4.3.2/include"/>
|
||||
<includePath path="c:/devtools/codesourcery/sourcery g++ lite arm/lib/gcc/../../lib/gcc/arm-none-eabi/4.3.2/include-fixed"/>
|
||||
<includePath path="c:/devtools/codesourcery/sourcery g++ lite arm/lib/gcc/../../lib/gcc/arm-none-eabi/4.3.2/../../../../arm-none-eabi/include"/>
|
||||
<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"/>
|
||||
<definedSymbol symbol="__STDC__=1"/>
|
||||
<definedSymbol symbol="__STDC_HOSTED__=1"/>
|
||||
<definedSymbol symbol="__GNUC__=4"/>
|
||||
<definedSymbol symbol="__GNUC_MINOR__=2"/>
|
||||
<definedSymbol symbol="__GNUC_MINOR__=3"/>
|
||||
<definedSymbol symbol="__GNUC_PATCHLEVEL__=0"/>
|
||||
<definedSymbol symbol="__GNUC_PATCHLEVEL__=2"/>
|
||||
<definedSymbol symbol="__SIZE_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__PTRDIFF_TYPE__=int"/>
|
||||
<definedSymbol symbol="__WCHAR_TYPE__=unsigned 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="__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.3.2""/>
|
||||
<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=1"/>
|
||||
<definedSymbol symbol="inline="/>
|
||||
<definedSymbol symbol="PACK_STRUCT_END=__attribute\(\(packed\)\)"/>
|
||||
<definedSymbol symbol="ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\)"/>
|
||||
<definedSymbol symbol="sprintf=usprintf"/>
|
||||
<definedSymbol symbol="snprintf=usnprintf"/>
|
||||
<definedSymbol symbol="printf=uipprintf"/>
|
||||
<definedSymbol symbol="__OPTIMIZE__=1"/>
|
||||
<definedSymbol symbol="__SIZEOF_INT__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG_LONG__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_SHORT__=2"/>
|
||||
<definedSymbol symbol="__SIZEOF_FLOAT__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_DOUBLE__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG_DOUBLE__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_SIZE_T__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_WCHAR_T__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_WINT_T__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_PTRDIFF_T__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_POINTER__=4"/>
|
||||
<definedSymbol symbol="__thumb__=1"/>
|
||||
<definedSymbol symbol="__thumb2__=1"/>
|
||||
<definedSymbol symbol="__THUMBEL__=1"/>
|
||||
<definedSymbol symbol="__ARM_ARCH_7M__=1"/>
|
||||
</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,14 @@
|
|||
<?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 name="org.eclipse.cdt.ui.text.hover.CMacroExpansion">
|
||||
</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.
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.
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 @@
|
|||
#Sun Aug 19 23:06:50 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\="568" org.eclipse.cdt.debug.ui.SASH_VIEW_PART\="427"/>
|
||||
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 @@
|
|||
#Tue May 19 17:39:33 BST 2009
|
||||
eclipse.preferences.version=1
|
||||
properties/RTOSDemo.null.976634949/0.1109417601=\#\r\n\#Tue May 19 17\:39\:33 BST 2009\r\n0.1109417601\=\\\#\\r\\n\\\#Tue May 19 17\\\:39\\\:33 BST 2009\\r\\nrcState\\\=0\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.1502006385\=\\\#\\r\\n\\\#Tue May 19 17\\\:39\\\:33 BST 2009\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.1021181093\=\\\#\\r\\n\\\#Tue May 19 17\\\:39\\\:33 BST 2009\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.164584712\=\\\#\\r\\n\\\#Tue May 19 17\\\:39\\\:33 BST 2009\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.libs.260784574\=\\\#\\r\\n\\\#Tue May 19 17\\\:39\\\:33 BST 2009\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.prefbase.toolchain.1816209921\=\\\#\\r\\n\\\#Tue May 19 17\\\:39\\\:33 BST 2009\\r\\nrebuildState\\\=false\\r\\n\r\n
|
|
@ -0,0 +1,14 @@
|
|||
#Tue May 19 14:04:10 BST 2009
|
||||
useQuickDiffPrefPage=true
|
||||
closeBrackets=false
|
||||
ensureNewlineAtEOF=true
|
||||
useAnnotationsPrefPage=true
|
||||
spelling_locale=en_GB
|
||||
closeAngularBrackets=false
|
||||
spelling_locale_initialized=true
|
||||
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 @@
|
|||
#Tue May 19 12:50:28 BST 2009
|
||||
version=1
|
||||
eclipse.preferences.version=1
|
||||
pathvariable.FreeRTOS_ROOT=C\:/E/Dev/FreeRTOS/WorkingCopy3
|
||||
description.autobuilding=false
|
|
@ -0,0 +1,7 @@
|
|||
#Thu Aug 23 22:01:25 BST 2007
|
||||
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"/>
|
||||
eclipse.preferences.version=1
|
||||
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.BreakpointView+org.eclipse.debug.ui.ShowSupportedBreakpointsAction=true
|
||||
preferredDetailPanes=DefaultDetailPane\:DefaultDetailPane|
|
||||
org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<launchPerspectives/>\r\n
|
|
@ -0,0 +1,3 @@
|
|||
#Tue May 19 12:45:33 BST 2009
|
||||
org.eclipse.epp.usagedata.recording.last-upload=1242733533421
|
||||
eclipse.preferences.version=1
|
|
@ -0,0 +1,3 @@
|
|||
#Tue May 19 12:45:30 BST 2009
|
||||
eclipse.preferences.version=1
|
||||
autoUpdateInit=true
|
|
@ -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 @@
|
|||
#Tue May 19 12:45:31 BST 2009
|
||||
eclipse.preferences.version=1
|
||||
mylyn.attention.migrated=true
|
|
@ -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 @@
|
|||
#Tue May 19 14:04:10 BST 2009
|
||||
pref_first_startup=false
|
||||
eclipse.preferences.version=1
|
|
@ -0,0 +1,3 @@
|
|||
#Tue May 19 14:04:10 BST 2009
|
||||
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,5 @@
|
|||
#Thu May 21 13:39:40 BST 2009
|
||||
eclipse.preferences.version=1
|
||||
tipsAndTricks=true
|
||||
platformState=1242909501727
|
||||
PROBLEMS_FILTERS_MIGRATE=true
|
|
@ -0,0 +1,3 @@
|
|||
#Sun Aug 19 20:45:58 BST 2007
|
||||
eclipse.preferences.version=1
|
||||
showIntro=false
|
|
@ -0,0 +1,4 @@
|
|||
#Tue May 19 12:45:31 BST 2009
|
||||
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>
|
||||
ENABLED_DECORATORS=org.eclipse.cdt.ui.indexedFiles\:false,org.eclipse.mylyn.context.ui.decorator.interest\:true,org.eclipse.mylyn.tasks.ui.decorators.task\:true,org.eclipse.mylyn.team.ui.changeset.decorator\:true,org.eclipse.team.cvs.ui.decorator\:true,org.eclipse.ui.LinkedResourceDecorator\:true,org.eclipse.ui.ContentTypeDecorator\:true,
|
|
@ -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_ftdi.exe"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="--file fury_ft2232_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_ftdi.exe"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="--file fury_ft2232.cfg"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc}"/>
|
||||
</launchConfiguration>
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.cdt.debug.gdbjtag.launchConfigurationType">
|
||||
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.delay" value="3"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="false"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value="${workspace_loc:\RTOSDemo\RTOSDemo.axf}"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value="target extended-remote localhost:3333 monitor sleep 1000 b main monitor sleep 1000 monitor soft_reset_halt monitor sleep 1000 "/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="Generic"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="false"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value="a"/>
|
||||
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="3333"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.runCommands" value=""/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="false"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value="${workspace_loc:\RTOSDemo\RTOSDemo.axf}"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useRemoteTarget" value="false"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbremote.core.imageFileName" value="C:\E\Dev\FreeRTOS\Demo\CORTEX_LM3S8962_Eclipse\RTOSDemo\RTOSDemo.axf"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbremote.core.initCommands" value="target extended-remote localhost:3333 b main monitor soft_reset_halt monitor sleep 500 continue clear main "/>
|
||||
<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-none-eabi-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.FORMAT" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><contentList/>"/>
|
||||
<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/> "/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="RTOSDemo.axf"/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="RTOSDemo"/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="0.1109417601"/>
|
||||
<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,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<section name="org.eclipse.debug.ui.LAUNCH_CONFIGURATIONS_DIALOG_SECTION">
|
||||
<item value="944" key="DIALOG_WIDTH"/>
|
||||
<item value="154" key="DIALOG_Y_ORIGIN"/>
|
||||
<item value=", org.eclipse.cdt.debug.gdbjtag.launchConfigurationType, org.eclipse.ui.externaltools.ProgramLaunchConfigurationType, " key="org.eclipse.debug.ui.EXPANDED_NODES"/>
|
||||
<item value="640" key="DIALOG_HEIGHT"/>
|
||||
<item value="274" key="DIALOG_X_ORIGIN"/>
|
||||
<item value="237" key="org.eclipse.debug.ui.DIALOG_SASH_WEIGHTS_1"/>
|
||||
<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"/>
|
||||
<item value="762" key="org.eclipse.debug.ui.DIALOG_SASH_WEIGHTS_2"/>
|
||||
</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="350" key="DIALOG_HEIGHT"/>
|
||||
<item value="301" 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,24 @@
|
|||
<?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 Programmer.launch"/> "/>
|
||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="OpenOCD Server.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"/> "/>
|
||||
</mruHistory>
|
||||
<favorites/>
|
||||
</launchGroup>
|
||||
<launchGroup id="org.eclipse.debug.ui.launchGroup.run">
|
||||
<mruHistory/>
|
||||
<favorites/>
|
||||
</launchGroup>
|
||||
</launchHistory>
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<section name="UpdateAndInstallDialog">
|
||||
<item value="774" key="DIALOG_WIDTH"/>
|
||||
<item value="0" key="DIALOG_Y_ORIGIN"/>
|
||||
<item value="539" key="DIALOG_HEIGHT"/>
|
||||
<item value="0" 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,3 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<licenses>
|
||||
<license digest="393e81018e19e7b78bac6c9ecfbd9c30"/> <license digest="9961e30817cebc0145c8a9feb075b583"/></licenses>
|
|
@ -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,20 @@
|
|||
<?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.problem">
|
||||
</section>
|
||||
<section name="org.eclipse.ui.views.task">
|
||||
</section>
|
||||
<section name="CleanDialogSettings">
|
||||
<item value="443" key="DIALOG_WIDTH"/>
|
||||
<item value="true" key="BUILD_NOW"/>
|
||||
<item value="true" key="BUILD_ALL"/>
|
||||
<item value="251" key="DIALOG_Y_ORIGIN"/>
|
||||
<item value="479" key="DIALOG_X_ORIGIN"/>
|
||||
<item value="416" key="DIALOG_HEIGHT"/>
|
||||
<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,31 @@
|
|||
<?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="421" key="DIALOG_Y_ORIGIN"/>
|
||||
<item value="763" 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="TaskList" key="selection"/>
|
||||
<list key="findhistory">
|
||||
<item value="tasklist"/>
|
||||
<item value="ulRunTimeCounter"/>
|
||||
<item value="configGENERATE_RUN_TIME_STATS"/>
|
||||
<item value="run_time"/>
|
||||
<item value="libdriver"/>
|
||||
<item value="luminarydrivers"/>
|
||||
<item value="luminary"/>
|
||||
<item value="driverlil"/>
|
||||
</list>
|
||||
<list key="replacehistory">
|
||||
<item value="prvCopyDataToQueue"/>
|
||||
</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,529 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<workbench progressCount="15" 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="98" y="22"/>
|
||||
<coolItem id="org.eclipse.ui.WorkingSetActionSet" itemType="typeToolBarContribution" x="50" y="22"/>
|
||||
<coolItem id="org.eclipse.ui.edit.text.actionSet.presentation" itemType="typeToolBarContribution" x="85" 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.ui.DefaultTextEditor" itemType="typePlaceholder" x="-1" y="-1"/>
|
||||
<coolItem id="org.eclipse.cdt.ui.editor.CEditor" itemType="typeToolBarContribution" 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.presentations.WorkbenchPresentationFactory">
|
||||
<part id="0"/>
|
||||
</presentation>
|
||||
</folder>
|
||||
</info>
|
||||
</editorArea>
|
||||
<editor focus="true" id="org.eclipse.cdt.ui.editor.CEditor" name="main.c" partName="main.c" path="C:/E/Dev/FreeRTOS/WorkingCopy3/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/main.c" title="main.c" tooltip="RTOSDemo/main.c" workbook="DefaultEditorWorkbook">
|
||||
<input factoryID="org.eclipse.ui.part.FileEditorInputFactory" path="/RTOSDemo/main.c"/>
|
||||
<editorState selectionLength="0" selectionOffset="0"/>
|
||||
</editor>
|
||||
</editors>
|
||||
<views>
|
||||
<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.ProgressView" partName="Progress">
|
||||
<viewState/>
|
||||
</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"/>
|
||||
</filters>
|
||||
<expanded>
|
||||
<element path="/RTOSDemo"/>
|
||||
</expanded>
|
||||
</viewState>
|
||||
</view>
|
||||
<view id="org.eclipse.debug.ui.DebugView" partName="Debug">
|
||||
<viewState/>
|
||||
</view>
|
||||
<view id="org.eclipse.ui.views.ProblemView" partName="Problems">
|
||||
<viewState PRIMARY_SORT_FIELD="org.eclipse.ui.ide.severityAndDescriptionField" categoryGroup="org.eclipse.ui.ide.severity" markerContentGenerator="org.eclipse.ui.ide.problemsGenerator" partName="Problems">
|
||||
<expanded>
<category IMemento.internal.id="Errors"/>
|
||||
<category IMemento.internal.id="Warnings"/>
|
||||
</expanded>
|
||||
<columnWidths org.eclipse.ui.ide.locationField="0" org.eclipse.ui.ide.markerType="0" org.eclipse.ui.ide.pathField="0" org.eclipse.ui.ide.resourceField="0" org.eclipse.ui.ide.severityAndDescriptionField="0"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.severityAndDescriptionField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.resourceField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.pathField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.locationField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.markerType"/>
|
||||
</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="153" 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.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"/>
|
||||
<alwaysOnActionSet id="org.eclipse.mylyn.context.ui.actionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.mylyn.doc.actionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.mylyn.tasks.ui.navigation"/>
|
||||
<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.presentations.WorkbenchPresentationFactory">
|
||||
<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"/>
|
||||
</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.65869564" ratioLeft="606" ratioRight="314" 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.presentations.WorkbenchPresentationFactory">
|
||||
<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"/>
|
||||
</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.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.mylyn.context.ui.actionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.mylyn.doc.actionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.mylyn.tasks.ui.navigation"/>
|
||||
<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.ui.views.ProgressView"/>
|
||||
<view id="org.eclipse.debug.ui.DebugView"/>
|
||||
<view id="org.eclipse.debug.ui.VariableView"/>
|
||||
<view id="org.eclipse.debug.ui.BreakpointView"/>
|
||||
<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.presentations.WorkbenchPresentationFactory">
<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.775" ratioLeft="713" ratioRight="207" 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.ui.views.ProgressView" label="Progress"/>
|
||||
<page content="org.eclipse.ui.views.BookmarkView" label="LabelNotFound"/>
|
||||
<page content="org.eclipse.ui.views.PropertySheet" label="LabelNotFound"/>
|
||||
<page content="org.eclipse.debug.ui.MemoryView" label="LabelNotFound"/>
|
||||
<page content="org.eclipse.debug.ui.ModuleView" label="LabelNotFound"/>
|
||||
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
<part id="0"/>
|
||||
<part id="1"/>
|
||||
<part id="2"/>
|
||||
<part id="3"/>
|
||||
</presentation>
|
||||
</folder>
|
||||
</info>
|
||||
<info part="org.eclipse.ui.editorss" ratio="0.29661018" ratioLeft="210" ratioRight="498" relationship="4" relative="org.eclipse.debug.internal.ui.NavigatorFolderView"/>
|
||||
<info folder="true" part="org.eclipse.debug.internal.ui.OutlineFolderView" ratio="0.5406768" ratioLeft="751" ratioRight="638" 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.presentations.WorkbenchPresentationFactory"/>
|
||||
</folder>
|
||||
</info>
|
||||
<info folder="true" part="org.eclipse.debug.internal.ui.ToolsFolderView" ratio="0.5" ratioLeft="696" ratioRight="696" 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="LabelNotFound"/>
|
||||
<page content="org.eclipse.debug.ui.RegisterView" label="LabelNotFound"/>
|
||||
<page content="org.eclipse.cdt.debug.ui.SignalsView" label="LabelNotFound"/>
|
||||
<page content="org.eclipse.cdt.debug.ui.ModulesView" label="LabelNotFound"/>
|
||||
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
<part id="0"/>
|
||||
<part id="1"/>
|
||||
</presentation>
|
||||
</folder>
|
||||
</info>
|
||||
</mainWindow>
|
||||
</layout>
|
||||
</perspective>
|
||||
</perspectives>
|
||||
<workingSets>
|
||||
<workingSet IMemento.internal.id="FreeRTOS_LM3S8962_Demo"/>
|
||||
</workingSets>
|
||||
<navigationHistory>
|
||||
<editors>
|
||||
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" path="/RTOSDemo/main.c"/>
|
||||
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" path="/RTOSDemo/FreeRTOS.org Source/tasks.c"/>
|
||||
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" path="/RTOSDemo/timertest.c"/>
|
||||
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" path="/RTOSDemo/FreeRTOSConfig.h"/>
|
||||
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" path="/RTOSDemo/Common Demo Files/drivers/LuminaryMicro/lmi_timer.h"/>
|
||||
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" path="/RTOSDemo/webserver/uIP_Task.c"/>
|
||||
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" path="/RTOSDemo/startup.c"/>
|
||||
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.make.editor" path="/RTOSDemo/Makefile"/>
|
||||
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" path="/RTOSDemo/FreeRTOS.org Source/include/task.h"/>
|
||||
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" path="/RTOSDemo/main.c"/>
|
||||
</editors>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40413" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40462" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40464" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40539" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40591" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40609" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40815" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40591" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40609" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40815" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40591" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40609" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40683" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="62612" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="62664" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="62718" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="63227" y="4"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="63313" y="6"/>
|
||||
</item>
|
||||
<item historyLabel="timertest.c" index="2">
|
||||
<position info="not_deleted" x="5016" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="timertest.c" index="2">
|
||||
<position info="not_deleted" x="5283" y="24"/>
|
||||
</item>
|
||||
<item historyLabel="timertest.c" index="2">
|
||||
<position info="not_deleted" x="3135" y="24"/>
|
||||
</item>
|
||||
<item historyLabel="main.c" index="0">
|
||||
<position info="not_deleted" x="8966" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="timertest.c" index="2">
|
||||
<position info="not_deleted" x="3996" y="917"/>
|
||||
</item>
|
||||
<item historyLabel="main.c" index="0">
|
||||
<position info="not_deleted" x="8966" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="FreeRTOSConfig.h" index="3">
|
||||
<position info="not_deleted" x="4681" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="main.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="timertest.c" index="2">
|
||||
<position info="not_deleted" x="2617" y="22"/>
|
||||
</item>
|
||||
<item historyLabel="main.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="lmi_timer.h" index="4">
|
||||
<position info="not_deleted" x="5331" y="16"/>
|
||||
</item>
|
||||
<item historyLabel="main.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="timertest.c" index="2">
|
||||
<position info="not_deleted" x="3696" y="59"/>
|
||||
</item>
|
||||
<item historyLabel="FreeRTOSConfig.h" index="3">
|
||||
<position info="not_deleted" x="4846" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="main.c" index="0">
|
||||
<position info="not_deleted" x="16567" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="FreeRTOSConfig.h" index="3">
|
||||
<position info="not_deleted" x="4573" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="uIP_Task.c" index="5">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="main.c" index="0">
|
||||
<position info="not_deleted" x="9865" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="main.c" index="0">
|
||||
<position info="not_deleted" x="8966" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40413" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="startup.c" index="6">
|
||||
<position info="not_deleted" x="9224" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="main.c" index="0">
|
||||
<position info="not_deleted" x="8966" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40413" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="timertest.c" index="2">
|
||||
<position info="not_deleted" x="5949" y="25"/>
|
||||
</item>
|
||||
<item historyLabel="main.c" index="0">
|
||||
<position info="not_deleted" x="8966" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="Makefile" index="7">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40413" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="40688" y="37"/>
|
||||
</item>
|
||||
<item historyLabel="tasks.c" index="1">
|
||||
<position info="not_deleted" x="62316" y="37"/>
|
||||
</item>
|
||||
<item historyLabel="Makefile" index="7">
|
||||
<position info="not_deleted" x="3936" y="7"/>
|
||||
</item>
|
||||
<item historyLabel="task.h" index="8">
|
||||
<position info="not_deleted" x="29041" y="0"/>
|
||||
</item>
|
||||
<item active="true" historyLabel="main.c" index="9">
|
||||
<position/>
|
||||
</item>
|
||||
</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="task.h" tooltip="RTOSDemo/FreeRTOS.org Source/include/task.h">
|
||||
<persistable path="/RTOSDemo/FreeRTOS.org Source/include/task.h"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="uIP_Task.c" tooltip="RTOSDemo/webserver/uIP_Task.c">
|
||||
<persistable path="/RTOSDemo/webserver/uIP_Task.c"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="lmi_timer.h" tooltip="RTOSDemo/Common Demo Files/drivers/LuminaryMicro/lmi_timer.h">
|
||||
<persistable path="/RTOSDemo/Common Demo Files/drivers/LuminaryMicro/lmi_timer.h"/>
|
||||
</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="portmacro.h" tooltip="RTOSDemo/FreeRTOS.org Source/portable/GCC/ARM_CM3/portmacro.h">
|
||||
<persistable path="/RTOSDemo/FreeRTOS.org Source/portable/GCC/ARM_CM3/portmacro.h"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="emac.c" tooltip="RTOSDemo/webserver/emac.c">
|
||||
<persistable path="/RTOSDemo/webserver/emac.c"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="port.c" tooltip="RTOSDemo/FreeRTOS.org Source/portable/GCC/ARM_CM3/port.c">
|
||||
<persistable path="/RTOSDemo/FreeRTOS.org Source/portable/GCC/ARM_CM3/port.c"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="list.c" tooltip="RTOSDemo/FreeRTOS.org Source/list.c">
|
||||
<persistable path="/RTOSDemo/FreeRTOS.org Source/list.c"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="startup.c" tooltip="RTOSDemo/startup.c">
|
||||
<persistable path="/RTOSDemo/startup.c"/>
|
||||
</file>
|
||||
<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="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.ui.DefaultTextEditor" name=".cproject" tooltip="RTOSDemo/.cproject">
|
||||
<persistable path="/RTOSDemo/.cproject"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.ui.DefaultTextEditor" name=".project" tooltip="RTOSDemo/.project">
|
||||
<persistable path="/RTOSDemo/.project"/>
|
||||
</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="main.c" tooltip="RTOSDemo/main.c">
|
||||
<persistable path="/RTOSDemo/main.c"/>
|
||||
</file>
|
||||
</mruList>
|
||||
</workbench>
|
|
@ -0,0 +1,68 @@
|
|||
<?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/FreeRTOSConfig.h" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/ParTest" type="2"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/bitmap.h" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/lcd_message.h" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/main.c" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/rit128x96x4.c" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/startup.c" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/timertest.c" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/clock-arch.h" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/emac.c" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/emac.h" 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/webserver/http-strings.h" 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/httpd-cgi.h" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/httpd-fs" type="2"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/httpd-fs.c" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/httpd-fs.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/webserver/httpd-fsdata.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/webserver/httpd.h" 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/webserver/uip-conf.h" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/webserver/webserver.h" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/osram128x64x4.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/FreeRTOS.org Source/list.c" type="1"/>
|
||||
<item factoryID="org.eclipse.cdt.ui.PersistableCElementFactory" path="/RTOSDemo/FreeRTOS.org Source/portable/GCC/ARM_CM3" type="2"/>
|
||||
<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/FreeRTOS.org Source/queue.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/Minimal" type="2"/>
|
||||
<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-addrlabels.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/ethernet/uIP/uip-1.0/uip/lc.h" 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/psock.h" 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/ethernet/uIP/uip-1.0/uip/timer.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-fw.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/Common Demo Files/ethernet/uIP/uip-1.0/uip/uip-neighbor.c" 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/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/ethernet/uIP/uip-1.0/uip/uip-split.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.h" 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/uip_arp.h" 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/uiplib.h" 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/include" type="2"/>
|
||||
<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/RTOSDemo/Makefile" type="1"/>
|
||||
<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/RTOSDemo/standalone.ld" type="1"/>
|
||||
</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>
|
|
@ -0,0 +1 @@
|
|||
org.eclipse.core.runtime=1
|
228
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/.cproject
Normal file
228
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/.cproject
Normal file
|
@ -0,0 +1,228 @@
|
|||
<?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="cs-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" valueType="undefIncludePath"/>
|
||||
<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" valueType="undefIncludePath"/>
|
||||
<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" valueType="undefIncludePath"/>
|
||||
<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-none-eabi-gcc.exe" 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
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/.project
Normal file
97
20091005/Demo/CORTEX_LM3Sxxxx_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>cs-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
|
107
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/FreeRTOSConfig.h
Normal file
107
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/FreeRTOSConfig.h
Normal file
|
@ -0,0 +1,107 @@
|
|||
/*
|
||||
FreeRTOS V5.4.2 - Copyright (C) 2009 Real Time Engineers Ltd.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License (version 2) as published by the
|
||||
Free Software Foundation and modified by the FreeRTOS exception.
|
||||
**NOTE** The exception to the GPL is included to allow you to distribute a
|
||||
combined work that includes FreeRTOS without being obliged to provide the
|
||||
source code for proprietary components outside of the FreeRTOS kernel.
|
||||
Alternative commercial license and support terms are also available upon
|
||||
request. See the licensing section of http://www.FreeRTOS.org for full
|
||||
license details.
|
||||
|
||||
FreeRTOS 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; if not, write to the Free Software Foundation, Inc., 59
|
||||
Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* Looking for a quick start? Then check out the FreeRTOS eBook! *
|
||||
* See http://www.FreeRTOS.org/Documentation for details *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
1 tab == 4 spaces!
|
||||
|
||||
Please ensure to read the configuration and relevant port sections of the
|
||||
online documentation.
|
||||
|
||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||
contact details.
|
||||
|
||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||
critical systems.
|
||||
|
||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||
licensing and training services.
|
||||
*/
|
||||
|
||||
#ifndef FREERTOS_CONFIG_H
|
||||
#define FREERTOS_CONFIG_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.
|
||||
*
|
||||
* See http://www.freertos.org/a00110.html.
|
||||
*----------------------------------------------------------*/
|
||||
|
||||
#define configUSE_PREEMPTION 1
|
||||
#define configUSE_IDLE_HOOK 0
|
||||
#define configUSE_TICK_HOOK 1
|
||||
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 50000000 )
|
||||
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 80 )
|
||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 24000 ) )
|
||||
#define configMAX_TASK_NAME_LEN ( 12 )
|
||||
#define configUSE_TRACE_FACILITY 1
|
||||
#define configUSE_16_BIT_TICKS 0
|
||||
#define configIDLE_SHOULD_YIELD 0
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
#define configUSE_MUTEXES 1
|
||||
#define configCHECK_FOR_STACK_OVERFLOW 2
|
||||
#define configUSE_RECURSIVE_MUTEXES 1
|
||||
#define configQUEUE_REGISTRY_SIZE 10
|
||||
#define configGENERATE_RUN_TIME_STATS 1
|
||||
|
||||
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
||||
#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_uxTaskGetStackHighWaterMark 1
|
||||
|
||||
|
||||
|
||||
#define configKERNEL_INTERRUPT_PRIORITY ( ( unsigned portCHAR ) 7 << ( unsigned portCHAR ) 5 ) /* Priority 7, or 255 as only the top three bits are implemented. This is the lowest priority. */
|
||||
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( ( unsigned portCHAR ) 5 << ( unsigned portCHAR ) 5 ) /* Priority 5, or 160 as only the top three bits are implemented. */
|
||||
|
||||
extern volatile unsigned long ulHighFrequencyTimerTicks;
|
||||
/* There is already a high frequency timer running - just reset its count back
|
||||
to zero. */
|
||||
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() ( ulHighFrequencyTimerTicks = 0UL )
|
||||
#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTimerTicks
|
||||
|
||||
#endif /* FREERTOS_CONFIG_H */
|
115
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/IntQueueTimer.c
Normal file
115
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/IntQueueTimer.c
Normal file
|
@ -0,0 +1,115 @@
|
|||
/*
|
||||
FreeRTOS V5.4.2 - Copyright (C) 2009 Real Time Engineers Ltd.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License (version 2) as published by the
|
||||
Free Software Foundation and modified by the FreeRTOS exception.
|
||||
**NOTE** The exception to the GPL is included to allow you to distribute a
|
||||
combined work that includes FreeRTOS without being obliged to provide the
|
||||
source code for proprietary components outside of the FreeRTOS kernel.
|
||||
Alternative commercial license and support terms are also available upon
|
||||
request. See the licensing section of http://www.FreeRTOS.org for full
|
||||
license details.
|
||||
|
||||
FreeRTOS 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; if not, write to the Free Software Foundation, Inc., 59
|
||||
Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* Looking for a quick start? Then check out the FreeRTOS eBook! *
|
||||
* See http://www.FreeRTOS.org/Documentation for details *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
1 tab == 4 spaces!
|
||||
|
||||
Please ensure to read the configuration and relevant port sections of the
|
||||
online documentation.
|
||||
|
||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||
contact details.
|
||||
|
||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||
critical systems.
|
||||
|
||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||
licensing and training services.
|
||||
*/
|
||||
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
|
||||
/* Demo includes. */
|
||||
#include "IntQueueTimer.h"
|
||||
#include "IntQueue.h"
|
||||
|
||||
/* Library includes. */
|
||||
#include "hw_ints.h"
|
||||
#include "hw_memmap.h"
|
||||
#include "hw_types.h"
|
||||
#include "interrupt.h"
|
||||
#include "sysctl.h"
|
||||
#include "lmi_timer.h"
|
||||
|
||||
#define tmrTIMER_2_FREQUENCY ( 2000UL )
|
||||
#define tmrTIMER_3_FREQUENCY ( 2001UL )
|
||||
|
||||
void vInitialiseTimerForIntQueueTest( void )
|
||||
{
|
||||
unsigned long ulFrequency;
|
||||
|
||||
/* Timer 2 and 3 are utilised for this test. */
|
||||
SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER2 );
|
||||
SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER3 );
|
||||
TimerConfigure( TIMER2_BASE, TIMER_CFG_32_BIT_PER );
|
||||
TimerConfigure( TIMER3_BASE, TIMER_CFG_32_BIT_PER );
|
||||
|
||||
/* Set the timer interrupts to be above the kernel. The interrupts are
|
||||
assigned different priorities so they nest with each other. */
|
||||
IntPrioritySet( INT_TIMER2A, configMAX_SYSCALL_INTERRUPT_PRIORITY + ( 1 << 5 ) ); /* Shift left 5 as only the top 3 bits are implemented. */
|
||||
IntPrioritySet( INT_TIMER3A, configMAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||
|
||||
/* Ensure interrupts do not start until the scheduler is running. */
|
||||
portDISABLE_INTERRUPTS();
|
||||
|
||||
/* The rate at which the timers will interrupt. */
|
||||
ulFrequency = configCPU_CLOCK_HZ / tmrTIMER_2_FREQUENCY;
|
||||
TimerLoadSet( TIMER2_BASE, TIMER_A, ulFrequency );
|
||||
IntEnable( INT_TIMER2A );
|
||||
TimerIntEnable( TIMER2_BASE, TIMER_TIMA_TIMEOUT );
|
||||
|
||||
/* The rate at which the timers will interrupt. */
|
||||
ulFrequency = configCPU_CLOCK_HZ / tmrTIMER_3_FREQUENCY;
|
||||
TimerLoadSet( TIMER3_BASE, TIMER_A, ulFrequency );
|
||||
IntEnable( INT_TIMER3A );
|
||||
TimerIntEnable( TIMER3_BASE, TIMER_TIMA_TIMEOUT );
|
||||
|
||||
/* Enable both timers. */
|
||||
TimerEnable( TIMER2_BASE, TIMER_A );
|
||||
TimerEnable( TIMER3_BASE, TIMER_A );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vT2InterruptHandler( void )
|
||||
{
|
||||
TimerIntClear( TIMER2_BASE, TIMER_TIMA_TIMEOUT );
|
||||
portEND_SWITCHING_ISR( xFirstTimerHandler() );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vT3InterruptHandler( void )
|
||||
{
|
||||
TimerIntClear( TIMER3_BASE, TIMER_TIMA_TIMEOUT );
|
||||
portEND_SWITCHING_ISR( xSecondTimerHandler() );
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
FreeRTOS V5.4.2 - Copyright (C) 2009 Real Time Engineers Ltd.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License (version 2) as published by the
|
||||
Free Software Foundation and modified by the FreeRTOS exception.
|
||||
**NOTE** The exception to the GPL is included to allow you to distribute a
|
||||
combined work that includes FreeRTOS without being obliged to provide the
|
||||
source code for proprietary components outside of the FreeRTOS kernel.
|
||||
Alternative commercial license and support terms are also available upon
|
||||
request. See the licensing section of http://www.FreeRTOS.org for full
|
||||
license details.
|
||||
|
||||
FreeRTOS 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; if not, write to the Free Software Foundation, Inc., 59
|
||||
Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* Looking for a quick start? Then check out the FreeRTOS eBook! *
|
||||
* See http://www.FreeRTOS.org/Documentation for details *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
1 tab == 4 spaces!
|
||||
|
||||
Please ensure to read the configuration and relevant port sections of the
|
||||
online documentation.
|
||||
|
||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||
contact details.
|
||||
|
||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||
critical systems.
|
||||
|
||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||
licensing and training services.
|
||||
*/
|
||||
|
||||
#ifndef INT_QUEUE_TIMER_H
|
||||
#define INT_QUEUE_TIMER_H
|
||||
|
||||
void vInitialiseTimerForIntQueueTest( void );
|
||||
portBASE_TYPE xTimer0Handler( void );
|
||||
portBASE_TYPE xTimer1Handler( void );
|
||||
|
||||
#endif
|
||||
|
135
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/Makefile
Normal file
135
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/Makefile
Normal file
|
@ -0,0 +1,135 @@
|
|||
#/*
|
||||
# FreeRTOS V5.4.2 - Copyright (C) 2009 Real Time Engineers Ltd.
|
||||
#
|
||||
# This file is part of the FreeRTOS distribution.
|
||||
#
|
||||
# FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License (version 2) as published by the
|
||||
# Free Software Foundation and modified by the FreeRTOS exception.
|
||||
# **NOTE** The exception to the GPL is included to allow you to distribute a
|
||||
# combined work that includes FreeRTOS without being obliged to provide the
|
||||
# source code for proprietary components outside of the FreeRTOS kernel.
|
||||
# Alternative commercial license and support terms are also available upon
|
||||
# request. See the licensing section of http://www.FreeRTOS.org for full
|
||||
# license details.
|
||||
#
|
||||
# FreeRTOS 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; if not, write to the Free Software Foundation, Inc., 59
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
#
|
||||
#
|
||||
# ***************************************************************************
|
||||
# * *
|
||||
# * Looking for a quick start? Then check out the FreeRTOS eBook! *
|
||||
# * See http://www.FreeRTOS.org/Documentation for details *
|
||||
# * *
|
||||
# ***************************************************************************
|
||||
#
|
||||
# 1 tab == 4 spaces!
|
||||
#
|
||||
# Please ensure to read the configuration and relevant port sections of the
|
||||
# online documentation.
|
||||
#
|
||||
# http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||
# contact details.
|
||||
#
|
||||
# http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||
# critical systems.
|
||||
#
|
||||
# http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||
# licensing and training services.
|
||||
#*/
|
||||
|
||||
|
||||
#/*************************************************************************
|
||||
# * Please ensure to read http://www.freertos.org/portLM3Sxxxx_Eclipse.html
|
||||
# * which provides information on configuring and running this demo for the
|
||||
# * various Luminary Micro EKs.
|
||||
# *************************************************************************/
|
||||
|
||||
RTOS_SOURCE_DIR=../../../Source
|
||||
DEMO_COMMON_DIR=../../Common/Minimal
|
||||
DEMO_INCLUDE_DIR=../../Common/include
|
||||
UIP_COMMON_DIR=../../Common/ethernet/uIP/uip-1.0/uip
|
||||
LUMINARY_DRIVER_DIR=../../Common/drivers/LuminaryMicro
|
||||
|
||||
CC=arm-none-eabi-gcc
|
||||
OBJCOPY=arm-none-eabi-objcopy
|
||||
LDSCRIPT=standalone.ld
|
||||
|
||||
# should use --gc-sections but the debugger does not seem to be able to cope with the option.
|
||||
LINKER_FLAGS=-nostartfiles -Xlinker -oRTOSDemo.axf -Xlinker -M -Xlinker -Map=rtosdemo.map -Xlinker --no-gc-sections
|
||||
|
||||
DEBUG=-g
|
||||
OPTIM=-O0
|
||||
|
||||
|
||||
CFLAGS=$(DEBUG) -I . -I $(RTOS_SOURCE_DIR)/include -I $(RTOS_SOURCE_DIR)/portable/GCC/ARM_CM3 \
|
||||
-I $(DEMO_INCLUDE_DIR) -D GCC_ARMCM3_LM3S102 -D inline= -mthumb -mcpu=cortex-m3 $(OPTIM) -T$(LDSCRIPT) \
|
||||
-D PACK_STRUCT_END=__attribute\(\(packed\)\) -D ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\) -D sprintf=usprintf -D snprintf=usnprintf -D printf=uipprintf \
|
||||
-I $(UIP_COMMON_DIR) -I ./webserver -ffunction-sections -fdata-sections -I $(LUMINARY_DRIVER_DIR)
|
||||
|
||||
SOURCE= main.c \
|
||||
timertest.c \
|
||||
./ParTest/ParTest.c \
|
||||
rit128x96x4.c \
|
||||
osram128x64x4.c \
|
||||
formike128x128x16.c \
|
||||
$(LUMINARY_DRIVER_DIR)/ustdlib.c \
|
||||
$(DEMO_COMMON_DIR)/BlockQ.c \
|
||||
$(DEMO_COMMON_DIR)/blocktim.c \
|
||||
$(DEMO_COMMON_DIR)/death.c \
|
||||
$(DEMO_COMMON_DIR)/integer.c \
|
||||
$(DEMO_COMMON_DIR)/PollQ.c \
|
||||
$(DEMO_COMMON_DIR)/semtest.c \
|
||||
$(DEMO_COMMON_DIR)/GenQTest.c \
|
||||
$(DEMO_COMMON_DIR)/QPeek.c \
|
||||
$(DEMO_COMMON_DIR)/recmutex.c \
|
||||
$(DEMO_COMMON_DIR)/IntQueue.c \
|
||||
./IntQueueTimer.c \
|
||||
./webserver/uIP_Task.c \
|
||||
./webserver/emac.c \
|
||||
./webserver/httpd.c \
|
||||
./webserver/httpd-cgi.c \
|
||||
./webserver/httpd-fs.c \
|
||||
./webserver/http-strings.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/ARM_CM3/port.c \
|
||||
$(RTOS_SOURCE_DIR)/portable/MemMang/heap_2.c
|
||||
|
||||
LIBS= $(LUMINARY_DRIVER_DIR)/arm-none-eabi-gcc/libdriver.a $(LUMINARY_DRIVER_DIR)/arm-none-eabi-gcc/libgr.a
|
||||
|
||||
OBJS = $(SOURCE:.c=.o)
|
||||
|
||||
all: RTOSDemo.bin
|
||||
|
||||
RTOSDemo.bin : RTOSDemo.axf
|
||||
$(OBJCOPY) RTOSDemo.axf -O binary RTOSDemo.bin
|
||||
|
||||
RTOSDemo.axf : $(OBJS) startup.o Makefile
|
||||
$(CC) $(CFLAGS) $(OBJS) startup.o $(LIBS) $(LINKER_FLAGS)
|
||||
|
||||
$(OBJS) : %.o : %.c Makefile FreeRTOSConfig.h
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
startup.o : startup.c Makefile
|
||||
$(CC) -c $(CFLAGS) -O1 startup.c -o startup.o
|
||||
|
||||
clean :
|
||||
touch Makefile
|
||||
cs-rm $(OBJS)
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
/*
|
||||
FreeRTOS V5.4.2 - Copyright (C) 2009 Real Time Engineers Ltd.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License (version 2) as published by the
|
||||
Free Software Foundation and modified by the FreeRTOS exception.
|
||||
**NOTE** The exception to the GPL is included to allow you to distribute a
|
||||
combined work that includes FreeRTOS without being obliged to provide the
|
||||
source code for proprietary components outside of the FreeRTOS kernel.
|
||||
Alternative commercial license and support terms are also available upon
|
||||
request. See the licensing section of http://www.FreeRTOS.org for full
|
||||
license details.
|
||||
|
||||
FreeRTOS 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; if not, write to the Free Software Foundation, Inc., 59
|
||||
Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* Looking for a quick start? Then check out the FreeRTOS eBook! *
|
||||
* See http://www.FreeRTOS.org/Documentation for details *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
1 tab == 4 spaces!
|
||||
|
||||
Please ensure to read the configuration and relevant port sections of the
|
||||
online documentation.
|
||||
|
||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||
contact details.
|
||||
|
||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||
critical systems.
|
||||
|
||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||
licensing and training services.
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------
|
||||
* Simple parallel port IO routines.
|
||||
*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
*/
|
||||
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
|
||||
/* Demo includes. */
|
||||
#include "partest.h"
|
||||
|
||||
/* Library includes. */
|
||||
#include "hw_types.h"
|
||||
#include "gpio.h"
|
||||
#include "hw_memmap.h"
|
||||
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vParTestInitialise( void )
|
||||
{
|
||||
GPIODirModeSet( GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_DIR_MODE_OUT );
|
||||
GPIOPadConfigSet( GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD );
|
||||
GPIOPinWrite( GPIO_PORTF_BASE, GPIO_PIN_0, 0 );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
|
||||
{
|
||||
/* There is only one LED. */
|
||||
( void ) uxLED;
|
||||
|
||||
GPIOPinWrite( GPIO_PORTF_BASE, GPIO_PIN_0, xValue );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
unsigned portBASE_TYPE uxParTestGetLED( unsigned portBASE_TYPE uxLED )
|
||||
{
|
||||
/* There is only one LED. */
|
||||
( void ) uxLED;
|
||||
|
||||
return GPIOPinRead( GPIO_PORTF_BASE, GPIO_PIN_0 );
|
||||
}
|
||||
|
||||
|
336
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/bitmap.h
Normal file
336
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/bitmap.h
Normal file
|
@ -0,0 +1,336 @@
|
|||
#ifndef BITMAP_H
|
||||
#define BITMAP_H
|
||||
|
||||
#define bmpBITMAP_HEIGHT 50
|
||||
#define bmpBITMAP_WIDTH 128
|
||||
|
||||
const unsigned char pucBasicBitmap[] =
|
||||
{
|
||||
0x00, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0x00, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0xaa, 0xaf, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa,
|
||||
0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
|
||||
0x00, 0x8f, 0xff, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x78, 0x8f, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x88, 0x77, 0x77, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff,
|
||||
0xff, 0xff, 0xf0, 0x00, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff,
|
||||
0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77,
|
||||
0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xfa, 0xaa,
|
||||
0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
|
||||
0x77, 0x77, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77,
|
||||
0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f,
|
||||
0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77,
|
||||
0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff,
|
||||
0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77,
|
||||
0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0x00, 0x8f, 0x00, 0xff,
|
||||
0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
|
||||
0x77, 0x77, 0x78, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77,
|
||||
0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x07,
|
||||
0x00, 0x70, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77,
|
||||
0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0x88, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff,
|
||||
0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff,
|
||||
0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa,
|
||||
0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf8,
|
||||
0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77,
|
||||
0xff, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x8f, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77,
|
||||
0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff,
|
||||
0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f,
|
||||
0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0x87, 0x77,
|
||||
0x77, 0x77, 0x78, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x88, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x87, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77,
|
||||
0x78, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x80, 0x00, 0x8f, 0x8f, 0xff, 0x87, 0x77, 0x77, 0x77, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa,
|
||||
0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x8f, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
|
||||
0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff,
|
||||
0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x07, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77,
|
||||
0x77, 0x77, 0x77, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8,
|
||||
0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77,
|
||||
0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x0f, 0x00, 0x8f, 0x00, 0xff,
|
||||
0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f,
|
||||
0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff,
|
||||
0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f,
|
||||
0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77,
|
||||
0x78, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff,
|
||||
0xff, 0xff, 0x70, 0x08, 0x00, 0x88, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x88, 0x88, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa,
|
||||
0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x70, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0x77, 0x77,
|
||||
0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77,
|
||||
0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x87, 0x77, 0x77, 0x77,
|
||||
0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff,
|
||||
0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0xff, 0xff,
|
||||
0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f,
|
||||
0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x87, 0x88,
|
||||
0x88, 0x8f, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff,
|
||||
0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x7f, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff,
|
||||
0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf7, 0x88, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa,
|
||||
0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf7,
|
||||
0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77,
|
||||
0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78,
|
||||
0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x88, 0x88, 0x88, 0xff, 0x87, 0x77, 0x77, 0x77,
|
||||
0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77,
|
||||
0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0xff,
|
||||
0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0x87, 0x77,
|
||||
0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00,
|
||||
0x00, 0x00, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff,
|
||||
0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff,
|
||||
0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff,
|
||||
0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x07, 0xff, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x88,
|
||||
0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x87, 0x77, 0x77, 0x77,
|
||||
0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa,
|
||||
0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0x70, 0x08, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x07, 0x70, 0x07,
|
||||
0x88, 0x88, 0x88, 0xff, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfa, 0xaa,
|
||||
0xaa, 0xaf, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa,
|
||||
0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa0, 0x00, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00,
|
||||
0x00 };
|
||||
|
||||
const unsigned char pucGrLibBitmap[] =
|
||||
{
|
||||
IMAGE_FMT_4BPP_COMP,
|
||||
124, 0,
|
||||
49, 0,
|
||||
|
||||
15,
|
||||
0x00, 0x00, 0x00,
|
||||
0x00, 0x0c, 0x00,
|
||||
0x20, 0x44, 0x20,
|
||||
0x00, 0x75, 0x00,
|
||||
0x69, 0x69, 0x69,
|
||||
0x00, 0xc2, 0x00,
|
||||
0x00, 0xd2, 0x00,
|
||||
0x38, 0xb6, 0x38,
|
||||
0x00, 0xea, 0x00,
|
||||
0x00, 0xf2, 0x00,
|
||||
0xaa, 0xb2, 0xaa,
|
||||
0x65, 0xff, 0x65,
|
||||
0x69, 0xff, 0x69,
|
||||
0x6d, 0xff, 0x6d,
|
||||
0x71, 0xff, 0x71,
|
||||
0xff, 0xff, 0xff,
|
||||
|
||||
0x03, 0x21, 0x33, 0x53, 0x33, 0x33, 0x33, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f,
|
||||
0x17, 0x07, 0x06, 0x35, 0x33, 0x12, 0x03, 0x23, 0x96, 0x68, 0x88, 0x88,
|
||||
0x88, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, 0x17, 0x07, 0x06, 0x86, 0x69, 0x32,
|
||||
0x03, 0x29, 0x66, 0x65, 0x66, 0x66, 0x66, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f,
|
||||
0x17, 0x07, 0x06, 0x56, 0x66, 0x92, 0x07, 0x78, 0x63, 0x11, 0x11, 0x11,
|
||||
0xe9, 0xd4, 0xa7, 0xf0, 0x5f, 0x17, 0x07, 0x07, 0x11, 0x36, 0x87, 0x78,
|
||||
0x0f, 0x63, 0x00, 0x00, 0x00, 0xe9, 0xd4, 0xa7, 0x5f, 0xe0, 0x17, 0x07,
|
||||
0x07, 0x00, 0x36, 0x87, 0x78, 0x63, 0xfe, 0x07, 0x07, 0x77, 0x2f, 0x07,
|
||||
0x07, 0x02, 0x36, 0x1e, 0x87, 0x78, 0x63, 0x07, 0x07, 0x77, 0x2f, 0x00,
|
||||
0x10, 0x01, 0x22, 0x20, 0x07, 0x00, 0x00, 0x22, 0x21, 0x84, 0x03, 0x36,
|
||||
0x87, 0x78, 0x63, 0x02, 0x02, 0xaa, 0x01, 0xa2, 0x22, 0x20, 0x02, 0x77,
|
||||
0x77, 0x77, 0xe9, 0x3a, 0x22, 0x22, 0x7a, 0xa4, 0x71, 0x20, 0x0a, 0x27,
|
||||
0xb8, 0x29, 0x72, 0xb2, 0x9e, 0x93, 0x36, 0x87, 0x78, 0x40, 0x63, 0x62,
|
||||
0x2a, 0xff, 0xf2, 0xaa, 0x40, 0x07, 0x08, 0xad, 0xdd, 0xdd, 0xdd, 0xe9,
|
||||
0xd7, 0x72, 0x00, 0x40, 0x00, 0xa6, 0xdd, 0xda, 0x70, 0x00, 0x00, 0x02,
|
||||
0x00, 0x77, 0xdd, 0xdc, 0xcc, 0xcd, 0xde, 0xc7, 0x20, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0x27, 0xde, 0xdc, 0x08, 0xcc, 0xcc, 0xdd, 0xea, 0x99,
|
||||
0x36, 0x87, 0x78, 0x40, 0x63, 0x69, 0x02, 0xaf, 0xaa, 0xf2, 0x2f, 0xa0,
|
||||
0x04, 0x02, 0xdb, 0xbb, 0xbb, 0xbb, 0xe9, 0xbc, 0xe7, 0x10, 0x20, 0x00,
|
||||
0x07, 0xa5, 0xbb, 0xbd, 0x70, 0x00, 0x10, 0x00, 0x27, 0xec, 0x3b, 0xcd,
|
||||
0xd7, 0x00, 0x00, 0x80, 0x9f, 0xbd, 0x20, 0x00, 0x00, 0x36, 0x87, 0x78,
|
||||
0x40, 0x63, 0x69, 0x02, 0xfa, 0x2a, 0xf2, 0x2f, 0xa0, 0x31, 0x02, 0xdb,
|
||||
0x43, 0x31, 0x42, 0x00, 0x07, 0xa7, 0x0a, 0x70, 0x00, 0x02, 0xdd, 0x41,
|
||||
0xcc, 0x21, 0xce, 0x04, 0x70, 0x00, 0x00, 0x02, 0x7d, 0x39, 0xbc, 0xcb,
|
||||
0x00, 0xbb, 0xbd, 0x20, 0x00, 0x00, 0x36, 0x87, 0x78, 0x20, 0x63, 0x00,
|
||||
0x69, 0xfa, 0x0a, 0xf2, 0x2f, 0xa0, 0x01, 0x02, 0xdb, 0xbb, 0xbb, 0xdd,
|
||||
0xdd, 0xdc, 0x11, 0x08, 0xe7, 0x00, 0x07, 0xad, 0xbb, 0xcd, 0xdd, 0xda,
|
||||
0x09, 0x70, 0x00, 0x2d, 0xcb, 0x41, 0xcc, 0xdd, 0xd1, 0x04, 0xe7, 0x00,
|
||||
0x00, 0x07, 0xeb, 0x51, 0xdc, 0xcd, 0x00, 0xdd, 0xdd, 0x20, 0x00, 0x00,
|
||||
0x36, 0x87, 0x78, 0x00, 0x63, 0x00, 0x00, 0x00, 0x02, 0xfa, 0x2a, 0xf2,
|
||||
0x00, 0xaf, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x72, 0x22, 0x00, 0x77, 0xdc,
|
||||
0xbb, 0xbb, 0xc7, 0x20, 0x07, 0x77, 0x04, 0x77, 0x77, 0xcb, 0xbb, 0xbc,
|
||||
0xd1, 0x20, 0x01, 0x28, 0x7d, 0xbb, 0x42, 0x27, 0x41, 0xcd, 0x20, 0x00,
|
||||
0x40, 0x27, 0x51, 0x72, 0x22, 0x22, 0x27, 0x7c, 0x20, 0x00, 0x00, 0x00,
|
||||
0x36, 0x87, 0x78, 0x63, 0x00, 0x00, 0x00, 0x00, 0x02, 0xaf, 0xaa, 0xfa,
|
||||
0xff, 0x20, 0x02, 0x10, 0xdb, 0xbb, 0xbe, 0x61, 0x2d, 0xbb, 0xbb, 0xcc,
|
||||
0xa8, 0x29, 0x00, 0x89, 0xbd, 0xc3, 0xeb, 0xbb, 0xbb, 0x00, 0xd7, 0x10,
|
||||
0x00, 0x00, 0x2c, 0xcb, 0xbb, 0xbd, 0x58, 0x70, 0x12, 0xc7, 0x13, 0x29,
|
||||
0x36, 0x87, 0x78, 0x40, 0x63, 0xa9, 0x00, 0xaf, 0xff, 0xff, 0xfa, 0x20,
|
||||
0x08, 0x02, 0xdb, 0xbb, 0xbd, 0x39, 0x07, 0xdb, 0xbb, 0x72, 0xcc, 0x03,
|
||||
0x8c, 0x82, 0xbd, 0x70, 0x84, 0xbc, 0x03, 0xd2, 0x00, 0x2d, 0xbb, 0xbb,
|
||||
0xd7, 0x19, 0x01, 0x02, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0xa2, 0x0a,
|
||||
0x10, 0xaf, 0xff, 0xa2, 0x0a, 0xbd, 0x20, 0x00, 0x00, 0x0c, 0x07, 0xdb,
|
||||
0xbb, 0xc7, 0xc9, 0x8e, 0x00, 0x2c, 0x40, 0xcb, 0xc4, 0x00, 0x7c, 0xbb,
|
||||
0xbb, 0xe7, 0x00, 0x06, 0x2d, 0xbb, 0xbb, 0xc7, 0x10, 0x92, 0x31, 0x36,
|
||||
0x10, 0x87, 0x78, 0x63, 0xab, 0x22, 0x22, 0x00, 0x00, 0x00, 0x02, 0xdb,
|
||||
0xbb, 0xbd, 0x20, 0x00, 0x00, 0x07, 0x18, 0xcb, 0xbb, 0xd7, 0x0a, 0x8d,
|
||||
0x00, 0x2d, 0xbb, 0x23, 0xbb, 0xc7, 0x82, 0x00, 0x2e, 0xbb, 0x39, 0x91,
|
||||
0x20, 0xbd, 0x72, 0x8b, 0x00, 0x00, 0x36, 0x87, 0x78, 0x48, 0x63, 0x33,
|
||||
0x02, 0x20, 0xe1, 0xdb, 0xbb, 0xbd, 0x01, 0x20, 0x00, 0x02, 0x7d, 0xbb,
|
||||
0xbb, 0xe2, 0x6b, 0x94, 0x8b, 0x00, 0x00, 0x81, 0xd7, 0x82, 0x00, 0x2d,
|
||||
0x00, 0xbb, 0xbb, 0xc7, 0x20, 0x2c, 0xcb, 0xbb, 0xbb, 0x10, 0xdd, 0x77,
|
||||
0x22, 0x7b, 0x36, 0x87, 0x78, 0x63, 0x80, 0x32, 0x02, 0xaa, 0xf2, 0x22,
|
||||
0x20, 0x02, 0xdb, 0x00, 0xbb, 0xbc, 0x77, 0x77, 0x77, 0xdb, 0xbb, 0xce,
|
||||
0x42, 0x71, 0x63, 0xdb, 0xbb, 0xbd, 0x20, 0x19, 0x7d, 0x10, 0xbb, 0xbb,
|
||||
0xd2, 0x82, 0x00, 0x27, 0xcb, 0xbb, 0x00, 0xc7, 0x20, 0x07, 0xeb, 0xbb,
|
||||
0xbb, 0xbb, 0xcd, 0x21, 0xd7, 0x72, 0x72, 0x36, 0x87, 0x78, 0x63, 0x32,
|
||||
0x01, 0x4f, 0xff, 0xf2, 0xaf, 0xa0, 0x02, 0xdb, 0x41, 0x03, 0xdd, 0xdc,
|
||||
0xbb, 0xbc, 0xd7, 0x20, 0x22, 0x89, 0x42, 0xbd, 0xba, 0x7d, 0xbb, 0xbb,
|
||||
0xd2, 0x82, 0x00, 0x02, 0x27, 0xcb, 0xbb, 0xcc, 0x20, 0x02, 0x89, 0xbb,
|
||||
0x08, 0xbb, 0xbc, 0xdd, 0x72, 0x31, 0x36, 0x87, 0x78, 0x40, 0x63, 0x31,
|
||||
0x02, 0xaf, 0xaa, 0xf2, 0x2f, 0xa0, 0x21, 0x02, 0xdb, 0x3a, 0xbb, 0xbb,
|
||||
0xc7, 0x20, 0x31, 0x88, 0x59, 0xdb, 0xbb, 0xbd, 0xb2, 0x7d, 0xbb, 0xbb,
|
||||
0x40, 0xd2, 0x7b, 0x27, 0xcb, 0xbb, 0xcc, 0x20, 0x00, 0x00, 0x27, 0xec,
|
||||
0xbb, 0xbb, 0xbb, 0xbb, 0xbc, 0xe7, 0x84, 0x29, 0x36, 0x87, 0x78, 0x63,
|
||||
0x31, 0x02, 0xfa, 0x02, 0x0a, 0xf2, 0x2f, 0xa0, 0x02, 0xdb, 0x42, 0xbb,
|
||||
0x31, 0xbb, 0xc7, 0x39, 0x5a, 0xdb, 0xbb, 0xbd, 0xb2, 0x08, 0x7d, 0xbb,
|
||||
0xbb, 0xd2, 0x7b, 0x27, 0xcb, 0xbb, 0x00, 0xcc, 0x20, 0x00, 0x02, 0x77,
|
||||
0xed, 0xcb, 0xbb, 0x00, 0xbb, 0xbb, 0xbd, 0x71, 0x00, 0x00, 0x36, 0x87,
|
||||
0x20, 0x78, 0x63, 0x31, 0x02, 0xfa, 0x0a, 0xf2, 0x2f, 0x00, 0xa0, 0x02,
|
||||
0xdb, 0xbb, 0xbb, 0xcd, 0xdd, 0xcb, 0x18, 0xbb, 0xbc, 0xe2, 0x69, 0x59,
|
||||
0xdb, 0xbb, 0xbd, 0x42, 0x20, 0x19, 0x7d, 0xbb, 0xbb, 0xd2, 0x7b, 0x27,
|
||||
0x10, 0xcb, 0xbb, 0xcb, 0x79, 0x02, 0x27, 0x7d, 0xdc, 0x00, 0xbb, 0xbb,
|
||||
0xbb, 0xe2, 0x00, 0x00, 0x36, 0x87, 0x20, 0x78, 0x63, 0x31, 0x02, 0xfa,
|
||||
0x2a, 0xf2, 0xaf, 0x00, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x72, 0x27, 0x4c,
|
||||
0x1d, 0xbb, 0xbb, 0xd7, 0x69, 0x59, 0x89, 0x20, 0x19, 0x42, 0x7d, 0x7e,
|
||||
0x2c, 0xbb, 0xbb, 0xc7, 0x7a, 0x00, 0x10, 0x22, 0x7c, 0xcb, 0x63, 0x36,
|
||||
0x87, 0x78, 0x63, 0x80, 0x31, 0x02, 0xaf, 0xfa, 0xff, 0xff, 0x20, 0x02,
|
||||
0x00, 0xdb, 0xbb, 0xbd, 0x20, 0x00, 0x2c, 0xcb, 0xbb, 0x28, 0xcb, 0x20,
|
||||
0x61, 0x00, 0x8c, 0x00, 0x00, 0x2d, 0x12, 0xbb, 0xbb, 0xd7, 0x82, 0x00,
|
||||
0x2e, 0xbe, 0x00, 0x21, 0x02, 0x7c, 0x63, 0x36, 0x87, 0x78, 0x63, 0x32,
|
||||
0x00, 0x2f, 0xff, 0xff, 0xfa, 0x00, 0x02, 0xdb, 0xbb, 0x00, 0xbd, 0x20,
|
||||
0x00, 0x07, 0xdb, 0xbb, 0xbe, 0x20, 0xc2, 0x62, 0x8c, 0x00, 0x00, 0x2c,
|
||||
0xcb, 0xc4, 0x00, 0x0c, 0x7d, 0xbb, 0xbb, 0xe7, 0x3a, 0x19, 0x2d, 0xbb,
|
||||
0x00, 0xbb, 0xc7, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0x80, 0x3a, 0x02,
|
||||
0xaa, 0xaa, 0x40, 0x00, 0x02, 0xdb, 0x00, 0xbb, 0xbd, 0x20, 0x00, 0x02,
|
||||
0xcc, 0xbb, 0xbd, 0x63, 0x70, 0x63, 0x8b, 0x00, 0x00, 0x07, 0x49, 0x7a,
|
||||
0x98, 0x09, 0xbb, 0xd2, 0x3a, 0x19, 0x2d, 0xbb, 0xbb, 0x01, 0xd7, 0x00,
|
||||
0x00, 0x36, 0x87, 0x78, 0x63, 0x3a, 0x14, 0xaa, 0x22, 0x20, 0x0b, 0xbd,
|
||||
0xc9, 0x7d, 0xbb, 0x30, 0xbb, 0xd2, 0x61, 0x8e, 0x00, 0x02, 0xeb, 0xbb,
|
||||
0x20, 0xbb, 0xd7, 0x79, 0x27, 0xcb, 0xbb, 0xbd, 0x70, 0x24, 0x00, 0x02,
|
||||
0x6a, 0x00, 0x7d, 0x6b, 0x36, 0x87, 0x24, 0x78, 0x63, 0x39, 0x02, 0xff,
|
||||
0x62, 0x02, 0xdb, 0x21, 0xbb, 0xbd, 0x21, 0x2e, 0xbb, 0xbb, 0xe7, 0x61,
|
||||
0x80, 0x8e, 0x00, 0x02, 0x7d, 0xbb, 0xbb, 0xbd, 0x72, 0x00, 0x22, 0x27,
|
||||
0xcc, 0xbb, 0xbb, 0xcd, 0x20, 0x00, 0x08, 0x07, 0xe7, 0x72, 0x22, 0xa3,
|
||||
0xe2, 0x00, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, 0x00, 0x00, 0x02,
|
||||
0x20, 0xaf, 0xa0, 0xd2, 0xdb, 0xbb, 0xbd, 0x20, 0x00, 0x03, 0x00, 0x2b,
|
||||
0xcb, 0xbb, 0xc7, 0x10, 0x8f, 0x11, 0x01, 0x2d, 0xcb, 0xbb, 0xbb, 0xdd,
|
||||
0xb7, 0xcd, 0xd1, 0x00, 0xe7, 0x00, 0x00, 0x07, 0xdc, 0xdd, 0xcb, 0x7b,
|
||||
0x00, 0xdd, 0xcb, 0xbb, 0xbc, 0x72, 0x00, 0x00, 0x36, 0x10, 0x87, 0x78,
|
||||
0x63, 0x01, 0x00, 0x2a, 0xfa, 0x42, 0x01, 0x22, 0x20, 0x02, 0xdb, 0xbb,
|
||||
0xbd, 0x20, 0x01, 0xb0, 0xcc, 0x00, 0x8d, 0xb9, 0xec, 0xbb, 0xbb, 0xbb,
|
||||
0x00, 0xcc, 0xcb, 0xbb, 0xbb, 0xbe, 0x71, 0x00, 0x00, 0x05, 0x27, 0xcb,
|
||||
0xbb, 0xcc, 0xcc, 0x81, 0xce, 0x29, 0x08, 0x36, 0x87, 0x78, 0x63, 0x02,
|
||||
0xaa, 0xff, 0xff, 0x02, 0xff, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x61, 0x02,
|
||||
0x0e, 0xeb, 0xbb, 0xbd, 0x70, 0x5a, 0x8c, 0x09, 0x27, 0x00, 0xec, 0xbb,
|
||||
0xbb, 0xbb, 0xbb, 0xbb, 0xbd, 0xd7, 0x54, 0x10, 0xa1, 0xcb, 0xa4, 0xd2,
|
||||
0x31, 0x36, 0x87, 0x20, 0x78, 0x63, 0x01, 0x02, 0xff, 0xff, 0xff, 0xff,
|
||||
0x02, 0xa0, 0x07, 0xad, 0xdd, 0xda, 0x20, 0x99, 0xde, 0x1c, 0xdd, 0xde,
|
||||
0xc2, 0x21, 0x8d, 0x0a, 0x7c, 0xed, 0x04, 0xcc, 0xcc, 0xcc, 0xde, 0xd7,
|
||||
0x92, 0x2c, 0xed, 0x40, 0xdc, 0xa7, 0x36, 0x87, 0x78, 0x63, 0x00, 0x02,
|
||||
0x00, 0x22, 0x02, 0xaa, 0xaa, 0xaa, 0xaa, 0x20, 0x02, 0x1b, 0x77, 0x77,
|
||||
0x77, 0x5a, 0xc9, 0x72, 0x21, 0x8e, 0x88, 0xaa, 0x27, 0x77, 0x7b, 0x9d,
|
||||
0x12, 0x27, 0x77, 0x20, 0x77, 0xb7, 0x3d, 0x36, 0x87, 0x78, 0x63, 0x00,
|
||||
0x3e, 0x02, 0xaa, 0x43, 0x22, 0xc6, 0x87, 0x3e, 0x12, 0x21, 0x22, 0x22,
|
||||
0x06, 0x01, 0x22, 0x22, 0x21, 0x04, 0x00, 0x36, 0x87, 0x78, 0x63, 0x00,
|
||||
0x02, 0xfa, 0x22, 0x3f, 0xaa, 0x20, 0x26, 0xc6, 0x87, 0x3f, 0x07, 0x07,
|
||||
0x00, 0x36, 0x87, 0x78, 0x63, 0x00, 0x02, 0xfa, 0x02, 0x7e, 0xff, 0x07,
|
||||
0x07, 0x77, 0x2f, 0x07, 0x06, 0x36, 0x00, 0x87, 0x78, 0x63, 0x00, 0x02,
|
||||
0xff, 0xaa, 0xfa, 0x07, 0x44, 0x44, 0x44, 0x20, 0x02, 0xd9, 0xc1, 0xd4,
|
||||
0xf0, 0xa7, 0x5f, 0x17, 0x04, 0x42, 0x00, 0x00, 0x36, 0x00, 0x87, 0x78,
|
||||
0x63, 0x00, 0x02, 0xff, 0xff, 0xff, 0x9f, 0xe9, 0xa0, 0x0a, 0xc4, 0x94,
|
||||
0xa7, 0x5f, 0x17, 0x80, 0x04, 0xfa, 0x20, 0x00, 0x36, 0x87, 0x78, 0x63,
|
||||
0x13, 0x00, 0x00, 0xaf, 0x03, 0xa0, 0x0a, 0x07, 0xbf, 0xe0, 0x77, 0x2f,
|
||||
0x07, 0xfa, 0x20, 0x00, 0x36, 0x87, 0x00, 0x78, 0x63, 0x00, 0x00, 0x02,
|
||||
0xaa, 0xfa, 0xaa, 0x0f, 0xaa, 0xaa, 0x20, 0x02, 0xd9, 0xc1, 0xd4, 0xa7,
|
||||
0xe0, 0x5f, 0x17, 0x05, 0x00, 0x00, 0x36, 0x87, 0x78, 0x03, 0x63, 0x00,
|
||||
0x00, 0x00, 0x02, 0xff, 0xd9, 0xc1, 0xfc, 0xd4, 0xa7, 0x5f, 0x17, 0x07,
|
||||
0x03, 0x36, 0x87, 0x23, 0x78, 0x63, 0x01, 0x02, 0x44, 0x20, 0x07, 0x07,
|
||||
0xf0, 0x77, 0x2f, 0x07, 0x05, 0x36, 0x87, 0x78, 0x63, 0xfe, 0x07, 0x07,
|
||||
0x77, 0x2f, 0x07, 0x07, 0x02, 0x36, 0x1f, 0x87, 0x78, 0x63, 0x07, 0x07,
|
||||
0x77, 0x2f, 0x07, 0xc0, 0x07, 0x02, 0x36, 0x87, 0x78, 0x63, 0x11, 0x11,
|
||||
0x7f, 0x11, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, 0x07, 0x07, 0x00, 0x11, 0x36,
|
||||
0x87, 0x29, 0x66, 0x55, 0x55, 0x55, 0xfe, 0xe9, 0xd4, 0xa7, 0x5f, 0x17,
|
||||
0x07, 0x07, 0x55, 0x00, 0x66, 0x92, 0x23, 0x96, 0x68, 0x88, 0x88, 0x88,
|
||||
0xfe, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, 0x07, 0x06, 0x86, 0x01, 0x69, 0x32,
|
||||
0x21, 0x33, 0x55, 0x55, 0x55, 0xe9, 0xfc, 0xd4, 0xa7, 0x5f, 0x17, 0x07,
|
||||
0x07, 0x55, 0x33, 0x00, 0x12,
|
||||
};
|
||||
|
||||
|
||||
#endif
|
|
@ -0,0 +1,902 @@
|
|||
//*****************************************************************************
|
||||
//
|
||||
// formike128x128x16.c - Display driver for the Formike Electronic
|
||||
// KWH015C04-F01 CSTN panel with an ST7637 controller.
|
||||
//
|
||||
// Copyright (c) 2008 Luminary Micro, Inc. All rights reserved.
|
||||
//
|
||||
// Software License Agreement
|
||||
//
|
||||
// Luminary Micro, Inc. (LMI) is supplying this software for use solely and
|
||||
// exclusively on LMI's microcontroller products.
|
||||
//
|
||||
// The software is owned by LMI and/or its suppliers, and is protected under
|
||||
// applicable copyright laws. All rights are reserved. You may not combine
|
||||
// this software with "viral" open-source software in order to form a larger
|
||||
// program. Any use in violation of the foregoing restrictions may subject
|
||||
// the user to criminal sanctions under applicable laws, as well as to civil
|
||||
// liability for the breach of the terms and conditions of this license.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
//
|
||||
// This is part of revision 2523 of the Stellaris Peripheral Driver Library.
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! \addtogroup ek_lm3s3748_api
|
||||
//! @{
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
#include "hw_gpio.h"
|
||||
#include "hw_memmap.h"
|
||||
#include "hw_types.h"
|
||||
#include "gpio.h"
|
||||
#include "sysctl.h"
|
||||
#include "rom.h"
|
||||
#include "grlib.h"
|
||||
#include "formike128x128x16.h"
|
||||
#include <string.h>
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Defines for the pins that are used to communicate with the ST7637.
|
||||
//
|
||||
//*****************************************************************************
|
||||
#define LCD_A0_BASE GPIO_PORTB_BASE
|
||||
#define LCD_A0_PIN GPIO_PIN_2
|
||||
#define LCD_WR_BASE GPIO_PORTC_BASE
|
||||
#define LCD_WR_PIN GPIO_PIN_4
|
||||
#define LCD_RD_BASE GPIO_PORTC_BASE
|
||||
#define LCD_RD_PIN GPIO_PIN_5
|
||||
#define LCD_BL_BASE GPIO_PORTF_BASE
|
||||
#define LCD_BL_PIN GPIO_PIN_1
|
||||
#define LCD_DATA_BASE GPIO_PORTG_BASE
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Translates a 24-bit RGB color to a display driver-specific color.
|
||||
//
|
||||
// \param c is the 24-bit RGB color. The least-significant byte is the blue
|
||||
// channel, the next byte is the green channel, and the third byte is the red
|
||||
// channel.
|
||||
//
|
||||
// This macro translates a 24-bit RGB color into a value that can be written
|
||||
// into the display's frame buffer in order to reproduce that color, or the
|
||||
// closest possible approximation of that color.
|
||||
//
|
||||
// \return Returns the display-driver specific color.
|
||||
//
|
||||
//*****************************************************************************
|
||||
#define DPYCOLORTRANSLATE(c) ((((c) & 0x00ff0000) >> 19) | \
|
||||
((((c) & 0x0000ff00) >> 5) & 0x000007e0) | \
|
||||
((((c) & 0x000000ff) << 8) & 0x0000f800))
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Writes a data word to the ST7637.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
WriteData(unsigned char ucData)
|
||||
{
|
||||
//
|
||||
// Write the data to the data bus.
|
||||
//
|
||||
HWREG(LCD_DATA_BASE + GPIO_O_DATA + (0xff << 2)) = ucData;
|
||||
|
||||
//
|
||||
// Assert the write enable signal.
|
||||
//
|
||||
HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = 0;
|
||||
|
||||
//
|
||||
// Deassert the write enable signal.
|
||||
//
|
||||
HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = LCD_WR_PIN;
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Writes a command to the ST7637.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
WriteCommand(unsigned char ucData)
|
||||
{
|
||||
//
|
||||
// Write the command to the data bus.
|
||||
//
|
||||
HWREG(LCD_DATA_BASE + GPIO_O_DATA + (0xff << 2)) = ucData;
|
||||
|
||||
//
|
||||
// Set the A0 signal low, indicating a command.
|
||||
//
|
||||
HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) = 0;
|
||||
|
||||
//
|
||||
// Assert the write enable signal.
|
||||
//
|
||||
HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = 0;
|
||||
|
||||
//
|
||||
// Deassert the write enable signal.
|
||||
//
|
||||
HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = LCD_WR_PIN;
|
||||
|
||||
//
|
||||
// Set the A0 signal high, indicating that following writes are data.
|
||||
//
|
||||
HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) = LCD_A0_PIN;
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Initializes the display driver.
|
||||
//!
|
||||
//! This function initializes the ST7637 display controller on the panel,
|
||||
//! preparing it to display data.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
Formike128x128x16Init(void)
|
||||
{
|
||||
unsigned long ulClockMS, ulCount;
|
||||
|
||||
//
|
||||
// Get the value to pass to SysCtlDelay() in order to delay for 1 ms.
|
||||
//
|
||||
ulClockMS = SysCtlClockGet() / (3 * 1000);
|
||||
|
||||
//
|
||||
// Enable the GPIO peripherals used to interface to the ST7637.
|
||||
//
|
||||
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
|
||||
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
|
||||
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
|
||||
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
|
||||
|
||||
//
|
||||
// Configure the pins that connect to the LCD as GPIO outputs.
|
||||
//
|
||||
GPIOPinTypeGPIOOutput(LCD_A0_BASE, LCD_A0_PIN);
|
||||
GPIOPinTypeGPIOOutput(LCD_WR_BASE, LCD_WR_PIN);
|
||||
GPIOPinTypeGPIOOutput(LCD_RD_BASE, LCD_RD_PIN);
|
||||
GPIOPinTypeGPIOOutput(LCD_BL_BASE, LCD_BL_PIN);
|
||||
GPIOPinTypeGPIOOutput(LCD_DATA_BASE, 0xff);
|
||||
|
||||
//
|
||||
// Set the LCD control pins to their default values.
|
||||
//
|
||||
GPIOPinWrite(LCD_A0_BASE, LCD_A0_PIN, LCD_A0_PIN);
|
||||
GPIOPinWrite(LCD_WR_BASE, LCD_WR_PIN | LCD_RD_PIN,
|
||||
LCD_WR_PIN | LCD_RD_PIN);
|
||||
GPIOPinWrite(LCD_BL_BASE, LCD_BL_PIN, 0);
|
||||
GPIOPinWrite(LCD_DATA_BASE, 0xff, 0x00);
|
||||
|
||||
//
|
||||
// Perform a software reset of the ST7637.
|
||||
//
|
||||
WriteCommand(0x01);
|
||||
|
||||
//
|
||||
// Delay for 120ms.
|
||||
//
|
||||
SysCtlDelay(ulClockMS * 120);
|
||||
|
||||
//
|
||||
// Disable auto-load of mask rom data.
|
||||
//
|
||||
WriteCommand(0xD7);
|
||||
WriteData(0xBF);
|
||||
|
||||
//
|
||||
// Set the OTP control mode to read.
|
||||
//
|
||||
WriteCommand(0xE0);
|
||||
WriteData(0x00);
|
||||
|
||||
//
|
||||
// Delay for 10ms.
|
||||
//
|
||||
SysCtlDelay(ulClockMS * 10);
|
||||
|
||||
//
|
||||
// Start the OTP read.
|
||||
//
|
||||
WriteCommand(0xE3);
|
||||
|
||||
//
|
||||
// Delay for 20ms.
|
||||
//
|
||||
SysCtlDelay(ulClockMS * 20);
|
||||
|
||||
//
|
||||
// Cancel the OTP read (it should have finished by now).
|
||||
//
|
||||
WriteCommand(0xE1);
|
||||
|
||||
//
|
||||
// Turn off the display.
|
||||
//
|
||||
WriteCommand(0x28);
|
||||
|
||||
//
|
||||
// Exit sleep mode.
|
||||
//
|
||||
WriteCommand(0x11);
|
||||
|
||||
//
|
||||
// Delay for 50ms.
|
||||
//
|
||||
SysCtlDelay(ulClockMS * 50);
|
||||
|
||||
//
|
||||
// Program the LCD supply voltage V0 to 14V.
|
||||
//
|
||||
WriteCommand(0xC0);
|
||||
WriteData(0x04);
|
||||
WriteData(0x01);
|
||||
|
||||
//
|
||||
// Select an LCD bias voltage ratio of 1/12.
|
||||
//
|
||||
WriteCommand(0xC3);
|
||||
WriteData(0x00);
|
||||
|
||||
//
|
||||
// Enable the x8 booster circuit.
|
||||
//
|
||||
WriteCommand(0xC4);
|
||||
WriteData(0x07);
|
||||
|
||||
//
|
||||
// Invert the column scan direction for the panel.
|
||||
//
|
||||
WriteCommand(0xB7);
|
||||
WriteData(0xC0);
|
||||
|
||||
//
|
||||
// Select 16bpp, 5-6-5 data input mode.
|
||||
//
|
||||
WriteCommand(0x3A);
|
||||
WriteData(0x05);
|
||||
|
||||
//
|
||||
// Select the memory scanning direction. The scanning mode does not matter
|
||||
// for this driver since the row/column selects will constrain the writes
|
||||
// to the desired area of the display.
|
||||
//
|
||||
WriteCommand(0x36);
|
||||
WriteData(0x00);
|
||||
|
||||
//
|
||||
// Turn on the display.
|
||||
//
|
||||
WriteCommand(0x29);
|
||||
|
||||
//
|
||||
// Clear the contents of the display buffer.
|
||||
//
|
||||
WriteCommand(0x2A);
|
||||
WriteData(0x00);
|
||||
WriteData(0x7F);
|
||||
WriteCommand(0x2B);
|
||||
WriteData(0x01);
|
||||
WriteData(0x80);
|
||||
WriteCommand(0x2c);
|
||||
for(ulCount = 0; ulCount < (128 * 128); ulCount++)
|
||||
{
|
||||
WriteData(0x00);
|
||||
WriteData(0x00);
|
||||
}
|
||||
|
||||
//
|
||||
// Enable normal operation of the LCD.
|
||||
//
|
||||
WriteCommand(0x13);
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Turns on the backlight.
|
||||
//!
|
||||
//! This function turns on the backlight on the display.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
Formike128x128x16BacklightOn(void)
|
||||
{
|
||||
//
|
||||
// Assert the signal that turns on the backlight.
|
||||
//
|
||||
HWREG(LCD_BL_BASE + GPIO_O_DATA + (LCD_BL_PIN << 2)) = LCD_BL_PIN;
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Turns off the backlight.
|
||||
//!
|
||||
//! This function turns off the backlight on the display.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
Formike128x128x16BacklightOff(void)
|
||||
{
|
||||
//
|
||||
// Deassert the signal that turns on the backlight.
|
||||
//
|
||||
HWREG(LCD_BL_BASE + GPIO_O_DATA + (LCD_BL_PIN << 2)) = 0;
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Draws a pixel on the screen.
|
||||
//!
|
||||
//! \param pvDisplayData is a pointer to the driver-specific data for this
|
||||
//! display driver.
|
||||
//! \param lX is the X coordinate of the pixel.
|
||||
//! \param lY is the Y coordinate of the pixel.
|
||||
//! \param ulValue is the color of the pixel.
|
||||
//!
|
||||
//! This function sets the given pixel to a particular color. The coordinates
|
||||
//! of the pixel are assumed to be within the extents of the display.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
Formike128x128x16PixelDraw(void *pvDisplayData, long lX, long lY,
|
||||
unsigned long ulValue)
|
||||
{
|
||||
//
|
||||
// Set the X address of the display cursor.
|
||||
//
|
||||
WriteCommand(0x2a);
|
||||
WriteData(lX);
|
||||
WriteData(lX);
|
||||
|
||||
//
|
||||
// Set the Y address of the display cursor.
|
||||
//
|
||||
WriteCommand(0x2b);
|
||||
WriteData(lY + 1);
|
||||
WriteData(lY + 1);
|
||||
|
||||
//
|
||||
// Write the pixel value.
|
||||
//
|
||||
WriteCommand(0x2c);
|
||||
WriteData(ulValue >> 8);
|
||||
WriteData(ulValue);
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Draws a horizontal sequence of pixels on the screen.
|
||||
//!
|
||||
//! \param pvDisplayData is a pointer to the driver-specific data for this
|
||||
//! display driver.
|
||||
//! \param lX is the X coordinate of the first pixel.
|
||||
//! \param lY is the Y coordinate of the first pixel.
|
||||
//! \param lX0 is sub-pixel offset within the pixel data, which is valid for 1
|
||||
//! or 4 bit per pixel formats.
|
||||
//! \param lCount is the number of pixels to draw.
|
||||
//! \param lBPP is the number of bits per pixel; must be 1, 4, or 8.
|
||||
//! \param pucData is a pointer to the pixel data. For 1 and 4 bit per pixel
|
||||
//! formats, the most significant bit(s) represent the left-most pixel.
|
||||
//! \param pucPalette is a pointer to the palette used to draw the pixels.
|
||||
//!
|
||||
//! This function draws a horizontal sequence of pixels on the screen, using
|
||||
//! the supplied palette. For 1 bit per pixel format, the palette contains
|
||||
//! pre-translated colors; for 4 and 8 bit per pixel formats, the palette
|
||||
//! contains 24-bit RGB values that must be translated before being written to
|
||||
//! the display.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
Formike128x128x16PixelDrawMultiple(void *pvDisplayData, long lX, long lY,
|
||||
long lX0, long lCount, long lBPP,
|
||||
const unsigned char *pucData,
|
||||
const unsigned char *pucPalette)
|
||||
{
|
||||
unsigned long ulByte;
|
||||
|
||||
//
|
||||
// Set the extent of the line along the X axis.
|
||||
//
|
||||
WriteCommand(0x2a);
|
||||
WriteData(lX);
|
||||
WriteData(lX + lCount - 1);
|
||||
|
||||
//
|
||||
// Set the Y address of the display cursor.
|
||||
//
|
||||
WriteCommand(0x2b);
|
||||
WriteData(lY + 1);
|
||||
WriteData(lY + 1);
|
||||
|
||||
//
|
||||
// Write the data RAM write command.
|
||||
//
|
||||
WriteCommand(0x2c);
|
||||
|
||||
//
|
||||
// Determine how to interpret the pixel data based on the number of bits
|
||||
// per pixel.
|
||||
//
|
||||
switch(lBPP)
|
||||
{
|
||||
//
|
||||
// The pixel data is in 1 bit per pixel format.
|
||||
//
|
||||
case 1:
|
||||
{
|
||||
//
|
||||
// Loop while there are more pixels to draw.
|
||||
//
|
||||
while(lCount)
|
||||
{
|
||||
//
|
||||
// Get the next byte of image data.
|
||||
//
|
||||
ulByte = *pucData++;
|
||||
|
||||
//
|
||||
// Loop through the pixels in this byte of image data.
|
||||
//
|
||||
for(; (lX0 < 8) && lCount; lX0++, lCount--)
|
||||
{
|
||||
//
|
||||
// Draw this pixel in the appropriate color.
|
||||
//
|
||||
lBPP = ((unsigned long *)pucPalette)[(ulByte >>
|
||||
(7 - lX0)) & 1];
|
||||
WriteData(lBPP >> 8);
|
||||
WriteData(lBPP);
|
||||
}
|
||||
|
||||
//
|
||||
// Start at the beginning of the next byte of image data.
|
||||
//
|
||||
lX0 = 0;
|
||||
}
|
||||
|
||||
//
|
||||
// The image data has been drawn.
|
||||
//
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
// The pixel data is in 4 bit per pixel format.
|
||||
//
|
||||
case 4:
|
||||
{
|
||||
//
|
||||
// Loop while there are more pixels to draw. "Duff's device" is
|
||||
// used to jump into the middle of the loop if the first nibble of
|
||||
// the pixel data should not be used. Duff's device makes use of
|
||||
// the fact that a case statement is legal anywhere within a
|
||||
// sub-block of a switch statement. See
|
||||
// http://en.wikipedia.org/wiki/Duff's_device for detailed
|
||||
// information about Duff's device.
|
||||
//
|
||||
switch(lX0 & 1)
|
||||
{
|
||||
case 0:
|
||||
while(lCount)
|
||||
{
|
||||
//
|
||||
// Get the upper nibble of the next byte of pixel data
|
||||
// and extract the corresponding entry from the
|
||||
// palette.
|
||||
//
|
||||
ulByte = (*pucData >> 4) * 3;
|
||||
ulByte = (*(unsigned long *)(pucPalette + ulByte) &
|
||||
0x00ffffff);
|
||||
|
||||
//
|
||||
// Translate this palette entry and write it to the
|
||||
// screen.
|
||||
//
|
||||
ulByte = DPYCOLORTRANSLATE(ulByte);
|
||||
WriteData(ulByte >> 8);
|
||||
WriteData(ulByte);
|
||||
|
||||
//
|
||||
// Decrement the count of pixels to draw.
|
||||
//
|
||||
lCount--;
|
||||
|
||||
//
|
||||
// See if there is another pixel to draw.
|
||||
//
|
||||
if(lCount)
|
||||
{
|
||||
case 1:
|
||||
//
|
||||
// Get the lower nibble of the next byte of pixel
|
||||
// data and extract the corresponding entry from
|
||||
// the palette.
|
||||
//
|
||||
ulByte = (*pucData++ & 15) * 3;
|
||||
ulByte = (*(unsigned long *)(pucPalette + ulByte) &
|
||||
0x00ffffff);
|
||||
|
||||
//
|
||||
// Translate this palette entry and write it to the
|
||||
// screen.
|
||||
//
|
||||
ulByte = DPYCOLORTRANSLATE(ulByte);
|
||||
WriteData(ulByte >> 8);
|
||||
WriteData(ulByte);
|
||||
|
||||
//
|
||||
// Decrement the count of pixels to draw.
|
||||
//
|
||||
lCount--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// The image data has been drawn.
|
||||
//
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
// The pixel data is in 8 bit per pixel format.
|
||||
//
|
||||
case 8:
|
||||
{
|
||||
//
|
||||
// Loop while there are more pixels to draw.
|
||||
//
|
||||
while(lCount--)
|
||||
{
|
||||
//
|
||||
// Get the next byte of pixel data and extract the
|
||||
// corresponding entry from the palette.
|
||||
//
|
||||
ulByte = *pucData++ * 3;
|
||||
ulByte = *(unsigned long *)(pucPalette + ulByte) & 0x00ffffff;
|
||||
|
||||
//
|
||||
// Translate this palette entry and write it to the screen.
|
||||
//
|
||||
ulByte = DPYCOLORTRANSLATE(ulByte);
|
||||
WriteData(ulByte >> 8);
|
||||
WriteData(ulByte);
|
||||
}
|
||||
|
||||
//
|
||||
// The image data has been drawn.
|
||||
//
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Flushes any cached drawing operations.
|
||||
//!
|
||||
//! \param pvDisplayData is a pointer to the driver-specific data for this
|
||||
//! display driver.
|
||||
//!
|
||||
//! This functions flushes any cached drawing operations to the display. This
|
||||
//! is useful when a local frame buffer is used for drawing operations, and the
|
||||
//! flush would copy the local frame buffer to the display. For the ST7637
|
||||
//! driver, the flush is a no operation.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
Formike128x128x16Flush(void *pvDisplayData)
|
||||
{
|
||||
//
|
||||
// There is nothing to be done.
|
||||
//
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Draws a horizontal line.
|
||||
//!
|
||||
//! \param pvDisplayData is a pointer to the driver-specific data for this
|
||||
//! display driver.
|
||||
//! \param lX1 is the X coordinate of the start of the line.
|
||||
//! \param lX2 is the X coordinate of the end of the line.
|
||||
//! \param lY is the Y coordinate of the line.
|
||||
//! \param ulValue is the color of the line.
|
||||
//!
|
||||
//! This function draws a horizontal line on the display. The coordinates of
|
||||
//! the line are assumed to be within the extents of the display.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
Formike128x128x16LineDrawH(void *pvDisplayData, long lX1, long lX2, long lY,
|
||||
unsigned long ulValue)
|
||||
{
|
||||
//
|
||||
// Set the extent of the line along the X axis.
|
||||
//
|
||||
WriteCommand(0x2a);
|
||||
WriteData(lX1);
|
||||
WriteData(lX2);
|
||||
|
||||
//
|
||||
// Set the Y address of the display cursor.
|
||||
//
|
||||
WriteCommand(0x2b);
|
||||
WriteData(lY + 1);
|
||||
WriteData(lY + 1);
|
||||
|
||||
//
|
||||
// Write the data RAM write command.
|
||||
//
|
||||
WriteCommand(0x2c);
|
||||
|
||||
//
|
||||
// Loop through the pixels of this horizontal line.
|
||||
//
|
||||
while(lX1++ <= lX2)
|
||||
{
|
||||
//
|
||||
// Write the pixel value.
|
||||
//
|
||||
WriteData(ulValue >> 8);
|
||||
WriteData(ulValue);
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Draws a vertical line.
|
||||
//!
|
||||
//! \param pvDisplayData is a pointer to the driver-specific data for this
|
||||
//! display driver.
|
||||
//! \param lX is the X coordinate of the line.
|
||||
//! \param lY1 is the Y coordinate of the start of the line.
|
||||
//! \param lY2 is the Y coordinate of the end of the line.
|
||||
//! \param ulValue is the color of the line.
|
||||
//!
|
||||
//! This function draws a vertical line on the display. The coordinates of the
|
||||
//! line are assumed to be within the extents of the display.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
Formike128x128x16LineDrawV(void *pvDisplayData, long lX, long lY1, long lY2,
|
||||
unsigned long ulValue)
|
||||
{
|
||||
//
|
||||
// Set the X address of the display cursor.
|
||||
//
|
||||
WriteCommand(0x2a);
|
||||
WriteData(lX);
|
||||
WriteData(lX);
|
||||
|
||||
//
|
||||
// Set the extent of the line along the Y axis.
|
||||
//
|
||||
WriteCommand(0x2b);
|
||||
WriteData(lY1 + 1);
|
||||
WriteData(lY2 + 1);
|
||||
|
||||
//
|
||||
// Write the data RAM write command.
|
||||
//
|
||||
WriteCommand(0x2c);
|
||||
|
||||
//
|
||||
// Loop through the pixels of this vertical line.
|
||||
//
|
||||
while(lY1++ <= lY2)
|
||||
{
|
||||
//
|
||||
// Write the pixel value.
|
||||
//
|
||||
WriteData(ulValue >> 8);
|
||||
WriteData(ulValue);
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Fills a rectangle.
|
||||
//!
|
||||
//! \param pvDisplayData is a pointer to the driver-specific data for this
|
||||
//! display driver.
|
||||
//! \param pRect is a pointer to the structure describing the rectangle.
|
||||
//! \param ulValue is the color of the rectangle.
|
||||
//!
|
||||
//! This function fills a rectangle on the display. The coordinates of the
|
||||
//! rectangle are assumed to be within the extents of the display, and the
|
||||
//! rectangle specification is fully inclusive (i.e. both sXMin and sXMax are
|
||||
//! drawn, along with sYMin and sYMax).
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
Formike128x128x16RectFill(void *pvDisplayData, const tRectangle *pRect,
|
||||
unsigned long ulValue)
|
||||
{
|
||||
long lCount;
|
||||
|
||||
//
|
||||
// Set the extent of the rectangle along the X axis.
|
||||
//
|
||||
WriteCommand(0x2a);
|
||||
WriteData(pRect->sXMin);
|
||||
WriteData(pRect->sXMax);
|
||||
|
||||
//
|
||||
// Set the extent of the rectangle along the Y axis.
|
||||
//
|
||||
WriteCommand(0x2b);
|
||||
WriteData(pRect->sYMin + 1);
|
||||
WriteData(pRect->sYMax + 1);
|
||||
|
||||
//
|
||||
// Write the data RAM write command.
|
||||
//
|
||||
WriteCommand(0x2c);
|
||||
|
||||
//
|
||||
// Loop through the pixels in this rectangle.
|
||||
//
|
||||
for(lCount = ((pRect->sXMax - pRect->sXMin + 1) *
|
||||
(pRect->sYMax - pRect->sYMin + 1)); lCount > 0; lCount--)
|
||||
{
|
||||
//
|
||||
// Write the pixel value.
|
||||
//
|
||||
WriteData(ulValue >> 8);
|
||||
WriteData(ulValue);
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Translates a 24-bit RGB color to a display driver-specific color.
|
||||
//!
|
||||
//! \param pvDisplayData is a pointer to the driver-specific data for this
|
||||
//! display driver.
|
||||
//! \param ulValue is the 24-bit RGB color. The least-significant byte is the
|
||||
//! blue channel, the next byte is the green channel, and the third byte is the
|
||||
//! red channel.
|
||||
//!
|
||||
//! This function translates a 24-bit RGB color into a value that can be
|
||||
//! written into the display's frame buffer in order to reproduce that color,
|
||||
//! or the closest possible approximation of that color.
|
||||
//!
|
||||
//! \return Returns the display-driver specific color.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static unsigned long
|
||||
Formike128x128x16ColorTranslate(void *pvDisplayData, unsigned long ulValue)
|
||||
{
|
||||
//
|
||||
// Translate from a 24-bit RGB color to a 5-6-5 RGB color.
|
||||
//
|
||||
return(DPYCOLORTRANSLATE(ulValue));
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! The display structure that describes the driver for the Formike Electronic
|
||||
//! KWH015C04-F01 CSTN panel with an ST7637 controller.
|
||||
//
|
||||
//*****************************************************************************
|
||||
const tDisplay g_sFormike128x128x16 =
|
||||
{
|
||||
sizeof(tDisplay),
|
||||
0,
|
||||
128,
|
||||
128,
|
||||
Formike128x128x16PixelDraw,
|
||||
Formike128x128x16PixelDrawMultiple,
|
||||
Formike128x128x16LineDrawH,
|
||||
Formike128x128x16LineDrawV,
|
||||
Formike128x128x16RectFill,
|
||||
Formike128x128x16ColorTranslate,
|
||||
Formike128x128x16Flush
|
||||
};
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Close the Doxygen group.
|
||||
//! @}
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* FreeRTOS.org demo wrappers. These are required so the prototypes for the
|
||||
functions are the same as for the display drivers used by other evaluation
|
||||
kits. */
|
||||
|
||||
static tContext sContext;
|
||||
|
||||
void vFormike128x128x16Clear( void )
|
||||
{
|
||||
const tRectangle xRectangle = { 0, 0, 127, 127 };
|
||||
|
||||
GrContextForegroundSet( &sContext, ClrBlack );
|
||||
GrRectFill( &sContext, &xRectangle );
|
||||
GrContextForegroundSet(&sContext, ClrWhite);
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vFormike128x128x16StringDraw( const char *pcString, unsigned long lX, unsigned long lY, unsigned char ucColor )
|
||||
{
|
||||
GrContextForegroundSet(&sContext, ClrWhite);
|
||||
GrStringDraw( &sContext, pcString, strlen( pcString ), lX, lY, false );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vFormike128x128x16Init( unsigned long ul )
|
||||
{
|
||||
tRectangle rectScreen;
|
||||
const unsigned char *pcAppName = "www.FreeRTOS.org";
|
||||
|
||||
( void ) ul;
|
||||
|
||||
Formike128x128x16Init();
|
||||
Formike128x128x16BacklightOn();
|
||||
GrContextInit(&sContext, &g_sFormike128x128x16);
|
||||
GrContextFontSet(&sContext, &g_sFontCmss12);
|
||||
rectScreen.sXMin = 0;
|
||||
|
||||
/* Fill the screen with a black rectangle. */
|
||||
rectScreen.sYMin = 0;
|
||||
rectScreen.sXMax = g_sFormike128x128x16.usWidth - 1;
|
||||
rectScreen.sYMax = g_sFormike128x128x16.usHeight - 1;
|
||||
GrContextForegroundSet(&sContext, ClrBlack);
|
||||
GrRectFill(&sContext, &rectScreen);
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vFormike128x128x16ImageDraw( const unsigned char *pucImage, unsigned long ulX, unsigned long ulY, unsigned long ulWidth, unsigned long ulHeight )
|
||||
{
|
||||
GrImageDraw( &sContext, pucImage, ( long ) ulX, ( long ) ulY);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
//*****************************************************************************
|
||||
//
|
||||
// formike128x128x16.h - Prototypes for the Formike Electronic KWH015C04-F01
|
||||
// display driver.
|
||||
//
|
||||
// Copyright (c) 2008 Luminary Micro, Inc. All rights reserved.
|
||||
//
|
||||
// Software License Agreement
|
||||
//
|
||||
// Luminary Micro, Inc. (LMI) is supplying this software for use solely and
|
||||
// exclusively on LMI's microcontroller products.
|
||||
//
|
||||
// The software is owned by LMI and/or its suppliers, and is protected under
|
||||
// applicable copyright laws. All rights are reserved. You may not combine
|
||||
// this software with "viral" open-source software in order to form a larger
|
||||
// program. Any use in violation of the foregoing restrictions may subject
|
||||
// the user to criminal sanctions under applicable laws, as well as to civil
|
||||
// liability for the breach of the terms and conditions of this license.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
//
|
||||
// This is part of revision 2523 of the Stellaris Peripheral Driver Library.
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
#ifndef __FORMIKE128X128X16_H__
|
||||
#define __FORMIKE128X128X16_H__
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Prototypes for the globals exported by this driver.
|
||||
//
|
||||
//*****************************************************************************
|
||||
extern void Formike128x128x16Init(void);
|
||||
extern void Formike128x128x16BacklightOn(void);
|
||||
extern void Formike128x128x16BacklightOff(void);
|
||||
extern const tDisplay g_sFormike128x128x16;
|
||||
|
||||
/* FreeRTOS.org demo wrappers. These are required so the prototypes for the
|
||||
functions are the same as for the display drivers used by other evaluation
|
||||
kits. */
|
||||
void vFormike128x128x16Clear( void );
|
||||
void vFormike128x128x16StringDraw( const char *pcString, unsigned long lX, unsigned long lY, unsigned char ucColor );
|
||||
void vFormike128x128x16Init( unsigned long ul );
|
||||
void vFormike128x128x16ImageDraw( const unsigned char *pucImage, unsigned long ulX, unsigned long ulY, unsigned long ulWidth, unsigned long ulHeight );
|
||||
|
||||
#endif // __FORMIKE128X128X16_H__
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef LCD_MESSAGE_H
|
||||
#define LCD_MESSAGE_H
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *pcMessage;
|
||||
} xOLEDMessage;
|
||||
|
||||
#endif /* LCD_MESSAGE_H */
|
441
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/main.c
Normal file
441
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/main.c
Normal file
|
@ -0,0 +1,441 @@
|
|||
/*
|
||||
FreeRTOS V5.4.2 - Copyright (C) 2009 Real Time Engineers Ltd.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License (version 2) as published by the
|
||||
Free Software Foundation and modified by the FreeRTOS exception.
|
||||
**NOTE** The exception to the GPL is included to allow you to distribute a
|
||||
combined work that includes FreeRTOS without being obliged to provide the
|
||||
source code for proprietary components outside of the FreeRTOS kernel.
|
||||
Alternative commercial license and support terms are also available upon
|
||||
request. See the licensing section of http://www.FreeRTOS.org for full
|
||||
license details.
|
||||
|
||||
FreeRTOS 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; if not, write to the Free Software Foundation, Inc., 59
|
||||
Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* Looking for a quick start? Then check out the FreeRTOS eBook! *
|
||||
* See http://www.FreeRTOS.org/Documentation for details *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
1 tab == 4 spaces!
|
||||
|
||||
Please ensure to read the configuration and relevant port sections of the
|
||||
online documentation.
|
||||
|
||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||
contact details.
|
||||
|
||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||
critical systems.
|
||||
|
||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||
licensing and training services.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Creates all the demo application tasks, then starts the scheduler. The WEB
|
||||
* documentation provides more details of the standard demo application tasks.
|
||||
* In addition to the standard demo tasks, the following tasks and tests are
|
||||
* defined and/or created within this file:
|
||||
*
|
||||
* "Fast Interrupt Test" - A high frequency periodic interrupt is generated
|
||||
* using a free running timer to demonstrate the use of the
|
||||
* configKERNEL_INTERRUPT_PRIORITY configuration constant. The interrupt
|
||||
* service routine measures the number of processor clocks that occur between
|
||||
* each interrupt - and in so doing measures the jitter in the interrupt timing.
|
||||
* The maximum measured jitter time is latched in the ulMaxJitter variable, and
|
||||
* displayed on the OLED display by the 'OLED' task as described below. The
|
||||
* fast interrupt is configured and handled in the timertest.c source file.
|
||||
*
|
||||
* "OLED" task - the OLED task is a 'gatekeeper' task. It is the only task that
|
||||
* is permitted to access the display directly. Other tasks wishing to write a
|
||||
* message to the OLED send the message on a queue to the OLED task instead of
|
||||
* accessing the OLED themselves. The OLED task just blocks on the queue waiting
|
||||
* for messages - waking and displaying the messages as they arrive.
|
||||
*
|
||||
* "Check" hook - This only executes every five seconds from the tick hook.
|
||||
* Its main function is to check that all the standard demo tasks are still
|
||||
* operational. Should any unexpected behaviour within a demo task be discovered
|
||||
* the tick hook will write an error to the OLED (via the OLED task). If all the
|
||||
* demo tasks are executing with their expected behaviour then the check task
|
||||
* writes PASS to the OLED (again via the OLED task), as described above.
|
||||
*
|
||||
* "uIP" task - This is the task that handles the uIP stack. All TCP/IP
|
||||
* processing is performed in this task.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
* Please ensure to read http://www.freertos.org/portLM3Sxxxx_Eclipse.html
|
||||
* which provides information on configuring and running this demo for the
|
||||
* various Luminary Micro EKs.
|
||||
*************************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
/* Standard includes. */
|
||||
#include <stdio.h>
|
||||
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "queue.h"
|
||||
#include "semphr.h"
|
||||
|
||||
/* Hardware library includes. */
|
||||
#include "hw_memmap.h"
|
||||
#include "hw_types.h"
|
||||
#include "hw_sysctl.h"
|
||||
#include "sysctl.h"
|
||||
#include "gpio.h"
|
||||
#include "grlib.h"
|
||||
#include "rit128x96x4.h"
|
||||
#include "osram128x64x4.h"
|
||||
#include "formike128x128x16.h"
|
||||
|
||||
/* Demo app includes. */
|
||||
#include "BlockQ.h"
|
||||
#include "death.h"
|
||||
#include "integer.h"
|
||||
#include "blocktim.h"
|
||||
#include "flash.h"
|
||||
#include "partest.h"
|
||||
#include "semtest.h"
|
||||
#include "PollQ.h"
|
||||
#include "lcd_message.h"
|
||||
#include "bitmap.h"
|
||||
#include "GenQTest.h"
|
||||
#include "QPeek.h"
|
||||
#include "recmutex.h"
|
||||
#include "IntQueue.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* The time between cycles of the 'check' functionality (defined within the
|
||||
tick hook. */
|
||||
#define mainCHECK_DELAY ( ( portTickType ) 5000 / portTICK_RATE_MS )
|
||||
|
||||
/* Size of the stack allocated to the uIP task. */
|
||||
#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 )
|
||||
|
||||
/* The OLED task uses the sprintf function so requires a little more stack too. */
|
||||
#define mainOLED_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE + 50 )
|
||||
|
||||
/* Task priorities. */
|
||||
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
|
||||
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
|
||||
#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||
#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||
|
||||
/* The maximum number of message that can be waiting for display at any one
|
||||
time. */
|
||||
#define mainOLED_QUEUE_SIZE ( 3 )
|
||||
|
||||
/* Dimensions the buffer into which the jitter time is written. */
|
||||
#define mainMAX_MSG_LEN 25
|
||||
|
||||
/* The period of the system clock in nano seconds. This is used to calculate
|
||||
the jitter time in nano seconds. */
|
||||
#define mainNS_PER_CLOCK ( ( unsigned portLONG ) ( ( 1.0 / ( double ) configCPU_CLOCK_HZ ) * 1000000000.0 ) )
|
||||
|
||||
/* Constants used when writing strings to the display. */
|
||||
#define mainCHARACTER_HEIGHT ( 9 )
|
||||
#define mainMAX_ROWS_128 ( mainCHARACTER_HEIGHT * 14 )
|
||||
#define mainMAX_ROWS_96 ( mainCHARACTER_HEIGHT * 10 )
|
||||
#define mainMAX_ROWS_64 ( mainCHARACTER_HEIGHT * 7 )
|
||||
#define mainFULL_SCALE ( 15 )
|
||||
#define ulSSI_FREQUENCY ( 3500000UL )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* The task that handles the uIP stack. All TCP/IP processing is performed in
|
||||
* this task.
|
||||
*/
|
||||
extern void vuIP_Task( void *pvParameters );
|
||||
|
||||
/*
|
||||
* The display is written two by more than one task so is controlled by a
|
||||
* 'gatekeeper' task. This is the only task that is actually permitted to
|
||||
* access the display directly. Other tasks wanting to display a message send
|
||||
* the message to the gatekeeper.
|
||||
*/
|
||||
static void vOLEDTask( void *pvParameters );
|
||||
|
||||
/*
|
||||
* Configure the hardware for the demo.
|
||||
*/
|
||||
static void prvSetupHardware( void );
|
||||
|
||||
/*
|
||||
* Configures the high frequency timers - those used to measure the timing
|
||||
* jitter while the real time kernel is executing.
|
||||
*/
|
||||
extern void vSetupHighFrequencyTimer( void );
|
||||
|
||||
/*
|
||||
* The idle hook is used to run a test of the scheduler context switch
|
||||
* mechanism.
|
||||
*/
|
||||
void vApplicationIdleHook( void ) __attribute__((naked));
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* The queue used to send messages to the OLED task. */
|
||||
xQueueHandle xOLEDQueue;
|
||||
|
||||
/* The welcome text. */
|
||||
const portCHAR * const pcWelcomeMessage = " www.FreeRTOS.org";
|
||||
|
||||
/* Variables used to detect the test in the idle hook failing. */
|
||||
unsigned portLONG ulIdleError = pdFALSE;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*************************************************************************
|
||||
* Please ensure to read http://www.freertos.org/portLM3Sxxxx_Eclipse.html
|
||||
* which provides information on configuring and running this demo for the
|
||||
* various Luminary Micro EKs.
|
||||
*************************************************************************/
|
||||
int main( void )
|
||||
{
|
||||
prvSetupHardware();
|
||||
|
||||
/* Create the queue used by the OLED task. Messages for display on the OLED
|
||||
are received via this queue. */
|
||||
xOLEDQueue = xQueueCreate( mainOLED_QUEUE_SIZE, sizeof( xOLEDMessage ) );
|
||||
|
||||
/* Create the uIP task if running on a processor that includes a MAC and
|
||||
PHY. */
|
||||
if( SysCtlPeripheralPresent( SYSCTL_PERIPH_ETH ) )
|
||||
{
|
||||
xTaskCreate( vuIP_Task, ( signed portCHAR * ) "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL );
|
||||
}
|
||||
|
||||
/* Start the standard demo tasks. */
|
||||
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
|
||||
vCreateBlockTimeTasks();
|
||||
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
|
||||
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
|
||||
vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY );
|
||||
vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );
|
||||
vStartQueuePeekTasks();
|
||||
vStartRecursiveMutexTasks();
|
||||
vStartInterruptQueueTasks();
|
||||
|
||||
/* Start the tasks defined within this file/specific to this demo. */
|
||||
xTaskCreate( vOLEDTask, ( signed portCHAR * ) "OLED", mainOLED_TASK_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
|
||||
|
||||
/* The suicide tasks must be created last as they need to know how many
|
||||
tasks were running prior to their creation in order to ascertain whether
|
||||
or not the correct/expected number of tasks are running at any given time. */
|
||||
vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );
|
||||
|
||||
/* Configure the high frequency interrupt used to measure the interrupt
|
||||
jitter time. */
|
||||
vSetupHighFrequencyTimer();
|
||||
|
||||
/* Start the scheduler. */
|
||||
vTaskStartScheduler();
|
||||
|
||||
/* Will only get here if there was insufficient memory to create the idle
|
||||
task. */
|
||||
for( ;; );
|
||||
return 0;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void prvSetupHardware( void )
|
||||
{
|
||||
/* If running on Rev A2 silicon, turn the LDO voltage up to 2.75V. This is
|
||||
a workaround to allow the PLL to operate reliably. */
|
||||
if( DEVICE_IS_REVA2 )
|
||||
{
|
||||
SysCtlLDOSet( SYSCTL_LDO_2_75V );
|
||||
}
|
||||
|
||||
/* Set the clocking to run from the PLL at 50 MHz */
|
||||
SysCtlClockSet( SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ );
|
||||
|
||||
/* Enable Port F for Ethernet LEDs
|
||||
LED0 Bit 3 Output
|
||||
LED1 Bit 2 Output */
|
||||
SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOF );
|
||||
GPIODirModeSet( GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3), GPIO_DIR_MODE_HW );
|
||||
GPIOPadConfigSet( GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3 ), GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD );
|
||||
|
||||
vParTestInitialise();
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationTickHook( void )
|
||||
{
|
||||
static xOLEDMessage xMessage = { "PASS" };
|
||||
static unsigned portLONG ulTicksSinceLastDisplay = 0;
|
||||
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
|
||||
|
||||
/* Called from every tick interrupt. Have enough ticks passed to make it
|
||||
time to perform our health status check again? */
|
||||
ulTicksSinceLastDisplay++;
|
||||
if( ulTicksSinceLastDisplay >= mainCHECK_DELAY )
|
||||
{
|
||||
ulTicksSinceLastDisplay = 0;
|
||||
|
||||
/* Has an error been found in any task? */
|
||||
if( xAreGenericQueueTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
xMessage.pcMessage = "ERROR IN GEN Q";
|
||||
}
|
||||
else if( xAreQueuePeekTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
xMessage.pcMessage = "ERROR IN PEEK Q";
|
||||
}
|
||||
else if( xAreBlockingQueuesStillRunning() != pdTRUE )
|
||||
{
|
||||
xMessage.pcMessage = "ERROR IN BLOCK Q";
|
||||
}
|
||||
else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
xMessage.pcMessage = "ERROR IN BLOCK TIME";
|
||||
}
|
||||
else if( xAreSemaphoreTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
xMessage.pcMessage = "ERROR IN SEMAPHORE";
|
||||
}
|
||||
else if( xArePollingQueuesStillRunning() != pdTRUE )
|
||||
{
|
||||
xMessage.pcMessage = "ERROR IN POLL Q";
|
||||
}
|
||||
else if( xIsCreateTaskStillRunning() != pdTRUE )
|
||||
{
|
||||
xMessage.pcMessage = "ERROR IN CREATE";
|
||||
}
|
||||
else if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
|
||||
{
|
||||
xMessage.pcMessage = "ERROR IN MATH";
|
||||
}
|
||||
else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
xMessage.pcMessage = "ERROR IN REC MUTEX";
|
||||
}
|
||||
else if( ulIdleError != pdFALSE )
|
||||
{
|
||||
xMessage.pcMessage = "ERROR IN HOOK";
|
||||
}
|
||||
else if( xAreIntQueueTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
xMessage.pcMessage = "ERROR IN INT QUEUE";
|
||||
}
|
||||
|
||||
|
||||
/* Send the message to the OLED gatekeeper for display. */
|
||||
xHigherPriorityTaskWoken = pdFALSE;
|
||||
xQueueSendFromISR( xOLEDQueue, &xMessage, &xHigherPriorityTaskWoken );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vOLEDTask( void *pvParameters )
|
||||
{
|
||||
xOLEDMessage xMessage;
|
||||
unsigned portLONG ulY, ulMaxY;
|
||||
static portCHAR cMessage[ mainMAX_MSG_LEN ];
|
||||
extern volatile unsigned portLONG ulMaxJitter;
|
||||
unsigned portBASE_TYPE uxUnusedStackOnEntry, uxUnusedStackNow;
|
||||
const unsigned portCHAR *pucImage;
|
||||
|
||||
/* Functions to access the OLED. The one used depends on the dev kit
|
||||
being used. */
|
||||
void ( *vOLEDInit )( unsigned portLONG ) = NULL;
|
||||
void ( *vOLEDStringDraw )( const portCHAR *, unsigned portLONG, unsigned portLONG, unsigned portCHAR ) = NULL;
|
||||
void ( *vOLEDImageDraw )( const unsigned portCHAR *, unsigned portLONG, unsigned portLONG, unsigned portLONG, unsigned portLONG ) = NULL;
|
||||
void ( *vOLEDClear )( void ) = NULL;
|
||||
|
||||
/* Just for demo purposes. */
|
||||
uxUnusedStackOnEntry = uxTaskGetStackHighWaterMark( NULL );
|
||||
|
||||
/* Map the OLED access functions to the driver functions that are appropriate
|
||||
for the evaluation kit being used. */
|
||||
switch( HWREG( SYSCTL_DID1 ) & SYSCTL_DID1_PRTNO_MASK )
|
||||
{
|
||||
case SYSCTL_DID1_PRTNO_6965 :
|
||||
case SYSCTL_DID1_PRTNO_2965 : vOLEDInit = OSRAM128x64x4Init;
|
||||
vOLEDStringDraw = OSRAM128x64x4StringDraw;
|
||||
vOLEDImageDraw = OSRAM128x64x4ImageDraw;
|
||||
vOLEDClear = OSRAM128x64x4Clear;
|
||||
ulMaxY = mainMAX_ROWS_64;
|
||||
pucImage = pucBasicBitmap;
|
||||
break;
|
||||
|
||||
case SYSCTL_DID1_PRTNO_1968 :
|
||||
case SYSCTL_DID1_PRTNO_8962 : vOLEDInit = RIT128x96x4Init;
|
||||
vOLEDStringDraw = RIT128x96x4StringDraw;
|
||||
vOLEDImageDraw = RIT128x96x4ImageDraw;
|
||||
vOLEDClear = RIT128x96x4Clear;
|
||||
ulMaxY = mainMAX_ROWS_96;
|
||||
pucImage = pucBasicBitmap;
|
||||
break;
|
||||
|
||||
default : vOLEDInit = vFormike128x128x16Init;
|
||||
vOLEDStringDraw = vFormike128x128x16StringDraw;
|
||||
vOLEDImageDraw = vFormike128x128x16ImageDraw;
|
||||
vOLEDClear = vFormike128x128x16Clear;
|
||||
ulMaxY = mainMAX_ROWS_128;
|
||||
pucImage = pucGrLibBitmap;
|
||||
break;
|
||||
}
|
||||
|
||||
ulY = ulMaxY;
|
||||
|
||||
/* Initialise the OLED and display a startup message. */
|
||||
vOLEDInit( ulSSI_FREQUENCY );
|
||||
vOLEDStringDraw( "POWERED BY FreeRTOS", 0, 0, mainFULL_SCALE );
|
||||
vOLEDImageDraw( pucImage, 0, mainCHARACTER_HEIGHT + 1, bmpBITMAP_WIDTH, bmpBITMAP_HEIGHT );
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Wait for a message to arrive that requires displaying. */
|
||||
xQueueReceive( xOLEDQueue, &xMessage, portMAX_DELAY );
|
||||
|
||||
/* Write the message on the next available row. */
|
||||
ulY += mainCHARACTER_HEIGHT;
|
||||
if( ulY >= ulMaxY )
|
||||
{
|
||||
ulY = mainCHARACTER_HEIGHT;
|
||||
vOLEDClear();
|
||||
vOLEDStringDraw( pcWelcomeMessage, 0, 0, mainFULL_SCALE );
|
||||
}
|
||||
|
||||
/* Display the message along with the maximum jitter time from the
|
||||
high priority time test. */
|
||||
sprintf( cMessage, "%s [%uns]", xMessage.pcMessage, ulMaxJitter * mainNS_PER_CLOCK );
|
||||
vOLEDStringDraw( cMessage, 0, ulY, mainFULL_SCALE );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed portCHAR *pcTaskName )
|
||||
{
|
||||
for( ;; );
|
||||
}
|
||||
|
||||
|
933
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/osram128x64x4.c
Normal file
933
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/osram128x64x4.c
Normal file
|
@ -0,0 +1,933 @@
|
|||
//*****************************************************************************
|
||||
//
|
||||
// osram128x64x4.c - Driver for the OSRAM 128x64x4 graphical OLED display.
|
||||
//
|
||||
// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved.
|
||||
//
|
||||
// Software License Agreement
|
||||
//
|
||||
// Luminary Micro, Inc. (LMI) is supplying this software for use solely and
|
||||
// exclusively on LMI's microcontroller products.
|
||||
//
|
||||
// The software is owned by LMI and/or its suppliers, and is protected under
|
||||
// applicable copyright laws. All rights are reserved. Any use in violation
|
||||
// of the foregoing restrictions may subject the user to criminal sanctions
|
||||
// under applicable laws, as well as to civil liability for the breach of the
|
||||
// terms and conditions of this license.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
//
|
||||
// This is part of revision 1408 of the Stellaris Peripheral Driver Library.
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! \addtogroup ek_lm3sx965_api
|
||||
//! @{
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
#include "hw_ssi.h"
|
||||
#include "hw_memmap.h"
|
||||
#include "hw_sysctl.h"
|
||||
#include "hw_types.h"
|
||||
#include "debug.h"
|
||||
#include "gpio.h"
|
||||
#include "ssi.h"
|
||||
#include "sysctl.h"
|
||||
#include "osram128x64x4.h"
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Flag to indicate if SSI port is enabled for OSRAM usage.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static volatile tBoolean g_bSSIEnabled = false;
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Define the OSRAM 128x64x4 Remap Setting(s). This will be used in
|
||||
// several places in the code to switch between vertical and horizontal
|
||||
// address incrementing.
|
||||
//
|
||||
// The Remap Command (0xA0) takes one 8-bit parameter. The parameter is
|
||||
// defined as follows.
|
||||
//
|
||||
// Bit 7: Reserved
|
||||
// Bit 6: Disable(0)/Enable(1) COM Split Odd Even
|
||||
// When enabled, the COM signals are split Odd on one side, even on
|
||||
// the other. Otherwise, they are split 0-39 on one side, 40-79 on
|
||||
// the other.
|
||||
// Bit 5: Reserved
|
||||
// Bit 4: Disable(0)/Enable(1) COM Remap
|
||||
// When Enabled, ROW 0-79 map to COM 79-0 (i.e. reverse row order)
|
||||
// Bit 3: Reserved
|
||||
// Bit 2: Horizontal(0)/Vertical(1) Address Increment
|
||||
// When set, data RAM address will increment along the column rather
|
||||
// than along the row.
|
||||
// Bit 1: Disable(0)/Enable(1) Nibble Remap
|
||||
// When enabled, the upper and lower nibbles in the DATA bus for access
|
||||
// to the data RAM are swapped.
|
||||
// Bit 0: Disable(0)/Enable(1) Column Address Remap
|
||||
// When enabled, DATA RAM columns 0-63 are remapped to Segment Columns
|
||||
// 127-0.
|
||||
//
|
||||
//*****************************************************************************
|
||||
#define OSRAM_INIT_REMAP 0x52
|
||||
#define OSRAM_INIT_OFFSET 0x4C
|
||||
static const unsigned char g_pucOSRAM128x64x4VerticalInc[] = { 0xA0, 0x56 };
|
||||
static const unsigned char g_pucOSRAM128x64x4HorizontalInc[] = { 0xA0, 0x52 };
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// A 5x7 font (in a 6x8 cell, where the sixth column is omitted from this
|
||||
// table) for displaying text on the OLED display. The data is organized as
|
||||
// bytes from the left column to the right column, with each byte containing
|
||||
// the top row in the LSB and the bottom row in the MSB.
|
||||
//
|
||||
// Note: This is the same font data that is used in the EK-LM3S811
|
||||
// osram96x16x1 driver. The single bit-per-pixel is expaned in the StringDraw
|
||||
// function to the appropriate four bit-per-pixel gray scale format.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static const unsigned char g_pucFont[96][5] =
|
||||
{
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, // " "
|
||||
{ 0x00, 0x00, 0x4f, 0x00, 0x00 }, // !
|
||||
{ 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
|
||||
{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
|
||||
{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
|
||||
{ 0x23, 0x13, 0x08, 0x64, 0x62 }, // %
|
||||
{ 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
|
||||
{ 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
|
||||
{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
|
||||
{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
|
||||
{ 0x14, 0x08, 0x3e, 0x08, 0x14 }, // *
|
||||
{ 0x08, 0x08, 0x3e, 0x08, 0x08 }, // +
|
||||
{ 0x00, 0x50, 0x30, 0x00, 0x00 }, // ,
|
||||
{ 0x08, 0x08, 0x08, 0x08, 0x08 }, // -
|
||||
{ 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
|
||||
{ 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
|
||||
{ 0x3e, 0x51, 0x49, 0x45, 0x3e }, // 0
|
||||
{ 0x00, 0x42, 0x7f, 0x40, 0x00 }, // 1
|
||||
{ 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
|
||||
{ 0x21, 0x41, 0x45, 0x4b, 0x31 }, // 3
|
||||
{ 0x18, 0x14, 0x12, 0x7f, 0x10 }, // 4
|
||||
{ 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
|
||||
{ 0x3c, 0x4a, 0x49, 0x49, 0x30 }, // 6
|
||||
{ 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
|
||||
{ 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
|
||||
{ 0x06, 0x49, 0x49, 0x29, 0x1e }, // 9
|
||||
{ 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
|
||||
{ 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
|
||||
{ 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
|
||||
{ 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
|
||||
{ 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
|
||||
{ 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
|
||||
{ 0x32, 0x49, 0x79, 0x41, 0x3e }, // @
|
||||
{ 0x7e, 0x11, 0x11, 0x11, 0x7e }, // A
|
||||
{ 0x7f, 0x49, 0x49, 0x49, 0x36 }, // B
|
||||
{ 0x3e, 0x41, 0x41, 0x41, 0x22 }, // C
|
||||
{ 0x7f, 0x41, 0x41, 0x22, 0x1c }, // D
|
||||
{ 0x7f, 0x49, 0x49, 0x49, 0x41 }, // E
|
||||
{ 0x7f, 0x09, 0x09, 0x09, 0x01 }, // F
|
||||
{ 0x3e, 0x41, 0x49, 0x49, 0x7a }, // G
|
||||
{ 0x7f, 0x08, 0x08, 0x08, 0x7f }, // H
|
||||
{ 0x00, 0x41, 0x7f, 0x41, 0x00 }, // I
|
||||
{ 0x20, 0x40, 0x41, 0x3f, 0x01 }, // J
|
||||
{ 0x7f, 0x08, 0x14, 0x22, 0x41 }, // K
|
||||
{ 0x7f, 0x40, 0x40, 0x40, 0x40 }, // L
|
||||
{ 0x7f, 0x02, 0x0c, 0x02, 0x7f }, // M
|
||||
{ 0x7f, 0x04, 0x08, 0x10, 0x7f }, // N
|
||||
{ 0x3e, 0x41, 0x41, 0x41, 0x3e }, // O
|
||||
{ 0x7f, 0x09, 0x09, 0x09, 0x06 }, // P
|
||||
{ 0x3e, 0x41, 0x51, 0x21, 0x5e }, // Q
|
||||
{ 0x7f, 0x09, 0x19, 0x29, 0x46 }, // R
|
||||
{ 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
|
||||
{ 0x01, 0x01, 0x7f, 0x01, 0x01 }, // T
|
||||
{ 0x3f, 0x40, 0x40, 0x40, 0x3f }, // U
|
||||
{ 0x1f, 0x20, 0x40, 0x20, 0x1f }, // V
|
||||
{ 0x3f, 0x40, 0x38, 0x40, 0x3f }, // W
|
||||
{ 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
|
||||
{ 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
|
||||
{ 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
|
||||
{ 0x00, 0x7f, 0x41, 0x41, 0x00 }, // [
|
||||
{ 0x02, 0x04, 0x08, 0x10, 0x20 }, // "\"
|
||||
{ 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ]
|
||||
{ 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
|
||||
{ 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
|
||||
{ 0x00, 0x01, 0x02, 0x04, 0x00 }, // `
|
||||
{ 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
|
||||
{ 0x7f, 0x48, 0x44, 0x44, 0x38 }, // b
|
||||
{ 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
|
||||
{ 0x38, 0x44, 0x44, 0x48, 0x7f }, // d
|
||||
{ 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
|
||||
{ 0x08, 0x7e, 0x09, 0x01, 0x02 }, // f
|
||||
{ 0x0c, 0x52, 0x52, 0x52, 0x3e }, // g
|
||||
{ 0x7f, 0x08, 0x04, 0x04, 0x78 }, // h
|
||||
{ 0x00, 0x44, 0x7d, 0x40, 0x00 }, // i
|
||||
{ 0x20, 0x40, 0x44, 0x3d, 0x00 }, // j
|
||||
{ 0x7f, 0x10, 0x28, 0x44, 0x00 }, // k
|
||||
{ 0x00, 0x41, 0x7f, 0x40, 0x00 }, // l
|
||||
{ 0x7c, 0x04, 0x18, 0x04, 0x78 }, // m
|
||||
{ 0x7c, 0x08, 0x04, 0x04, 0x78 }, // n
|
||||
{ 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
|
||||
{ 0x7c, 0x14, 0x14, 0x14, 0x08 }, // p
|
||||
{ 0x08, 0x14, 0x14, 0x18, 0x7c }, // q
|
||||
{ 0x7c, 0x08, 0x04, 0x04, 0x08 }, // r
|
||||
{ 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
|
||||
{ 0x04, 0x3f, 0x44, 0x40, 0x20 }, // t
|
||||
{ 0x3c, 0x40, 0x40, 0x20, 0x7c }, // u
|
||||
{ 0x1c, 0x20, 0x40, 0x20, 0x1c }, // v
|
||||
{ 0x3c, 0x40, 0x30, 0x40, 0x3c }, // w
|
||||
{ 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
|
||||
{ 0x0c, 0x50, 0x50, 0x50, 0x3c }, // y
|
||||
{ 0x44, 0x64, 0x54, 0x4c, 0x44 }, // z
|
||||
{ 0x00, 0x08, 0x36, 0x41, 0x00 }, // {
|
||||
{ 0x00, 0x00, 0x7f, 0x00, 0x00 }, // |
|
||||
{ 0x00, 0x41, 0x36, 0x08, 0x00 }, // }
|
||||
{ 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~
|
||||
{ 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~
|
||||
};
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// The sequence of commands used to initialize the SSD0303 controller. Each
|
||||
// command is described as follows: there is a byte specifying the number of
|
||||
// bytes in the command sequence, followed by that many bytes of command data.
|
||||
// Note: This initialization sequence is derived from OSRAM App Note AN018.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static const unsigned char g_pucOSRAM128x64x4Init[] =
|
||||
{
|
||||
//
|
||||
// Column Address
|
||||
//
|
||||
4, 0x15, 0, 63, 0xe3,
|
||||
|
||||
//
|
||||
// Row Address
|
||||
//
|
||||
4, 0x75, 0, 63, 0xe3,
|
||||
|
||||
//
|
||||
// Contrast Control
|
||||
//
|
||||
3, 0x81, 50, 0xe3,
|
||||
|
||||
//
|
||||
// Half Current Range
|
||||
//
|
||||
2, 0x85, 0xe3,
|
||||
|
||||
//
|
||||
// Display Re-map
|
||||
//
|
||||
3, 0xA0, OSRAM_INIT_REMAP, 0xe3,
|
||||
|
||||
//
|
||||
// Display Start Line
|
||||
//
|
||||
3, 0xA1, 0, 0xe3,
|
||||
|
||||
//
|
||||
// Display Offset
|
||||
//
|
||||
3, 0xA2, OSRAM_INIT_OFFSET, 0xe3,
|
||||
|
||||
//
|
||||
// Display Mode Normal
|
||||
//
|
||||
2, 0xA4, 0xe3,
|
||||
|
||||
//
|
||||
// Multiplex Ratio
|
||||
//
|
||||
3, 0xA8, 63, 0xe3,
|
||||
|
||||
//
|
||||
// Phase Length
|
||||
//
|
||||
3, 0xB1, 0x22, 0xe3,
|
||||
|
||||
//
|
||||
// Row Period
|
||||
//
|
||||
3, 0xB2, 70, 0xe3,
|
||||
|
||||
//
|
||||
// Display Clock Divide
|
||||
//
|
||||
3, 0xB3, 0xF1, 0xe3,
|
||||
|
||||
//
|
||||
// VSL
|
||||
//
|
||||
3, 0xBF, 0x0D, 0xe3,
|
||||
|
||||
//
|
||||
// VCOMH
|
||||
//
|
||||
3, 0xBE, 0x02, 0xe3,
|
||||
|
||||
//
|
||||
// VP
|
||||
//
|
||||
3, 0xBC, 0x10, 0xe3,
|
||||
|
||||
//
|
||||
// Gamma
|
||||
//
|
||||
10, 0xB8, 0x01, 0x11, 0x22, 0x32, 0x43, 0x54, 0x65, 0x76, 0xe3,
|
||||
|
||||
//
|
||||
// Set DC-DC
|
||||
3, 0xAD, 0x03, 0xe3,
|
||||
|
||||
//
|
||||
// Display ON/OFF
|
||||
//
|
||||
2, 0xAF, 0xe3,
|
||||
};
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! \internal
|
||||
//!
|
||||
//! Write a sequence of command bytes to the SSD0323 controller.
|
||||
//!
|
||||
//! The data is written in a polled fashion; this function will not return
|
||||
//! until the entire byte sequence has been written to the controller.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
OSRAMWriteCommand(const unsigned char *pucBuffer, unsigned long ulCount)
|
||||
{
|
||||
unsigned long ulTemp;
|
||||
|
||||
//
|
||||
// Return iff SSI port is not enabled for OSRAM.
|
||||
//
|
||||
if(!g_bSSIEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Clear the command/control bit to enable command mode.
|
||||
//
|
||||
GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, 0);
|
||||
|
||||
//
|
||||
// Loop while there are more bytes left to be transferred.
|
||||
//
|
||||
while(ulCount != 0)
|
||||
{
|
||||
//
|
||||
// Write the next byte to the controller.
|
||||
//
|
||||
SSIDataPut(SSI0_BASE, *pucBuffer++);
|
||||
|
||||
//
|
||||
// Dummy read to drain the fifo and time the GPIO signal.
|
||||
//
|
||||
SSIDataGet(SSI0_BASE, &ulTemp);
|
||||
|
||||
//
|
||||
// Decrement the BYTE counter.
|
||||
//
|
||||
ulCount--;
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! \internal
|
||||
//!
|
||||
//! Write a sequence of data bytes to the SSD0323 controller.
|
||||
//!
|
||||
//! The data is written in a polled fashion; this function will not return
|
||||
//! until the entire byte sequence has been written to the controller.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
OSRAMWriteData(const unsigned char *pucBuffer, unsigned long ulCount)
|
||||
{
|
||||
unsigned long ulTemp;
|
||||
|
||||
//
|
||||
// Return iff SSI port is not enabled for OSRAM.
|
||||
//
|
||||
if(!g_bSSIEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Set the command/control bit to enable data mode.
|
||||
//
|
||||
GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_PIN_7);
|
||||
|
||||
//
|
||||
// Loop while there are more bytes left to be transferred.
|
||||
//
|
||||
while(ulCount != 0)
|
||||
{
|
||||
//
|
||||
// Write the next byte to the controller.
|
||||
//
|
||||
SSIDataPut(SSI0_BASE, *pucBuffer++);
|
||||
|
||||
//
|
||||
// Dummy read to drain the fifo and time the GPIO signal.
|
||||
//
|
||||
SSIDataGet(SSI0_BASE, &ulTemp);
|
||||
|
||||
//
|
||||
// Decrement the BYTE counter.
|
||||
//
|
||||
ulCount--;
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Clears the OLED display.
|
||||
//!
|
||||
//! This function will clear the display RAM. All pixels in the display will
|
||||
//! be turned off.
|
||||
//!
|
||||
//! This function is contained in <tt>osram128x64x4.c</tt>, with
|
||||
//! <tt>osram128x64x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
OSRAM128x64x4Clear(void)
|
||||
{
|
||||
static const unsigned char pucCommand1[] = { 0x15, 0, 63 };
|
||||
static const unsigned char pucCommand2[] = { 0x75, 0, 79 };
|
||||
unsigned long ulRow, ulColumn;
|
||||
static unsigned char pucZeroBuffer[8] = { 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
|
||||
//
|
||||
// Set the window to fill the entire display.
|
||||
//
|
||||
OSRAMWriteCommand(pucCommand1, sizeof(pucCommand1));
|
||||
OSRAMWriteCommand(pucCommand2, sizeof(pucCommand2));
|
||||
OSRAMWriteCommand(g_pucOSRAM128x64x4VerticalInc,
|
||||
sizeof(g_pucOSRAM128x64x4VerticalInc));
|
||||
|
||||
//
|
||||
// In vertical address increment mode, loop through each column, filling
|
||||
// each row with 0.
|
||||
//
|
||||
for(ulColumn = 0; ulColumn < (128/2); ulColumn++)
|
||||
{
|
||||
//
|
||||
// 8 rows (bytes) per row of text.
|
||||
//
|
||||
for(ulRow = 0; ulRow < 80; ulRow += 8)
|
||||
{
|
||||
OSRAMWriteData(pucZeroBuffer, sizeof(pucZeroBuffer));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Displays a string on the OLED display.
|
||||
//!
|
||||
//! \param pcStr is a pointer to the string to display.
|
||||
//! \param ulX is the horizontal position to display the string, specified in
|
||||
//! columns from the left edge of the display.
|
||||
//! \param ulY is the vertical position to display the string, specified in
|
||||
//! rows from the top edge of the display.
|
||||
//! \param ucLevel is the 4-bit grey scale value to be used for displayed text.
|
||||
//!
|
||||
//! This function will draw a string on the display. Only the ASCII characters
|
||||
//! between 32 (space) and 126 (tilde) are supported; other characters will
|
||||
//! result in random data being draw on the display (based on whatever appears
|
||||
//! before/after the font in memory). The font is mono-spaced, so characters
|
||||
//! such as "i" and "l" have more white space around them than characters such
|
||||
//! as "m" or "w".
|
||||
//!
|
||||
//! If the drawing of the string reaches the right edge of the display, no more
|
||||
//! characters will be drawn. Therefore, special care is not required to avoid
|
||||
//! supplying a string that is "too long" to display.
|
||||
//!
|
||||
//! This function is contained in <tt>osram128x64x4.c</tt>, with
|
||||
//! <tt>osram128x64x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \note Because the OLED display packs 2 pixels of data in a single byte, the
|
||||
//! parameter \e ulX must be an even column number (e.g. 0, 2, 4, etc).
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
OSRAM128x64x4StringDraw(const char *pcStr, unsigned long ulX,
|
||||
unsigned long ulY, unsigned char ucLevel)
|
||||
{
|
||||
static unsigned char pucBuffer[8];
|
||||
unsigned long ulIdx1, ulIdx2;
|
||||
unsigned char ucTemp;
|
||||
|
||||
//
|
||||
// Check the arguments.
|
||||
//
|
||||
ASSERT(ulX < 128);
|
||||
ASSERT((ulX & 1) == 0);
|
||||
ASSERT(ulY < 64);
|
||||
ASSERT(ucLevel < 16);
|
||||
|
||||
//
|
||||
// Setup a window starting at the specified column and row, ending
|
||||
// at the right edge of the display and 8 rows down (single character row).
|
||||
//
|
||||
pucBuffer[0] = 0x15;
|
||||
pucBuffer[1] = ulX / 2;
|
||||
pucBuffer[2] = 63;
|
||||
OSRAMWriteCommand(pucBuffer, 3);
|
||||
pucBuffer[0] = 0x75;
|
||||
pucBuffer[1] = ulY;
|
||||
pucBuffer[2] = ulY + 7;
|
||||
OSRAMWriteCommand(pucBuffer, 3);
|
||||
OSRAMWriteCommand(g_pucOSRAM128x64x4VerticalInc,
|
||||
sizeof(g_pucOSRAM128x64x4VerticalInc));
|
||||
|
||||
//
|
||||
// Loop while there are more characters in the string.
|
||||
//
|
||||
while(*pcStr != 0)
|
||||
{
|
||||
//
|
||||
// Get a working copy of the current character and convert to an
|
||||
// index into the character bit-map array.
|
||||
//
|
||||
ucTemp = *pcStr;
|
||||
ucTemp &= 0x7F;
|
||||
if(ucTemp < ' ')
|
||||
{
|
||||
ucTemp = ' ';
|
||||
}
|
||||
else
|
||||
{
|
||||
ucTemp -= ' ';
|
||||
}
|
||||
|
||||
//
|
||||
// Build and display the character buffer.
|
||||
//
|
||||
for(ulIdx1 = 0; ulIdx1 < 3; ulIdx1++)
|
||||
{
|
||||
//
|
||||
// Convert two columns of 1-bit font data into a single data
|
||||
// byte column of 4-bit font data.
|
||||
//
|
||||
for(ulIdx2 = 0; ulIdx2 < 8; ulIdx2++)
|
||||
{
|
||||
pucBuffer[ulIdx2] = 0;
|
||||
if(g_pucFont[ucTemp][ulIdx1*2] & (1 << ulIdx2))
|
||||
{
|
||||
pucBuffer[ulIdx2] = ((ucLevel << 4) & 0xf0);
|
||||
}
|
||||
if((ulIdx1 < 2) &&
|
||||
(g_pucFont[ucTemp][ulIdx1*2+1] & (1 << ulIdx2)))
|
||||
{
|
||||
pucBuffer[ulIdx2] |= ((ucLevel << 0) & 0x0f);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// If there is room, dump the single data byte column to the
|
||||
// display. Otherwise, bail out.
|
||||
//
|
||||
if(ulX < 126)
|
||||
{
|
||||
OSRAMWriteData(pucBuffer, 8);
|
||||
ulX += 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Advance to the next character.
|
||||
//
|
||||
pcStr++;
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Displays an image on the OLED display.
|
||||
//!
|
||||
//! \param pucImage is a pointer to the image data.
|
||||
//! \param ulX is the horizontal position to display this image, specified in
|
||||
//! columns from the left edge of the display.
|
||||
//! \param ulY is the vertical position to display this image, specified in
|
||||
//! rows from the top of the display.
|
||||
//! \param ulWidth is the width of the image, specified in columns.
|
||||
//! \param ulHeight is the height of the image, specified in rows.
|
||||
//!
|
||||
//! This function will display a bitmap graphic on the display. Because of the
|
||||
//! format of the display RAM, the starting column (/e ulX) and the number of
|
||||
//! columns (/e ulWidth) must be an integer multiple of two.
|
||||
//!
|
||||
//! The image data is organized with the first row of image data appearing left
|
||||
//! to right, followed immediately by the second row of image data. Each byte
|
||||
//! contains the data for two columns in the current row, with the leftmost
|
||||
//! column being contained in bits 7:4 and the rightmost column being contained
|
||||
//! in bits 3:0.
|
||||
//!
|
||||
//! For example, an image six columns wide and seven scan lines tall would
|
||||
//! be arranged as follows (showing how the twenty one bytes of the image would
|
||||
//! appear on the display):
|
||||
//!
|
||||
//! \verbatim
|
||||
//! +-------------------+-------------------+-------------------+
|
||||
//! | Byte 0 | Byte 1 | Byte 2 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | Byte 3 | Byte 4 | Byte 5 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | Byte 6 | Byte 7 | Byte 8 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | Byte 9 | Byte 10 | Byte 11 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | Byte 12 | Byte 13 | Byte 14 |
|
||||
//! +---------+---------+---------+--3------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | Byte 15 | Byte 16 | Byte 17 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | Byte 18 | Byte 19 | Byte 20 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! \endverbatim
|
||||
//!
|
||||
//! This function is contained in <tt>osram128x64x4.c</tt>, with
|
||||
//! <tt>osram128x64x4.h</tt> containing the API definition for use by`
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
OSRAM128x64x4ImageDraw(const unsigned char *pucImage, unsigned long ulX,
|
||||
unsigned long ulY, unsigned long ulWidth,
|
||||
unsigned long ulHeight)
|
||||
{
|
||||
static unsigned char pucBuffer[8];
|
||||
|
||||
//
|
||||
// Check the arguments.
|
||||
//
|
||||
ASSERT(ulX < 128);
|
||||
ASSERT((ulX & 1) == 0);
|
||||
ASSERT(ulY < 64);
|
||||
ASSERT((ulX + ulWidth) <= 128);
|
||||
ASSERT((ulY + ulHeight) <= 64);
|
||||
ASSERT((ulWidth & 1) == 0);
|
||||
|
||||
//
|
||||
// Setup a window starting at the specified column and row, and ending
|
||||
// at the column + width and row+height.
|
||||
//
|
||||
pucBuffer[0] = 0x15;
|
||||
pucBuffer[1] = ulX / 2;
|
||||
pucBuffer[2] = (ulX + ulWidth - 2) / 2;
|
||||
OSRAMWriteCommand(pucBuffer, 3);
|
||||
pucBuffer[0] = 0x75;
|
||||
pucBuffer[1] = ulY;
|
||||
pucBuffer[2] = ulY + ulHeight - 1;
|
||||
OSRAMWriteCommand(pucBuffer, 3);
|
||||
OSRAMWriteCommand(g_pucOSRAM128x64x4HorizontalInc,
|
||||
sizeof(g_pucOSRAM128x64x4HorizontalInc));
|
||||
|
||||
//
|
||||
// Loop while there are more rows to display.
|
||||
//
|
||||
while(ulHeight--)
|
||||
{
|
||||
//
|
||||
// Write this row of image data.
|
||||
//
|
||||
OSRAMWriteData(pucImage, (ulWidth / 2));
|
||||
|
||||
//
|
||||
// Advance to the next row of the image.
|
||||
//
|
||||
pucImage += (ulWidth / 2);
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Enable the SSI component of the OLED display driver.
|
||||
//!
|
||||
//! \param ulFrequency specifies the SSI Clock Frequency to be used.
|
||||
//!
|
||||
//! This function initializes the SSI interface to the OLED display.
|
||||
//!
|
||||
//! This function is contained in <tt>osram128x64x4.c</tt>, with
|
||||
//! <tt>osram128x64x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
OSRAM128x64x4Enable(unsigned long ulFrequency)
|
||||
{
|
||||
unsigned long ulTemp;
|
||||
|
||||
//
|
||||
// Disable the SSI port.
|
||||
//
|
||||
SSIDisable(SSI0_BASE);
|
||||
|
||||
//
|
||||
// Configure the SSI0 port for master mode.
|
||||
//
|
||||
SSIConfig(SSI0_BASE, SSI_FRF_MOTO_MODE_2, SSI_MODE_MASTER, ulFrequency, 8);
|
||||
|
||||
//
|
||||
// (Re)Enable SSI control of the FSS pin.
|
||||
//
|
||||
GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3);
|
||||
GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA,
|
||||
GPIO_PIN_TYPE_STD_WPU);
|
||||
|
||||
//
|
||||
// Enable the SSI port.
|
||||
//
|
||||
SSIEnable(SSI0_BASE);
|
||||
|
||||
//
|
||||
// Drain the receive fifo.
|
||||
//
|
||||
while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// Indicate that the OSRAM driver can use the SSI Port.
|
||||
//
|
||||
g_bSSIEnabled = true;
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Enable the SSI component of the OLED display driver.
|
||||
//!
|
||||
//! \param ulFrequency specifies the SSI Clock Frequency to be used.
|
||||
//!
|
||||
//! This function initializes the SSI interface to the OLED display.
|
||||
//!
|
||||
//! This function is contained in <tt>osram128x64x4.c</tt>, with
|
||||
//! <tt>osram128x64x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
OSRAM128x64x4Disable(void)
|
||||
{
|
||||
unsigned long ulTemp;
|
||||
|
||||
//
|
||||
// Indicate that the OSRAM driver can no longer use the SSI Port.
|
||||
//
|
||||
g_bSSIEnabled = false;
|
||||
|
||||
//
|
||||
// Drain the receive fifo.
|
||||
//
|
||||
while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// Disable the SSI port.
|
||||
//
|
||||
SSIDisable(SSI0_BASE);
|
||||
|
||||
//
|
||||
// Disable SSI control of the FSS pin.
|
||||
//
|
||||
GPIODirModeSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_DIR_MODE_OUT);
|
||||
GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA,
|
||||
GPIO_PIN_TYPE_STD_WPU);
|
||||
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_PIN_3);
|
||||
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Initialize the OLED display.
|
||||
//!
|
||||
//! \param ulFrequency specifies the SSI Clock Frequency to be used.
|
||||
//!
|
||||
//! This function initializes the SSI interface to the OLED display and
|
||||
//! configures the SSD0323 controller on the panel.
|
||||
//!
|
||||
//! This function is contained in <tt>osram128x64x4.c</tt>, with
|
||||
//! <tt>osram128x64x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
OSRAM128x64x4Init(unsigned long ulFrequency)
|
||||
{
|
||||
unsigned long ulIdx;
|
||||
|
||||
//
|
||||
// Enable the SSI0 and GPIO port blocks as they are needed by this driver.
|
||||
//
|
||||
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
|
||||
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
|
||||
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
|
||||
|
||||
//
|
||||
// Configure the SSI0CLK and SSIOTX pins for SSI operation.
|
||||
//
|
||||
GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5);
|
||||
GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2, GPIO_STRENGTH_8MA,
|
||||
GPIO_PIN_TYPE_STD_WPU);
|
||||
GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA,
|
||||
GPIO_PIN_TYPE_STD_WPU);
|
||||
GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_5, GPIO_STRENGTH_8MA,
|
||||
GPIO_PIN_TYPE_STD_WPU);
|
||||
|
||||
//
|
||||
// Configure the PC7 pin as a D/Cn signal for OLED device.
|
||||
//
|
||||
GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_DIR_MODE_OUT);
|
||||
GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_STRENGTH_8MA,
|
||||
GPIO_PIN_TYPE_STD);
|
||||
GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_PIN_7);
|
||||
|
||||
//
|
||||
// Configure and enable the SSI0 port for master mode.
|
||||
//
|
||||
OSRAM128x64x4Enable(ulFrequency);
|
||||
|
||||
//
|
||||
// Clear the frame buffer.
|
||||
//
|
||||
OSRAM128x64x4Clear();
|
||||
|
||||
//
|
||||
// Initialize the SSD0323 controller. Loop through the initialization
|
||||
// sequence array, sending each command "string" to the controller.
|
||||
//
|
||||
for(ulIdx = 0; ulIdx < sizeof(g_pucOSRAM128x64x4Init);
|
||||
ulIdx += g_pucOSRAM128x64x4Init[ulIdx] + 1)
|
||||
{
|
||||
//
|
||||
// Send this command.
|
||||
//
|
||||
OSRAMWriteCommand(g_pucOSRAM128x64x4Init + ulIdx + 1,
|
||||
g_pucOSRAM128x64x4Init[ulIdx] - 1);
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Turns on the OLED display.
|
||||
//!
|
||||
//! This function will turn on the OLED display, causing it to display the
|
||||
//! contents of its internal frame buffer.
|
||||
//!
|
||||
//! This function is contained in <tt>osram128x64x4.c</tt>, with
|
||||
//! <tt>osram128x64x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
OSRAM128x64x4DisplayOn(void)
|
||||
{
|
||||
unsigned long ulIdx;
|
||||
|
||||
//
|
||||
// Initialize the SSD0323 controller. Loop through the initialization
|
||||
// sequence array, sending each command "string" to the controller.
|
||||
//
|
||||
for(ulIdx = 0; ulIdx < sizeof(g_pucOSRAM128x64x4Init);
|
||||
ulIdx += g_pucOSRAM128x64x4Init[ulIdx] + 1)
|
||||
{
|
||||
//
|
||||
// Send this command.
|
||||
//
|
||||
OSRAMWriteCommand(g_pucOSRAM128x64x4Init + ulIdx + 1,
|
||||
g_pucOSRAM128x64x4Init[ulIdx] - 1);
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Turns off the OLED display.
|
||||
//!
|
||||
//! This function will turn off the OLED display. This will stop the scanning
|
||||
//! of the panel and turn off the on-chip DC-DC converter, preventing damage to
|
||||
//! the panel due to burn-in (it has similar characters to a CRT in this
|
||||
//! respect).
|
||||
//!
|
||||
//! This function is contained in <tt>osram128x64x4.c</tt>, with
|
||||
//! <tt>osram128x64x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
OSRAM128x64x4DisplayOff(void)
|
||||
{
|
||||
static const unsigned char pucCommand1[] =
|
||||
{
|
||||
0xAE, 0xAD, 0x02
|
||||
};
|
||||
|
||||
//
|
||||
// Turn off the DC-DC converter and the display.
|
||||
//
|
||||
OSRAMWriteCommand(pucCommand1, sizeof(pucCommand1));
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Close the Doxygen group.
|
||||
//! @}
|
||||
//
|
||||
//*****************************************************************************
|
|
@ -0,0 +1,63 @@
|
|||
//*****************************************************************************
|
||||
//
|
||||
// osram128x64x4.h - Prototypes for the driver for the OSRAM 128x64x4 graphical
|
||||
// OLED display.
|
||||
//
|
||||
// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved.
|
||||
//
|
||||
// Software License Agreement
|
||||
//
|
||||
// Luminary Micro, Inc. (LMI) is supplying this software for use solely and
|
||||
// exclusively on LMI's microcontroller products.
|
||||
//
|
||||
// The software is owned by LMI and/or its suppliers, and is protected under
|
||||
// applicable copyright laws. All rights are reserved. Any use in violation
|
||||
// of the foregoing restrictions may subject the user to criminal sanctions
|
||||
// under applicable laws, as well as to civil liability for the breach of the
|
||||
// terms and conditions of this license.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
//
|
||||
// This is part of revision 1408 of the Stellaris Peripheral Driver Library.
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
#ifndef __OSRAM128X64X4_H__
|
||||
#define __OSRAM128X64X4_H__
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Prototypes for the driver APIs.
|
||||
//
|
||||
//*****************************************************************************
|
||||
extern void OSRAM128x64x4Clear(void);
|
||||
extern void OSRAM128x64x4StringDraw(const char *pcStr,
|
||||
unsigned long ulX,
|
||||
unsigned long ulY,
|
||||
unsigned char ucLevel);
|
||||
extern void OSRAM128x64x4ImageDraw(const unsigned char *pucImage,
|
||||
unsigned long ulX,
|
||||
unsigned long ulY,
|
||||
unsigned long ulWidth,
|
||||
unsigned long ulHeight);
|
||||
extern void OSRAM128x64x4Init(unsigned long ulFrequency);
|
||||
extern void OSRAM128x64x4Enable(unsigned long ulFrequency);
|
||||
extern void OSRAM128x64x4Disable(void);
|
||||
extern void OSRAM128x64x4DisplayOn(void);
|
||||
extern void OSRAM128x64x4DisplayOff(void);
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// The following macro(s) map old names for the OSRAM functions to the new
|
||||
// names. In new code, the new names should be used in favor of the old names.
|
||||
//
|
||||
//*****************************************************************************
|
||||
#ifndef DEPRECATED
|
||||
#define OSRAM128x64x1InitSSI OSRAM128x64x4Enable
|
||||
#endif
|
||||
|
||||
#endif // __OSRAM128X64X4_H__
|
|
@ -0,0 +1,2 @@
|
|||
/* Note used by this port of uIP, but required for compilation. */
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
/* Note used by this port of uIP, but required for compilation. */
|
||||
|
981
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/rit128x96x4.c
Normal file
981
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/rit128x96x4.c
Normal file
|
@ -0,0 +1,981 @@
|
|||
//*****************************************************************************
|
||||
//
|
||||
// rit128x96x4.c - Driver for the RIT 128x96x4 graphical OLED display.
|
||||
//
|
||||
// Copyright (c) 2007 Luminary Micro, Inc. All rights reserved.
|
||||
//
|
||||
// Software License Agreement
|
||||
//
|
||||
// Luminary Micro, Inc. (LMI) is supplying this software for use solely and
|
||||
// exclusively on LMI's microcontroller products.
|
||||
//
|
||||
// The software is owned by LMI and/or its suppliers, and is protected under
|
||||
// applicable copyright laws. All rights are reserved. Any use in violation
|
||||
// of the foregoing restrictions may subject the user to criminal sanctions
|
||||
// under applicable laws, as well as to civil liability for the breach of the
|
||||
// terms and conditions of this license.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
//
|
||||
// This is part of revision 1504-conf of the Stellaris Peripheral Driver Library.
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! \addtogroup ek_lm3sLM3S8962_api
|
||||
//! @{
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
#include "hw_ssi.h"
|
||||
#include "hw_memmap.h"
|
||||
#include "hw_sysctl.h"
|
||||
#include "hw_types.h"
|
||||
#include "debug.h"
|
||||
#include "gpio.h"
|
||||
#include "ssi.h"
|
||||
#include "sysctl.h"
|
||||
#include "rit128x96x4.h"
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Macros that define the peripheral, port, and pin used for the OLEDDC
|
||||
// panel control signal.
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
unsigned long ulGPIOId = 0, ulGPIOBase = 0, ulOLEDDC_PIN = 0, ulOLEDEN_PIN = 0;
|
||||
|
||||
#define LM3S8962_SYSCTL_PERIPH_GPIO_OLEDDC SYSCTL_PERIPH_GPIOA
|
||||
#define LM3S8962_GPIO_OLEDDC_BASE GPIO_PORTA_BASE
|
||||
#define LM3S8962_GPIO_OLEDDC_PIN GPIO_PIN_6
|
||||
#define LM3S8962_GPIO_OLEDEN_PIN GPIO_PIN_7
|
||||
|
||||
#define LM3S1968_SYSCTL_PERIPH_GPIO_OLEDDC SYSCTL_PERIPH_GPIOH
|
||||
#define LM3S1968_GPIO_OLEDDC_BASE GPIO_PORTH_BASE
|
||||
#define LM3S1968_GPIO_OLEDDC_PIN GPIO_PIN_2
|
||||
#define LM3S1968_GPIO_OLEDEN_PIN GPIO_PIN_3
|
||||
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Flag to indicate if SSI port is enabled for display usage.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static volatile tBoolean g_bSSIEnabled = false;
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Buffer for storing sequences of command and data for the display.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static unsigned char g_pucBuffer[8];
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Define the SSD1329 128x96x4 Remap Setting(s). This will be used in
|
||||
// several places in the code to switch between vertical and horizontal
|
||||
// address incrementing. Note that the controller support 128 rows while
|
||||
// the RIT display only uses 96.
|
||||
//
|
||||
// The Remap Command (0xA0) takes one 8-bit parameter. The parameter is
|
||||
// defined as follows.
|
||||
//
|
||||
// Bit 7: Reserved
|
||||
// Bit 6: Disable(0)/Enable(1) COM Split Odd Even
|
||||
// When enabled, the COM signals are split Odd on one side, even on
|
||||
// the other. Otherwise, they are split 0-63 on one side, 64-127 on
|
||||
// the other.
|
||||
// Bit 5: Reserved
|
||||
// Bit 4: Disable(0)/Enable(1) COM Remap
|
||||
// When Enabled, ROW 0-127 map to COM 127-0 (i.e. reverse row order)
|
||||
// Bit 3: Reserved
|
||||
// Bit 2: Horizontal(0)/Vertical(1) Address Increment
|
||||
// When set, data RAM address will increment along the column rather
|
||||
// than along the row.
|
||||
// Bit 1: Disable(0)/Enable(1) Nibble Remap
|
||||
// When enabled, the upper and lower nibbles in the DATA bus for access
|
||||
// to the data RAM are swapped.
|
||||
// Bit 0: Disable(0)/Enable(1) Column Address Remap
|
||||
// When enabled, DATA RAM columns 0-63 are remapped to Segment Columns
|
||||
// 127-0.
|
||||
//
|
||||
//*****************************************************************************
|
||||
#define RIT_INIT_REMAP 0x52 // app note says 0x51
|
||||
#define RIT_INIT_OFFSET 0x00
|
||||
static const unsigned char g_pucRIT128x96x4VerticalInc[] = { 0xA0, 0x56 };
|
||||
static const unsigned char g_pucRIT128x96x4HorizontalInc[] = { 0xA0, 0x52 };
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// A 5x7 font (in a 6x8 cell, where the sixth column is omitted from this
|
||||
// table) for displaying text on the OLED display. The data is organized as
|
||||
// bytes from the left column to the right column, with each byte containing
|
||||
// the top row in the LSB and the bottom row in the MSB.
|
||||
//
|
||||
// Note: This is the same font data that is used in the EK-LM3S811
|
||||
// osram96x16x1 driver. The single bit-per-pixel is expaned in the StringDraw
|
||||
// function to the appropriate four bit-per-pixel gray scale format.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static const unsigned char g_pucFont[96][5] =
|
||||
{
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, // " "
|
||||
{ 0x00, 0x00, 0x4f, 0x00, 0x00 }, // !
|
||||
{ 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
|
||||
{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
|
||||
{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
|
||||
{ 0x23, 0x13, 0x08, 0x64, 0x62 }, // %
|
||||
{ 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
|
||||
{ 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
|
||||
{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
|
||||
{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
|
||||
{ 0x14, 0x08, 0x3e, 0x08, 0x14 }, // *
|
||||
{ 0x08, 0x08, 0x3e, 0x08, 0x08 }, // +
|
||||
{ 0x00, 0x50, 0x30, 0x00, 0x00 }, // ,
|
||||
{ 0x08, 0x08, 0x08, 0x08, 0x08 }, // -
|
||||
{ 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
|
||||
{ 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
|
||||
{ 0x3e, 0x51, 0x49, 0x45, 0x3e }, // 0
|
||||
{ 0x00, 0x42, 0x7f, 0x40, 0x00 }, // 1
|
||||
{ 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
|
||||
{ 0x21, 0x41, 0x45, 0x4b, 0x31 }, // 3
|
||||
{ 0x18, 0x14, 0x12, 0x7f, 0x10 }, // 4
|
||||
{ 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
|
||||
{ 0x3c, 0x4a, 0x49, 0x49, 0x30 }, // 6
|
||||
{ 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
|
||||
{ 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
|
||||
{ 0x06, 0x49, 0x49, 0x29, 0x1e }, // 9
|
||||
{ 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
|
||||
{ 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
|
||||
{ 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
|
||||
{ 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
|
||||
{ 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
|
||||
{ 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
|
||||
{ 0x32, 0x49, 0x79, 0x41, 0x3e }, // @
|
||||
{ 0x7e, 0x11, 0x11, 0x11, 0x7e }, // A
|
||||
{ 0x7f, 0x49, 0x49, 0x49, 0x36 }, // B
|
||||
{ 0x3e, 0x41, 0x41, 0x41, 0x22 }, // C
|
||||
{ 0x7f, 0x41, 0x41, 0x22, 0x1c }, // D
|
||||
{ 0x7f, 0x49, 0x49, 0x49, 0x41 }, // E
|
||||
{ 0x7f, 0x09, 0x09, 0x09, 0x01 }, // F
|
||||
{ 0x3e, 0x41, 0x49, 0x49, 0x7a }, // G
|
||||
{ 0x7f, 0x08, 0x08, 0x08, 0x7f }, // H
|
||||
{ 0x00, 0x41, 0x7f, 0x41, 0x00 }, // I
|
||||
{ 0x20, 0x40, 0x41, 0x3f, 0x01 }, // J
|
||||
{ 0x7f, 0x08, 0x14, 0x22, 0x41 }, // K
|
||||
{ 0x7f, 0x40, 0x40, 0x40, 0x40 }, // L
|
||||
{ 0x7f, 0x02, 0x0c, 0x02, 0x7f }, // M
|
||||
{ 0x7f, 0x04, 0x08, 0x10, 0x7f }, // N
|
||||
{ 0x3e, 0x41, 0x41, 0x41, 0x3e }, // O
|
||||
{ 0x7f, 0x09, 0x09, 0x09, 0x06 }, // P
|
||||
{ 0x3e, 0x41, 0x51, 0x21, 0x5e }, // Q
|
||||
{ 0x7f, 0x09, 0x19, 0x29, 0x46 }, // R
|
||||
{ 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
|
||||
{ 0x01, 0x01, 0x7f, 0x01, 0x01 }, // T
|
||||
{ 0x3f, 0x40, 0x40, 0x40, 0x3f }, // U
|
||||
{ 0x1f, 0x20, 0x40, 0x20, 0x1f }, // V
|
||||
{ 0x3f, 0x40, 0x38, 0x40, 0x3f }, // W
|
||||
{ 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
|
||||
{ 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
|
||||
{ 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
|
||||
{ 0x00, 0x7f, 0x41, 0x41, 0x00 }, // [
|
||||
{ 0x02, 0x04, 0x08, 0x10, 0x20 }, // "\"
|
||||
{ 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ]
|
||||
{ 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
|
||||
{ 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
|
||||
{ 0x00, 0x01, 0x02, 0x04, 0x00 }, // `
|
||||
{ 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
|
||||
{ 0x7f, 0x48, 0x44, 0x44, 0x38 }, // b
|
||||
{ 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
|
||||
{ 0x38, 0x44, 0x44, 0x48, 0x7f }, // d
|
||||
{ 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
|
||||
{ 0x08, 0x7e, 0x09, 0x01, 0x02 }, // f
|
||||
{ 0x0c, 0x52, 0x52, 0x52, 0x3e }, // g
|
||||
{ 0x7f, 0x08, 0x04, 0x04, 0x78 }, // h
|
||||
{ 0x00, 0x44, 0x7d, 0x40, 0x00 }, // i
|
||||
{ 0x20, 0x40, 0x44, 0x3d, 0x00 }, // j
|
||||
{ 0x7f, 0x10, 0x28, 0x44, 0x00 }, // k
|
||||
{ 0x00, 0x41, 0x7f, 0x40, 0x00 }, // l
|
||||
{ 0x7c, 0x04, 0x18, 0x04, 0x78 }, // m
|
||||
{ 0x7c, 0x08, 0x04, 0x04, 0x78 }, // n
|
||||
{ 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
|
||||
{ 0x7c, 0x14, 0x14, 0x14, 0x08 }, // p
|
||||
{ 0x08, 0x14, 0x14, 0x18, 0x7c }, // q
|
||||
{ 0x7c, 0x08, 0x04, 0x04, 0x08 }, // r
|
||||
{ 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
|
||||
{ 0x04, 0x3f, 0x44, 0x40, 0x20 }, // t
|
||||
{ 0x3c, 0x40, 0x40, 0x20, 0x7c }, // u
|
||||
{ 0x1c, 0x20, 0x40, 0x20, 0x1c }, // v
|
||||
{ 0x3c, 0x40, 0x30, 0x40, 0x3c }, // w
|
||||
{ 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
|
||||
{ 0x0c, 0x50, 0x50, 0x50, 0x3c }, // y
|
||||
{ 0x44, 0x64, 0x54, 0x4c, 0x44 }, // z
|
||||
{ 0x00, 0x08, 0x36, 0x41, 0x00 }, // {
|
||||
{ 0x00, 0x00, 0x7f, 0x00, 0x00 }, // |
|
||||
{ 0x00, 0x41, 0x36, 0x08, 0x00 }, // }
|
||||
{ 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~
|
||||
{ 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~
|
||||
};
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// The sequence of commands used to initialize the SSD1329 controller. Each
|
||||
// command is described as follows: there is a byte specifying the number of
|
||||
// bytes in the command sequence, followed by that many bytes of command data.
|
||||
// Note: This initialization sequence is derived from RIT App Note for
|
||||
// the P14201. Values used are from the RIT app note, except where noted.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static const unsigned char g_pucRIT128x96x4Init[] =
|
||||
{
|
||||
//
|
||||
// Unlock commands
|
||||
//
|
||||
3, 0xFD, 0x12, 0xe3,
|
||||
|
||||
//
|
||||
// Display off
|
||||
//
|
||||
2, 0xAE, 0xe3,
|
||||
|
||||
//
|
||||
// Icon off
|
||||
//
|
||||
3, 0x94, 0, 0xe3,
|
||||
|
||||
//
|
||||
// Multiplex ratio
|
||||
//
|
||||
3, 0xA8, 95, 0xe3,
|
||||
|
||||
//
|
||||
// Contrast
|
||||
//
|
||||
3, 0x81, 0xb7, 0xe3,
|
||||
|
||||
//
|
||||
// Pre-charge current
|
||||
//
|
||||
3, 0x82, 0x3f, 0xe3,
|
||||
|
||||
//
|
||||
// Display Re-map
|
||||
//
|
||||
3, 0xA0, RIT_INIT_REMAP, 0xe3,
|
||||
|
||||
//
|
||||
// Display Start Line
|
||||
//
|
||||
3, 0xA1, 0, 0xe3,
|
||||
|
||||
//
|
||||
// Display Offset
|
||||
//
|
||||
3, 0xA2, RIT_INIT_OFFSET, 0xe3,
|
||||
|
||||
//
|
||||
// Display Mode Normal
|
||||
//
|
||||
2, 0xA4, 0xe3,
|
||||
|
||||
//
|
||||
// Phase Length
|
||||
//
|
||||
3, 0xB1, 0x11, 0xe3,
|
||||
|
||||
//
|
||||
// Frame frequency
|
||||
//
|
||||
3, 0xB2, 0x23, 0xe3,
|
||||
|
||||
//
|
||||
// Front Clock Divider
|
||||
//
|
||||
3, 0xB3, 0xe2, 0xe3,
|
||||
|
||||
//
|
||||
// Set gray scale table. App note uses default command:
|
||||
// 2, 0xB7, 0xe3
|
||||
// This gray scale attempts some gamma correction to reduce the
|
||||
// the brightness of the low levels.
|
||||
//
|
||||
17, 0xB8, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 19, 22, 26, 30, 0xe3,
|
||||
|
||||
//
|
||||
// Second pre-charge period. App note uses value 0x04.
|
||||
//
|
||||
3, 0xBB, 0x01, 0xe3,
|
||||
|
||||
//
|
||||
// Pre-charge voltage
|
||||
//
|
||||
3, 0xBC, 0x3f, 0xe3,
|
||||
|
||||
//
|
||||
// Display ON
|
||||
//
|
||||
2, 0xAF, 0xe3,
|
||||
};
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! \internal
|
||||
//!
|
||||
//! Write a sequence of command bytes to the SSD1329 controller.
|
||||
//!
|
||||
//! The data is written in a polled fashion; this function will not return
|
||||
//! until the entire byte sequence has been written to the controller.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
RITWriteCommand(const unsigned char *pucBuffer, unsigned long ulCount)
|
||||
{
|
||||
unsigned long ulTemp;
|
||||
|
||||
//
|
||||
// Return if SSI port is not enabled for RIT display.
|
||||
//
|
||||
if(!g_bSSIEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Clear the command/control bit to enable command mode.
|
||||
//
|
||||
GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN, 0);
|
||||
|
||||
//
|
||||
// Loop while there are more bytes left to be transferred.
|
||||
//
|
||||
while(ulCount != 0)
|
||||
{
|
||||
//
|
||||
// Write the next byte to the controller.
|
||||
//
|
||||
SSIDataPut(SSI0_BASE, *pucBuffer++);
|
||||
|
||||
//
|
||||
// Dummy read to drain the fifo and time the GPIO signal.
|
||||
//
|
||||
SSIDataGet(SSI0_BASE, &ulTemp);
|
||||
|
||||
//
|
||||
// Decrement the BYTE counter.
|
||||
//
|
||||
ulCount--;
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! \internal
|
||||
//!
|
||||
//! Write a sequence of data bytes to the SSD1329 controller.
|
||||
//!
|
||||
//! The data is written in a polled fashion; this function will not return
|
||||
//! until the entire byte sequence has been written to the controller.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
RITWriteData(const unsigned char *pucBuffer, unsigned long ulCount)
|
||||
{
|
||||
unsigned long ulTemp;
|
||||
|
||||
//
|
||||
// Return if SSI port is not enabled for RIT display.
|
||||
//
|
||||
if(!g_bSSIEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Set the command/control bit to enable data mode.
|
||||
//
|
||||
GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN, ulOLEDDC_PIN);
|
||||
|
||||
//
|
||||
// Loop while there are more bytes left to be transferred.
|
||||
//
|
||||
while(ulCount != 0)
|
||||
{
|
||||
//
|
||||
// Write the next byte to the controller.
|
||||
//
|
||||
SSIDataPut(SSI0_BASE, *pucBuffer++);
|
||||
|
||||
//
|
||||
// Dummy read to drain the fifo and time the GPIO signal.
|
||||
//
|
||||
SSIDataGet(SSI0_BASE, &ulTemp);
|
||||
|
||||
//
|
||||
// Decrement the BYTE counter.
|
||||
//
|
||||
ulCount--;
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Clears the OLED display.
|
||||
//!
|
||||
//! This function will clear the display RAM. All pixels in the display will
|
||||
//! be turned off.
|
||||
//!
|
||||
//! This function is contained in <tt>rit128x96x4.c</tt>, with
|
||||
//! <tt>rit128x96x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
RIT128x96x4Clear(void)
|
||||
{
|
||||
static const unsigned char pucCommand1[] = { 0x15, 0, 63 };
|
||||
static const unsigned char pucCommand2[] = { 0x75, 0, 127 };
|
||||
unsigned long ulRow, ulColumn;
|
||||
|
||||
//
|
||||
// Clear out the buffer used for sending bytes to the display.
|
||||
*(unsigned long *)&g_pucBuffer[0] = 0;
|
||||
*(unsigned long *)&g_pucBuffer[4] = 0;
|
||||
|
||||
//
|
||||
// Set the window to fill the entire display.
|
||||
//
|
||||
RITWriteCommand(pucCommand1, sizeof(pucCommand1));
|
||||
RITWriteCommand(pucCommand2, sizeof(pucCommand2));
|
||||
RITWriteCommand(g_pucRIT128x96x4HorizontalInc,
|
||||
sizeof(g_pucRIT128x96x4HorizontalInc));
|
||||
|
||||
//
|
||||
// Loop through the rows
|
||||
//
|
||||
for(ulRow = 0; ulRow < 96; ulRow++)
|
||||
{
|
||||
//
|
||||
// Loop through the columns. Each byte is two pixels,
|
||||
// and the buffer hold 8 bytes, so 16 pixels are cleared
|
||||
// at a time.
|
||||
//
|
||||
for(ulColumn = 0; ulColumn < 128; ulColumn += 8 * 2)
|
||||
{
|
||||
//
|
||||
// Write 8 clearing bytes to the display, which will
|
||||
// clear 16 pixels across.
|
||||
//
|
||||
RITWriteData(g_pucBuffer, sizeof(g_pucBuffer));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Displays a string on the OLED display.
|
||||
//!
|
||||
//! \param pcStr is a pointer to the string to display.
|
||||
//! \param ulX is the horizontal position to display the string, specified in
|
||||
//! columns from the left edge of the display.
|
||||
//! \param ulY is the vertical position to display the string, specified in
|
||||
//! rows from the top edge of the display.
|
||||
//! \param ucLevel is the 4-bit grey scale value to be used for displayed text.
|
||||
//!
|
||||
//! This function will draw a string on the display. Only the ASCII characters
|
||||
//! between 32 (space) and 126 (tilde) are supported; other characters will
|
||||
//! result in random data being draw on the display (based on whatever appears
|
||||
//! before/after the font in memory). The font is mono-spaced, so characters
|
||||
//! such as "i" and "l" have more white space around them than characters such
|
||||
//! as "m" or "w".
|
||||
//!
|
||||
//! If the drawing of the string reaches the right edge of the display, no more
|
||||
//! characters will be drawn. Therefore, special care is not required to avoid
|
||||
//! supplying a string that is "too long" to display.
|
||||
//!
|
||||
//! This function is contained in <tt>rit128x96x4.c</tt>, with
|
||||
//! <tt>rit128x96x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \note Because the OLED display packs 2 pixels of data in a single byte, the
|
||||
//! parameter \e ulX must be an even column number (e.g. 0, 2, 4, etc).
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
RIT128x96x4StringDraw(const char *pcStr, unsigned long ulX,
|
||||
unsigned long ulY, unsigned char ucLevel)
|
||||
{
|
||||
unsigned long ulIdx1, ulIdx2;
|
||||
unsigned char ucTemp;
|
||||
|
||||
//
|
||||
// Check the arguments.
|
||||
//
|
||||
ASSERT(ulX < 128);
|
||||
ASSERT((ulX & 1) == 0);
|
||||
ASSERT(ulY < 96);
|
||||
ASSERT(ucLevel < 16);
|
||||
|
||||
//
|
||||
// Setup a window starting at the specified column and row, ending
|
||||
// at the right edge of the display and 8 rows down (single character row).
|
||||
//
|
||||
g_pucBuffer[0] = 0x15;
|
||||
g_pucBuffer[1] = ulX / 2;
|
||||
g_pucBuffer[2] = 63;
|
||||
RITWriteCommand(g_pucBuffer, 3);
|
||||
g_pucBuffer[0] = 0x75;
|
||||
g_pucBuffer[1] = ulY;
|
||||
g_pucBuffer[2] = ulY + 7;
|
||||
RITWriteCommand(g_pucBuffer, 3);
|
||||
RITWriteCommand(g_pucRIT128x96x4VerticalInc,
|
||||
sizeof(g_pucRIT128x96x4VerticalInc));
|
||||
|
||||
//
|
||||
// Loop while there are more characters in the string.
|
||||
//
|
||||
while(*pcStr != 0)
|
||||
{
|
||||
//
|
||||
// Get a working copy of the current character and convert to an
|
||||
// index into the character bit-map array.
|
||||
//
|
||||
ucTemp = *pcStr;
|
||||
ucTemp &= 0x7F;
|
||||
if(ucTemp < ' ')
|
||||
{
|
||||
ucTemp = ' ';
|
||||
}
|
||||
else
|
||||
{
|
||||
ucTemp -= ' ';
|
||||
}
|
||||
|
||||
//
|
||||
// Build and display the character buffer.
|
||||
//
|
||||
for(ulIdx1 = 0; ulIdx1 < 3; ulIdx1++)
|
||||
{
|
||||
//
|
||||
// Convert two columns of 1-bit font data into a single data
|
||||
// byte column of 4-bit font data.
|
||||
//
|
||||
for(ulIdx2 = 0; ulIdx2 < 8; ulIdx2++)
|
||||
{
|
||||
g_pucBuffer[ulIdx2] = 0;
|
||||
if(g_pucFont[ucTemp][ulIdx1*2] & (1 << ulIdx2))
|
||||
{
|
||||
g_pucBuffer[ulIdx2] = ((ucLevel << 4) & 0xf0);
|
||||
}
|
||||
if((ulIdx1 < 2) &&
|
||||
(g_pucFont[ucTemp][ulIdx1*2+1] & (1 << ulIdx2)))
|
||||
{
|
||||
g_pucBuffer[ulIdx2] |= ((ucLevel << 0) & 0x0f);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// If there is room, dump the single data byte column to the
|
||||
// display. Otherwise, bail out.
|
||||
//
|
||||
if(ulX < 126)
|
||||
{
|
||||
RITWriteData(g_pucBuffer, 8);
|
||||
ulX += 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Advance to the next character.
|
||||
//
|
||||
pcStr++;
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Displays an image on the OLED display.
|
||||
//!
|
||||
//! \param pucImage is a pointer to the image data.
|
||||
//! \param ulX is the horizontal position to display this image, specified in
|
||||
//! columns from the left edge of the display.
|
||||
//! \param ulY is the vertical position to display this image, specified in
|
||||
//! rows from the top of the display.
|
||||
//! \param ulWidth is the width of the image, specified in columns.
|
||||
//! \param ulHeight is the height of the image, specified in rows.
|
||||
//!
|
||||
//! This function will display a bitmap graphic on the display. Because of the
|
||||
//! format of the display RAM, the starting column (\e ulX) and the number of
|
||||
//! columns (\e ulWidth) must be an integer multiple of two.
|
||||
//!
|
||||
//! The image data is organized with the first row of image data appearing left
|
||||
//! to right, followed immediately by the second row of image data. Each byte
|
||||
//! contains the data for two columns in the current row, with the leftmost
|
||||
//! column being contained in bits 7:4 and the rightmost column being contained
|
||||
//! in bits 3:0.
|
||||
//!
|
||||
//! For example, an image six columns wide and seven scan lines tall would
|
||||
//! be arranged as follows (showing how the twenty one bytes of the image would
|
||||
//! appear on the display):
|
||||
//!
|
||||
//! \verbatim
|
||||
//! +-------------------+-------------------+-------------------+
|
||||
//! | Byte 0 | Byte 1 | Byte 2 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | Byte 3 | Byte 4 | Byte 5 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | Byte 6 | Byte 7 | Byte 8 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | Byte 9 | Byte 10 | Byte 11 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | Byte 12 | Byte 13 | Byte 14 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | Byte 15 | Byte 16 | Byte 17 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | Byte 18 | Byte 19 | Byte 20 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
|
||||
//! +---------+---------+---------+---------+---------+---------+
|
||||
//! \endverbatim
|
||||
//!
|
||||
//! This function is contained in <tt>rit128x96x4.c</tt>, with
|
||||
//! <tt>rit128x96x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
RIT128x96x4ImageDraw(const unsigned char *pucImage, unsigned long ulX,
|
||||
unsigned long ulY, unsigned long ulWidth,
|
||||
unsigned long ulHeight)
|
||||
{
|
||||
//
|
||||
// Check the arguments.
|
||||
//
|
||||
ASSERT(ulX < 128);
|
||||
ASSERT((ulX & 1) == 0);
|
||||
ASSERT(ulY < 96);
|
||||
ASSERT((ulX + ulWidth) <= 128);
|
||||
ASSERT((ulY + ulHeight) <= 96);
|
||||
ASSERT((ulWidth & 1) == 0);
|
||||
|
||||
//
|
||||
// Setup a window starting at the specified column and row, and ending
|
||||
// at the column + width and row+height.
|
||||
//
|
||||
g_pucBuffer[0] = 0x15;
|
||||
g_pucBuffer[1] = ulX / 2;
|
||||
g_pucBuffer[2] = (ulX + ulWidth - 2) / 2;
|
||||
RITWriteCommand(g_pucBuffer, 3);
|
||||
g_pucBuffer[0] = 0x75;
|
||||
g_pucBuffer[1] = ulY;
|
||||
g_pucBuffer[2] = ulY + ulHeight - 1;
|
||||
RITWriteCommand(g_pucBuffer, 3);
|
||||
RITWriteCommand(g_pucRIT128x96x4HorizontalInc,
|
||||
sizeof(g_pucRIT128x96x4HorizontalInc));
|
||||
|
||||
//
|
||||
// Loop while there are more rows to display.
|
||||
//
|
||||
while(ulHeight--)
|
||||
{
|
||||
//
|
||||
// Write this row of image data.
|
||||
//
|
||||
RITWriteData(pucImage, (ulWidth / 2));
|
||||
|
||||
//
|
||||
// Advance to the next row of the image.
|
||||
//
|
||||
pucImage += (ulWidth / 2);
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Enable the SSI component of the OLED display driver.
|
||||
//!
|
||||
//! \param ulFrequency specifies the SSI Clock Frequency to be used.
|
||||
//!
|
||||
//! This function initializes the SSI interface to the OLED display.
|
||||
//!
|
||||
//! This function is contained in <tt>rit128x96x4.c</tt>, with
|
||||
//! <tt>rit128x96x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
RIT128x96x4Enable(unsigned long ulFrequency)
|
||||
{
|
||||
unsigned long ulTemp;
|
||||
|
||||
//
|
||||
// Disable the SSI port.
|
||||
//
|
||||
SSIDisable(SSI0_BASE);
|
||||
|
||||
//
|
||||
// Configure the SSI0 port for master mode.
|
||||
//
|
||||
SSIConfig(SSI0_BASE, SSI_FRF_MOTO_MODE_2, SSI_MODE_MASTER, ulFrequency, 8);
|
||||
|
||||
//
|
||||
// (Re)Enable SSI control of the FSS pin.
|
||||
//
|
||||
GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3);
|
||||
GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA,
|
||||
GPIO_PIN_TYPE_STD_WPU);
|
||||
|
||||
//
|
||||
// Enable the SSI port.
|
||||
//
|
||||
SSIEnable(SSI0_BASE);
|
||||
|
||||
//
|
||||
// Drain the receive fifo.
|
||||
//
|
||||
while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// Indicate that the RIT driver can use the SSI Port.
|
||||
//
|
||||
g_bSSIEnabled = true;
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Enable the SSI component of the OLED display driver.
|
||||
//!
|
||||
//! This function initializes the SSI interface to the OLED display.
|
||||
//!
|
||||
//! This function is contained in <tt>rit128x96x4.c</tt>, with
|
||||
//! <tt>rit128x96x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
RIT128x96x4Disable(void)
|
||||
{
|
||||
unsigned long ulTemp;
|
||||
|
||||
//
|
||||
// Indicate that the RIT driver can no longer use the SSI Port.
|
||||
//
|
||||
g_bSSIEnabled = false;
|
||||
|
||||
//
|
||||
// Drain the receive fifo.
|
||||
//
|
||||
while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// Disable the SSI port.
|
||||
//
|
||||
SSIDisable(SSI0_BASE);
|
||||
|
||||
//
|
||||
// Disable SSI control of the FSS pin.
|
||||
//
|
||||
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_3);
|
||||
GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA,
|
||||
GPIO_PIN_TYPE_STD_WPU);
|
||||
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_PIN_3);
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Initialize the OLED display.
|
||||
//!
|
||||
//! \param ulFrequency specifies the SSI Clock Frequency to be used.
|
||||
//!
|
||||
//! This function initializes the SSI interface to the OLED display and
|
||||
//! configures the SSD1329 controller on the panel.
|
||||
//!
|
||||
//! This function is contained in <tt>rit128x96x4.c</tt>, with
|
||||
//! <tt>rit128x96x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
RIT128x96x4Init(unsigned long ulFrequency)
|
||||
{
|
||||
unsigned long ulIdx;
|
||||
|
||||
|
||||
/* Determine which board is being used. */
|
||||
if( SysCtlPeripheralPresent( SYSCTL_PERIPH_ETH ) )
|
||||
{
|
||||
/* Ethernet is present, we must be using the LM3S8962 EK. */
|
||||
ulGPIOId = LM3S8962_SYSCTL_PERIPH_GPIO_OLEDDC;
|
||||
ulGPIOBase = LM3S8962_GPIO_OLEDDC_BASE;
|
||||
ulOLEDDC_PIN = GPIO_PIN_6;
|
||||
ulOLEDEN_PIN = GPIO_PIN_7;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Ethernet is not present, we must be using the LM3S1968 EK. */
|
||||
ulGPIOId = LM3S1968_SYSCTL_PERIPH_GPIO_OLEDDC;
|
||||
ulGPIOBase = LM3S1968_GPIO_OLEDDC_BASE;
|
||||
ulOLEDDC_PIN = GPIO_PIN_2;
|
||||
ulOLEDEN_PIN = GPIO_PIN_3;
|
||||
}
|
||||
|
||||
//
|
||||
// Enable the SSI0 and GPIO port blocks as they are needed by this driver.
|
||||
//
|
||||
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
|
||||
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
|
||||
SysCtlPeripheralEnable(ulGPIOId);
|
||||
|
||||
//
|
||||
// Configure the SSI0CLK and SSIOTX pins for SSI operation.
|
||||
//
|
||||
GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5);
|
||||
GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5,
|
||||
GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU);
|
||||
|
||||
//
|
||||
// Configure the GPIO port pin used as a D/Cn signal for OLED device,
|
||||
// and the port pin used to enable power to the OLED panel.
|
||||
//
|
||||
GPIOPinTypeGPIOOutput(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN);
|
||||
GPIOPadConfigSet(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN,
|
||||
GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);
|
||||
GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN,
|
||||
ulOLEDDC_PIN | ulOLEDEN_PIN);
|
||||
|
||||
//
|
||||
// Configure and enable the SSI0 port for master mode.
|
||||
//
|
||||
RIT128x96x4Enable(ulFrequency);
|
||||
|
||||
//
|
||||
// Clear the frame buffer.
|
||||
//
|
||||
RIT128x96x4Clear();
|
||||
|
||||
//
|
||||
// Initialize the SSD1329 controller. Loop through the initialization
|
||||
// sequence array, sending each command "string" to the controller.
|
||||
//
|
||||
for(ulIdx = 0; ulIdx < sizeof(g_pucRIT128x96x4Init);
|
||||
ulIdx += g_pucRIT128x96x4Init[ulIdx] + 1)
|
||||
{
|
||||
//
|
||||
// Send this command.
|
||||
//
|
||||
RITWriteCommand(g_pucRIT128x96x4Init + ulIdx + 1,
|
||||
g_pucRIT128x96x4Init[ulIdx] - 1);
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Turns on the OLED display.
|
||||
//!
|
||||
//! This function will turn on the OLED display, causing it to display the
|
||||
//! contents of its internal frame buffer.
|
||||
//!
|
||||
//! This function is contained in <tt>rit128x96x4.c</tt>, with
|
||||
//! <tt>rit128x96x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
RIT128x96x4DisplayOn(void)
|
||||
{
|
||||
unsigned long ulIdx;
|
||||
|
||||
//
|
||||
// Initialize the SSD1329 controller. Loop through the initialization
|
||||
// sequence array, sending each command "string" to the controller.
|
||||
//
|
||||
for(ulIdx = 0; ulIdx < sizeof(g_pucRIT128x96x4Init);
|
||||
ulIdx += g_pucRIT128x96x4Init[ulIdx] + 1)
|
||||
{
|
||||
//
|
||||
// Send this command.
|
||||
//
|
||||
RITWriteCommand(g_pucRIT128x96x4Init + ulIdx + 1,
|
||||
g_pucRIT128x96x4Init[ulIdx] - 1);
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
//! Turns off the OLED display.
|
||||
//!
|
||||
//! This function will turn off the OLED display. This will stop the scanning
|
||||
//! of the panel and turn off the on-chip DC-DC converter, preventing damage to
|
||||
//! the panel due to burn-in (it has similar characters to a CRT in this
|
||||
//! respect).
|
||||
//!
|
||||
//! This function is contained in <tt>rit128x96x4.c</tt>, with
|
||||
//! <tt>rit128x96x4.h</tt> containing the API definition for use by
|
||||
//! applications.
|
||||
//!
|
||||
//! \return None.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
RIT128x96x4DisplayOff(void)
|
||||
{
|
||||
static const unsigned char pucCommand1[] =
|
||||
{
|
||||
0xAE, 0xe3
|
||||
};
|
||||
|
||||
//
|
||||
// Put the display to sleep.
|
||||
//
|
||||
RITWriteCommand(pucCommand1, sizeof(pucCommand1));
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Close the Doxygen group.
|
||||
//! @}
|
||||
//
|
||||
//*****************************************************************************
|
60
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/standalone.ld
Normal file
60
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/standalone.ld
Normal file
|
@ -0,0 +1,60 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* standalone.ld - Linker script for applications using startup.c and
|
||||
* DriverLib.
|
||||
*
|
||||
* Copyright (c) 2005-2007 Luminary Micro, Inc. All rights reserved.
|
||||
*
|
||||
* Software License Agreement
|
||||
*
|
||||
* Luminary Micro, Inc. (LMI) is supplying this software for use solely and
|
||||
* exclusively on LMI's microcontroller products.
|
||||
*
|
||||
* The software is owned by LMI and/or its suppliers, and is protected under
|
||||
* applicable copyright laws. All rights are reserved. Any use in violation
|
||||
* of the foregoing restrictions may subject the user to criminal sanctions
|
||||
* under applicable laws, as well as to civil liability for the breach of the
|
||||
* terms and conditions of this license.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
* LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
*
|
||||
* This is part of revision 1392 of the Stellaris Peripheral Driver Library.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
MEMORY
|
||||
{
|
||||
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 256K
|
||||
SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text :
|
||||
{
|
||||
KEEP(*(.isr_vector))
|
||||
*(.text*)
|
||||
*(.rodata*)
|
||||
_etext = .;
|
||||
} > FLASH
|
||||
|
||||
.data : AT (ADDR(.text) + SIZEOF(.text))
|
||||
{
|
||||
_data = .;
|
||||
*(vtable)
|
||||
*(.data*)
|
||||
_edata = .;
|
||||
} > SRAM
|
||||
|
||||
.bss :
|
||||
{
|
||||
_bss = .;
|
||||
*(.bss*)
|
||||
*(COMMON)
|
||||
_ebss = .;
|
||||
} > SRAM
|
||||
}
|
251
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/startup.c
Normal file
251
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/startup.c
Normal file
|
@ -0,0 +1,251 @@
|
|||
//*****************************************************************************
|
||||
//
|
||||
// startup.c - Boot code for Stellaris.
|
||||
//
|
||||
// Copyright (c) 2005-2007 Luminary Micro, Inc. All rights reserved.
|
||||
//
|
||||
// Software License Agreement
|
||||
//
|
||||
// Luminary Micro, Inc. (LMI) is supplying this software for use solely and
|
||||
// exclusively on LMI's microcontroller products.
|
||||
//
|
||||
// The software is owned by LMI and/or its suppliers, and is protected under
|
||||
// applicable copyright laws. All rights are reserved. Any use in violation
|
||||
// of the foregoing restrictions may subject the user to criminal sanctions
|
||||
// under applicable laws, as well as to civil liability for the breach of the
|
||||
// terms and conditions of this license.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
//
|
||||
// This is part of revision 1392 of the Stellaris Peripheral Driver Library.
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Forward declaration of the default fault handlers.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void ResetISR(void);
|
||||
static void NmiSR(void);
|
||||
static void FaultISR(void);
|
||||
static void IntDefaultHandler(void);
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// The entry point for the application.
|
||||
//
|
||||
//*****************************************************************************
|
||||
extern int main(void);
|
||||
extern void xPortPendSVHandler(void);
|
||||
extern void xPortSysTickHandler(void);
|
||||
extern void vPortSVCHandler( void );
|
||||
extern void Timer0IntHandler( void );
|
||||
extern void vT2InterruptHandler( void );
|
||||
extern void vT3InterruptHandler( void );
|
||||
extern void vEMAC_ISR(void);
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Reserve space for the system stack.
|
||||
//
|
||||
//*****************************************************************************
|
||||
#ifndef STACK_SIZE
|
||||
#define STACK_SIZE 120
|
||||
#endif
|
||||
static unsigned long pulStack[STACK_SIZE];
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// The minimal vector table for a Cortex M3. Note that the proper constructs
|
||||
// must be placed on this to ensure that it ends up at physical address
|
||||
// 0x0000.0000.
|
||||
//
|
||||
//*****************************************************************************
|
||||
__attribute__ ((section(".isr_vector")))
|
||||
void (* const g_pfnVectors[])(void) =
|
||||
{
|
||||
(void (*)(void))((unsigned long)pulStack + sizeof(pulStack)),
|
||||
// The initial stack pointer
|
||||
ResetISR, // The reset handler
|
||||
NmiSR, // The NMI handler
|
||||
FaultISR, // The hard fault handler
|
||||
IntDefaultHandler, // The MPU fault handler
|
||||
IntDefaultHandler, // The bus fault handler
|
||||
IntDefaultHandler, // The usage fault handler
|
||||
0, // Reserved
|
||||
0, // Reserved
|
||||
0, // Reserved
|
||||
0, // Reserved
|
||||
vPortSVCHandler, // SVCall handler
|
||||
IntDefaultHandler, // Debug monitor handler
|
||||
0, // Reserved
|
||||
xPortPendSVHandler, // The PendSV handler
|
||||
xPortSysTickHandler, // The SysTick handler
|
||||
IntDefaultHandler, // GPIO Port A
|
||||
IntDefaultHandler, // GPIO Port B
|
||||
IntDefaultHandler, // GPIO Port C
|
||||
IntDefaultHandler, // GPIO Port D
|
||||
IntDefaultHandler, // GPIO Port E
|
||||
IntDefaultHandler, // UART0 Rx and Tx
|
||||
IntDefaultHandler, // UART1 Rx and Tx
|
||||
IntDefaultHandler, // SSI Rx and Tx
|
||||
IntDefaultHandler, // I2C Master and Slave
|
||||
IntDefaultHandler, // PWM Fault
|
||||
IntDefaultHandler, // PWM Generator 0
|
||||
IntDefaultHandler, // PWM Generator 1
|
||||
IntDefaultHandler, // PWM Generator 2
|
||||
IntDefaultHandler, // Quadrature Encoder
|
||||
IntDefaultHandler, // ADC Sequence 0
|
||||
IntDefaultHandler, // ADC Sequence 1
|
||||
IntDefaultHandler, // ADC Sequence 2
|
||||
IntDefaultHandler, // ADC Sequence 3
|
||||
IntDefaultHandler, // Watchdog timer
|
||||
Timer0IntHandler, // Timer 0 subtimer A
|
||||
IntDefaultHandler, // Timer 0 subtimer B
|
||||
IntDefaultHandler, // Timer 1 subtimer A
|
||||
IntDefaultHandler, // Timer 1 subtimer B
|
||||
vT2InterruptHandler, // Timer 2 subtimer A
|
||||
IntDefaultHandler, // Timer 2 subtimer B
|
||||
IntDefaultHandler, // Analog Comparator 0
|
||||
IntDefaultHandler, // Analog Comparator 1
|
||||
IntDefaultHandler, // Analog Comparator 2
|
||||
IntDefaultHandler, // System Control (PLL, OSC, BO)
|
||||
IntDefaultHandler, // FLASH Control
|
||||
IntDefaultHandler, // GPIO Port F
|
||||
IntDefaultHandler, // GPIO Port G
|
||||
IntDefaultHandler, // GPIO Port H
|
||||
IntDefaultHandler, // UART2 Rx and Tx
|
||||
IntDefaultHandler, // SSI1 Rx and Tx
|
||||
vT3InterruptHandler, // Timer 3 subtimer A
|
||||
IntDefaultHandler, // Timer 3 subtimer B
|
||||
IntDefaultHandler, // I2C1 Master and Slave
|
||||
IntDefaultHandler, // Quadrature Encoder 1
|
||||
IntDefaultHandler, // CAN0
|
||||
IntDefaultHandler, // CAN1
|
||||
0, // Reserved
|
||||
vEMAC_ISR, // Ethernet
|
||||
IntDefaultHandler // Hibernate
|
||||
};
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// The following are constructs created by the linker, indicating where the
|
||||
// the "data" and "bss" segments reside in memory. The initializers for the
|
||||
// for the "data" segment resides immediately following the "text" segment.
|
||||
//
|
||||
//*****************************************************************************
|
||||
extern unsigned long _etext;
|
||||
extern unsigned long _data;
|
||||
extern unsigned long _edata;
|
||||
extern unsigned long _bss;
|
||||
extern unsigned long _ebss;
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// This is the code that gets called when the processor first starts execution
|
||||
// following a reset event. Only the absolutely necessary set is performed,
|
||||
// after which the application supplied main() routine is called. Any fancy
|
||||
// actions (such as making decisions based on the reset cause register, and
|
||||
// resetting the bits in that register) are left solely in the hands of the
|
||||
// application.
|
||||
//
|
||||
//*****************************************************************************
|
||||
void
|
||||
ResetISR(void)
|
||||
{
|
||||
unsigned long *pulSrc, *pulDest;
|
||||
|
||||
//
|
||||
// Copy the data segment initializers from flash to SRAM.
|
||||
//
|
||||
pulSrc = &_etext;
|
||||
for(pulDest = &_data; pulDest < &_edata; )
|
||||
{
|
||||
*pulDest++ = *pulSrc++;
|
||||
}
|
||||
|
||||
//
|
||||
// Zero fill the bss segment.
|
||||
//
|
||||
for(pulDest = &_bss; pulDest < &_ebss; )
|
||||
{
|
||||
*pulDest++ = 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Call the application's entry point.
|
||||
//
|
||||
main();
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// This is the code that gets called when the processor receives a NMI. This
|
||||
// simply enters an infinite loop, preserving the system state for examination
|
||||
// by a debugger.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
NmiSR(void)
|
||||
{
|
||||
//
|
||||
// Enter an infinite loop.
|
||||
//
|
||||
while(1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// This is the code that gets called when the processor receives a fault
|
||||
// interrupt. This simply enters an infinite loop, preserving the system state
|
||||
// for examination by a debugger.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
FaultISR(void)
|
||||
{
|
||||
//
|
||||
// Enter an infinite loop.
|
||||
//
|
||||
while(1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// This is the code that gets called when the processor receives an unexpected
|
||||
// interrupt. This simply enters an infinite loop, preserving the system state
|
||||
// for examination by a debugger.
|
||||
//
|
||||
//*****************************************************************************
|
||||
static void
|
||||
IntDefaultHandler(void)
|
||||
{
|
||||
//
|
||||
// Go into an infinite loop.
|
||||
//
|
||||
while(1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// A dummy printf function to satisfy the calls to printf from uip. This
|
||||
// avoids pulling in the run-time library.
|
||||
//
|
||||
//*****************************************************************************
|
||||
int
|
||||
uipprintf(const char *fmt, ...)
|
||||
{
|
||||
return(0);
|
||||
}
|
||||
|
158
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/timertest.c
Normal file
158
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/timertest.c
Normal file
|
@ -0,0 +1,158 @@
|
|||
/*
|
||||
FreeRTOS V5.4.2 - Copyright (C) 2009 Real Time Engineers Ltd.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License (version 2) as published by the
|
||||
Free Software Foundation and modified by the FreeRTOS exception.
|
||||
**NOTE** The exception to the GPL is included to allow you to distribute a
|
||||
combined work that includes FreeRTOS without being obliged to provide the
|
||||
source code for proprietary components outside of the FreeRTOS kernel.
|
||||
Alternative commercial license and support terms are also available upon
|
||||
request. See the licensing section of http://www.FreeRTOS.org for full
|
||||
license details.
|
||||
|
||||
FreeRTOS 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; if not, write to the Free Software Foundation, Inc., 59
|
||||
Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* Looking for a quick start? Then check out the FreeRTOS eBook! *
|
||||
* See http://www.FreeRTOS.org/Documentation for details *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
1 tab == 4 spaces!
|
||||
|
||||
Please ensure to read the configuration and relevant port sections of the
|
||||
online documentation.
|
||||
|
||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||
contact details.
|
||||
|
||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||
critical systems.
|
||||
|
||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||
licensing and training services.
|
||||
*/
|
||||
|
||||
/* High speed timer test as described in main.c. */
|
||||
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
|
||||
/* Library includes. */
|
||||
#include "hw_ints.h"
|
||||
#include "hw_memmap.h"
|
||||
#include "hw_types.h"
|
||||
#include "interrupt.h"
|
||||
#include "sysctl.h"
|
||||
#include "lmi_timer.h"
|
||||
|
||||
/* The set frequency of the interrupt. Deviations from this are measured as
|
||||
the jitter. */
|
||||
#define timerINTERRUPT_FREQUENCY ( 20000UL )
|
||||
|
||||
/* The expected time between each of the timer interrupts - if the jitter was
|
||||
zero. */
|
||||
#define timerEXPECTED_DIFFERENCE_VALUE ( configCPU_CLOCK_HZ / timerINTERRUPT_FREQUENCY )
|
||||
|
||||
/* The highest available interrupt priority. */
|
||||
#define timerHIGHEST_PRIORITY ( 0 )
|
||||
|
||||
/* Misc defines. */
|
||||
#define timerMAX_32BIT_VALUE ( 0xffffffffUL )
|
||||
#define timerTIMER_1_COUNT_VALUE ( * ( ( unsigned long * ) ( TIMER1_BASE + 0x48 ) ) )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Interrupt handler in which the jitter is measured. */
|
||||
void Timer0IntHandler( void );
|
||||
|
||||
/* Stores the value of the maximum recorded jitter between interrupts. */
|
||||
volatile unsigned portLONG ulMaxJitter = 0UL;
|
||||
|
||||
/* Counts the total number of times that the high frequency timer has 'ticked'.
|
||||
This value is used by the run time stats function to work out what percentage
|
||||
of CPU time each task is taking. */
|
||||
volatile unsigned portLONG ulHighFrequencyTimerTicks = 0UL;
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vSetupHighFrequencyTimer( void )
|
||||
{
|
||||
unsigned long ulFrequency;
|
||||
|
||||
/* Timer zero is used to generate the interrupts, and timer 1 is used
|
||||
to measure the jitter. */
|
||||
SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER0 );
|
||||
SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER1 );
|
||||
TimerConfigure( TIMER0_BASE, TIMER_CFG_32_BIT_PER );
|
||||
TimerConfigure( TIMER1_BASE, TIMER_CFG_32_BIT_PER );
|
||||
|
||||
/* Set the timer interrupt to be above the kernel - highest. */
|
||||
IntPrioritySet( INT_TIMER0A, timerHIGHEST_PRIORITY );
|
||||
|
||||
/* Just used to measure time. */
|
||||
TimerLoadSet(TIMER1_BASE, TIMER_A, timerMAX_32BIT_VALUE );
|
||||
|
||||
/* Ensure interrupts do not start until the scheduler is running. */
|
||||
portDISABLE_INTERRUPTS();
|
||||
|
||||
/* The rate at which the timer will interrupt. */
|
||||
ulFrequency = configCPU_CLOCK_HZ / timerINTERRUPT_FREQUENCY;
|
||||
TimerLoadSet( TIMER0_BASE, TIMER_A, ulFrequency );
|
||||
IntEnable( INT_TIMER0A );
|
||||
TimerIntEnable( TIMER0_BASE, TIMER_TIMA_TIMEOUT );
|
||||
|
||||
/* Enable both timers. */
|
||||
TimerEnable( TIMER0_BASE, TIMER_A );
|
||||
TimerEnable( TIMER1_BASE, TIMER_A );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void Timer0IntHandler( void )
|
||||
{
|
||||
unsigned portLONG ulDifference;
|
||||
volatile unsigned portLONG ulCurrentCount;
|
||||
static unsigned portLONG ulMaxDifference = 0, ulLastCount = 0;
|
||||
|
||||
/* We use the timer 1 counter value to measure the clock cycles between
|
||||
the timer 0 interrupts. */
|
||||
ulCurrentCount = timerTIMER_1_COUNT_VALUE;
|
||||
|
||||
TimerIntClear( TIMER0_BASE, TIMER_TIMA_TIMEOUT );
|
||||
|
||||
if( ulCurrentCount < ulLastCount )
|
||||
{
|
||||
/* How many times has timer 1 counted since the last interrupt? */
|
||||
ulDifference = ulLastCount - ulCurrentCount;
|
||||
|
||||
/* Is this the largest difference we have measured yet? */
|
||||
if( ulDifference > ulMaxDifference )
|
||||
{
|
||||
ulMaxDifference = ulDifference;
|
||||
ulMaxJitter = ulMaxDifference - timerEXPECTED_DIFFERENCE_VALUE;
|
||||
}
|
||||
}
|
||||
|
||||
ulLastCount = ulCurrentCount;
|
||||
|
||||
/* Keep a count of the total number of 20KHz ticks. This is used by the
|
||||
run time stats functionality to calculate how much CPU time is used by
|
||||
each task. */
|
||||
ulHighFrequencyTimerTicks++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
APP_SOURCES += httpd.c http-strings.c httpd-fs.c httpd-cgi.c
|
|
@ -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__ */
|
295
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/webserver/emac.c
Normal file
295
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/webserver/emac.c
Normal file
|
@ -0,0 +1,295 @@
|
|||
/*
|
||||
FreeRTOS V5.4.2 - Copyright (C) 2009 Real Time Engineers Ltd.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License (version 2) as published by the
|
||||
Free Software Foundation and modified by the FreeRTOS exception.
|
||||
**NOTE** The exception to the GPL is included to allow you to distribute a
|
||||
combined work that includes FreeRTOS without being obliged to provide the
|
||||
source code for proprietary components outside of the FreeRTOS kernel.
|
||||
Alternative commercial license and support terms are also available upon
|
||||
request. See the licensing section of http://www.FreeRTOS.org for full
|
||||
license details.
|
||||
|
||||
FreeRTOS 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; if not, write to the Free Software Foundation, Inc., 59
|
||||
Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* Looking for a quick start? Then check out the FreeRTOS eBook! *
|
||||
* See http://www.FreeRTOS.org/Documentation for details *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
1 tab == 4 spaces!
|
||||
|
||||
Please ensure to read the configuration and relevant port sections of the
|
||||
online documentation.
|
||||
|
||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||
contact details.
|
||||
|
||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||
critical systems.
|
||||
|
||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||
licensing and training services.
|
||||
*/
|
||||
|
||||
/* Kernel includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "semphr.h"
|
||||
#include "task.h"
|
||||
|
||||
/* Demo includes. */
|
||||
#include "emac.h"
|
||||
|
||||
/* uIP includes. */
|
||||
#include "uip.h"
|
||||
|
||||
/* Hardware library includes. */
|
||||
#include "hw_types.h"
|
||||
#include "hw_memmap.h"
|
||||
#include "hw_ints.h"
|
||||
#include "hw_ethernet.h"
|
||||
#include "ethernet.h"
|
||||
#include "interrupt.h"
|
||||
|
||||
#define emacNUM_RX_BUFFERS 5
|
||||
#define emacFRAM_SIZE_BYTES 2
|
||||
#define macNEGOTIATE_DELAY 2000
|
||||
#define macWAIT_SEND_TIME ( 10 )
|
||||
|
||||
/* The task that handles the MAC peripheral. This is created at a high
|
||||
priority and is effectively a deferred interrupt handler. The peripheral
|
||||
handling is deferred to a task to prevent the entire FIFO having to be read
|
||||
from within an ISR. */
|
||||
void vMACHandleTask( void *pvParameters );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* The semaphore used to wake the uIP task when data arrives. */
|
||||
xSemaphoreHandle xEMACSemaphore = NULL;
|
||||
|
||||
/* The semaphore used to wake the interrupt handler task. The peripheral
|
||||
is processed at the task level to prevent the need to read the entire FIFO from
|
||||
within the ISR itself. */
|
||||
xSemaphoreHandle xMACInterruptSemaphore = NULL;
|
||||
|
||||
/* The buffer used by the uIP stack. In this case the pointer is used to
|
||||
point to one of the Rx buffers. */
|
||||
unsigned portCHAR *uip_buf;
|
||||
|
||||
/* Buffers into which Rx data is placed. */
|
||||
static unsigned portCHAR ucRxBuffers[ emacNUM_RX_BUFFERS ][ UIP_BUFSIZE + ( 4 * emacFRAM_SIZE_BYTES ) ];
|
||||
|
||||
/* The length of the data within each of the Rx buffers. */
|
||||
static unsigned portLONG ulRxLength[ emacNUM_RX_BUFFERS ];
|
||||
|
||||
/* Used to keep a track of the number of bytes to transmit. */
|
||||
static unsigned portLONG ulNextTxSpace;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
portBASE_TYPE vInitEMAC( void )
|
||||
{
|
||||
unsigned long ulTemp;
|
||||
portBASE_TYPE xReturn;
|
||||
|
||||
/* Ensure all interrupts are disabled. */
|
||||
EthernetIntDisable( ETH_BASE, ( ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | ETH_INT_RX));
|
||||
|
||||
/* Clear any interrupts that were already pending. */
|
||||
ulTemp = EthernetIntStatus( ETH_BASE, pdFALSE );
|
||||
EthernetIntClear( ETH_BASE, ulTemp );
|
||||
|
||||
/* Initialise the MAC and connect. */
|
||||
EthernetInit( ETH_BASE );
|
||||
EthernetConfigSet( ETH_BASE, ( ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN | ETH_CFG_TX_PADEN ) );
|
||||
EthernetEnable( ETH_BASE );
|
||||
|
||||
/* Mark each Rx buffer as empty. */
|
||||
for( ulTemp = 0; ulTemp < emacNUM_RX_BUFFERS; ulTemp++ )
|
||||
{
|
||||
ulRxLength[ ulTemp ] = 0;
|
||||
}
|
||||
|
||||
/* Create the queue and task used to defer the MAC processing to the
|
||||
task level. */
|
||||
vSemaphoreCreateBinary( xMACInterruptSemaphore );
|
||||
xSemaphoreTake( xMACInterruptSemaphore, 0 );
|
||||
xReturn = xTaskCreate( vMACHandleTask, ( signed portCHAR * ) "MAC", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL );
|
||||
vTaskDelay( macNEGOTIATE_DELAY );
|
||||
|
||||
/* We are only interested in Rx interrupts. */
|
||||
IntPrioritySet( INT_ETH, configKERNEL_INTERRUPT_PRIORITY );
|
||||
IntEnable( INT_ETH );
|
||||
EthernetIntEnable(ETH_BASE, ETH_INT_RX);
|
||||
|
||||
return xReturn;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
unsigned int uiGetEMACRxData( unsigned char *ucBuffer )
|
||||
{
|
||||
static unsigned long ulNextRxBuffer = 0;
|
||||
unsigned int iLen;
|
||||
|
||||
iLen = ulRxLength[ ulNextRxBuffer ];
|
||||
|
||||
if( iLen != 0 )
|
||||
{
|
||||
/* Leave room for the size at the start of the buffer. */
|
||||
uip_buf = &( ucRxBuffers[ ulNextRxBuffer ][ 2 ] );
|
||||
|
||||
ulRxLength[ ulNextRxBuffer ] = 0;
|
||||
|
||||
ulNextRxBuffer++;
|
||||
if( ulNextRxBuffer >= emacNUM_RX_BUFFERS )
|
||||
{
|
||||
ulNextRxBuffer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return iLen;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vInitialiseSend( void )
|
||||
{
|
||||
/* Set the index to the first byte to send - skipping over the size
|
||||
bytes. */
|
||||
ulNextTxSpace = 2;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vIncrementTxLength( unsigned portLONG ulLength )
|
||||
{
|
||||
ulNextTxSpace += ulLength;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vSendBufferToMAC( void )
|
||||
{
|
||||
unsigned long *pulSource;
|
||||
unsigned portSHORT * pus;
|
||||
unsigned portLONG ulNextWord;
|
||||
|
||||
/* Locate the data to be send. */
|
||||
pus = ( unsigned portSHORT * ) uip_buf;
|
||||
|
||||
/* Add in the size of the data. */
|
||||
pus--;
|
||||
*pus = ulNextTxSpace;
|
||||
|
||||
/* Wait for data to be sent if there is no space immediately. */
|
||||
while( !EthernetSpaceAvail( ETH_BASE ) )
|
||||
{
|
||||
vTaskDelay( macWAIT_SEND_TIME );
|
||||
}
|
||||
|
||||
pulSource = ( unsigned portLONG * ) pus;
|
||||
|
||||
for( ulNextWord = 0; ulNextWord < ulNextTxSpace; ulNextWord += sizeof( unsigned portLONG ) )
|
||||
{
|
||||
HWREG(ETH_BASE + MAC_O_DATA) = *pulSource;
|
||||
pulSource++;
|
||||
}
|
||||
|
||||
/* Go. */
|
||||
HWREG( ETH_BASE + MAC_O_TR ) = MAC_TR_NEWTX;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vEMAC_ISR( void )
|
||||
{
|
||||
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
|
||||
unsigned portLONG ulTemp;
|
||||
|
||||
/* Clear the interrupt. */
|
||||
ulTemp = EthernetIntStatus( ETH_BASE, pdFALSE );
|
||||
EthernetIntClear( ETH_BASE, ulTemp );
|
||||
|
||||
/* Was it an Rx interrupt? */
|
||||
if( ulTemp & ETH_INT_RX )
|
||||
{
|
||||
xSemaphoreGiveFromISR( xMACInterruptSemaphore, &xHigherPriorityTaskWoken );
|
||||
EthernetIntDisable( ETH_BASE, ETH_INT_RX );
|
||||
}
|
||||
|
||||
/* Switch to the uIP task. */
|
||||
portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vMACHandleTask( void *pvParameters )
|
||||
{
|
||||
unsigned long ulLen = 0, i;
|
||||
unsigned portLONG ulLength, ulInt;
|
||||
unsigned long *pulBuffer;
|
||||
static unsigned portLONG ulNextRxBuffer = 0;
|
||||
portBASE_TYPE xSwitchRequired = pdFALSE;
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Wait for something to do. */
|
||||
xSemaphoreTake( xMACInterruptSemaphore, portMAX_DELAY );
|
||||
|
||||
while( ( ulInt = ( EthernetIntStatus( ETH_BASE, pdFALSE ) & ETH_INT_RX ) ) != 0 )
|
||||
{
|
||||
ulLength = HWREG( ETH_BASE + MAC_O_DATA );
|
||||
|
||||
/* Leave room at the start of the buffer for the size. */
|
||||
pulBuffer = ( unsigned long * ) &( ucRxBuffers[ ulNextRxBuffer ][ 2 ] );
|
||||
*pulBuffer = ( ulLength >> 16 );
|
||||
|
||||
/* Get the size of the data. */
|
||||
pulBuffer = ( unsigned long * ) &( ucRxBuffers[ ulNextRxBuffer ][ 4 ] );
|
||||
ulLength &= 0xFFFF;
|
||||
|
||||
if( ulLength > 4 )
|
||||
{
|
||||
ulLength -= 4;
|
||||
|
||||
if( ulLength >= UIP_BUFSIZE )
|
||||
{
|
||||
/* The data won't fit in our buffer. Ensure we don't
|
||||
try to write into the buffer. */
|
||||
ulLength = 0;
|
||||
}
|
||||
|
||||
/* Read out the data into our buffer. */
|
||||
for( i = 0; i < ulLength; i += sizeof( unsigned portLONG ) )
|
||||
{
|
||||
*pulBuffer = HWREG( ETH_BASE + MAC_O_DATA );
|
||||
pulBuffer++;
|
||||
}
|
||||
|
||||
/* Store the length of the data into the separate array. */
|
||||
ulRxLength[ ulNextRxBuffer ] = ulLength;
|
||||
|
||||
/* Use the next buffer the next time through. */
|
||||
ulNextRxBuffer++;
|
||||
if( ulNextRxBuffer >= emacNUM_RX_BUFFERS )
|
||||
{
|
||||
ulNextRxBuffer = 0;
|
||||
}
|
||||
|
||||
/* Ensure the uIP task is not blocked as data has arrived. */
|
||||
xSemaphoreGive( xEMACSemaphore );
|
||||
}
|
||||
}
|
||||
|
||||
EthernetIntEnable( ETH_BASE, ETH_INT_RX );
|
||||
}
|
||||
}
|
||||
|
322
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/webserver/emac.h
Normal file
322
20091005/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/webserver/emac.h
Normal file
|
@ -0,0 +1,322 @@
|
|||
/*----------------------------------------------------------------------------
|
||||
* LPC2378 Ethernet Definitions
|
||||
*----------------------------------------------------------------------------
|
||||
* Name: EMAC.H
|
||||
* Purpose: Philips LPC2378 EMAC hardware definitions
|
||||
*----------------------------------------------------------------------------
|
||||
* Copyright (c) 2006 KEIL - An ARM Company. All rights reserved.
|
||||
*---------------------------------------------------------------------------*/
|
||||
#ifndef __EMAC_H
|
||||
#define __EMAC_H
|
||||
|
||||
/* MAC address definition. The MAC address must be unique on the network. */
|
||||
#define emacETHADDR0 0
|
||||
#define emacETHADDR1 0xbd
|
||||
#define emacETHADDR2 0x33
|
||||
#define emacETHADDR3 0x02
|
||||
#define emacETHADDR4 0x64
|
||||
#define emacETHADDR5 0x24
|
||||
|
||||
|
||||
/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */
|
||||
#define NUM_RX_FRAG 4 /* Num.of RX Fragments 4*1536= 6.0kB */
|
||||
#define NUM_TX_FRAG 2 /* Num.of TX Fragments 2*1536= 3.0kB */
|
||||
#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */
|
||||
|
||||
#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */
|
||||
|
||||
/* EMAC variables located in 16K Ethernet SRAM */
|
||||
#define RX_DESC_BASE 0x7FE00000
|
||||
#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*8)
|
||||
#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*8)
|
||||
#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*8)
|
||||
#define RX_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*4)
|
||||
#define TX_BUF_BASE (RX_BUF_BASE + NUM_RX_FRAG*ETH_FRAG_SIZE)
|
||||
|
||||
/* RX and TX descriptor and status definitions. */
|
||||
#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i))
|
||||
#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i))
|
||||
#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i))
|
||||
#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i))
|
||||
#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i))
|
||||
#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i))
|
||||
#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i))
|
||||
#define RX_BUF(i) (RX_BUF_BASE + ETH_FRAG_SIZE*i)
|
||||
#define TX_BUF(i) (TX_BUF_BASE + ETH_FRAG_SIZE*i)
|
||||
|
||||
/* MAC Configuration Register 1 */
|
||||
#define MAC1_REC_EN 0x00000001 /* Receive Enable */
|
||||
#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */
|
||||
#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */
|
||||
#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */
|
||||
#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */
|
||||
#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */
|
||||
#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */
|
||||
#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */
|
||||
#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */
|
||||
#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */
|
||||
#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */
|
||||
|
||||
/* MAC Configuration Register 2 */
|
||||
#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */
|
||||
#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */
|
||||
#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */
|
||||
#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */
|
||||
#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */
|
||||
#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */
|
||||
#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */
|
||||
#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */
|
||||
#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */
|
||||
#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */
|
||||
#undef MAC2_NO_BACKOFF /* Remove compiler warning. */
|
||||
#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */
|
||||
#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */
|
||||
#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */
|
||||
|
||||
/* Back-to-Back Inter-Packet-Gap Register */
|
||||
#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */
|
||||
#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */
|
||||
|
||||
/* Non Back-to-Back Inter-Packet-Gap Register */
|
||||
#define IPGR_DEF 0x00000012 /* Recommended value */
|
||||
|
||||
/* Collision Window/Retry Register */
|
||||
#define CLRT_DEF 0x0000370F /* Default value */
|
||||
|
||||
/* PHY Support Register */
|
||||
#undef SUPP_SPEED /* Remove compiler warning. */
|
||||
#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */
|
||||
#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */
|
||||
|
||||
/* Test Register */
|
||||
#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */
|
||||
#define TEST_TST_PAUSE 0x00000002 /* Test Pause */
|
||||
#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */
|
||||
|
||||
/* MII Management Configuration Register */
|
||||
#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */
|
||||
#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */
|
||||
#define MCFG_CLK_SEL 0x0000001C /* Clock Select Mask */
|
||||
#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */
|
||||
|
||||
/* MII Management Command Register */
|
||||
#undef MCMD_READ /* Remove compiler warning. */
|
||||
#define MCMD_READ 0x00000001 /* MII Read */
|
||||
#undef MCMD_SCAN /* Remove compiler warning. */
|
||||
#define MCMD_SCAN 0x00000002 /* MII Scan continuously */
|
||||
|
||||
#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */
|
||||
#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */
|
||||
|
||||
/* MII Management Address Register */
|
||||
#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */
|
||||
#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */
|
||||
|
||||
/* MII Management Indicators Register */
|
||||
#undef MIND_BUSY /* Remove compiler warning. */
|
||||
#define MIND_BUSY 0x00000001 /* MII is Busy */
|
||||
#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */
|
||||
#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */
|
||||
#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */
|
||||
|
||||
/* Command Register */
|
||||
#define CR_RX_EN 0x00000001 /* Enable Receive */
|
||||
#define CR_TX_EN 0x00000002 /* Enable Transmit */
|
||||
#define CR_REG_RES 0x00000008 /* Reset Host Registers */
|
||||
#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */
|
||||
#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */
|
||||
#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */
|
||||
#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */
|
||||
#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */
|
||||
#define CR_RMII 0x00000200 /* Reduced MII Interface */
|
||||
#define CR_FULL_DUP 0x00000400 /* Full Duplex */
|
||||
|
||||
/* Status Register */
|
||||
#define SR_RX_EN 0x00000001 /* Enable Receive */
|
||||
#define SR_TX_EN 0x00000002 /* Enable Transmit */
|
||||
|
||||
/* Transmit Status Vector 0 Register */
|
||||
#define TSV0_CRC_ERR 0x00000001 /* CRC error */
|
||||
#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */
|
||||
#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */
|
||||
#define TSV0_DONE 0x00000008 /* Tramsmission Completed */
|
||||
#define TSV0_MCAST 0x00000010 /* Multicast Destination */
|
||||
#define TSV0_BCAST 0x00000020 /* Broadcast Destination */
|
||||
#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */
|
||||
#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */
|
||||
#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */
|
||||
#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */
|
||||
#define TSV0_GIANT 0x00000400 /* Giant Frame */
|
||||
#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */
|
||||
#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */
|
||||
#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */
|
||||
#define TSV0_PAUSE 0x20000000 /* Pause Frame */
|
||||
#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */
|
||||
#define TSV0_VLAN 0x80000000 /* VLAN Frame */
|
||||
|
||||
/* Transmit Status Vector 1 Register */
|
||||
#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */
|
||||
#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */
|
||||
|
||||
/* Receive Status Vector Register */
|
||||
#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */
|
||||
#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */
|
||||
#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */
|
||||
#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */
|
||||
#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */
|
||||
#define RSV_CRC_ERR 0x00100000 /* CRC Error */
|
||||
#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */
|
||||
#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */
|
||||
#define RSV_REC_OK 0x00800000 /* Frame Received OK */
|
||||
#define RSV_MCAST 0x01000000 /* Multicast Frame */
|
||||
#define RSV_BCAST 0x02000000 /* Broadcast Frame */
|
||||
#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */
|
||||
#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */
|
||||
#define RSV_PAUSE 0x10000000 /* Pause Frame */
|
||||
#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */
|
||||
#define RSV_VLAN 0x40000000 /* VLAN Frame */
|
||||
|
||||
/* Flow Control Counter Register */
|
||||
#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */
|
||||
#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */
|
||||
|
||||
/* Flow Control Status Register */
|
||||
#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */
|
||||
|
||||
/* Receive Filter Control Register */
|
||||
#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */
|
||||
#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */
|
||||
#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */
|
||||
#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */
|
||||
#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/
|
||||
#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */
|
||||
#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */
|
||||
#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */
|
||||
|
||||
/* Receive Filter WoL Status/Clear Registers */
|
||||
#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */
|
||||
#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */
|
||||
#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */
|
||||
#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */
|
||||
#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */
|
||||
#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */
|
||||
#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */
|
||||
#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */
|
||||
|
||||
/* Interrupt Status/Enable/Clear/Set Registers */
|
||||
#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */
|
||||
#define INT_RX_ERR 0x00000002 /* Receive Error */
|
||||
#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */
|
||||
#define INT_RX_DONE 0x00000008 /* Receive Done */
|
||||
#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */
|
||||
#define INT_TX_ERR 0x00000020 /* Transmit Error */
|
||||
#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */
|
||||
#define INT_TX_DONE 0x00000080 /* Transmit Done */
|
||||
#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */
|
||||
#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */
|
||||
|
||||
/* Power Down Register */
|
||||
#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */
|
||||
|
||||
/* RX Descriptor Control Word */
|
||||
#define RCTRL_SIZE 0x000007FF /* Buffer size mask */
|
||||
#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */
|
||||
|
||||
/* RX Status Hash CRC Word */
|
||||
#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */
|
||||
#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */
|
||||
|
||||
/* RX Status Information Word */
|
||||
#define RINFO_SIZE 0x000007FF /* Data size in bytes */
|
||||
#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */
|
||||
#define RINFO_VLAN 0x00080000 /* VLAN Frame */
|
||||
#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */
|
||||
#define RINFO_MCAST 0x00200000 /* Multicast Frame */
|
||||
#define RINFO_BCAST 0x00400000 /* Broadcast Frame */
|
||||
#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */
|
||||
#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */
|
||||
#define RINFO_LEN_ERR 0x02000000 /* Length Error */
|
||||
#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */
|
||||
#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */
|
||||
#define RINFO_OVERRUN 0x10000000 /* Receive overrun */
|
||||
#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */
|
||||
#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */
|
||||
#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */
|
||||
|
||||
#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \
|
||||
RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN)
|
||||
|
||||
/* TX Descriptor Control Word */
|
||||
#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */
|
||||
#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */
|
||||
#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */
|
||||
#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */
|
||||
#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */
|
||||
#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */
|
||||
#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */
|
||||
|
||||
/* TX Status Information Word */
|
||||
#define TINFO_COL_CNT 0x01E00000 /* Collision Count */
|
||||
#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */
|
||||
#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */
|
||||
#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */
|
||||
#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */
|
||||
#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */
|
||||
#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */
|
||||
#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */
|
||||
|
||||
/* DP83848C PHY Registers */
|
||||
#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */
|
||||
#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */
|
||||
#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */
|
||||
#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */
|
||||
#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */
|
||||
#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */
|
||||
#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */
|
||||
#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */
|
||||
|
||||
/* PHY Extended Registers */
|
||||
#define PHY_REG_STS 0x10 /* Status Register */
|
||||
#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */
|
||||
#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */
|
||||
#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */
|
||||
#define PHY_REG_RECR 0x15 /* Receive Error Counter */
|
||||
#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */
|
||||
#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */
|
||||
#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */
|
||||
#define PHY_REG_PHYCR 0x19 /* PHY Control Register */
|
||||
#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */
|
||||
#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */
|
||||
#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */
|
||||
|
||||
#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */
|
||||
#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */
|
||||
#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */
|
||||
#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */
|
||||
#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */
|
||||
|
||||
#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */
|
||||
#define DP83848C_ID 0x20005C90 /* PHY Identifier */
|
||||
|
||||
// prototypes
|
||||
portBASE_TYPE vInitEMAC(void);
|
||||
unsigned short ReadFrameBE_EMAC(void);
|
||||
void vIncrementTxLength(unsigned long ulLength);
|
||||
void CopyFromFrame_EMAC(void *Dest, unsigned short Size);
|
||||
void DummyReadFrame_EMAC(unsigned short Size);
|
||||
unsigned short StartReadFrame(void);
|
||||
void EndReadFrame(void);
|
||||
unsigned int CheckFrameReceived(void);
|
||||
void vInitialiseSend(void);
|
||||
unsigned int Rdy4Tx(void);
|
||||
void vSendBufferToMAC(void);
|
||||
void vEMACWaitForInput( void );
|
||||
unsigned int uiGetEMACRxData( unsigned char *ucBuffer );
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
* end of file
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
|
@ -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"
|
||||
|
|
@ -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];
|
|
@ -0,0 +1,293 @@
|
|||
/**
|
||||
* \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(run, "run-time", run_time );
|
||||
HTTPD_CGI_CALL(io, "led-io", led_io );
|
||||
|
||||
|
||||
static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &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 = %d", 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;
|
||||
extern unsigned long uxParTestGetLED( unsigned long uxLED );
|
||||
|
||||
static unsigned short generate_io_state( void *arg )
|
||||
{
|
||||
if( uxParTestGetLED( 0 ) )
|
||||
{
|
||||
pcStatus = "checked";
|
||||
}
|
||||
else
|
||||
{
|
||||
pcStatus = "";
|
||||
}
|
||||
|
||||
sprintf( uip_appdata,
|
||||
"<input type=\"checkbox\" name=\"LED0\" value=\"1\" %s>LED"\
|
||||
"<p>"\
|
||||
"<input type=\"text\" name=\"LCD\" value=\"Enter LCD text\" size=\"16\">",
|
||||
pcStatus );
|
||||
|
||||
return strlen( uip_appdata );
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
extern void vTaskGetRunTimeStats( signed char *pcWriteBuffer );
|
||||
static unsigned short
|
||||
generate_runtime_stats(void *arg)
|
||||
{
|
||||
lRefreshCount++;
|
||||
sprintf( cCountBuf, "<p><br>Refresh count = %d", lRefreshCount );
|
||||
vTaskGetRunTimeStats( uip_appdata );
|
||||
strcat( uip_appdata, cCountBuf );
|
||||
|
||||
return strlen( uip_appdata );
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
static
|
||||
PT_THREAD(run_time(struct httpd_state *s, char *ptr))
|
||||
{
|
||||
PSOCK_BEGIN(&s->sout);
|
||||
PSOCK_GENERATOR_SEND(&s->sout, generate_runtime_stats, NULL);
|
||||
PSOCK_END(&s->sout);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
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__ */
|
||||
|
||||
/** @} */
|
|
@ -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 */
|
||||
/*-----------------------------------------------------------------------------------*/
|
|
@ -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)">
|
||||
<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)">
|
||||
<font face="arial">
|
||||
<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time 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 every 2 seconds.<p>
|
||||
<font face="courier"><pre>Task State Priority Stack #<br>************************************************<br>
|
||||
%! rtos-stats
|
||||
</pre></font>
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
||||
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue