Preparing for the next release...
New port and demo project: Intel Galileo.
This commit is contained in:
103
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/.cproject
Normal file
103
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/.cproject
Normal file
@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<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"/>
|
||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GLDErrorParser" id="cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473" name="Debug" parent="cdt.managedbuild.config.gnu.cygwin.exe.debug" postannouncebuildStep="" postbuildStep="" preannouncebuildStep="" prebuildStep="">
|
||||
<folderInfo id="cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473." name="/" resourcePath="">
|
||||
<toolChain id="cdt.managedbuild.toolchain.gnu.cross.base.143724896" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.base">
|
||||
<option id="cdt.managedbuild.option.gnu.cross.prefix.1160671315" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix" value="i686-elf-" valueType="string"/>
|
||||
<option id="cdt.managedbuild.option.gnu.cross.path.942625968" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path" value="" valueType="string"/>
|
||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.315548413" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
|
||||
<builder buildPath="${workspace_loc:/RTOSDemo}/Debug" id="org.eclipse.cdt.build.core.internal.builder.1446204811" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" stopOnErr="true" superClass="org.eclipse.cdt.build.core.internal.builder"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.850200804" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
|
||||
<option id="gnu.c.compiler.option.include.paths.369547224" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Full_Demo}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Full_Demo}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Support_Files}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/FreeRTOS_Source/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Full_Demo/Standard_Demo_Tasks/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/FreeRTOS_Source/portable/IA32_flat}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}}""/>
|
||||
</option>
|
||||
<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1628552532" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.c.optimization.level.none" valueType="enumerated"/>
|
||||
<option id="gnu.c.compiler.option.debugging.level.1363374967" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||
<option id="gnu.c.compiler.option.dialect.std.1079108915" name="Language standard" superClass="gnu.c.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.c.compiler.dialect.default" valueType="enumerated"/>
|
||||
<option id="gnu.c.compiler.option.warnings.extrawarn.1052953868" name="Extra warnings (-Wextra)" superClass="gnu.c.compiler.option.warnings.extrawarn" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="gnu.c.compiler.option.misc.other.148628155" name="Other flags" superClass="gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-c -fmessage-length=0 -march=pentium -Wno-ignored-qualifiers -mno-ms-bitfields -ffunction-sections -ffreestanding" valueType="string"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.308880891" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1667900842" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
|
||||
<option id="gnu.cpp.compiler.option.optimization.level.556426180" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
|
||||
<option id="gnu.cpp.compiler.option.debugging.level.105591713" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
|
||||
</tool>
|
||||
<tool command="gcc" id="cdt.managedbuild.tool.gnu.cross.c.linker.2047125905" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker">
|
||||
<option id="gnu.c.link.option.nostdlibs.1858169787" name="No startup or default libs (-nostdlib)" superClass="gnu.c.link.option.nostdlibs" value="true" valueType="boolean"/>
|
||||
<option id="gnu.c.link.option.nostart.16274397" name="Do not use standard start files (-nostartfiles)" superClass="gnu.c.link.option.nostart" value="false" valueType="boolean"/>
|
||||
<option id="gnu.c.link.option.noshared.1817981723" name="No shared libraries (-static)" superClass="gnu.c.link.option.noshared" value="false" valueType="boolean"/>
|
||||
<option id="gnu.c.link.option.nodeflibs.1892279432" name="Do not use default libraries (-nodefaultlibs)" superClass="gnu.c.link.option.nodeflibs" value="false" valueType="boolean"/>
|
||||
<option id="gnu.c.link.option.ldflags.1391446951" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-Xlinker -T -Xlinker ..${PROJECT_LOC}/elf_ia32_efi.lds -Xlinker -Map=RTOSDemo.map -Xlinker --gc-sections" valueType="string"/>
|
||||
<option id="gnu.c.link.option.libs.517070894" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="gcc"/>
|
||||
</option>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.480873713" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1304180380" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cross.archiver.2001524857" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
|
||||
<tool command="gcc" id="cdt.managedbuild.tool.gnu.cross.assembler.500911803" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
|
||||
<option id="gnu.both.asm.option.include.paths.1341458440" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/FreeRTOS_Source/portable/IA32_flat}""/>
|
||||
</option>
|
||||
<option id="gnu.both.asm.option.flags.342663249" name="Assembler flags" superClass="gnu.both.asm.option.flags" value="-Wa,--gdwarf2 -Wa,-march=pentium -c" valueType="string"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.458498164" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="Support_Files/stdlib_functions.c|nops.c|Source|uart.c|early_uart.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="RTOSDemo.cdt.managedbuild.target.gnu.cygwin.exe.531908557" name="Executable" projectType="cdt.managedbuild.target.gnu.cygwin.exe"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||
<configuration configurationName="Debug">
|
||||
<resource resourceType="PROJECT" workspacePath="/RTOSDemo"/>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473;cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473.;cdt.managedbuild.tool.gnu.c.compiler.cygwin.exe.debug.1450966283;cdt.managedbuild.tool.gnu.c.compiler.input.cygwin.88373151">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473;cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473.;cdt.managedbuild.tool.gnu.c.compiler.mingw.base.1366728385;cdt.managedbuild.tool.gnu.c.compiler.input.58867770">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473;cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473.;cdt.managedbuild.tool.gnu.cross.c.compiler.850200804;cdt.managedbuild.tool.gnu.c.compiler.input.308880891">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473;cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473.;cdt.managedbuild.tool.gnu.c.compiler.mingw.base.1511730062;cdt.managedbuild.tool.gnu.c.compiler.input.1872488295">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
</storageModule>
|
||||
</cproject>
|
73
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/.project
Normal file
73
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/.project
Normal file
@ -0,0 +1,73 @@
|
||||
<?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>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
<linkedResources>
|
||||
<link>
|
||||
<name>FreeRTOS_Source</name>
|
||||
<type>2</type>
|
||||
<locationURI>FREERTOS_ROOT/Source</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>Full_Demo/Standard_Demo_Tasks</name>
|
||||
<type>2</type>
|
||||
<locationURI>FREERTOS_ROOT/Demo/Common</locationURI>
|
||||
</link>
|
||||
</linkedResources>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1397138529515</id>
|
||||
<name>FreeRTOS_Source/portable</name>
|
||||
<type>9</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-IA32_flat</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1397138529531</id>
|
||||
<name>FreeRTOS_Source/portable</name>
|
||||
<type>9</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-MemMang</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1397138545742</id>
|
||||
<name>FreeRTOS_Source/portable/MemMang</name>
|
||||
<type>5</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-heap_4.c</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
<variableList>
|
||||
<variable>
|
||||
<name>FREERTOS_ROOT</name>
|
||||
<value>$%7BPARENT-2-PROJECT_LOC%7D</value>
|
||||
</variable>
|
||||
</variableList>
|
||||
</projectDescription>
|
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<project>
|
||||
<configuration id="cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473" name="Debug">
|
||||
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
|
||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-1445952490268027060" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||
</provider>
|
||||
</extension>
|
||||
</configuration>
|
||||
</project>
|
@ -0,0 +1,69 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.cdt.codan.checkers.errnoreturn=-Warning
|
||||
org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false}
|
||||
org.eclipse.cdt.codan.checkers.errreturnvalue=-Error
|
||||
org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.checkers.noreturn=-Error
|
||||
org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false}
|
||||
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false}
|
||||
org.eclipse.cdt.codan.internal.checkers.CatchByReference=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},unknown\=>false,exceptions\=>()}
|
||||
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},skip\=>true}
|
||||
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.InvalidArguments=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
|
||||
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
|
||||
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.OverloadProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>()}
|
||||
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},paramNot\=>false}
|
||||
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},else\=>false,afterelse\=>false}
|
||||
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true}
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true}
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>("@(\#)","$Id")}
|
||||
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.qt.core.qtproblem=Warning
|
||||
org.eclipse.cdt.qt.core.qtproblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>true,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
@ -0,0 +1,6 @@
|
||||
eclipse.preferences.version=1
|
||||
environment/project/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/MSYS_HOME/delimiter=;
|
||||
environment/project/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/MSYS_HOME/operation=replace
|
||||
environment/project/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/MSYS_HOME/value=
|
||||
environment/project/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/append=true
|
||||
environment/project/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/appendContributed=true
|
@ -0,0 +1,11 @@
|
||||
eclipse.preferences.version=1
|
||||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/CPATH/delimiter=;
|
||||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/CPATH/operation=remove
|
||||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/C_INCLUDE_PATH/delimiter=;
|
||||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/C_INCLUDE_PATH/operation=remove
|
||||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/append=true
|
||||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/appendContributed=true
|
||||
environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/LIBRARY_PATH/delimiter=;
|
||||
environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/LIBRARY_PATH/operation=remove
|
||||
environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/append=true
|
||||
environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.cygwin.exe.debug.5899473/appendContributed=true
|
@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
|
@ -0,0 +1,247 @@
|
||||
/*
|
||||
FreeRTOS V8.2.1 - Copyright (C) 2015 Real Time Engineers Ltd.
|
||||
All rights reserved
|
||||
|
||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||
|
||||
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 modification 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. !<<
|
||||
***************************************************************************
|
||||
|
||||
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. Full license text is available on the following
|
||||
link: http://www.freertos.org/a00114.html
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* FreeRTOS provides completely free yet professionally developed, *
|
||||
* robust, strictly quality controlled, supported, and cross *
|
||||
* platform software that is more than just the market leader, it *
|
||||
* is the industry's de facto standard. *
|
||||
* *
|
||||
* Help yourself get started quickly while simultaneously helping *
|
||||
* to support the FreeRTOS project by purchasing a FreeRTOS *
|
||||
* tutorial book, reference manual, or both: *
|
||||
* http://www.FreeRTOS.org/Documentation *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
|
||||
the FAQ page "My application does not run, what could be wrong?". Have you
|
||||
defined configASSERT()?
|
||||
|
||||
http://www.FreeRTOS.org/support - In return for receiving this top quality
|
||||
embedded software for free we request you assist our global community by
|
||||
participating in the support forum.
|
||||
|
||||
http://www.FreeRTOS.org/training - Investing in training allows your team to
|
||||
be as productive as possible as early as possible. Now you can receive
|
||||
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
|
||||
Ltd, and the world's leading authority on the world's leading RTOS.
|
||||
|
||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||
|
||||
http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
|
||||
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
|
||||
|
||||
http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
|
||||
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||
licenses offer ticketed support, indemnification and commercial middleware.
|
||||
|
||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||
engineered and independently SIL3 certified version for use in safety and
|
||||
mission critical applications that require provable dependability.
|
||||
|
||||
1 tab == 4 spaces!
|
||||
*/
|
||||
|
||||
/******************************************************************************
|
||||
* NOTE 1: This project provides two demo applications. A simple blinky style
|
||||
* project, and a more comprehensive test and demo application. The
|
||||
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting in main.c is used to select
|
||||
* between the two. See the notes on using mainCREATE_SIMPLE_BLINKY_DEMO_ONLY
|
||||
* in main.c. This file implements the simply blinky style version.
|
||||
*
|
||||
* NOTE 2: This file only contains the source code that is specific to the
|
||||
* basic demo. Generic functions, such FreeRTOS hook functions, and functions
|
||||
* required to configure the hardware are defined in main.c.
|
||||
******************************************************************************
|
||||
*
|
||||
* See http://www.FreeRTOS.org/RTOS_Intel_Quark_Galileo_GCC.html for usage
|
||||
* instructions.
|
||||
*
|
||||
* main_blinky() creates one queue, and two tasks. It then starts the
|
||||
* scheduler.
|
||||
*
|
||||
* The Queue Send Task:
|
||||
* The queue send task is implemented by the prvQueueSendTask() function in
|
||||
* this file. prvQueueSendTask() sits in a loop that causes it to repeatedly
|
||||
* block for 200 milliseconds, before sending the value 100 to the queue that
|
||||
* was created within main_blinky(). Once the value is sent, the task loops
|
||||
* back around to block for another 200 milliseconds...and so on.
|
||||
*
|
||||
* The Queue Receive Task:
|
||||
* The queue receive task is implemented by the prvQueueReceiveTask() function
|
||||
* in this file. prvQueueReceiveTask() sits in a loop where it repeatedly
|
||||
* blocks on attempts to read data from the queue that was created within
|
||||
* main_blinky(). When data is received, the task checks the value of the
|
||||
* data, and if the value equals the expected 100, outputs a message to the COM
|
||||
* port. The 'block time' parameter passed to the queue receive function
|
||||
* specifies that the task should be held in the Blocked state indefinitely to
|
||||
* wait for data to be available on the queue. The queue receive task will only
|
||||
* leave the Blocked state when the queue send task writes to the queue. As the
|
||||
* queue send task writes to the queue every 200 milliseconds, the queue receive
|
||||
* task leaves the Blocked state every 200 milliseconds, and therefore writes to
|
||||
* the COM port every 200 milliseconds.
|
||||
*/
|
||||
|
||||
/* Kernel includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "semphr.h"
|
||||
|
||||
/* Added Galileo SERIAL support */
|
||||
#include "galileo_support.h"
|
||||
|
||||
/* Priorities at which the tasks are created. */
|
||||
#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
|
||||
/* The rate at which data is sent to the queue. The 200ms value is converted
|
||||
to ticks using the portTICK_PERIOD_MS constant. */
|
||||
#define mainQUEUE_SEND_FREQUENCY_MS ( pdMS_TO_TICKS( 200 ) )
|
||||
|
||||
/* The number of items the queue can hold. This is 1 as the receive task
|
||||
will remove items as they are added, meaning the send task should always find
|
||||
the queue empty. */
|
||||
#define mainQUEUE_LENGTH ( 1 )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* The tasks as described in the comments at the top of this file.
|
||||
*/
|
||||
static void prvQueueReceiveTask( void *pvParameters );
|
||||
static void prvQueueSendTask( void *pvParameters );
|
||||
|
||||
/*
|
||||
* Called by main() to create the simply blinky style application if
|
||||
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.
|
||||
*/
|
||||
void main_blinky( void );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* The queue used by both tasks. */
|
||||
static QueueHandle_t xQueue = NULL;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* See http://www.FreeRTOS.org/RTOS_Intel_Quark_Galileo_GCC.html for usage
|
||||
instructions. */
|
||||
void main_blinky( void )
|
||||
{
|
||||
/* Create the queue. */
|
||||
xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( uint32_t ) );
|
||||
|
||||
if( xQueue != NULL )
|
||||
{
|
||||
/* Start the two tasks as described in the comments at the top of this
|
||||
file. */
|
||||
xTaskCreate( prvQueueReceiveTask, /* The function that implements the task. */
|
||||
"Rx", /* The text name assigned to the task - for debug only as it is not used by the kernel. */
|
||||
configMINIMAL_STACK_SIZE * 2, /* The size of the stack to allocate to the task. */
|
||||
NULL, /* The parameter passed to the task - not used in this case. */
|
||||
mainQUEUE_RECEIVE_TASK_PRIORITY, /* The priority assigned to the task. */
|
||||
NULL ); /* The task handle is not required, so NULL is passed. */
|
||||
|
||||
xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE * 2, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL );
|
||||
|
||||
/* Start the tasks and timer running. */
|
||||
vTaskStartScheduler();
|
||||
}
|
||||
|
||||
/* If all is well, the scheduler will now be running, and the following
|
||||
line will never be reached. If the following line does execute, then
|
||||
there was either insufficient FreeRTOS heap memory available for the idle
|
||||
and/or timer tasks to be created, or vTaskStartScheduler() was called from
|
||||
User mode. See the memory management section on the FreeRTOS web site for
|
||||
more details on the FreeRTOS heap http://www.freertos.org/a00111.html. The
|
||||
mode from which main() is called is set in the C start up code and must be
|
||||
a privileged mode (not user mode). */
|
||||
for( ;; );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvQueueSendTask( void *pvParameters )
|
||||
{
|
||||
TickType_t xNextWakeTime;
|
||||
const uint32_t ulValueToSend = 100UL;
|
||||
|
||||
/* Remove compiler warning about unused parameter. */
|
||||
( void ) pvParameters;
|
||||
|
||||
/* Initialise xNextWakeTime - this only needs to be done once. */
|
||||
xNextWakeTime = xTaskGetTickCount();
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Place this task in the blocked state until it is time to run again. */
|
||||
vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS );
|
||||
|
||||
/* Send to the queue - causing the queue receive task to unblock and
|
||||
write to the COM port. 0 is used as the block time so the sending
|
||||
operation will not block - it shouldn't need to block as the queue
|
||||
should always be empty at this point in the code. */
|
||||
xQueueSend( xQueue, &ulValueToSend, 0U );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvQueueReceiveTask( void *pvParameters )
|
||||
{
|
||||
uint32_t ulReceivedValue, ulLEDStatus;
|
||||
const uint32_t ulExpectedValue = 100UL;
|
||||
|
||||
/* Remove compiler warning about unused parameter. */
|
||||
( void ) pvParameters;
|
||||
|
||||
/* Initial cursor position to skip a line) */
|
||||
g_printf_rcc( 5, 2, DEFAULT_SCREEN_COLOR, "LED on the Galileo board should be blinking." );
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Wait until something arrives in the queue - this task will block
|
||||
indefinitely provided INCLUDE_vTaskSuspend is set to 1 in
|
||||
FreeRTOSConfig.h. */
|
||||
xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY );
|
||||
|
||||
/* To get here something must have been received from the queue, but
|
||||
is it the expected value? If it is, write a message to the COMP
|
||||
port. */
|
||||
if( ulReceivedValue == ulExpectedValue )
|
||||
{
|
||||
/* Toggle the LED, and also print the LED toggle state to the
|
||||
UART. */
|
||||
ulLEDStatus = ulBlinkLED();
|
||||
|
||||
/* Print the LED status */
|
||||
g_printf_rcc( 6, 2, DEFAULT_SCREEN_COLOR, "LED State = %d\r\n", ( int ) ulLEDStatus );
|
||||
ulReceivedValue = 0U;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
250
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/FreeRTOSConfig.h
Normal file
250
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/FreeRTOSConfig.h
Normal file
@ -0,0 +1,250 @@
|
||||
/*
|
||||
FreeRTOS V8.2.1 - Copyright (C) 2015 Real Time Engineers Ltd.
|
||||
All rights reserved
|
||||
|
||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||
|
||||
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 modification 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. !<<
|
||||
***************************************************************************
|
||||
|
||||
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. Full license text is available on the following
|
||||
link: http://www.freertos.org/a00114.html
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* FreeRTOS provides completely free yet professionally developed, *
|
||||
* robust, strictly quality controlled, supported, and cross *
|
||||
* platform software that is more than just the market leader, it *
|
||||
* is the industry's de facto standard. *
|
||||
* *
|
||||
* Help yourself get started quickly while simultaneously helping *
|
||||
* to support the FreeRTOS project by purchasing a FreeRTOS *
|
||||
* tutorial book, reference manual, or both: *
|
||||
* http://www.FreeRTOS.org/Documentation *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
|
||||
the FAQ page "My application does not run, what could be wrong?". Have you
|
||||
defined configASSERT()?
|
||||
|
||||
http://www.FreeRTOS.org/support - In return for receiving this top quality
|
||||
embedded software for free we request you assist our global community by
|
||||
participating in the support forum.
|
||||
|
||||
http://www.FreeRTOS.org/training - Investing in training allows your team to
|
||||
be as productive as possible as early as possible. Now you can receive
|
||||
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
|
||||
Ltd, and the world's leading authority on the world's leading RTOS.
|
||||
|
||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||
|
||||
http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
|
||||
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
|
||||
|
||||
http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
|
||||
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||
licenses offer ticketed support, indemnification and commercial middleware.
|
||||
|
||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||
engineered and independently SIL3 certified version for use in safety and
|
||||
mission critical applications that require provable dependability.
|
||||
|
||||
1 tab == 4 spaces!
|
||||
*/
|
||||
|
||||
#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.
|
||||
*----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* The FreeRTOS Quark port implements a full interrupt nesting model.
|
||||
*
|
||||
* Interrupts that are assigned a priority at or below
|
||||
* configMAX_API_CALL_INTERRUPT_PRIORITY can call interrupt safe API functions
|
||||
* and will nest.
|
||||
*
|
||||
* Interrupts that are assigned a priority above
|
||||
* configMAX_API_CALL_INTERRUPT_PRIORITY cannot call any FreeRTOS API functions,
|
||||
* will nest, and will not be masked by FreeRTOS critical sections (although all
|
||||
* interrupts are briefly masked by the hardware itself on interrupt entry).
|
||||
*
|
||||
* FreeRTOS functions that can be called from an interrupt are those that end in
|
||||
* "FromISR". FreeRTOS maintains a separate interrupt safe API to enable
|
||||
* interrupt entry to be shorter, faster, simpler and smaller.
|
||||
*
|
||||
* User definable interrupt priorities range from 2 (the lowest) to 15 (the
|
||||
* highest).
|
||||
*/
|
||||
#define configMAX_API_CALL_INTERRUPT_PRIORITY 10
|
||||
|
||||
/*
|
||||
* Interrupt entry code will switch the stack in use to a dedicated system
|
||||
* stack.
|
||||
*
|
||||
* configISR_STACK_SIZE defines the number of 32-bit values that can be stored
|
||||
* on the system stack, and must be large enough to hold a potentially nested
|
||||
* interrupt stack frame.
|
||||
*
|
||||
* Changing this parameter necessitates a complete rebuild so the assembly files
|
||||
* also get rebuilt.
|
||||
*/
|
||||
#define configISR_STACK_SIZE 350
|
||||
|
||||
/*
|
||||
* If configSUPPORT_FPU is set to 1 then tasks can optionally have a floating
|
||||
* point context (the floating point registers will be saved as part of the task
|
||||
* context). If configSUPPORT_FPU is set to 1 then a task must *not* use any
|
||||
* floating point instructions until after it has called vPortTaskUsesFPU().
|
||||
*
|
||||
* If configSUPPORT_FPU is set to 0 then floating point instructions must never
|
||||
* be used.
|
||||
*/
|
||||
#define configSUPPORT_FPU 1
|
||||
|
||||
/* There are two ways of implementing interrupt handlers:
|
||||
*
|
||||
* 1) As standard C functions -
|
||||
*
|
||||
* This method can only be used if configUSE_COMMON_INTERRUPT_ENTRY_POINT
|
||||
* is set to 1. The C function is installed using
|
||||
* xPortRegisterCInterruptHandler().
|
||||
*
|
||||
* This is the simplest of the two methods but incurs a slightly longer
|
||||
* interrupt entry time.
|
||||
*
|
||||
* 2) By using an assembly stub that wraps the handler in the FreeRTOS
|
||||
* portFREERTOS_INTERRUPT_ENTRY and portFREERTOS_INTERRUPT_EXIT macros. The handler is installed
|
||||
* using xPortInstallInterruptHandler().
|
||||
*
|
||||
* This method can always be used. It is slightly more complex than
|
||||
* method 1 but benefits from a faster interrupt entry time.
|
||||
*
|
||||
* Changing this parameter necessitates a complete clean build.
|
||||
*/
|
||||
#define configUSE_COMMON_INTERRUPT_ENTRY_POINT 1
|
||||
|
||||
#define configCPU_CLOCK_HZ ( 400000000UL )
|
||||
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
|
||||
#define configMINIMAL_STACK_SIZE ( 125 )
|
||||
#define configUSE_TICKLESS_IDLE 0
|
||||
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
|
||||
#define configUSE_PREEMPTION 1
|
||||
#define configUSE_IDLE_HOOK 1
|
||||
#define configUSE_TICK_HOOK 1
|
||||
#define configMAX_PRIORITIES ( 7 )
|
||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 55 * 1024 ) )
|
||||
#define configMAX_TASK_NAME_LEN ( 10 )
|
||||
#define configUSE_TRACE_FACILITY 0
|
||||
#define configUSE_16_BIT_TICKS 0
|
||||
#define configIDLE_SHOULD_YIELD 1
|
||||
#define configUSE_MUTEXES 1
|
||||
#define configQUEUE_REGISTRY_SIZE 8
|
||||
#define configCHECK_FOR_STACK_OVERFLOW 2
|
||||
#define configUSE_RECURSIVE_MUTEXES 1
|
||||
#define configUSE_MALLOC_FAILED_HOOK 1
|
||||
#define configUSE_APPLICATION_TASK_TAG 0
|
||||
#define configUSE_COUNTING_SEMAPHORES 1
|
||||
#define configUSE_QUEUE_SETS 1
|
||||
#define configUSE_TASK_NOTIFICATIONS 1
|
||||
|
||||
/* Co-routine definitions. */
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
|
||||
|
||||
/* Software timer definitions. */
|
||||
#define configUSE_TIMERS 1
|
||||
#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
|
||||
#define configTIMER_QUEUE_LENGTH 8
|
||||
#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 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 1
|
||||
#define INCLUDE_vTaskSuspend 1
|
||||
#define INCLUDE_vTaskDelayUntil 1
|
||||
#define INCLUDE_vTaskDelay 1
|
||||
#define INCLUDE_xTimerPendFunctionCall 1
|
||||
#define INCLUDE_eTaskGetState 1
|
||||
|
||||
/* This demo makes use of one or more example stats formatting functions. These
|
||||
format the raw data provided by the uxTaskGetSystemState() function in to human
|
||||
readable ASCII form. See the notes in the implementation of vTaskList() within
|
||||
FreeRTOS/Source/tasks.c for limitations. */
|
||||
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
|
||||
|
||||
/* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS is not required because the time base
|
||||
comes from the ulHighFrequencyTimerCounts variable which is incremented in a
|
||||
high frequency timer that is already being started as part of the interrupt
|
||||
nesting test. */
|
||||
#define configGENERATE_RUN_TIME_STATS 0
|
||||
|
||||
/* The size of the global output buffer that is available for use when there
|
||||
are multiple command interpreters running at once (for example, one on a UART
|
||||
and one on TCP/IP). This is done to prevent an output buffer being defined by
|
||||
each implementation - which would waste RAM. In this case, there is only one
|
||||
command interpreter running. */
|
||||
#define configCOMMAND_INT_MAX_OUTPUT_SIZE 2096
|
||||
|
||||
/* This file is included from assembler files - make sure C code is not included
|
||||
in assembler files. */
|
||||
#ifndef __ASSEMBLER__
|
||||
void vAssertCalled( const char * pcFile, unsigned long ulLine );
|
||||
void vConfigureTickInterrupt( void );
|
||||
void vClearTickInterrupt( void );
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
||||
|
||||
|
||||
/* Normal assert() semantics without relying on the provision of an assert.h
|
||||
header file. */
|
||||
#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ );
|
||||
|
||||
|
||||
|
||||
/****** Hardware/compiler specific settings. *******************************************/
|
||||
|
||||
/*
|
||||
* The application must provide a function that configures a peripheral to
|
||||
* create the FreeRTOS tick interrupt, then define configSETUP_TICK_INTERRUPT()
|
||||
* in FreeRTOSConfig.h to call the function. This file contains a function
|
||||
* that is suitable for use on the Zynq MPU. FreeRTOS_Tick_Handler() must
|
||||
* be installed as the peripheral's interrupt handler.
|
||||
*/
|
||||
#define configSETUP_TICK_INTERRUPT() vConfigureTickInterrupt()
|
||||
#define configCLEAR_TICK_INTERRUPT() vClearTickInterrupt()
|
||||
|
||||
|
||||
/* Compiler specifics. */
|
||||
#define fabs( x ) __builtin_fabs( ( x ) )
|
||||
|
||||
#endif /* FREERTOS_CONFIG_H */
|
||||
|
@ -0,0 +1,164 @@
|
||||
/*
|
||||
FreeRTOS V8.2.1 - Copyright (C) 2015 Real Time Engineers Ltd.
|
||||
All rights reserved
|
||||
|
||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||
|
||||
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 modification 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. !<<
|
||||
***************************************************************************
|
||||
|
||||
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. Full license text is available on the following
|
||||
link: http://www.freertos.org/a00114.html
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* FreeRTOS provides completely free yet professionally developed, *
|
||||
* robust, strictly quality controlled, supported, and cross *
|
||||
* platform software that is more than just the market leader, it *
|
||||
* is the industry's de facto standard. *
|
||||
* *
|
||||
* Help yourself get started quickly while simultaneously helping *
|
||||
* to support the FreeRTOS project by purchasing a FreeRTOS *
|
||||
* tutorial book, reference manual, or both: *
|
||||
* http://www.FreeRTOS.org/Documentation *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
|
||||
the FAQ page "My application does not run, what could be wrong?". Have you
|
||||
defined configASSERT()?
|
||||
|
||||
http://www.FreeRTOS.org/support - In return for receiving this top quality
|
||||
embedded software for free we request you assist our global community by
|
||||
participating in the support forum.
|
||||
|
||||
http://www.FreeRTOS.org/training - Investing in training allows your team to
|
||||
be as productive as possible as early as possible. Now you can receive
|
||||
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
|
||||
Ltd, and the world's leading authority on the world's leading RTOS.
|
||||
|
||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||
|
||||
http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
|
||||
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
|
||||
|
||||
http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
|
||||
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||
licenses offer ticketed support, indemnification and commercial middleware.
|
||||
|
||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||
engineered and independently SIL3 certified version for use in safety and
|
||||
mission critical applications that require provable dependability.
|
||||
|
||||
1 tab == 4 spaces!
|
||||
*/
|
||||
|
||||
/*
|
||||
* Provides the port specific part of the standard IntQ test, which is
|
||||
* implemented in FreeRTOS/Demo/Common/Minimal/IntQueue.c. Three HPET timers
|
||||
* are used to generate the interrupts. The timers are configured in
|
||||
* prvSetupHardware(), in main.c.
|
||||
*/
|
||||
|
||||
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
|
||||
/* Demo includes. */
|
||||
#include "IntQueueTimer.h"
|
||||
#include "IntQueue.h"
|
||||
|
||||
/*
|
||||
* Prototypes of the callback functions which are called from the HPET timer
|
||||
* support file. For demonstration purposes, timer 0 and timer 1 are standard
|
||||
* C functions that use the central interrupt handler, and are installed using
|
||||
* xPortRegisterCInterruptHandler() - and timer 2 uses its own interrupt entry
|
||||
* asm wrapper code and is installed using xPortInstallInterruptHandler(). For
|
||||
* convenience the asm wrapper which calls vApplicationHPETTimer1Handler(), is
|
||||
* implemented in RegTest.S. See
|
||||
* http://www.freertos.org/RTOS_Intel_Quark_Galileo_GCC.html#interrupts for more
|
||||
* details.
|
||||
*/
|
||||
void vApplicationHPETTimer0Handler( void );
|
||||
void vApplicationHPETTimer1Handler( void );
|
||||
void vApplicationHPETTimer2Handler( void );
|
||||
|
||||
/*
|
||||
* Set to pdTRUE when vInitialiseTimerForIntQueueTest() is called so the timer
|
||||
* callback functions know the scheduler is running and the tests can run.
|
||||
*/
|
||||
static volatile BaseType_t xSchedulerRunning = pdFALSE;
|
||||
|
||||
/* Used to count the nesting depth to ensure the test is testing what it is
|
||||
intended to test. */
|
||||
static volatile uint32_t ulMaxInterruptNesting = 0;
|
||||
extern volatile uint32_t ulInterruptNesting;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vInitialiseTimerForIntQueueTest( void )
|
||||
{
|
||||
/* The HPET timers are set up in main(), before the scheduler is started,
|
||||
so there is nothing to do here other than note the scheduler is now running.
|
||||
This could be done by calling a FreeRTOS API function, but its convenient
|
||||
and efficient just to store the fact in a file scope variable. */
|
||||
xSchedulerRunning = pdTRUE;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationHPETTimer0Handler( void )
|
||||
{
|
||||
BaseType_t xHigherPriorityTaskWoken;
|
||||
|
||||
if( xSchedulerRunning != pdFALSE )
|
||||
{
|
||||
if( ulInterruptNesting > ulMaxInterruptNesting )
|
||||
{
|
||||
ulMaxInterruptNesting = ulInterruptNesting;
|
||||
}
|
||||
|
||||
xHigherPriorityTaskWoken = xFirstTimerHandler();
|
||||
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationHPETTimer1Handler( void )
|
||||
{
|
||||
BaseType_t xHigherPriorityTaskWoken;
|
||||
|
||||
if( xSchedulerRunning != pdFALSE )
|
||||
{
|
||||
if( ulInterruptNesting > ulMaxInterruptNesting )
|
||||
{
|
||||
ulMaxInterruptNesting = ulInterruptNesting;
|
||||
}
|
||||
|
||||
xHigherPriorityTaskWoken = xSecondTimerHandler();
|
||||
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationHPETTimer2Handler( void )
|
||||
{
|
||||
if( ulInterruptNesting > ulMaxInterruptNesting )
|
||||
{
|
||||
ulMaxInterruptNesting = ulInterruptNesting;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,78 @@
|
||||
/*
|
||||
FreeRTOS V8.2.1 - Copyright (C) 2015 Real Time Engineers Ltd.
|
||||
All rights reserved
|
||||
|
||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||
|
||||
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 modification 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. !<<
|
||||
***************************************************************************
|
||||
|
||||
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. Full license text is available on the following
|
||||
link: http://www.freertos.org/a00114.html
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* FreeRTOS provides completely free yet professionally developed, *
|
||||
* robust, strictly quality controlled, supported, and cross *
|
||||
* platform software that is more than just the market leader, it *
|
||||
* is the industry's de facto standard. *
|
||||
* *
|
||||
* Help yourself get started quickly while simultaneously helping *
|
||||
* to support the FreeRTOS project by purchasing a FreeRTOS *
|
||||
* tutorial book, reference manual, or both: *
|
||||
* http://www.FreeRTOS.org/Documentation *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
|
||||
the FAQ page "My application does not run, what could be wrong?". Have you
|
||||
defined configASSERT()?
|
||||
|
||||
http://www.FreeRTOS.org/support - In return for receiving this top quality
|
||||
embedded software for free we request you assist our global community by
|
||||
participating in the support forum.
|
||||
|
||||
http://www.FreeRTOS.org/training - Investing in training allows your team to
|
||||
be as productive as possible as early as possible. Now you can receive
|
||||
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
|
||||
Ltd, and the world's leading authority on the world's leading RTOS.
|
||||
|
||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||
|
||||
http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
|
||||
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
|
||||
|
||||
http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
|
||||
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||
licenses offer ticketed support, indemnification and commercial middleware.
|
||||
|
||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||
engineered and independently SIL3 certified version for use in safety and
|
||||
mission critical applications that require provable dependability.
|
||||
|
||||
1 tab == 4 spaces!
|
||||
*/
|
||||
|
||||
#ifndef INT_QUEUE_TIMER_H
|
||||
#define INT_QUEUE_TIMER_H
|
||||
|
||||
void vInitialiseTimerForIntQueueTest( void );
|
||||
portBASE_TYPE xTimer0Handler( void );
|
||||
portBASE_TYPE xTimer1Handler( void );
|
||||
|
||||
#endif
|
||||
|
325
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/Full_Demo/RegTest.S
Normal file
325
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/Full_Demo/RegTest.S
Normal file
File diff suppressed because it is too large
Load Diff
461
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/Full_Demo/main_full.c
Normal file
461
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/Full_Demo/main_full.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,5 @@
|
||||
[{000214A0-0000-0000-C000-000000000046}]
|
||||
Prop3=19,2
|
||||
[InternetShortcut]
|
||||
URL=http://www.freertos.org/RTOS_Intel_Quark_Galileo_GCC.html
|
||||
IDList=
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,295 @@
|
||||
/*--------------------------------------------------------------------
|
||||
Copyright(c) 2015 Intel Corporation. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* 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.
|
||||
* Neither the name of Intel Corporation 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 COPYRIGHT HOLDERS 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 COPYRIGHT
|
||||
OWNER 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.
|
||||
--------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __GPIO_I2C_H__
|
||||
#define __GPIO_I2C_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Any required includes
|
||||
//---------------------------------------------------------------------
|
||||
#include "galileo_gen_defs.h"
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// PCI Configuration Map Register Offsets
|
||||
//---------------------------------------------------------------------
|
||||
#define PCI_REG_VID 0x00 // Vendor ID Register
|
||||
#define PCI_REG_DID 0x02 // Device ID Register
|
||||
#define PCI_REG_PCICMD 0x04 // PCI Command Register
|
||||
#define PCI_REG_PCISTS 0x06 // PCI Status Register
|
||||
#define PCI_REG_RID 0x08 // PCI Revision ID Register
|
||||
#define PCI_REG_PI 0x09 // Programming Interface
|
||||
#define PCI_REG_SCC 0x0a // Sub Class Code Register
|
||||
#define PCI_REG_BCC 0x0b // Base Class Code Register
|
||||
#define PCI_REG_PMLT 0x0d // Primary Master Latency Timer
|
||||
#define PCI_REG_HDR 0x0e // Header Type Register
|
||||
#define PCI_REG_PBUS 0x18 // Primary Bus Number Register
|
||||
#define PCI_REG_SBUS 0x19 // Secondary Bus Number Register
|
||||
#define PCI_REG_SUBUS 0x1a // Subordinate Bus Number Register
|
||||
#define PCI_REG_SMLT 0x1b // Secondary Master Latency Timer
|
||||
#define PCI_REG_IOBASE 0x1c // I/O base Register
|
||||
#define PCI_REG_IOLIMIT 0x1d // I/O Limit Register
|
||||
#define PCI_REG_SECSTATUS 0x1e // Secondary Status Register
|
||||
#define PCI_REG_MEMBASE 0x20 // Memory Base Register
|
||||
#define PCI_REG_MEMLIMIT 0x22 // Memory Limit Register
|
||||
#define PCI_REG_PRE_MEMBASE 0x24 // Prefetchable memory Base register
|
||||
#define PCI_REG_PRE_MEMLIMIT 0x26 // Prefetchable memory Limit register
|
||||
#define PCI_REG_SVID0 0x2c // Subsystem Vendor ID low byte
|
||||
#define PCI_REG_SVID1 0x2d // Subsystem Vendor ID high byte
|
||||
#define PCI_REG_SID0 0x2e // Subsystem ID low byte
|
||||
#define PCI_REG_SID1 0x2f // Subsystem ID high byte
|
||||
#define PCI_REG_IOBASE_U 0x30 // I/O base Upper Register
|
||||
#define PCI_REG_IOLIMIT_U 0x32 // I/O Limit Upper Register
|
||||
#define PCI_REG_INTLINE 0x3c // Interrupt Line Register
|
||||
#define PCI_REG_BRIDGE_CNTL 0x3e // Bridge Control Register
|
||||
|
||||
#define IO_PCI_ADDRESS(bus, dev, fn, reg) \
|
||||
(0x80000000 | (bus << 16) | (dev << 11) | (fn << 8) | (reg & ~3))
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// PCI Read/Write IO Data
|
||||
//---------------------------------------------------------------------
|
||||
#define IO_PCI_ADDRESS_PORT 0xcf8
|
||||
#define IO_PCI_DATA_PORT 0xcfc
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// GPIO structures
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
struct __attribute__ ((__packed__)) BOARD_GPIO_CONTROLLER_CONFIG
|
||||
{
|
||||
uint32_t PortADR; ///< Value for IOH REG GPIO_SWPORTA_DR.
|
||||
uint32_t PortADir; ///< Value for IOH REG GPIO_SWPORTA_DDR.
|
||||
uint32_t IntEn; ///< Value for IOH REG GPIO_INTEN.
|
||||
uint32_t IntMask; ///< Value for IOH REG GPIO_INTMASK.
|
||||
uint32_t IntType; ///< Value for IOH REG GPIO_INTTYPE_LEVEL.
|
||||
uint32_t IntPolarity; ///< Value for IOH REG GPIO_INT_POLARITY.
|
||||
uint32_t Debounce; ///< Value for IOH REG GPIO_DEBOUNCE.
|
||||
uint32_t LsSync; ///< Value for IOH REG GPIO_LS_SYNC.
|
||||
};
|
||||
|
||||
struct __attribute__ ((__packed__)) BOARD_LEGACY_GPIO_CONFIG
|
||||
{
|
||||
uint32_t CoreWellEnable; ///< Value for QNC NC Reg R_QNC_GPIO_CGEN_CORE_WELL.
|
||||
uint32_t CoreWellIoSelect; ///< Value for QNC NC Reg R_QNC_GPIO_CGIO_CORE_WELL.
|
||||
uint32_t CoreWellLvlForInputOrOutput; ///< Value for QNC NC Reg R_QNC_GPIO_CGLVL_CORE_WELL.
|
||||
uint32_t CoreWellTriggerPositiveEdge; ///< Value for QNC NC Reg R_QNC_GPIO_CGTPE_CORE_WELL.
|
||||
uint32_t CoreWellTriggerNegativeEdge; ///< Value for QNC NC Reg R_QNC_GPIO_CGTNE_CORE_WELL.
|
||||
uint32_t CoreWellGPEEnable; ///< Value for QNC NC Reg R_QNC_GPIO_CGGPE_CORE_WELL.
|
||||
uint32_t CoreWellSMIEnable; ///< Value for QNC NC Reg R_QNC_GPIO_CGSMI_CORE_WELL.
|
||||
uint32_t CoreWellTriggerStatus; ///< Value for QNC NC Reg R_QNC_GPIO_CGTS_CORE_WELL.
|
||||
uint32_t CoreWellNMIEnable; ///< Value for QNC NC Reg R_QNC_GPIO_CGNMIEN_CORE_WELL.
|
||||
uint32_t ResumeWellEnable; ///< Value for QNC NC Reg R_QNC_GPIO_RGEN_RESUME_WELL.
|
||||
uint32_t ResumeWellIoSelect; ///< Value for QNC NC Reg R_QNC_GPIO_RGIO_RESUME_WELL.
|
||||
uint32_t ResumeWellLvlForInputOrOutput;///< Value for QNC NC Reg R_QNC_GPIO_RGLVL_RESUME_WELL.
|
||||
uint32_t ResumeWellTriggerPositiveEdge;///< Value for QNC NC Reg R_QNC_GPIO_RGTPE_RESUME_WELL.
|
||||
uint32_t ResumeWellTriggerNegativeEdge;///< Value for QNC NC Reg R_QNC_GPIO_RGTNE_RESUME_WELL.
|
||||
uint32_t ResumeWellGPEEnable; ///< Value for QNC NC Reg R_QNC_GPIO_RGGPE_RESUME_WELL.
|
||||
uint32_t ResumeWellSMIEnable; ///< Value for QNC NC Reg R_QNC_GPIO_RGSMI_RESUME_WELL.
|
||||
uint32_t ResumeWellTriggerStatus; ///< Value for QNC NC Reg R_QNC_GPIO_RGTS_RESUME_WELL.
|
||||
uint32_t ResumeWellNMIEnable; ///< Value for QNC NC Reg R_QNC_GPIO_RGNMIEN_RESUME_WELL.
|
||||
} ;
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// GPIO definitions
|
||||
//---------------------------------------------------------------------
|
||||
#define GALILEO_GEN2_GPIO_CONTROLLER_INITIALIZER {0x05, 0x05, 0, 0, 0, 0, 0, 0}
|
||||
#define GALILEO_GEN2_LEGACY_GPIO_INITIALIZER {0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x03, 0x00, 0x3f, 0x1c, 0x02, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x3f, 0x00}
|
||||
|
||||
#define PLATFORM_GPIO_CONTROLLER_CONFIG_DEFINITION \
|
||||
/* EFI_PLATFORM_TYPE - Galileo Gen 2 */ \
|
||||
GALILEO_GEN2_GPIO_CONTROLLER_INITIALIZER ,\
|
||||
|
||||
#define PLATFORM_LEGACY_GPIO_CONFIG_DEFINITION \
|
||||
/* EFI_PLATFORM_TYPE - Galileo Gen 2 */ \
|
||||
GALILEO_GEN2_LEGACY_GPIO_INITIALIZER , \
|
||||
|
||||
#define IOH_I2C_GPIO_BUS_NUMBER 0x00
|
||||
#define IOH_I2C_GPIO_DEVICE_NUMBER 0x15
|
||||
#define IOH_I2C_GPIO_FUNCTION_NUMBER 0x02
|
||||
|
||||
#define INTEL_VENDOR_ID 0x8086
|
||||
#define V_IOH_I2C_GPIO_VENDOR_ID INTEL_VENDOR_ID
|
||||
#define V_IOH_I2C_GPIO_DEVICE_ID 0x0934
|
||||
|
||||
#define R_IOH_I2C_MEMBAR 0x10
|
||||
#define R_IOH_GPIO_MEMBAR 0x14
|
||||
|
||||
#define GPIO_SWPORTA_DR 0x00
|
||||
#define GPIO_SWPORTA_DDR 0x04
|
||||
#define GPIO_SWPORTB_DR 0x0C
|
||||
#define GPIO_SWPORTB_DDR 0x10
|
||||
#define GPIO_SWPORTC_DR 0x18
|
||||
#define GPIO_SWPORTC_DDR 0x1C
|
||||
#define GPIO_SWPORTD_DR 0x24
|
||||
#define GPIO_SWPORTD_DDR 0x28
|
||||
#define GPIO_INTEN 0x30
|
||||
#define GPIO_INTMASK 0x34
|
||||
#define GPIO_INTTYPE_LEVEL 0x38
|
||||
#define GPIO_INT_POLARITY 0x3C
|
||||
#define GPIO_INTSTATUS 0x40
|
||||
#define GPIO_RAW_INTSTATUS 0x44
|
||||
#define GPIO_DEBOUNCE 0x48
|
||||
#define GPIO_PORTA_EOI 0x4C
|
||||
#define GPIO_EXT_PORTA 0x50
|
||||
#define GPIO_EXT_PORTB 0x54
|
||||
#define GPIO_EXT_PORTC 0x58
|
||||
#define GPIO_EXT_PORTD 0x5C
|
||||
#define GPIO_LS_SYNC 0x60
|
||||
#define GPIO_CONFIG_REG2 0x70
|
||||
#define GPIO_CONFIG_REG1 0x74
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// GPIO defines for cypress chip
|
||||
//---------------------------------------------------------------------
|
||||
#define PCAL9555_REG_OUT_PORT0 0x02
|
||||
#define PCAL9555_REG_OUT_PORT1 0x03
|
||||
#define PCAL9555_REG_CFG_PORT0 0x06
|
||||
#define PCAL9555_REG_CFG_PORT1 0x07
|
||||
#define PCAL9555_REG_PULL_EN_PORT0 0x46
|
||||
#define PCAL9555_REG_PULL_EN_PORT1 0x47
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Three IO Expanders at fixed addresses on Galileo Gen2.
|
||||
//---------------------------------------------------------------------
|
||||
#define GALILEO_GEN2_IOEXP0_7BIT_SLAVE_ADDR 0x25
|
||||
#define GALILEO_GEN2_IOEXP1_7BIT_SLAVE_ADDR 0x26
|
||||
#define GALILEO_GEN2_IOEXP2_7BIT_SLAVE_ADDR 0x27
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Legacy GPIO defines
|
||||
//---------------------------------------------------------------------
|
||||
#define LEGACY_GPIO_BUS_NUMBER 0
|
||||
#define LEGACY_GPIO_DEVICE_NUMBER 31
|
||||
#define LEGACY_GPIO_FUNCTION_NUMBER 0
|
||||
|
||||
#define R_QNC_LPC_GBA_BASE 0x44
|
||||
#define B_QNC_LPC_GPA_BASE_MASK 0x0000FFC0
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// I2C structures and enums
|
||||
//---------------------------------------------------------------------
|
||||
typedef struct
|
||||
{
|
||||
/// The I2C hardware address to which the I2C device is preassigned or allocated.
|
||||
uintn_t I2CDeviceAddress : 10;
|
||||
} I2C_DEVICE_ADDRESS;
|
||||
|
||||
typedef enum _I2C_ADDR_MODE
|
||||
{
|
||||
EfiI2CSevenBitAddrMode,
|
||||
EfiI2CTenBitAddrMode,
|
||||
} I2C_ADDR_MODE;
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// I2C definitions
|
||||
//---------------------------------------------------------------------
|
||||
#define GALILEO_GEN2_FLASH_UPDATE_LED_RESUMEWELL_GPIO 5
|
||||
#define R_QNC_GPIO_CGEN_CORE_WELL 0x00
|
||||
#define R_QNC_GPIO_CGIO_CORE_WELL 0x04
|
||||
#define R_QNC_GPIO_CGLVL_CORE_WELL 0x08
|
||||
#define R_QNC_GPIO_CGTPE_CORE_WELL 0x0C // Core well GPIO Trigger Positive Edge Enable
|
||||
#define R_QNC_GPIO_CGTNE_CORE_WELL 0x10 // Core well GPIO Trigger Negative Edge Enable
|
||||
#define R_QNC_GPIO_CGGPE_CORE_WELL 0x14 // Core well GPIO GPE Enable
|
||||
#define R_QNC_GPIO_CGSMI_CORE_WELL 0x18 // Core well GPIO SMI Enable
|
||||
#define R_QNC_GPIO_CGTS_CORE_WELL 0x1C // Core well GPIO Trigger Status
|
||||
#define R_QNC_GPIO_RGEN_RESUME_WELL 0x20
|
||||
#define R_QNC_GPIO_RGIO_RESUME_WELL 0x24
|
||||
#define R_QNC_GPIO_RGLVL_RESUME_WELL 0x28
|
||||
#define R_QNC_GPIO_RGTPE_RESUME_WELL 0x2C // Resume well GPIO Trigger Positive Edge Enable
|
||||
#define R_QNC_GPIO_RGTNE_RESUME_WELL 0x30 // Resume well GPIO Trigger Negative Edge Enable
|
||||
#define R_QNC_GPIO_RGGPE_RESUME_WELL 0x34 // Resume well GPIO GPE Enable
|
||||
#define R_QNC_GPIO_RGSMI_RESUME_WELL 0x38 // Resume well GPIO SMI Enable
|
||||
#define R_QNC_GPIO_RGTS_RESUME_WELL 0x3C // Resume well GPIO Trigger Status
|
||||
#define R_QNC_GPIO_CNMIEN_CORE_WELL 0x40 // Core well GPIO NMI Enable
|
||||
#define R_QNC_GPIO_RNMIEN_RESUME_WELL 0x44 // Resume well GPIO NMI Enable
|
||||
|
||||
#define B_IOH_I2C_GPIO_MEMBAR_ADDR_MASK 0xFFFFF000 // [31:12].
|
||||
#define I2C_REG_CLR_START_DET 0x64 // Clear START DET Interrupt Register
|
||||
#define I2C_REG_CLR_STOP_DET 0x60 // Clear STOP DET Interrupt Register
|
||||
#define B_I2C_REG_CLR_START_DET (BIT0) // Clear START DET Interrupt Register
|
||||
#define B_I2C_REG_CLR_STOP_DET (BIT0) // Clear STOP DET Interrupt Register
|
||||
#define B_I2C_REG_CON_10BITADD_MASTER (BIT4) // 7-bit addressing (0) or 10-bit addressing (1)
|
||||
#define B_I2C_REG_CON_SPEED (BIT2+BIT1) // standard mode (01) or fast mode (10)
|
||||
#define I2C_REG_CON 0x00 // Control Register
|
||||
#define I2C_REG_ENABLE 0x6C // Enable Register
|
||||
#define B_I2C_REG_ENABLE (BIT0) // Enable (1) or disable (0) I2C Controller
|
||||
#define I2C_REG_ENABLE_STATUS 0x9C // Enable Status Register
|
||||
#define I2C_REG_CLR_INT 0x40 // Clear Combined and Individual Interrupt Register
|
||||
#define MAX_T_POLL_COUNT 100
|
||||
#define TI2C_POLL 25 // microseconds
|
||||
#define I2C_REG_CLR_RX_OVER 0x48 // Clear RX Over Interrupt Register
|
||||
#define I2C_REG_CLR_TX_OVER 0x4C // Clear TX Over Interrupt Register
|
||||
#define I2C_REG_CLR_TX_ABRT 0x54 // Clear TX ABRT Interrupt Register
|
||||
#define I2C_FIFO_SIZE 16
|
||||
#define I2C_REG_TAR 0x04 // Master Target Address Register
|
||||
#define B_I2C_REG_TAR (BIT9+BIT8+BIT7+BIT6+BIT5+BIT4+BIT3+BIT2+BIT1+BIT0) // Master Target Address bits
|
||||
#define I2C_REG_DATA_CMD 0x10 // Data Buffer and Command Register
|
||||
#define B_I2C_REG_DATA_CMD_RW (BIT8) // Data Buffer and Command Register Read/Write bit
|
||||
#define I2C_REG_RXFLR 0x78 // Receive FIFO Level Register
|
||||
#define B_I2C_REG_DATA_CMD_STOP (BIT9) // Data Buffer and Command Register STOP bit
|
||||
#define I2C_REG_RAW_INTR_STAT 0x34 // Raw Interrupt Status Register
|
||||
#define I2C_REG_RAW_INTR_STAT_RX_OVER (BIT1) // Raw Interrupt Status Register RX Overflow signal status.
|
||||
#define I2C_REG_RAW_INTR_STAT_RX_UNDER (BIT0) // Raw Interrupt Status Register RX Underflow signal status.
|
||||
#define I2C_REG_CLR_RX_UNDER 0x44 // Clear RX Under Interrupt Register
|
||||
#define MAX_STOP_DET_POLL_COUNT ((1000 * 1000) / TI2C_POLL) // Extreme for expected Stop detect.
|
||||
#define I2C_REG_RAW_INTR_STAT_TX_ABRT (BIT6) // Raw Interrupt Status Register TX Abort status.
|
||||
#define I2C_REG_RAW_INTR_STAT_TX_OVER (BIT3) // Raw Interrupt Status Register TX Overflow signal status.
|
||||
#define I2C_REG_RAW_INTR_STAT_STOP_DET (BIT9) // Raw Interrupt Status Register STOP_DET signal status.
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// GPIO Prototypes
|
||||
//---------------------------------------------------------------------
|
||||
#define GPIO_OUTPUT (0)
|
||||
#define GPIO_INPUT (1)
|
||||
#define LOW (0)
|
||||
#define HIGH (1)
|
||||
#define GPIO_NUMBER (7UL)
|
||||
|
||||
void vMicroSecondDelay(uint32_t DelayTime);
|
||||
void vMilliSecondDelay(uint32_t DelayTime);
|
||||
void vGalileoInitializeLegacyGPIO(void);
|
||||
void vGalileoInitializeGpioController(void);
|
||||
void vGalileoLegacyGPIOInitializationForLED(void);
|
||||
void vGalileoSetGPIOBitDirection(uint32_t GPIONumber, uint32_t Direction);
|
||||
void vGalileoSetGPIOBitLevel(uint32_t GPIONumber, uint32_t Level);
|
||||
void vGalileoBlinkLEDUsingLegacyGPIO(uint32_t Level);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern C */
|
||||
#endif
|
||||
|
||||
#endif /* __GPIO_I2C_H__ */
|
||||
|
967
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/Support_Files/HPET.c
Normal file
967
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/Support_Files/HPET.c
Normal file
File diff suppressed because it is too large
Load Diff
174
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/Support_Files/HPET.h
Normal file
174
FreeRTOS/Demo/IA32_flat_GCC_Galileo_Gen_2/Support_Files/HPET.h
Normal file
@ -0,0 +1,174 @@
|
||||
/*--------------------------------------------------------------------
|
||||
Copyright(c) 2015 Intel Corporation. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* 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.
|
||||
* Neither the name of Intel Corporation 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 COPYRIGHT HOLDERS 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 COPYRIGHT
|
||||
OWNER 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.
|
||||
--------------------------------------------------------------------*/
|
||||
|
||||
#ifndef HPET_H
|
||||
#define HPET_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// HPET support definitions
|
||||
//---------------------------------------------------------------------
|
||||
#define hpetUSE_HPET_TIMER_NUMBER_0 ( 1 ) // 0 = false, 1 = true
|
||||
#define hpetUSE_HPET_TIMER_NUMBER_1 ( 1 ) // 0 = false, 1 = true
|
||||
#define hpetUSE_HPET_TIMER_NUMBER_2 ( 1 ) // 0 = false, 1 = true
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// HPE timers general purpose register addresses
|
||||
//---------------------------------------------------------------------
|
||||
#define hpetHPET_GENERAL_ID ( *( ( volatile uint32_t * ) 0xFED00000UL ) )
|
||||
#define hpetHPET_COUNTER_TICK_PERIOD ( *( ( volatile uint32_t * ) 0xFED00004UL ) )
|
||||
#define hpetHPET_GENERAL_CONFIGURATION ( *( ( volatile uint32_t * ) 0xFED00010UL ) )
|
||||
#define hpetHPET_GENERAL_STATUS ( *( ( volatile uint32_t * ) 0xFED00020UL ) )
|
||||
#define hpetHPET_MAIN_CTR_LOW ( *( ( volatile uint32_t * ) 0xFED000F0UL ) )
|
||||
#define hpetHPET_MAIN_CTR_HIGH ( *( ( volatile uint32_t * ) 0xFED000F4UL ) )
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// HPE timer specific support definitions
|
||||
//---------------------------------------------------------------------
|
||||
#if (hpetUSE_HPET_TIMER_NUMBER_0 == 1)
|
||||
#define TIMER0_TRIGGERING ( 0 ) // 1 = level, 0 = edge
|
||||
#define TIMER0_POLARITY ( 0 ) // 0 = active high, 1 = active low
|
||||
#define TIMER0_IRQ ( 2 ) // 0 is default for legacy 8259, 2 for IO APIC
|
||||
#define hpetHPET_TIMER0_ISR_VECTOR ( 0x32 ) // HPET Timer - I/O APIC
|
||||
#define hpetHPET_TIMER0_INTERRUPT_RATE ( 2000 ) // Number of times per second to interrupt
|
||||
#define hpetHPET_TMR0_CONFIG_LOW ( *( ( volatile uint32_t * ) 0xFED00100UL ) )
|
||||
#define hpetHPET_TMR0_CONFIG_HIGH ( *( ( volatile uint32_t * ) 0xFED00104UL ) )
|
||||
#define hpetHPET_TMR0_COMPARATOR_LOW ( *( ( volatile uint32_t * ) 0xFED00108UL ) )
|
||||
#define hpetHPET_TMR0_COMPARATOR_HIGH ( *( ( volatile uint32_t * ) 0xFED0010CUL ) )
|
||||
#endif
|
||||
#if (hpetUSE_HPET_TIMER_NUMBER_1 == 1)
|
||||
#define TIMER1_TRIGGERING ( 0 ) // 1 = level, 0 = edge
|
||||
#define TIMER1_POLARITY ( 0 ) // 0 = active high, 1 = active low
|
||||
#define TIMER1_IRQ ( 8 ) // 8 is default for 8259 & IO APIC
|
||||
#define hpetHPET_TIMER1_ISR_VECTOR ( 0x85 ) // HPET Timer - I/O APIC
|
||||
#define hpetHPET_TIMER1_INTERRUPT_RATE ( 1500 ) // Number of times per second to interrupt
|
||||
#define hpetHPET_TMR1_CONFIG_LOW ( *( ( volatile uint32_t * ) 0xFED00120UL ) )
|
||||
#define hpetHPET_TMR1_CONFIG_HIGH ( *( ( volatile uint32_t * ) 0xFED00124UL ) )
|
||||
#define hpetHPET_TMR1_COMPARATOR_LOW ( *( ( volatile uint32_t * ) 0xFED00128UL ) )
|
||||
#define hpetHPET_TMR1_COMPARATOR_HIGH ( *( ( volatile uint32_t * ) 0xFED0012CUL ) )
|
||||
#endif
|
||||
#if (hpetUSE_HPET_TIMER_NUMBER_2 == 1)
|
||||
#define TIMER2_TRIGGERING ( 0 ) // 1 = level, 0 = edge
|
||||
#define TIMER2_POLARITY ( 0 ) // 0 = active high, 1 = active low
|
||||
#define TIMER2_IRQ ( 11 ) // 11 is default for 8259 & IO APIC
|
||||
#define hpetHPET_TIMER2_ISR_VECTOR ( 0x95 ) // HPET Timer - I/O APIC
|
||||
#define hpetHPET_TIMER2_INTERRUPT_RATE ( 1400 ) // Number of times per second to interrupt
|
||||
#define hpetHPET_TMR2_CONFIG_LOW ( *( ( volatile uint32_t * ) 0xFED00140UL ) )
|
||||
#define hpetHPET_TMR2_CONFIG_HIGH ( *( ( volatile uint32_t * ) 0xFED00144UL ) )
|
||||
#define hpetHPET_TMR2_COMPARATOR_LOW ( *( ( volatile uint32_t * ) 0xFED00148UL ) )
|
||||
#define hpetHPET_TMR2_COMPARATOR_HIGH ( *( ( volatile uint32_t * ) 0xFED0014CUL ) )
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Disables code if no timer is enabled (quiets the compiler)
|
||||
//---------------------------------------------------------------------
|
||||
#define hpetHPET_TIMER_IN_USE (hpetUSE_HPET_TIMER_NUMBER_0 | hpetUSE_HPET_TIMER_NUMBER_1 | hpetUSE_HPET_TIMER_NUMBER_2)
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Allow HPET variable printout on screen (1 = allow)
|
||||
//---------------------------------------------------------------------
|
||||
#define hpetHPET_PRINT_INFO 0
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// HPET bit checking and manipulation definitions
|
||||
//---------------------------------------------------------------------
|
||||
#define hpetHPET_CFG_ENABLE 0x001
|
||||
#define hpetHPET_CFG_LEGACY 0x002
|
||||
#define hpetHPET_TN_ENABLE 0x004
|
||||
#define hpetHPET_TN_PERIODIC 0x008
|
||||
#define hpetHPET_TN_PERIODIC_CAP 0x010
|
||||
#define hpetHPET_TN_SETVAL 0x040
|
||||
#define hpetHPET_TN_32BIT 0x100
|
||||
#define hpetHPET_INT_EDGE 0x000
|
||||
#define hpetHPET_INT_LEVEL 0x001
|
||||
#define hpetHPET_POL_HIGH 0x000
|
||||
#define hpetHPET_POL_LOW 0x001
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// I/O APIC register addresses and definitions
|
||||
//---------------------------------------------------------------------
|
||||
#define hpetIO_APIC_IDX ( *( ( volatile uint32_t * ) 0xFEC00000UL ) )
|
||||
#define hpetIO_APIC_WDW ( *( ( volatile uint32_t * ) 0xFEC00010UL ) )
|
||||
#define hpetIO_APIC_EOI ( *( ( volatile uint32_t * ) 0xFEC00040UL ) )
|
||||
|
||||
#define hpetIO_APIC_ID 0x00 // Get/Set APIC ID information
|
||||
#define hpetIO_APIC_VERSION 0x01 // Get APIC version information
|
||||
#define hpetIO_APIC_RTE_OFFSET 0x10 // add 2* RTE Table (0-23) to this offset
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Used for timer calibration
|
||||
//---------------------------------------------------------------------
|
||||
#define hpetLVTIMER ( 0 ) // Constant definition
|
||||
#define hpetHPETIMER ( 1 ) // Constant definition
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// HPET variables Structure
|
||||
//---------------------------------------------------------------------
|
||||
struct __attribute__ ((__packed__)) hpet_info
|
||||
{
|
||||
unsigned int timer_number;
|
||||
unsigned int main_counter_h;
|
||||
unsigned int main_counter_l;
|
||||
unsigned int comparator_h;
|
||||
unsigned int comparator_l;
|
||||
unsigned int total_interrupts;
|
||||
unsigned int elapsed_seconds;
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Variables other modules may want to access
|
||||
//---------------------------------------------------------------------
|
||||
extern volatile uint32_t hpet_general_status;
|
||||
extern volatile uint32_t ulHPETTimerNumber [3];
|
||||
extern volatile uint32_t ulHPETTotalInterrupts [3];
|
||||
extern volatile uint32_t ulHPETElapsedSeconds [3];
|
||||
extern volatile uint32_t ulHPETInterruptFrequency [3];
|
||||
extern volatile uint32_t ulHPETTicksToInterrupt [3];
|
||||
extern struct hpet_info PrintInfo[3];
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Function prototypes
|
||||
//---------------------------------------------------------------------
|
||||
#if (hpetHPET_TIMER_IN_USE)
|
||||
void vClearHPETElapsedSeconds( void );
|
||||
uint32_t uiCalibrateTimer(uint32_t TimerNumber, uint32_t TimerType );
|
||||
void vInitializeAllHPETInterrupts( void );
|
||||
void vCreateHPETInfoUpdateTask( void );
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern C */
|
||||
#endif
|
||||
|
||||
#endif /* HPET_H */
|
||||
|
@ -0,0 +1,165 @@
|
||||
/*
|
||||
FreeRTOS V8.2.1 - Copyright (C) 2015 Real Time Engineers Ltd.
|
||||
All rights reserved
|
||||
|
||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||
|
||||
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 modification 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. !<<
|
||||
***************************************************************************
|
||||
|
||||
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. Full license text is available on the following
|
||||
link: http://www.freertos.org/a00114.html
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* FreeRTOS provides completely free yet professionally developed, *
|
||||
* robust, strictly quality controlled, supported, and cross *
|
||||
* platform software that is more than just the market leader, it *
|
||||
* is the industry's de facto standard. *
|
||||
* *
|
||||
* Help yourself get started quickly while simultaneously helping *
|
||||
* to support the FreeRTOS project by purchasing a FreeRTOS *
|
||||
* tutorial book, reference manual, or both: *
|
||||
* http://www.FreeRTOS.org/Documentation *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
|
||||
the FAQ page "My application does not run, what could be wrong?". Have you
|
||||
defined configASSERT()?
|
||||
|
||||
http://www.FreeRTOS.org/support - In return for receiving this top quality
|
||||
embedded software for free we request you assist our global community by
|
||||
participating in the support forum.
|
||||
|
||||
http://www.FreeRTOS.org/training - Investing in training allows your team to
|
||||
be as productive as possible as early as possible. Now you can receive
|
||||
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
|
||||
Ltd, and the world's leading authority on the world's leading RTOS.
|
||||
|
||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||
|
||||
http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
|
||||
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
|
||||
|
||||
http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
|
||||
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||
licenses offer ticketed support, indemnification and commercial middleware.
|
||||
|
||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||
engineered and independently SIL3 certified version for use in safety and
|
||||
mission critical applications that require provable dependability.
|
||||
|
||||
1 tab == 4 spaces!
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* The library functions not provided by libgcc for freestanding environments.
|
||||
* The implementation of the functions in this file have made NO attempt
|
||||
* whatsoever to be optimised!
|
||||
*/
|
||||
|
||||
#warning The functions in this file are very basic, and not optimised.
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void *memcpy( void *pvDest, const void *pvSource, size_t xBytes )
|
||||
{
|
||||
/* The compiler used during development seems to err unless these volatiles are
|
||||
included at -O3 optimisation. */
|
||||
volatile unsigned char *pcDest = ( volatile unsigned char * ) pvDest, *pcSource = ( volatile unsigned char * ) pvSource;
|
||||
size_t x;
|
||||
|
||||
/* Extremely crude standard library implementations in lieu of having a C
|
||||
library. */
|
||||
if( pvDest != pvSource )
|
||||
{
|
||||
for( x = 0; x < xBytes; x++ )
|
||||
{
|
||||
pcDest[ x ] = pcSource[ x ];
|
||||
}
|
||||
}
|
||||
|
||||
return pvDest;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void *memset( void *pvDest, int iValue, size_t xBytes )
|
||||
{
|
||||
/* The compiler used during development seems to err unless these volatiles are
|
||||
included at -O3 optimisation. */
|
||||
volatile unsigned char * volatile pcDest = ( volatile unsigned char * volatile ) pvDest;
|
||||
volatile size_t x;
|
||||
|
||||
/* Extremely crude standard library implementations in lieu of having a C
|
||||
library. */
|
||||
for( x = 0; x < xBytes; x++ )
|
||||
{
|
||||
pcDest[ x ] = ( unsigned char ) iValue;
|
||||
}
|
||||
|
||||
return pvDest;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
int memcmp( const void *pvMem1, const void *pvMem2, unsigned long ulBytes )
|
||||
{
|
||||
const volatile unsigned char *pucMem1 = pvMem1, *pucMem2 = pvMem2;
|
||||
register unsigned long x;
|
||||
|
||||
/* Extremely crude standard library implementations in lieu of having a C
|
||||
library. */
|
||||
for( x = 0; x < ulBytes; x++ )
|
||||
{
|
||||
if( pucMem1[ x ] != pucMem2[ x ] )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ulBytes - x;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
int strcmp( const char *pcString1, const char *pcString2 )
|
||||
{
|
||||
volatile int iReturn, iIndex = 0;
|
||||
|
||||
/* Extremely crude standard library implementations in lieu of having a C
|
||||
library. */
|
||||
|
||||
while( ( pcString1[ iIndex ] != 0x00 ) && ( pcString2[ iIndex ] != 0x00 ) )
|
||||
{
|
||||
iIndex++;
|
||||
}
|
||||
|
||||
if( ( pcString1[ iIndex ] == 0x00 ) && ( pcString2[ iIndex ] == 0x00 ) )
|
||||
{
|
||||
iReturn = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
iReturn = ~0;
|
||||
}
|
||||
|
||||
return iReturn;
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,216 @@
|
||||
/*--------------------------------------------------------------------
|
||||
Copyright(c) 2015 Intel Corporation. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* 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.
|
||||
* Neither the name of Intel Corporation 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 COPYRIGHT HOLDERS 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 COPYRIGHT
|
||||
OWNER 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.
|
||||
--------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __GALILEO_GEN_DEFS_H__
|
||||
#define __GALILEO_GEN_DEFS_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Any required includes
|
||||
*------------------------------------------------------------------------
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include "stdint.h"
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Printf prototype
|
||||
//---------------------------------------------------------------------
|
||||
extern int printf( const char *format, ... );
|
||||
extern int print( char **out, const char *format, va_list args );
|
||||
extern int sprintf(char *out, const char *format, ...);
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Prototypes (assembly language functions in startup.S)
|
||||
//---------------------------------------------------------------------
|
||||
extern void halt( void );
|
||||
extern int32_t inb( int32_t );
|
||||
extern int32_t inw( int32_t );
|
||||
extern int32_t inl( int32_t );
|
||||
extern int32_t outb( int32_t, int32_t );
|
||||
extern int32_t outw( int32_t, int32_t );
|
||||
extern int32_t outl( int32_t, int32_t) ;
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// GP definitions
|
||||
//---------------------------------------------------------------------
|
||||
#ifndef TRUE
|
||||
#define TRUE ( 1 )
|
||||
#endif
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE ( 0 )
|
||||
#endif
|
||||
|
||||
#ifndef true
|
||||
#define true TRUE
|
||||
#endif
|
||||
|
||||
#ifndef false
|
||||
#define false FALSE
|
||||
#endif
|
||||
|
||||
#ifndef OK
|
||||
#define OK TRUE
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// General bit pattern definitions
|
||||
//---------------------------------------------------------------------
|
||||
#define BIT0 0x00000001U
|
||||
#define BIT1 0x00000002U
|
||||
#define BIT2 0x00000004U
|
||||
#define BIT3 0x00000008U
|
||||
#define BIT4 0x00000010U
|
||||
#define BIT5 0x00000020U
|
||||
#define BIT6 0x00000040U
|
||||
#define BIT7 0x00000080U
|
||||
#define BIT8 0x00000100U
|
||||
#define BIT9 0x00000200U
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// MMIO support definitions
|
||||
//---------------------------------------------------------------------
|
||||
#define EC_BASE 0xE0000000 /* Base of MMConfig space */
|
||||
#define MMCONFIG_BASE EC_BASE
|
||||
#define MMIO_PCI_ADDRESS(bus,dev,fn,reg) ( \
|
||||
(EC_BASE) + \
|
||||
((bus) << 20) + \
|
||||
((dev) << 15) + \
|
||||
((fn) << 12) + \
|
||||
(reg))
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// MMIO read/write/set/clear/modify macros
|
||||
//---------------------------------------------------------------------
|
||||
#define mem_read(base, offset, size) ({ \
|
||||
volatile uint32_t a = (base) + (offset); \
|
||||
volatile uint64_t v; \
|
||||
switch (size) { \
|
||||
case 1: \
|
||||
v = (uint8_t)(*((uint8_t *)a)); \
|
||||
break; \
|
||||
case 2: \
|
||||
v = (uint16_t)(*((uint16_t *)a)); \
|
||||
break; \
|
||||
case 4: \
|
||||
v = (uint32_t)(*((uint32_t *)a)); \
|
||||
break; \
|
||||
case 8: \
|
||||
v = (uint64_t)(*((uint64_t *)a)); \
|
||||
break; \
|
||||
default: \
|
||||
halt(); \
|
||||
} \
|
||||
v; \
|
||||
})
|
||||
|
||||
// No cache bypass necessary -- MTRRs should handle this
|
||||
#define mem_write(base, offset, size, value) { \
|
||||
volatile uint32_t a = (base) + (offset); \
|
||||
switch (size) { \
|
||||
case 1: \
|
||||
*((uint8_t *)a) = (uint8_t)(value); \
|
||||
break; \
|
||||
case 2: \
|
||||
*((uint16_t *)a) = (uint16_t)(value); \
|
||||
break; \
|
||||
case 4: \
|
||||
*((uint32_t *)a) = (uint32_t)(value); \
|
||||
break; \
|
||||
case 8: \
|
||||
*((uint64_t *)a) = (uint64_t)(value); \
|
||||
break; \
|
||||
default: \
|
||||
halt(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define mem_set(base, offset, size, smask) { \
|
||||
volatile uint32_t a = (base) + (offset); \
|
||||
switch (size) { \
|
||||
case 1: \
|
||||
*((uint8_t *)a) = (uint8_t)((*((uint8_t *)a)) | (smask)); \
|
||||
break; \
|
||||
case 2: \
|
||||
*((uint16_t *)a) = (uint16_t)((*((uint16_t *)a)) | (smask)); \
|
||||
break; \
|
||||
case 4: \
|
||||
*((uint32_t *)a) = (uint32_t)((*((uint32_t *)a)) | (smask)); \
|
||||
break; \
|
||||
case 8: \
|
||||
*((uint64_t *)a) = (uint64_t)((*((uint64_t *)a)) | (smask)); \
|
||||
break; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define mem_clear(base, offset, size, cmask) { \
|
||||
volatile uint32_t a = (base) + (offset); \
|
||||
switch (size) { \
|
||||
case 1: \
|
||||
*((uint8_t *)a) = (uint8_t)((*((uint8_t *)a) & ~(cmask))); \
|
||||
break; \
|
||||
case 2: \
|
||||
*((uint16_t *)a) = (uint16_t)((*((uint16_t *)a) & ~(cmask))); \
|
||||
break; \
|
||||
case 4: \
|
||||
*((uint32_t *)a) = (uint32_t)((*((uint32_t *)a) & ~(cmask))); \
|
||||
break; \
|
||||
case 8: \
|
||||
*((uint64_t *)a) = (uint64_t)((*((uint64_t *)a) & ~(cmask))); \
|
||||
break; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define mem_modify(base, offset, size, cmask, smask) { \
|
||||
volatile uint32_t a = (base) + (offset); \
|
||||
switch (size) { \
|
||||
case 1: \
|
||||
*((uint8_t *)a) = (uint8_t)((*((uint8_t *)a) & ~(cmask)) | (smask)); \
|
||||
break; \
|
||||
case 2: \
|
||||
*((uint16_t *)a) = (uint16_t)((*((uint16_t *)a) & ~(cmask)) | (smask)); \
|
||||
break; \
|
||||
case 4: \
|
||||
*((uint32_t *)a) = (uint32_t)((*((uint32_t *)a) & ~(cmask)) | (smask)); \
|
||||
break; \
|
||||
case 8: \
|
||||
*((uint64_t *)a) = (uint64_t)((*((uint64_t *)a) & ~(cmask)) | (smask)); \
|
||||
break; \
|
||||
} \
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern C */
|
||||
#endif
|
||||
|
||||
#endif /* GALILEO_GEN_DEFS */
|
||||
|
@ -0,0 +1,174 @@
|
||||
/*--------------------------------------------------------------------
|
||||
Copyright(c) 2015 Intel Corporation. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* 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.
|
||||
* Neither the name of Intel Corporation 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 COPYRIGHT HOLDERS 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 COPYRIGHT
|
||||
OWNER 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.
|
||||
--------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __GALILEO_SUPPORT_H__
|
||||
#define __GALILEO_SUPPORT_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Any required includes
|
||||
//---------------------------------------------------------------------
|
||||
#include "FreeRTOS.h"
|
||||
#include "semphr.h"
|
||||
#include "galileo_gen_defs.h"
|
||||
#include "GPIO_I2C.h"
|
||||
#include "HPET.h"
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Application main entry point
|
||||
//---------------------------------------------------------------------
|
||||
extern int main( void );
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Defines for GDT
|
||||
//---------------------------------------------------------------------
|
||||
#define NGDE 8 /* Number of global descriptor entries */
|
||||
#define FLAGS_GRANULARITY 0x80
|
||||
#define FLAGS_SIZE 0x40
|
||||
#define FLAGS_SETTINGS ( FLAGS_GRANULARITY | FLAGS_SIZE )
|
||||
#define PAGE_SIZE 4096
|
||||
|
||||
struct __attribute__ ((__packed__)) sd
|
||||
{
|
||||
unsigned short sd_lolimit;
|
||||
unsigned short sd_lobase;
|
||||
unsigned char sd_midbase;
|
||||
unsigned char sd_access;
|
||||
unsigned char sd_hilim_fl;
|
||||
unsigned char sd_hibase;
|
||||
};
|
||||
|
||||
void setsegs();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Debug serial port display update definitions
|
||||
//---------------------------------------------------------------------
|
||||
#define ANSI_CLEAR_SB "\e[3J"
|
||||
#define ANSI_CLEAR_LINE "\x1b[2K"
|
||||
#define ANSI_CLEAR_SCREEN "\x1b[2J"
|
||||
#define ANSI_COLOR_RED "\x1b[31m"
|
||||
#define ANSI_COLOR_GREEN "\x1b[32m"
|
||||
#define ANSI_COLOR_YELLOW "\x1b[33m"
|
||||
#define ANSI_COLOR_BLUE "\x1b[34m"
|
||||
#define ANSI_COLOR_MAGENTA "\x1b[35m"
|
||||
#define ANSI_COLOR_CYAN "\x1b[36m"
|
||||
#define ANSI_COLOR_RESET "\x1b[0m"
|
||||
#define ANSI_COLOR_WHITE ANSI_COLOR_RESET
|
||||
|
||||
#define DEFAULT_SCREEN_COLOR ANSI_COLOR_YELLOW
|
||||
#define DEFAULT_BANNER_COLOR ANSI_COLOR_CYAN
|
||||
|
||||
#define ANSI_HIDE_CURSOR "\x1b[?25l"
|
||||
#define ANSI_SHOW_CURSOR "\x1b[?25h"
|
||||
|
||||
void ClearScreen(void);
|
||||
void MoveToScreenPosition(uint8_t row, uint8_t col);
|
||||
void UngatedMoveToScreenPosition(uint8_t row, uint8_t col);
|
||||
void SetScreenColor(const char *);
|
||||
void g_printf(const char *format, ...);
|
||||
void g_printf_rcc(uint8_t row, uint8_t col, const char *color, const char *format, ...);
|
||||
void vPrintBanner( void );
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// 8259 PIC (programmable interrupt controller) definitions
|
||||
//---------------------------------------------------------------------
|
||||
#define IMR1 (0x21) /* Interrupt Mask Register #1 */
|
||||
#define IMR2 (0xA1) /* Interrupt Mask Register #2 */
|
||||
#define ICU1 (0x20)
|
||||
#define ICU2 (0xA0)
|
||||
#define EOI (0x20)
|
||||
|
||||
void vInitialize8259Chips(void);
|
||||
void vClearIRQMask(uint8_t IRQNumber);
|
||||
void vSetIRQMask(uint8_t IRQNumber);
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// 82C54 PIT (programmable interval timer) definitions
|
||||
//---------------------------------------------------------------------
|
||||
#define GATE_CONTROL 0x61
|
||||
#define CHANNEL2_DATA 0x42
|
||||
#define MODE_REGISTER 0x43
|
||||
#define ONESHOT_MODE 0xB2
|
||||
#define CLKBASE 0x40
|
||||
#define CLKCNTL MODE_REGISTER
|
||||
|
||||
void vInitializePIT(void);
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// LED support for main_blinky()
|
||||
//---------------------------------------------------------------------
|
||||
#define LED_ON ( 1 )
|
||||
#define LED_OFF ( 0 )
|
||||
|
||||
uint32_t ulBlinkLED(void); /* Blink the LED and return the LED status. */
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Serial port support definitions
|
||||
//---------------------------------------------------------------------
|
||||
#define CLIENT_SERIAL_PORT 0
|
||||
#define DEBUG_SERIAL_PORT 1
|
||||
|
||||
#define R_UART_THR 0
|
||||
#define R_UART_IER 0x04
|
||||
#define R_UART_BAUD_THR R_UART_THR
|
||||
#define R_UART_BAUD_LOW R_UART_BAUD_THR
|
||||
#define R_UART_BAUD_HIGH R_UART_IER
|
||||
#define R_UART_FCR 0x08
|
||||
#define B_UARY_FCR_TRFIFIE BIT0
|
||||
#define B_UARY_FCR_RESETRF BIT1
|
||||
#define B_UARY_FCR_RESETTF BIT2
|
||||
#define R_UART_LCR 0x0C
|
||||
#define B_UARY_LCR_DLAB BIT7
|
||||
#define R_UART_MCR 0x10
|
||||
#define R_UART_LSR 0x14
|
||||
#define B_UART_LSR_RXRDY BIT0
|
||||
#define B_UART_LSR_OE BIT1
|
||||
#define B_UART_LSR_PE BIT2
|
||||
#define B_UART_LSR_FE BIT3
|
||||
#define B_UART_LSR_BI BIT4
|
||||
#define B_UART_LSR_TXRDY BIT5
|
||||
#define B_UART_LSR_TEMT BIT6
|
||||
#define R_UART_MSR 0x18
|
||||
#define R_UART_SCR 0x1C
|
||||
|
||||
void vInitializeGalileoSerialPort(uint32_t portnumber);
|
||||
void vGalileoPrintc(char c);
|
||||
uint8_t ucGalileoGetchar();
|
||||
void vGalileoPuts(const char *string);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern C */
|
||||
#endif
|
||||
|
||||
#endif /* __GALILEO_SUPPORT_H__ */
|
||||
|
@ -0,0 +1,75 @@
|
||||
/*
|
||||
FreeRTOS V8.2.1 - Copyright (C) 2015 Real Time Engineers Ltd.
|
||||
All rights reserved
|
||||
|
||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||
|
||||
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 modification 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. !<<
|
||||
***************************************************************************
|
||||
|
||||
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. Full license text is available on the following
|
||||
link: http://www.freertos.org/a00114.html
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* FreeRTOS provides completely free yet professionally developed, *
|
||||
* robust, strictly quality controlled, supported, and cross *
|
||||
* platform software that is more than just the market leader, it *
|
||||
* is the industry's de facto standard. *
|
||||
* *
|
||||
* Help yourself get started quickly while simultaneously helping *
|
||||
* to support the FreeRTOS project by purchasing a FreeRTOS *
|
||||
* tutorial book, reference manual, or both: *
|
||||
* http://www.FreeRTOS.org/Documentation *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
|
||||
the FAQ page "My application does not run, what could be wrong?". Have you
|
||||
defined configASSERT()?
|
||||
|
||||
http://www.FreeRTOS.org/support - In return for receiving this top quality
|
||||
embedded software for free we request you assist our global community by
|
||||
participating in the support forum.
|
||||
|
||||
http://www.FreeRTOS.org/training - Investing in training allows your team to
|
||||
be as productive as possible as early as possible. Now you can receive
|
||||
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
|
||||
Ltd, and the world's leading authority on the world's leading RTOS.
|
||||
|
||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||
|
||||
http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
|
||||
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
|
||||
|
||||
http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
|
||||
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||
licenses offer ticketed support, indemnification and commercial middleware.
|
||||
|
||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||
engineered and independently SIL3 certified version for use in safety and
|
||||
mission critical applications that require provable dependability.
|
||||
|
||||
1 tab == 4 spaces!
|
||||
*/
|
||||
|
||||
#ifndef MATH_H
|
||||
#define MATH_H
|
||||
|
||||
double fabs( double x );
|
||||
|
||||
#endif /* math_h */
|
@ -0,0 +1,89 @@
|
||||
/*
|
||||
* Multiboot OS definitions and structures.
|
||||
*/
|
||||
|
||||
#ifndef _MULTIBOOT_H_
|
||||
#define _MULTIBOOT_H_
|
||||
|
||||
#define MULTIBOOT_HEADER_MAGIC 0x1BADB002
|
||||
#define MULTIBOOT_HEADER_FLAGS 0x00010003
|
||||
#define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002
|
||||
|
||||
typedef unsigned long t_32 ;
|
||||
|
||||
typedef struct multiboot_header
|
||||
{
|
||||
t_32 Magic;
|
||||
t_32 flags;
|
||||
t_32 checksum;
|
||||
t_32 header_addr;
|
||||
t_32 load_addr;
|
||||
t_32 load_end_addr;
|
||||
t_32 bss_end_addr;
|
||||
t_32 entry_addr;
|
||||
t_32 video_mode;
|
||||
t_32 width;
|
||||
t_32 height;
|
||||
t_32 depth;
|
||||
} multiboot_header_t;
|
||||
|
||||
/* Symbol table for a.out. */
|
||||
typedef struct aout_symbol_table
|
||||
{
|
||||
t_32 tabsize;
|
||||
t_32 strsize;
|
||||
t_32 addr;
|
||||
t_32 reserved;
|
||||
} aout_symbol_table_t;
|
||||
|
||||
/* Section header table for ELF. */
|
||||
typedef struct elf_section_header_table
|
||||
{
|
||||
t_32 num;
|
||||
t_32 size;
|
||||
t_32 addr;
|
||||
t_32 shndx;
|
||||
} elf_section_header_table_t;
|
||||
|
||||
/* Multiboot information. */
|
||||
typedef struct multiboot_info
|
||||
{
|
||||
t_32 flags;
|
||||
t_32 mem_lower;
|
||||
t_32 mem_upper;
|
||||
t_32 boot_device;
|
||||
t_32 cmdline;
|
||||
t_32 mods_count;
|
||||
t_32 mods_addr;
|
||||
union
|
||||
{
|
||||
aout_symbol_table_t aout_sym;
|
||||
elf_section_header_table_t elf_sec;
|
||||
} u;
|
||||
t_32 mmap_length;
|
||||
t_32 mmap_addr;
|
||||
} multiboot_info_t;
|
||||
|
||||
/* Module structure. */
|
||||
typedef struct module
|
||||
{
|
||||
t_32 mod_start;
|
||||
t_32 mod_end;
|
||||
t_32 string;
|
||||
t_32 reserved;
|
||||
} module_t;
|
||||
|
||||
/* Memory map. Offset 0 is base_addr_low -no size. */
|
||||
typedef struct memory_map
|
||||
{
|
||||
t_32 size;
|
||||
t_32 base_addr_low;
|
||||
t_32 base_addr_high;
|
||||
t_32 length_low;
|
||||
t_32 length_high;
|
||||
t_32 type;
|
||||
} memory_map_t;
|
||||
|
||||
#define CHECK_FLAG(flags,bit) ((flags) & (1 << (bit)))
|
||||
|
||||
#endif /* _MULTIBOOT_H_ */
|
@ -0,0 +1,282 @@
|
||||
/*
|
||||
Copyright 2001, 2002 Georges Menie (www.menie.org)
|
||||
stdarg version contributed by Christian Ettinger
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "galileo_support.h"
|
||||
|
||||
static void printchar(char **str, int c)
|
||||
{
|
||||
if (str) {
|
||||
**str = (char)c;
|
||||
++(*str);
|
||||
}
|
||||
else
|
||||
{
|
||||
vGalileoPrintc( c );
|
||||
}
|
||||
}
|
||||
|
||||
#define PAD_RIGHT 1
|
||||
#define PAD_ZERO 2
|
||||
|
||||
static int prints(char **out, const char *string, int width, int pad)
|
||||
{
|
||||
register int pc = 0, padchar = ' ';
|
||||
|
||||
if (width > 0) {
|
||||
register int len = 0;
|
||||
register const char *ptr;
|
||||
for (ptr = string; *ptr; ++ptr) ++len;
|
||||
if (len >= width) width = 0;
|
||||
else width -= len;
|
||||
if (pad & PAD_ZERO) padchar = '0';
|
||||
}
|
||||
if (!(pad & PAD_RIGHT)) {
|
||||
for ( ; width > 0; --width) {
|
||||
printchar (out, padchar);
|
||||
++pc;
|
||||
}
|
||||
}
|
||||
for ( ; *string ; ++string) {
|
||||
printchar (out, *string);
|
||||
++pc;
|
||||
}
|
||||
for ( ; width > 0; --width) {
|
||||
printchar (out, padchar);
|
||||
++pc;
|
||||
}
|
||||
|
||||
return pc;
|
||||
}
|
||||
|
||||
/* the following should be enough for 32 bit int */
|
||||
#define PRINT_BUF_LEN 12
|
||||
|
||||
static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase)
|
||||
{
|
||||
char print_buf[PRINT_BUF_LEN];
|
||||
register char *s;
|
||||
register int t, neg = 0, pc = 0;
|
||||
register unsigned int u = (unsigned int)i;
|
||||
|
||||
if (i == 0) {
|
||||
print_buf[0] = '0';
|
||||
print_buf[1] = '\0';
|
||||
return prints (out, print_buf, width, pad);
|
||||
}
|
||||
|
||||
if (sg && b == 10 && i < 0) {
|
||||
neg = 1;
|
||||
u = (unsigned int)-i;
|
||||
}
|
||||
|
||||
s = print_buf + PRINT_BUF_LEN-1;
|
||||
*s = '\0';
|
||||
|
||||
while (u) {
|
||||
t = (unsigned int)u % b;
|
||||
if( t >= 10 )
|
||||
t += letbase - '0' - 10;
|
||||
*--s = (char)(t + '0');
|
||||
u /= b;
|
||||
}
|
||||
|
||||
if (neg) {
|
||||
if( width && (pad & PAD_ZERO) ) {
|
||||
printchar (out, '-');
|
||||
++pc;
|
||||
--width;
|
||||
}
|
||||
else {
|
||||
*--s = '-';
|
||||
}
|
||||
}
|
||||
|
||||
return pc + prints (out, s, width, pad);
|
||||
}
|
||||
|
||||
int print( char **out, const char *format, va_list args )
|
||||
{
|
||||
register int width, pad;
|
||||
register int pc = 0;
|
||||
char scr[2];
|
||||
|
||||
for (; *format != 0; ++format) {
|
||||
if (*format == '%') {
|
||||
++format;
|
||||
width = pad = 0;
|
||||
if (*format == '\0') break;
|
||||
if (*format == '%') goto out;
|
||||
if (*format == '-') {
|
||||
++format;
|
||||
pad = PAD_RIGHT;
|
||||
}
|
||||
while (*format == '0') {
|
||||
++format;
|
||||
pad |= PAD_ZERO;
|
||||
}
|
||||
for ( ; *format >= '0' && *format <= '9'; ++format) {
|
||||
width *= 10;
|
||||
width += *format - '0';
|
||||
}
|
||||
if( *format == 's' ) {
|
||||
register char *s = (char *)va_arg( args, int );
|
||||
pc += prints (out, s?s:"(null)", width, pad);
|
||||
continue;
|
||||
}
|
||||
if( *format == 'd' ) {
|
||||
pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a');
|
||||
continue;
|
||||
}
|
||||
if( *format == 'x' ) {
|
||||
pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');
|
||||
continue;
|
||||
}
|
||||
if( *format == 'X' ) {
|
||||
pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A');
|
||||
continue;
|
||||
}
|
||||
if( *format == 'u' ) {
|
||||
pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a');
|
||||
continue;
|
||||
}
|
||||
if( *format == 'c' ) {
|
||||
/* char are converted to int then pushed on the stack */
|
||||
scr[0] = (char)va_arg( args, int );
|
||||
scr[1] = '\0';
|
||||
pc += prints (out, scr, width, pad);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else {
|
||||
out:
|
||||
printchar (out, *format);
|
||||
++pc;
|
||||
}
|
||||
}
|
||||
if (out) **out = '\0';
|
||||
va_end( args );
|
||||
return pc;
|
||||
}
|
||||
|
||||
int printf(const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start( args, format );
|
||||
return print( 0, format, args );
|
||||
}
|
||||
|
||||
int sprintf(char *out, const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start( args, format );
|
||||
return print( &out, format, args );
|
||||
}
|
||||
|
||||
|
||||
int snprintf( char *buf, unsigned int count, const char *format, ... )
|
||||
{
|
||||
va_list args;
|
||||
|
||||
( void ) count;
|
||||
|
||||
va_start( args, format );
|
||||
return print( &buf, format, args );
|
||||
}
|
||||
|
||||
|
||||
#ifdef TEST_PRINTF
|
||||
int main(void)
|
||||
{
|
||||
char *ptr = "Hello world!";
|
||||
char *np = 0;
|
||||
int i = 5;
|
||||
unsigned int bs = sizeof(int)*8;
|
||||
int mi;
|
||||
char buf[80];
|
||||
|
||||
mi = (1 << (bs-1)) + 1;
|
||||
printf("%s\n", ptr);
|
||||
printf("printf test\n");
|
||||
printf("%s is null pointer\n", np);
|
||||
printf("%d = 5\n", i);
|
||||
printf("%d = - max int\n", mi);
|
||||
printf("char %c = 'a'\n", 'a');
|
||||
printf("hex %x = ff\n", 0xff);
|
||||
printf("hex %02x = 00\n", 0);
|
||||
printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3);
|
||||
printf("%d %s(s)%", 0, "message");
|
||||
printf("\n");
|
||||
printf("%d %s(s) with %%\n", 0, "message");
|
||||
sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf);
|
||||
sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf);
|
||||
sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf);
|
||||
sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf);
|
||||
sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf);
|
||||
sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf);
|
||||
sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf);
|
||||
sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* if you compile this file with
|
||||
* gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c
|
||||
* you will get a normal warning:
|
||||
* printf.c:214: warning: spurious trailing `%' in format
|
||||
* this line is testing an invalid % at the end of the format string.
|
||||
*
|
||||
* this should display (on 32bit int machine) :
|
||||
*
|
||||
* Hello world!
|
||||
* printf test
|
||||
* (null) is null pointer
|
||||
* 5 = 5
|
||||
* -2147483647 = - max int
|
||||
* char a = 'a'
|
||||
* hex ff = ff
|
||||
* hex 00 = 00
|
||||
* signed -3 = unsigned 4294967293 = hex fffffffd
|
||||
* 0 message(s)
|
||||
* 0 message(s) with %
|
||||
* justif: "left "
|
||||
* justif: " right"
|
||||
* 3: 0003 zero padded
|
||||
* 3: 3 left justif.
|
||||
* 3: 3 right justif.
|
||||
* -3: -003 zero padded
|
||||
* -3: -3 left justif.
|
||||
* -3: -3 right justif.
|
||||
*/
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* To keep linker happy. */
|
||||
int write( int i, char* c, int n)
|
||||
{
|
||||
(void)i;
|
||||
(void)n;
|
||||
(void)c;
|
||||
return 0;
|
||||
}
|
||||
|
@ -0,0 +1,268 @@
|
||||
/*
|
||||
FreeRTOS V8.2.1 - Copyright (C) 2015 Real Time Engineers Ltd.
|
||||
All rights reserved
|
||||
|
||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||
|
||||
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 modification 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. !<<
|
||||
***************************************************************************
|
||||
|
||||
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. Full license text is available on the following
|
||||
link: http://www.freertos.org/a00114.html
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* FreeRTOS provides completely free yet professionally developed, *
|
||||
* robust, strictly quality controlled, supported, and cross *
|
||||
* platform software that is more than just the market leader, it *
|
||||
* is the industry's de facto standard. *
|
||||
* *
|
||||
* Help yourself get started quickly while simultaneously helping *
|
||||
* to support the FreeRTOS project by purchasing a FreeRTOS *
|
||||
* tutorial book, reference manual, or both: *
|
||||
* http://www.FreeRTOS.org/Documentation *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
|
||||
the FAQ page "My application does not run, what could be wrong?". Have you
|
||||
defined configASSERT()?
|
||||
|
||||
http://www.FreeRTOS.org/support - In return for receiving this top quality
|
||||
embedded software for free we request you assist our global community by
|
||||
participating in the support forum.
|
||||
|
||||
http://www.FreeRTOS.org/training - Investing in training allows your team to
|
||||
be as productive as possible as early as possible. Now you can receive
|
||||
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
|
||||
Ltd, and the world's leading authority on the world's leading RTOS.
|
||||
|
||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||
|
||||
http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
|
||||
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
|
||||
|
||||
http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
|
||||
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||
licenses offer ticketed support, indemnification and commercial middleware.
|
||||
|
||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||
engineered and independently SIL3 certified version for use in safety and
|
||||
mission critical applications that require provable dependability.
|
||||
|
||||
1 tab == 4 spaces!
|
||||
*/
|
||||
|
||||
/* Set to 1 to enable functionality */
|
||||
#define __SHOW_KERNEL_PARAMS__ 0
|
||||
|
||||
/* Local definitions boot loader */
|
||||
#define MULTIBOOT_SIGNATURE 0x2BADB002
|
||||
#define MULTIBOOT_BOOTINFO_MMAP 0x00000040
|
||||
|
||||
/* Local definitions for GD table */
|
||||
#define GDT_ENTRIES 8
|
||||
#define GDT_ENTRY_SIZE 8
|
||||
#define GDT_BYTES (GDT_ENTRIES * GDT_ENTRY_SIZE)
|
||||
|
||||
/* Globals and externs */
|
||||
.global _mboot_hdr
|
||||
.global _start
|
||||
.global _restart
|
||||
|
||||
.extern bootsign
|
||||
.extern bootinfo
|
||||
|
||||
.extern __text_start
|
||||
.extern __text_end
|
||||
.extern __data_vma
|
||||
.extern __data_lma
|
||||
.extern __data_start
|
||||
.extern __data_end
|
||||
.extern __bss_start
|
||||
.extern __bss_end
|
||||
.extern __stack_for_main
|
||||
|
||||
.global __text_start
|
||||
.global __text_end
|
||||
.global __data_vma
|
||||
.global __data_lma
|
||||
.global __data_start
|
||||
.global __data_end
|
||||
.global __bss_start
|
||||
.global __bss_end
|
||||
|
||||
.extern setsegs
|
||||
.extern CRT_Init
|
||||
.extern kernel_load_check
|
||||
.extern main
|
||||
|
||||
/* Local constants for multiboot section */
|
||||
.set ALIGN, 1<<0 /* align loaded modules on page boundaries */
|
||||
.set MEMINFO, 1<<1 /* provide memory map */
|
||||
.set MAGIC, 0x1BADB002 /* 'magic number' lets bootloader find the header */
|
||||
.set FLAGS, ALIGN|MEMINFO /* this is the multiboot 'flag' field */
|
||||
.set CHECKSUM, -(MAGIC + FLAGS) /* checksum of above */
|
||||
|
||||
/* Set-up GDT */
|
||||
.section .data
|
||||
|
||||
.align 16
|
||||
.globl gdt
|
||||
gdt: .space GDT_BYTES
|
||||
gdtr: .word (GDT_BYTES-1) /* sizeof _gdt -1 (in bytes) */
|
||||
.long gdt /* global pointer to the gdt */
|
||||
|
||||
/* Start of application text */
|
||||
.section .text.entry
|
||||
|
||||
/* Skip mb header */
|
||||
jmp _start
|
||||
|
||||
.align 4
|
||||
/* Multiboot header */
|
||||
_mboot_hdr:
|
||||
.long MAGIC /* offset = 0 */
|
||||
.long FLAGS /* offset = 4 */
|
||||
.long CHECKSUM /* offset = 8 */
|
||||
.long _mboot_hdr /* should be header address - offset = 12 */
|
||||
.long __text_start /* load address (start of text) - offset = 16 */
|
||||
.long __bss_start /* load end address (end of data) - offset = 20*/
|
||||
.long __bss_end /* bss end address - offset = 24*/
|
||||
.long _start /* entry_addr - offset = 28*/
|
||||
|
||||
/* Start of executable code */
|
||||
_start:
|
||||
|
||||
/* Store boot arguments */
|
||||
movl %eax, bootsign
|
||||
movl %ebx, bootinfo
|
||||
|
||||
/* Check to see if kernel is bootstrapped by grub */
|
||||
cmpl $MULTIBOOT_SIGNATURE, %eax
|
||||
jne _local_loop
|
||||
testb $MULTIBOOT_BOOTINFO_MMAP, (%ebx)
|
||||
je _local_loop
|
||||
|
||||
_restart:
|
||||
|
||||
/* Initialise the stack pointer */
|
||||
movl $__stack_for_main, %esp
|
||||
|
||||
/* Reset EFLAGS. */
|
||||
pushl $0
|
||||
popf
|
||||
|
||||
/* Set up the global descriptor table */
|
||||
call setsegs
|
||||
lgdt gdtr
|
||||
ljmp $0x8, $gdt1 /* CS descriptor 1 */
|
||||
gdt1:
|
||||
movl $0x10, %eax /* DS descriptor 2 */
|
||||
movw %ax, %ds
|
||||
movw %ax, %es
|
||||
movw %ax, %fs
|
||||
movw %ax, %gs
|
||||
movl $0x18, %eax /* SS descriptor 3 */
|
||||
movw %ax, %ss
|
||||
|
||||
/* Clear interrupt flag */
|
||||
cli
|
||||
|
||||
/* Initialise platform */
|
||||
call CRT_Init
|
||||
|
||||
/* Show kernel parameters and call main, or just call main */
|
||||
#if (__SHOW_KERNEL_PARAMS__ == 1)
|
||||
/*---------------------------------------------------------------------
|
||||
On successful OS load EAX should contain 0x2BADB002
|
||||
EBX should contain the physical address of multiboot info structure
|
||||
|
||||
Push the pointers to the multiboot information structure
|
||||
and the magic number on the stack and check values returned
|
||||
----------------------------------------------------------------------*/
|
||||
movl bootsign, %eax
|
||||
movl bootinfo, %ebx
|
||||
pushl %ebx /* Multiboot information */
|
||||
pushl %eax /* Magic number */
|
||||
call show_kernel_parameters
|
||||
#else
|
||||
/*---------------------------------------------------------------------
|
||||
Call main() routine
|
||||
----------------------------------------------------------------------*/
|
||||
call main
|
||||
#endif
|
||||
|
||||
/* Should not get here, but just in case - loop forever */
|
||||
cli
|
||||
_local_loop:
|
||||
hlt
|
||||
jmp _local_loop
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
GLOBAL ASSEMBLY LANGUAGE ROUTINES
|
||||
--------------------------------------------------------------------------*/
|
||||
|
||||
/* halt */
|
||||
.globl halt
|
||||
halt:
|
||||
jmp halt
|
||||
ret
|
||||
|
||||
/* inb */
|
||||
.globl inb
|
||||
inb: movl 4(%esp), %edx
|
||||
xorl %eax, %eax # clr eax
|
||||
inb %dx, %al
|
||||
ret
|
||||
|
||||
/* inw */
|
||||
.globl inw
|
||||
inw: movl 4(%esp), %edx
|
||||
xorl %eax, %eax # clr eax
|
||||
inw %dx, %ax
|
||||
ret
|
||||
|
||||
/* inl */
|
||||
.globl inl
|
||||
inl: movl 4(%esp), %edx
|
||||
xorl %eax, %eax
|
||||
inl %dx, %eax
|
||||
ret
|
||||
|
||||
/* outb */
|
||||
.globl outb
|
||||
outb: movl 4(%esp), %edx
|
||||
movl 8(%esp), %eax
|
||||
outb %al, %dx
|
||||
ret
|
||||
|
||||
/* outw */
|
||||
.globl outw
|
||||
outw: movl 4(%esp), %edx
|
||||
movl 8(%esp), %eax
|
||||
outw %ax, %dx
|
||||
ret
|
||||
|
||||
/* outl */
|
||||
.globl outl
|
||||
outl: movl 4(%esp), %edx
|
||||
movl 8(%esp), %eax
|
||||
outl %eax, %dx
|
||||
ret
|
||||
|
||||
.end
|
@ -0,0 +1,97 @@
|
||||
/*
|
||||
FreeRTOS V8.2.1 - Copyright (C) 2015 Real Time Engineers Ltd.
|
||||
All rights reserved
|
||||
|
||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||
|
||||
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 modification 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. !<<
|
||||
***************************************************************************
|
||||
|
||||
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. Full license text is available on the following
|
||||
link: http://www.freertos.org/a00114.html
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* FreeRTOS provides completely free yet professionally developed, *
|
||||
* robust, strictly quality controlled, supported, and cross *
|
||||
* platform software that is more than just the market leader, it *
|
||||
* is the industry's de facto standard. *
|
||||
* *
|
||||
* Help yourself get started quickly while simultaneously helping *
|
||||
* to support the FreeRTOS project by purchasing a FreeRTOS *
|
||||
* tutorial book, reference manual, or both: *
|
||||
* http://www.FreeRTOS.org/Documentation *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
|
||||
the FAQ page "My application does not run, what could be wrong?". Have you
|
||||
defined configASSERT()?
|
||||
|
||||
http://www.FreeRTOS.org/support - In return for receiving this top quality
|
||||
embedded software for free we request you assist our global community by
|
||||
participating in the support forum.
|
||||
|
||||
http://www.FreeRTOS.org/training - Investing in training allows your team to
|
||||
be as productive as possible as early as possible. Now you can receive
|
||||
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
|
||||
Ltd, and the world's leading authority on the world's leading RTOS.
|
||||
|
||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||
|
||||
http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
|
||||
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
|
||||
|
||||
http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
|
||||
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||
licenses offer ticketed support, indemnification and commercial middleware.
|
||||
|
||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||
engineered and independently SIL3 certified version for use in safety and
|
||||
mission critical applications that require provable dependability.
|
||||
|
||||
1 tab == 4 spaces!
|
||||
*/
|
||||
#ifndef FREERTOS_STDINT
|
||||
#define FREERTOS_STDINT
|
||||
|
||||
/*******************************************************************************
|
||||
* THIS IS NOT A FULL stdint.h IMPLEMENTATION - It only contains the definitions
|
||||
* necessary to build the FreeRTOS code. It is provided to allow FreeRTOS to be
|
||||
* built using compilers that do not provide their own stdint.h definition.
|
||||
*
|
||||
* To use this file:
|
||||
*
|
||||
* 1) Copy this file into the directory that contains your FreeRTOSConfig.h
|
||||
* header file, as that directory will already be in the compilers include
|
||||
* path.
|
||||
*
|
||||
* 2) Rename the copied file stdint.h.
|
||||
*
|
||||
*/
|
||||
|
||||
typedef signed char int8_t;
|
||||
typedef unsigned char uint8_t;
|
||||
typedef signed short int16_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef signed long int32_t;
|
||||
typedef unsigned long uint32_t;
|
||||
typedef signed long long int64_t;
|
||||
typedef unsigned long long uint64_t;
|
||||
typedef uint32_t uintn_t;
|
||||
|
||||
#endif /* FREERTOS_STDINT */
|
@ -0,0 +1,11 @@
|
||||
/*
|
||||
* Temporary file for use only during development when there are no library or
|
||||
* header files.
|
||||
*/
|
||||
|
||||
#ifndef STDIO_H
|
||||
#define STDIO_H
|
||||
|
||||
int sprintf(char *out, const char *format, ...);
|
||||
|
||||
#endif /* stdio_h */
|
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Temporary file for use only during development when there are no library or
|
||||
* header files.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef STDLIB_H
|
||||
#define STDLIB_H
|
||||
|
||||
|
||||
/*
|
||||
* Extremely crude standard library implementations in lieu of having a C
|
||||
* library.
|
||||
*/
|
||||
void *memset( void *pvDest, int iValue, unsigned long ulBytes );
|
||||
void *memcpy( void *pvDest, const void *pvSource, unsigned long ulBytes );
|
||||
int memcmp( const void *pvMem1, const void *pvMem2, unsigned long ulBytes );
|
||||
|
||||
#endif /* STDLIB_H */
|
||||
|
@ -0,0 +1,21 @@
|
||||
|
||||
/*
|
||||
* Temporary file for use only during development when there are no library or
|
||||
* header files.
|
||||
*/
|
||||
|
||||
#ifndef STRING_H
|
||||
#define STRING_H
|
||||
|
||||
//typedef unsigned long size_t;
|
||||
|
||||
/*
|
||||
* Extremely crude standard library implementations in lieu of having a C
|
||||
* library.
|
||||
*/
|
||||
unsigned long strlen( const char* pcString );
|
||||
int strcmp( const char *pcString1, const char *pcString2 );
|
||||
void *memset( void *pvDest, int iValue, unsigned long ulBytes );
|
||||
void *memcpy( void *pvDest, const void *pvSource, unsigned long ulBytes );
|
||||
int memcmp( const void *pvMem1, const void *pvMem2, unsigned long ulBytes );
|
||||
#endif /* string_h */
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user