diff options
author | Mahmoud Bazzal | 2019-08-22 15:36:17 +0000 |
---|---|---|
committer | Mahmoud Bazzal | 2019-08-22 18:22:17 +0000 |
commit | 69a0a24f120bb0d79cbd688081ca697368e252f7 (patch) | |
tree | 36457dbba2464beb5524eb270928ad809908ade6 | |
parent | 191c1034a99a0fde1290de156dca91e69e325f1e (diff) | |
download | org.eclipse.app4mc.examples-69a0a24f120bb0d79cbd688081ca697368e252f7.tar.gz org.eclipse.app4mc.examples-69a0a24f120bb0d79cbd688081ca697368e252f7.tar.xz org.eclipse.app4mc.examples-69a0a24f120bb0d79cbd688081ca697368e252f7.zip |
RTFParallella initial commit
Signed-off-by: Mahmoud Bazzal <mahmood1994ha@gmail.com>
34 files changed, 2631 insertions, 0 deletions
diff --git a/RTFParallella/.cproject b/RTFParallella/.cproject new file mode 100755 index 0000000..d09a4a3 --- /dev/null +++ b/RTFParallella/.cproject @@ -0,0 +1,63 @@ +<?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.toolchain.gnu.cross.base.1605716264"> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.cross.base.1605716264" moduleId="org.eclipse.cdt.core.settings" name="Default"> + <externalSettings/> + <extensions> + <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> + <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + <extension id="org.eclipse.cdt.core.GmakeErrorParser" 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.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> + <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + </extensions> + </storageModule> + <storageModule moduleId="cdtBuildSystem" version="4.0.0"> + <configuration buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.cross.base.1605716264" name="Default" optionalBuildProperties="" parent="org.eclipse.cdt.build.core.emptycfg"> + <folderInfo id="cdt.managedbuild.toolchain.gnu.cross.base.1605716264.813184079" name="/" resourcePath=""> + <toolChain id="cdt.managedbuild.toolchain.gnu.cross.base.1547314808" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.base"> + <option id="cdt.managedbuild.option.gnu.cross.prefix.429924673" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix"/> + <option id="cdt.managedbuild.option.gnu.cross.path.1993404401" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path"/> + <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.1813206941" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/> + <builder buildPath="${workspace_loc:/org.eclipse.app4mc.examples.rtfp/src/parallella}" enabledIncrementalBuild="true" id="cdt.managedbuild.builder.gnu.cross.65220641" incrementalBuildTarget="example1" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/> + <tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.175109054" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler"> + <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1925296426" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + </tool> + <tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.2040290889" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler"/> + <tool id="cdt.managedbuild.tool.gnu.cross.c.linker.1912907076" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"> + <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.774684393" 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.1355407963" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"/> + <tool id="cdt.managedbuild.tool.gnu.cross.archiver.416866046" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/> + <tool id="cdt.managedbuild.tool.gnu.cross.assembler.1563842933" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler"> + <inputType id="cdt.managedbuild.tool.gnu.assembler.input.403113861" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> + </tool> + </toolChain> + </folderInfo> + </configuration> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> + </cconfiguration> + </storageModule> + <storageModule moduleId="cdtBuildSystem" version="4.0.0"> + <project id="org.eclipse.rtfp.null.1987513852" name="org.eclipse.rtfp"/> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> + <storageModule moduleId="refreshScope" versionNumber="2"> + <configuration configurationName="Default"> + <resource resourceType="PROJECT" workspacePath="/org.eclipse.rtfp"/> + </configuration> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> + <storageModule moduleId="scannerConfiguration"> + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> + <scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.1605716264;cdt.managedbuild.toolchain.gnu.cross.base.1605716264.813184079;cdt.managedbuild.tool.gnu.cross.c.compiler.175109054;cdt.managedbuild.tool.gnu.c.compiler.input.1925296426"> + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> + </scannerConfigBuildInfo> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/> +</cproject> diff --git a/RTFParallella/.project b/RTFParallella/.project new file mode 100755 index 0000000..5570539 --- /dev/null +++ b/RTFParallella/.project @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.app4mc.examples.rtfp</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> +</projectDescription> diff --git a/RTFParallella/.settings/language.settings.xml b/RTFParallella/.settings/language.settings.xml new file mode 100755 index 0000000..73ec64b --- /dev/null +++ b/RTFParallella/.settings/language.settings.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<project> + <configuration id="cdt.managedbuild.toolchain.gnu.cross.base.1605716264" name="Default"> + <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 class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuildCommandParser" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser" keep-relative-paths="false" name="CDT GCC Build Output Parser" parameter="(g?cc)|([gc]\+\+)|(clang)" prefer-non-shared="true"/> + <provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-1378115495018860532" 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> + <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> + </extension> + </configuration> +</project> diff --git a/RTFParallella/.settings/org.eclipse.cdt.codan.core.prefs b/RTFParallella/.settings/org.eclipse.cdt.codan.core.prefs new file mode 100644 index 0000000..9a577d2 --- /dev/null +++ b/RTFParallella/.settings/org.eclipse.cdt.codan.core.prefs @@ -0,0 +1,89 @@ +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},suppression_comment\=>"@suppress(\\"No return\\")",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},suppression_comment\=>"@suppress(\\"Unused return value\\")"} +org.eclipse.cdt.codan.checkers.nocommentinside=-Error +org.eclipse.cdt.codan.checkers.nocommentinside.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},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} +org.eclipse.cdt.codan.checkers.nolinecomment=-Error +org.eclipse.cdt.codan.checkers.nolinecomment.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},suppression_comment\=>"@suppress(\\"Line comments\\")"} +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},suppression_comment\=>"@suppress(\\"No return value\\")",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},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} +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},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} +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},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} +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},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} +org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem.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},suppression_comment\=>"@suppress(\\"C-Style cast instead of C++ cast\\")"} +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},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_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},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",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},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} +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},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} +org.eclipse.cdt.codan.internal.checkers.CopyrightProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.CopyrightProblem.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},suppression_comment\=>"@suppress(\\"Lack of copyright information\\")",regex\=>".*Copyright.*"} +org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error +org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.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},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} +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},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} +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},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} +org.eclipse.cdt.codan.internal.checkers.GotoStatementProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.GotoStatementProblem.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},suppression_comment\=>"@suppress(\\"Goto statement used\\")"} +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},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} +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},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} +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},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} +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},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} +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},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} +org.eclipse.cdt.codan.internal.checkers.MissCaseProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.MissCaseProblem.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},suppression_comment\=>"@suppress(\\"Missing cases in switch\\")"} +org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem.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},suppression_comment\=>"@suppress(\\"Missing default in switch\\")",defaultWithAllEnums\=>false} +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},suppression_comment\=>"@suppress(\\"Name convention for function\\")",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},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} +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},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} +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},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} +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},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} +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},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} +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},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} +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},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",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},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",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},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",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},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} +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},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",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},suppression_comment\=>"@suppress(\\"Unused static function\\")",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},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} +org.eclipse.cdt.codan.internal.checkers.UsingInHeaderProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.UsingInHeaderProblem.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},suppression_comment\=>"@suppress(\\"Using directive in header\\")"} +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},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} +org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem=-Error +org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem.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},suppression_comment\=>"@suppress(\\"Virtual method call in constructor/destructor\\")"} +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},suppression_comment\=>null} diff --git a/RTFParallella/.settings/org.eclipse.cdt.core.prefs b/RTFParallella/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 0000000..9b32d95 --- /dev/null +++ b/RTFParallella/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,171 @@ +eclipse.preferences.version=1 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/CINNAMON_VERSION/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/CINNAMON_VERSION/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/CINNAMON_VERSION/value=3.6.7 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/CLUTTER_IM_MODULE/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/CLUTTER_IM_MODULE/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/CLUTTER_IM_MODULE/value=xim +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DBUS_SESSION_BUS_ADDRESS/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DBUS_SESSION_BUS_ADDRESS/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DBUS_SESSION_BUS_ADDRESS/value=unix\:path\=/run/user/1000/bus +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DESKTOP_SESSION/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DESKTOP_SESSION/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DESKTOP_SESSION/value=cinnamon +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DISPLAY/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DISPLAY/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DISPLAY/value=\:0 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GDK_CORE_DEVICE_EVENTS/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GDK_CORE_DEVICE_EVENTS/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GDK_CORE_DEVICE_EVENTS/value=1 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GDMSESSION/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GDMSESSION/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GDMSESSION/value=cinnamon +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GIO_LAUNCHED_DESKTOP_FILE/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GIO_LAUNCHED_DESKTOP_FILE/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GIO_LAUNCHED_DESKTOP_FILE/value=/usr/share/applications/nemo.desktop +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GIO_LAUNCHED_DESKTOP_FILE_PID/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GIO_LAUNCHED_DESKTOP_FILE_PID/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GIO_LAUNCHED_DESKTOP_FILE_PID/value=2854 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GJS_DEBUG_OUTPUT/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GJS_DEBUG_OUTPUT/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GJS_DEBUG_OUTPUT/value=stderr +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GJS_DEBUG_TOPICS/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GJS_DEBUG_TOPICS/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GJS_DEBUG_TOPICS/value=JS ERROR;JS LOG +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GNOME_DESKTOP_SESSION_ID/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GNOME_DESKTOP_SESSION_ID/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GNOME_DESKTOP_SESSION_ID/value=this-is-deprecated +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GPG_AGENT_INFO/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GPG_AGENT_INFO/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GPG_AGENT_INFO/value=/run/user/1000/gnupg/S.gpg-agent\:0\:1 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_IM_MODULE/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_IM_MODULE/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_IM_MODULE/value=ibus +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_MODULES/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_MODULES/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_MODULES/value=gail\:atk-bridge +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_OVERLAY_SCROLLING/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_OVERLAY_SCROLLING/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_OVERLAY_SCROLLING/value=0 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/HOME/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/HOME/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/HOME/value=/home/mahmoud +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LANG/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LANG/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LANG/value=en_US.UTF-8 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_ADDRESS/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_ADDRESS/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_ADDRESS/value=en_US.UTF-8 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_IDENTIFICATION/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_IDENTIFICATION/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_IDENTIFICATION/value=en_US.UTF-8 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_MEASUREMENT/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_MEASUREMENT/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_MEASUREMENT/value=en_US.UTF-8 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_MONETARY/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_MONETARY/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_MONETARY/value=en_US.UTF-8 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_NAME/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_NAME/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_NAME/value=en_US.UTF-8 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_NUMERIC/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_NUMERIC/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_NUMERIC/value=en_US.UTF-8 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_PAPER/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_PAPER/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_PAPER/value=en_US.UTF-8 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_TELEPHONE/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_TELEPHONE/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_TELEPHONE/value=en_US.UTF-8 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_TIME/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_TIME/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_TIME/value=en_US.UTF-8 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LIBOVERLAY_SCROLLBAR/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LIBOVERLAY_SCROLLBAR/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LIBOVERLAY_SCROLLBAR/value=0 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LOGNAME/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LOGNAME/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LOGNAME/value=mahmoud +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/OXYGEN_DISABLE_INNER_SHADOWS_HACK/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/OXYGEN_DISABLE_INNER_SHADOWS_HACK/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/OXYGEN_DISABLE_INNER_SHADOWS_HACK/value=1 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PAPERSIZE/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PAPERSIZE/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PAPERSIZE/value=letter +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PATH/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PATH/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PATH/value=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/usr/games\:/usr/local/games\:/snap/bin +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PWD/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PWD/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PWD/value=/home/mahmoud +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT4_IM_MODULE/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT4_IM_MODULE/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT4_IM_MODULE/value=xim +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_ACCESSIBILITY/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_ACCESSIBILITY/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_ACCESSIBILITY/value=1 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_IM_MODULE/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_IM_MODULE/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_IM_MODULE/value=ibus +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_QPA_PLATFORMTHEME/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_QPA_PLATFORMTHEME/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_QPA_PLATFORMTHEME/value=gtk2 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SESSION_MANAGER/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SESSION_MANAGER/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SESSION_MANAGER/value=local/mahmoud-ThinkPad-E480\:@/tmp/.ICE-unix/1427,unix/mahmoud-ThinkPad-E480\:/tmp/.ICE-unix/1427 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SHELL/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SHELL/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SHELL/value=/bin/bash +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SHLVL/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SHLVL/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SHLVL/value=0 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SSH_AGENT_PID/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SSH_AGENT_PID/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SSH_AGENT_PID/value=1495 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SSH_AUTH_SOCK/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SSH_AUTH_SOCK/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SSH_AUTH_SOCK/value=/run/user/1000/keyring/ssh +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/USER/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/USER/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/USER/value=mahmoud +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/USERNAME/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/USERNAME/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/USERNAME/value=mahmoud +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/WINDOWPATH/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/WINDOWPATH/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/WINDOWPATH/value=2 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XAUTHORITY/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XAUTHORITY/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XAUTHORITY/value=/run/user/1000/gdm/Xauthority +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_CONFIG_DIRS/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_CONFIG_DIRS/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_CONFIG_DIRS/value=/etc/xdg/xdg-cinnamon\:/etc/xdg +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_CURRENT_DESKTOP/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_CURRENT_DESKTOP/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_CURRENT_DESKTOP/value=X-Cinnamon +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_DATA_DIRS/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_DATA_DIRS/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_DATA_DIRS/value=/usr/share/gnome\:/usr/share/cinnamon\:/usr/local/share\:/usr/share\:/var/lib/snapd/desktop +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_RUNTIME_DIR/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_RUNTIME_DIR/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_RUNTIME_DIR/value=/run/user/1000 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SEAT/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SEAT/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SEAT/value=seat0 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_DESKTOP/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_DESKTOP/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_DESKTOP/value=cinnamon +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_ID/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_ID/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_ID/value=2 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_TYPE/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_TYPE/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_TYPE/value=x11 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_VTNR/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_VTNR/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_VTNR/value=2 +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XMODIFIERS/delimiter=\: +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XMODIFIERS/operation=append +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XMODIFIERS/value=@im\=ibus +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/append=true +environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/appendContributed=true diff --git a/RTFParallella/README.md b/RTFParallella/README.md new file mode 100644 index 0000000..33b40f9 --- /dev/null +++ b/RTFParallella/README.md @@ -0,0 +1,39 @@ +# RTFParallella +> RTFP is a framework to implement multi core real time embedded applications on the Adapteva Parallella platform. +RTFParallella uses FreeRTOS to implement amalthea models for verification. + +## Installation + +```sh +sh patch_init.sh +``` + +## Usage example + +RTFParallella can be used with code generation tools to implement Amalthea tasks. +RTFParallella can be used as a quik start tool to test the viability of a multi-core real-time system + +_For more examples and usage, please refer to the [documentation][documentation]._ + + +## Release History + +* 1.0 + * Initial release of RTFParallella and examples. + +## Contributers + +* Mahmoud Bazzal – [@mahmood1994has](https://twitter.com/mahmood1994has) – mahmood1994ha@gmail.com + +Distributed under EPL license. + +## Contributing + +1. Fork it +2. Create your feature branch +3. Commit your changes +4. Push to the branch +5. Create a new Pull Request + +<!-- Markdown link & img dfn's --> +[documentation]: https://rtfparallella.readthedocs.io/en/latest/ diff --git a/RTFParallella/parallellaDeploy.sh b/RTFParallella/parallellaDeploy.sh new file mode 100755 index 0000000..e0c84da --- /dev/null +++ b/RTFParallella/parallellaDeploy.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +#******************************************************************************* +# Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. +# +# This program and the accompanying materials are made +# available under the terms of the Eclipse Public License 2.0 +# which is available at https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Dortmund University of Applied Sciences and Arts - initial API and implementation +#******************************************************************************* +echo "Parallella Deployment Script version 1.0" +echo "welcome to the world of tomorrow" + +#Board connection parameters +HOST_NAME=172.22.167.10 +HOST_USER=parallella +PORT=22 +HOST_OFFLOAD_PATH="~/boardExec" + +#SSH key file +KEY=~/.ssh/id_rsa +#path and file name inputs +DEPOLYMENT_BINARY=${1?Error: no host binary given} + +#proper ssh, use this to open an ssh connection to parallella for execution +#sudo ssh parallella@idial.institute -p 32767 -i ~/.ssh/key + +#clear hostOfflad path before copying new files +#ssh $HOST_NAME -p$PORT -l$HOST_USER -i$KEY "cd $HOST_OFFLOAD_PATH " + +#transfer host and device binaries to parallella board +echo "---------------------------------------" +echo "copying binaries to remote board..." +scp -4 -C -P $PORT -i $KEY $DEPOLYMENT_BINARY $HOST_USER@$HOST_NAME:$HOST_OFFLOAD_PATH +if [[ $? != 0 ]]; then + echo "Transfer failed!" + exit 1 +else + echo "Transfer complete." +fi +echo "---------------------------------------" +echo "Running program $HOST_BINARY" +echo "***************************************" +#run the binaries remotely on parallella +#ssh $HOST_NAME -p$PORT -l$HOST_USER -i$KEY "EPIPHANY_HOME=/opt/adapteva/esdk && . $EPIPHANY_HOME/setup.sh && cd $HOST_OFFLOAD_PATH && ./$DEPOLYMENT_BINARY" +echo "***************************************" +echo "done" diff --git a/RTFParallella/parallellaRun.sh b/RTFParallella/parallellaRun.sh new file mode 100755 index 0000000..16989b9 --- /dev/null +++ b/RTFParallella/parallellaRun.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +#******************************************************************************* +# Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. +# +# This program and the accompanying materials are made +# available under the terms of the Eclipse Public License 2.0 +# which is available at https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Dortmund University of Applied Sciences and Arts - initial API and implementation +#******************************************************************************* +echo "Parallella remote Script version 1.0" +echo "welcome to the world of tomorrow" + +#Board connection parameters +HOST_NAME=172.22.167.10 +HOST_USER=parallella +PORT=22 +HOST_OFFLOAD_PATH="~/boardExec" + +#SSH key file +KEY=~/.ssh/key +#path and file name inputs +DEPOLYMENT_BINARY=${1?Error: no host binary given} + +echo "---------------------------------------" +echo "Running program $HOST_BINARY" +echo "***************************************" +#run the binaries remotely on parallella +ssh $HOST_NAME -p$PORT -l$HOST_USER -i$KEY "EPIPHANY_HOME=/opt/adapteva/esdk && . $EPIPHANY_HOME/setup.sh && cd $HOST_OFFLOAD_PATH && ./$DEPOLYMENT_BINARY" +echo "***************************************" +echo "done" diff --git a/RTFParallella/patch_init.sh b/RTFParallella/patch_init.sh new file mode 100644 index 0000000..1d2113e --- /dev/null +++ b/RTFParallella/patch_init.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +#******************************************************************************* +# Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. +# +# This program and the accompanying materials are made +# available under the terms of the Eclipse Public License 2.0 +# which is available at https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Dortmund University of Applied Sciences and Arts - initial API and implementation +#******************************************************************************* +echo "Parallella Deployment Script version 1.0" +echo "welcome to the world of tomorrow" + +#Board connection parameters +HOST_NAME=172.22.167.10 +HOST_USER=parallella +PORT=22 +HOST_OFFLOAD_PATH="~/boardExec" + +#SSH key file +KEY=~/.ssh/id_rsa +#path and file name inputs +DEPOLYMENT_BINARY=${1?Error: no host binary given} + +#proper ssh, use this to open an ssh connection to parallella for execution +#sudo ssh parallella@idial.institute -p 32767 -i ~/.ssh/key + +#clear hostOfflad path before copying new files +#ssh $HOST_NAME -p$PORT -l$HOST_USER -i$KEY "cd $HOST_OFFLOAD_PATH " + +#transfer host and device binaries to parallella board +echo "---------------------------------------" +echo "copying binaries to remote board..." +scp -4 -C -P $PORT -i $KEY $DEPOLYMENT_BINARY $HOST_USER@$HOST_NAME:$HOST_OFFLOAD_PATH +if [[ $? != 0 ]]; then + echo "Transfer failed!" + exit 1 +else + echo "Transfer complete." +fi +echo "---------------------------------------" +echo "Running program $HOST_BINARY" +echo "***************************************" +#run the binaries remotely on parallella +#ssh $HOST_NAME -p$PORT -l$HOST_USER -i$KEY "EPIPHANY_HOME=/opt/adapteva/esdk && . $EPIPHANY_HOME/setup.sh && cd $HOST_OFFLOAD_PATH && ./$DEPOLYMENT_BINARY" +echo "***************************************" +echo "done"
\ No newline at end of file diff --git a/RTFParallella/port_patch.patch b/RTFParallella/port_patch.patch new file mode 100644 index 0000000..95e1b4b --- /dev/null +++ b/RTFParallella/port_patch.patch @@ -0,0 +1,375 @@ +3a4 +> #include <stdlib.h>
+5c6 +< #define CyclesForTick (configCPU_CLOCK_HZ/configTICK_RATE_HZ - 50)
+--- +> #include "debugFlags.h"
+6a8,10 +> #define CyclesForTick (configCPU_CLOCK_HZ/configTICK_RATE_HZ - 50)
+> //debugging
+> //TODO core to core comms will use this
+8,10c12,14 +<
+< /*-----------------------------------------------------------*/
+<
+--- +> //---------------------------------------------------
+> int globalDelta;
+> //---------------------------------------------------
+16d19 +<
+18d20 +<
+32c34,35 +< StackType_t *pxStackStart;
+--- +> StackType_t *pxStackStart;
+>
+34,38c37,40 +<
+< //align to double-word boundary
+< pxStackStart = (StackType_t *)(( StackType_t ) pxTopOfStack & ~(0x4));
+<
+< /* To ensure asserts in tasks.c don't fail, although in this case the assert
+--- +> //align to double-word boundary
+> pxStackStart = (StackType_t *)(( StackType_t ) pxTopOfStack & ~(0x4));
+>
+> /* To ensure asserts in tasks.c don't fail, although in this case the assert
+40c42 +< pxTopOfStack--;
+--- +> pxTopOfStack--;
+42,43c44,45 +< /* for alignment */
+< pxTopOfStack--;
+--- +> /* for alignment */
+> pxTopOfStack--;
+45c47 +< /* Setup the initial stack of the task. The stack is set exactly as
+--- +> /* Setup the initial stack of the task. The stack is set exactly as
+48c50 +< /* First on the stack is the return address - which in this case is the
+--- +> /* First on the stack is the return address - which in this case is the
+51,94c53,96 +< *pxTopOfStack = ( StackType_t ) 0xdeadaffe;
+< pxTopOfStack--;
+< pxTopOfStack--;
+< pxTopOfStack--;
+<
+<
+< int i;
+<
+< for(i=63;i>14;i--) {
+< *pxTopOfStack = ( StackType_t ) i<<8; /* higher registers */
+< pxTopOfStack--;
+< }
+<
+<
+< *pxTopOfStack = ( StackType_t ) 0xaaaaaaaa; /* R14 */
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x51aac4de; /* Stack used when task starts goes in R13. */
+< pxStackStart = pxTopOfStack;
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x12121212; /* R12 */
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x11111111; /* R11 */
+< //*pxTopOfStack = ( StackType_t ) pxOriginalTOS; /* frame pointer to stack address. */
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x10101010; /* R10 */
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x09090909; /* R9 */
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x08080808; /* R8 */
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x07070707; /* R7 */
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x06060606; /* R6 */
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x05050505; /* R5 */
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x04040404; /* R4 */
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x03030303; /* R3 */
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x02020202; /* R2 */
+< pxTopOfStack--;
+< *pxTopOfStack = ( StackType_t ) 0x01010101; /* R1 */
+< pxTopOfStack--;
+--- +> *pxTopOfStack = ( StackType_t ) 0xdeadaffe;
+> pxTopOfStack--;
+> pxTopOfStack--;
+> pxTopOfStack--;
+>
+>
+> int i;
+>
+> for(i=63;i>14;i--) {
+> *pxTopOfStack = ( StackType_t ) i<<8; /* higher registers */
+> pxTopOfStack--;
+> }
+>
+>
+> *pxTopOfStack = ( StackType_t ) 0xaaaaaaaa; /* R14 */
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x51aac4de; /* Stack used when task starts goes in R13. */
+> pxStackStart = pxTopOfStack;
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x12121212; /* R12 */
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x11111111; /* R11 */
+> //*pxTopOfStack = ( StackType_t ) pxOriginalTOS; /* frame pointer to stack address. */
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x10101010; /* R10 */
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x09090909; /* R9 */
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x08080808; /* R8 */
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x07070707; /* R7 */
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x06060606; /* R6 */
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x05050505; /* R5 */
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x04040404; /* R4 */
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x03030303; /* R3 */
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x02020202; /* R2 */
+> pxTopOfStack--;
+> *pxTopOfStack = ( StackType_t ) 0x01010101; /* R1 */
+> pxTopOfStack--;
+96c98 +< /* When the task starts is will expect to find the function parameter in
+--- +> /* When the task starts is will expect to find the function parameter in
+98,103c100,103 +< *pxTopOfStack-- = ( StackType_t ) pvParameters; /* R0 */
+<
+< // second last thing: program counter, no normal register on epiphany!
+< *pxTopOfStack-- = ( StackType_t ) pxCode; /* Stack used when task starts goes in R13. */
+<
+<
+--- +> *pxTopOfStack-- = ( StackType_t ) pvParameters; /* R0 */
+>
+> // second last thing: program counter, no normal register on epiphany!
+> *pxTopOfStack-- = ( StackType_t ) pxCode; /* Stack used when task starts goes in R13. */
+105c105,107 +< /* The last thing onto the stack is the status register, which is set for
+--- +>
+>
+> /* The last thing onto the stack is the status register, which is set for
+107c109,110 +< *pxTopOfStack = ( StackType_t ) 0x03;
+--- +> *pxTopOfStack = ( StackType_t ) 0x03;
+>
+109d111 +<
+111c113 +< /* Some optimisation levels use the stack differently to others. This
+--- +> /* Some optimisation levels use the stack differently to others. This
+115,117c117,119 +< //*pxTopOfStack = 0;
+< //return pxOriginalTOS;
+< return pxTopOfStack;
+--- +> //*pxTopOfStack = 0;
+> //return pxOriginalTOS;
+> return pxTopOfStack;
+120c122 +<
+--- +> /*-----THE PROBLEM FUNCTION---------------*/
+122c124 +< unsigned memprotectregister = e_reg_read(E_REG_MEMPROTECT);
+--- +> unsigned memprotectregister = e_reg_read(E_REG_MEMPROTECT);
+124,127c126,129 +< //clear last 8 bits
+< memprotectregister &= 0xffffff00;
+< //sets it to the specified value
+< memprotectregister |= mask;
+--- +> //clear last 8 bits
+> memprotectregister &= 0xffffff00;
+> //sets it to the specified value
+> memprotectregister |= mask;
+129c131 +< e_reg_write(E_REG_MEMPROTECT, memprotectregister);
+--- +> e_reg_write(E_REG_MEMPROTECT, memprotectregister);
+131c133 +<
+--- +> /*-----------------------------------------------------------*/
+140,141c142,143 +< e_irq_attach(E_USER_INT, handlers[E_USER_INT]);
+< e_irq_mask(E_USER_INT, E_FALSE);
+--- +> e_irq_attach(E_USER_INT, handlers[E_USER_INT]);
+> e_irq_mask(E_USER_INT, E_FALSE);
+143,144c145,146 +< e_irq_attach(E_TIMER0_INT, handlers[E_TIMER0_INT]);
+< e_irq_mask(E_TIMER0_INT, E_FALSE);
+--- +> e_irq_attach(E_TIMER0_INT, handlers[E_TIMER0_INT]);
+> e_irq_mask(E_TIMER0_INT, E_FALSE);
+146,147c148,149 +< e_irq_attach(E_MEM_FAULT, handlers[E_MEM_FAULT]);
+< e_irq_mask(E_MEM_FAULT, E_FALSE);
+--- +> e_irq_attach(E_MEM_FAULT, handlers[E_MEM_FAULT]);
+> e_irq_mask(E_MEM_FAULT, E_FALSE);
+149,150c151,152 +< e_irq_attach(E_SW_EXCEPTION, handlers[E_SW_EXCEPTION]);
+< e_irq_mask(E_SW_EXCEPTION, E_FALSE);
+--- +> e_irq_attach(E_SW_EXCEPTION, handlers[E_SW_EXCEPTION]);
+> e_irq_mask(E_SW_EXCEPTION, E_FALSE);
+152,153c154,155 +< e_irq_attach(E_MESSAGE_INT, handlers[E_MESSAGE_INT]);
+< e_irq_mask(E_MESSAGE_INT, E_FALSE);
+--- +> e_irq_attach(E_MESSAGE_INT, handlers[E_MESSAGE_INT]);
+> e_irq_mask(E_MESSAGE_INT, E_FALSE);
+155c157,159 +< setMemprotectMask(0x0f);
+--- +> vSetupTimer();
+> //condition left for debugging
+> if(globalDelta == 0){
+157c161 +< vSetupTimer();
+--- +> }else{
+158a163 +> }
+161d165 +<
+170c174 +< e_irq_mask(E_TIMER1_INT, E_TRUE);
+--- +> e_irq_mask(E_TIMER1_INT, E_TRUE);
+180,184c184,188 +< // There seems to be no working software interrupt, so we send a user-interrupt to ourself
+< e_coreid_t thiscore = e_get_coreid();
+< unsigned row, col;
+< e_coords_from_coreid(thiscore, &row, &col);
+< e_irq_set(row,col,E_USER_INT);
+--- +> // There seems to be no working software interrupt, so we send a user-interrupt to ourself
+> e_coreid_t thiscore = e_get_coreid();
+> unsigned row, col;
+> e_coords_from_coreid(thiscore, &row, &col);
+> e_irq_set(row,col,E_USER_INT);
+193,199c197,208 +< unsigned int cyclesForTick = CyclesForTick;
+< int delta = E_CTIMER_MAX - e_ctimer_get(E_CTIMER_1) - cyclesForTick; //How much off are we this time?
+< e_ctimer_set(E_CTIMER_1, E_CTIMER_MAX);
+<
+< //We are never to early, case is taken on startup
+< if(delta < 0)
+< delta=0;
+--- +> unsigned int cyclesForTick = CyclesForTick;
+> int delta = E_CTIMER_MAX - e_ctimer_get(E_CTIMER_1) - cyclesForTick; //How much off are we this time?
+> e_ctimer_set(E_CTIMER_1, E_CTIMER_MAX);
+>
+> //We are never to early, case is taken on startup
+>
+> //debugging
+> if(delta < 0){
+>
+> delta=0;
+> }
+> globalDelta = delta;
+201,202c210,211 +< e_ctimer_set(E_CTIMER_0, cyclesForTick-delta);
+< e_ctimer_start(E_CTIMER_0, E_CTIMER_CLK);
+--- +> e_ctimer_set(E_CTIMER_0, cyclesForTick-delta);
+> e_ctimer_start(E_CTIMER_0, E_CTIMER_CLK);
+208,210c217,219 +< volatile int status;
+< volatile int pc;
+< volatile int no[64]; //collection of all the registers as stored onto the stack
+--- +> volatile int status;
+> volatile int pc;
+> volatile int no[64]; //collection of all the registers as stored onto the stack
+217,224c226,233 +< TaskHandle_t runningTask = xTaskGetCurrentTaskHandle();
+< TCB_t **tcb = runningTask;
+< struct layout* reg = *tcb;
+<
+< int bitmask = 1 << (rand()%32);
+< int failreg = rand()%64;
+< reg->no[failreg] ^= bitmask;
+< M[4]++;
+--- +> TaskHandle_t runningTask = xTaskGetCurrentTaskHandle();
+> TCB_t **tcb = runningTask;
+> struct layout* reg = *tcb;
+>
+> int bitmask = 1 << (rand()%32);
+> int failreg = rand()%64;
+> reg->no[failreg] ^= bitmask;
+> M[4]++;
+230,251c239,263 +< switch (interrupt_mode) {
+< case E_TIMER0_INT:
+< vSetupTimer();
+< if( xTaskIncrementTick() != pdFALSE ) {
+< vTaskSwitchContext();
+< }
+< break;
+< case E_SW_EXCEPTION: //triggered extrenally for error injection. Must be that high prority
+< injectErrors();
+< break;
+< case E_USER_INT:
+< vTaskSwitchContext();
+< break;
+< case E_MESSAGE_INT: //message, triggered externally for message transmission
+< irqMsg();
+< break;
+< case E_MEM_FAULT: // written to read-only memory
+< while(1);
+< break;
+< default:
+< break;
+< }
+--- +> switch (interrupt_mode) {
+> case E_TIMER0_INT:
+> vSetupTimer();
+> updateTick();
+> xTaskIncrementTick();
+> vTaskSwitchContext();
+> break;
+> case E_SW_EXCEPTION: //triggered extrenally for error injection. Must be that high prority
+> injectErrors();
+> break;
+> case E_USER_INT:
+> vTaskSwitchContext();
+> break;
+> case E_MESSAGE_INT: //message, triggered externally for message transmission
+> //a message received
+> updateDebugFlag(404);
+> //irqMsg();
+> break;
+> case E_MEM_FAULT: // written to read-only memory
+> updateDebugFlag(2222);
+> //while(1);
+> break;
+> default:
+> break;
+> }
diff --git a/RTFParallella/portasm.patch b/RTFParallella/portasm.patch new file mode 100644 index 0000000..9850b51 --- /dev/null +++ b/RTFParallella/portasm.patch @@ -0,0 +1,45 @@ +7,8c7,8 +< mov r0,%low(_interrupt_mode) +< movt r0,%high(_interrupt_mode) +--- +> mov r0,%low(interrupt_mode) +> movt r0,%high(interrupt_mode) +13c13 +< b _common_interrupt_handler +--- +> b common_interrupt_handler +26,27c26,27 +< _handlers: +< .global _handlers +--- +> .global handlers +> handlers: +30,31c30,31 +< _common_interrupt_handler: +< .global _common_interrupt_handler +--- +> .global common_interrupt_handler +> common_interrupt_handler: +111,112c111,112 +< mov fp,%low(_pxCurrentTCB) +< movt fp,%high(_pxCurrentTCB) +--- +> mov fp,%low(pxCurrentTCB) +> movt fp,%high(pxCurrentTCB) +121,122c121,122 +< mov r0,%low(_vInterruptCentral) +< movt r0,%high(_vInterruptCentral) +--- +> mov r0,%low(vInterruptCentral) +> movt r0,%high(vInterruptCentral) +128,132c128,131 +< +< _portRESTORE_CONTEXT: +< .global _portRESTORE_CONTEXT +< mov fp,%low(_pxCurrentTCB) +< movt fp,%high(_pxCurrentTCB) +--- +> .global portRESTORE_CONTEXT +> portRESTORE_CONTEXT: +> mov fp,%low(pxCurrentTCB) +> movt fp,%high(pxCurrentTCB) diff --git a/RTFParallella/src/parallella/.gitignore b/RTFParallella/src/parallella/.gitignore new file mode 100755 index 0000000..baace69 --- /dev/null +++ b/RTFParallella/src/parallella/.gitignore @@ -0,0 +1,6 @@ +*.o +*.srec +*.elf +armcode +.gdbinit +/host_main_example1 diff --git a/RTFParallella/src/parallella/AmaltheaConverter.c b/RTFParallella/src/parallella/AmaltheaConverter.c new file mode 100755 index 0000000..fa880e2 --- /dev/null +++ b/RTFParallella/src/parallella/AmaltheaConverter.c @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ +#include "AmaltheaConverter.h" + +#include "FreeRTOS.h" +#include "task.h" +#include <stdarg.h> +#include "debugFlags.h" + + + + +AmaltheaTask createAmaltheaTask(void *taskHandler,void *cInHandler,void *cOutHandler,unsigned int period,unsigned int deadline, unsigned int WCET){ + if (WCET >= period){ + AmaltheaTask retValNull = {0,0,NULL,0,0,0,NULL,NULL}; + return retValNull; + }else{ + AmaltheaTask retVal = {0,0,taskHandler,WCET,deadline,period,cInHandler,cOutHandler}; + return retVal; + } +} + +unsigned int calculateStackSize(int labelBitCount, int labelCount){ + return ((labelBitCount*labelCount)/PLATFORM_WORD_LENGTH); +} + +void createRTOSTask(AmaltheaTask* task, int priority, int argCount, ...){ + //cycle through the stack arguments and add the needed numbers to the stack + int stack_size = 0; + for (int i=3;i<=argCount+2;i+=2){ + stack_size = calculateStackSize(i,i+1); + } + //make sure the stack size is at least big enough to run the task. + stack_size += configMINIMAL_STACK_SIZE; + //create the RTOS task with the generalized form + xTaskCreate(generalizedRTOSTask ,"Task" ,stack_size, &(*task) ,priority,NULL); +} + + +#ifdef use_LET_COMM_SEMANTICS +void generalizedRTOSTask(AmaltheaTask task){ + TickType_t xLastWakeTime = xTaskGetTickCount(); + //task.cInHandler(); + for (;;){ + //execute cIn + task.cInHandler(); + task.taskHandler(); + vTaskDelayUntil( &xLastWakeTime, task.period); + task.cOutHandler(); + } +} +#else + +void generalizedRTOSTask(AmaltheaTask task){ + TickType_t xLastWakeTime = xTaskGetTickCount(); + //task.cInHandler(); + for (;;){ + //execute cIn + task.cInHandler(); + task.taskHandler(); + task.cOutHandler(); + vTaskDelayUntil( &xLastWakeTime, task.period); + } +} + +#endif + + + + + + + + + + + diff --git a/RTFParallella/src/parallella/AmaltheaConverter.h b/RTFParallella/src/parallella/AmaltheaConverter.h new file mode 100755 index 0000000..1f41f05 --- /dev/null +++ b/RTFParallella/src/parallella/AmaltheaConverter.h @@ -0,0 +1,81 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#ifndef SRC_PARALLELLA_AMALTHEACONVERTER_H_ +#define SRC_PARALLELLA_AMALTHEACONVERTER_H_ + +#define PLATFORM_WORD_LENGTH 32 + +#define numTasks 3 + +/** + * Structure to hold tasks according to amalthea model + */ +typedef struct{ + unsigned isDone; + unsigned isReady; + void(* taskHandler)(); + unsigned executionTime;//in ticks + unsigned deadline; //in ticks + unsigned period; //in ticks + void(* cInHandler)(); + void(* cOutHandler)(); +}AmaltheaTask; + + +/** + * communication semantics of tasks + * if use_LET_COMM_SEMANTICS is defined, the tasks will behave in LET semantics else it will use implicit by default + */ +//#define use_LET_COMM_SEMANTICS + +AmaltheaTask createAmaltheaTask(void *taskHandler,void *cInHandler,void *cOutHandler,unsigned int period,unsigned int deadline, unsigned int WCET); + +/** + * Create the RTOS task that represents a given Amalthea task. + * This function can have multiple arguments for all label types used by the task and the number of labels of each type. + * + * Arguments: + * task : pointer to the AmaltheaTask struct + * priority : priority of the task (according to RMS, lowesrt perio has highest priority) + * argCount : number of different types of labels used by this task + * label_type_size : size (in bits) of label type. + * label_type_count: number of labels associated with that type. + * + * + */ +void createRTOSTask(AmaltheaTask* task, int priority, int argCount, ...); + +/** + * This function returns the additional stack size (in words) needed for the task to andle its labels + * + * Arguments: + * labelBitCount : label size in bits + * labelCount : number of labels + * + */ +unsigned int calculateStackSize(int labelBitCount, int labelCount); + +/** + * + *This RTOS task invokes the task handlers and realizes periodic task execution according to + * Amalthea model + * + * Arguments: + * task : instance of AmaltheaTask structure to be invoked + * + */ +void generalizedRTOSTask(AmaltheaTask task); + + +#endif /* SRC_PARALLELLA_AMALTHEACONVERTER_H_ */ diff --git a/RTFParallella/src/parallella/FreeRTOSConfig.h b/RTFParallella/src/parallella/FreeRTOSConfig.h new file mode 100755 index 0000000..d8514d6 --- /dev/null +++ b/RTFParallella/src/parallella/FreeRTOSConfig.h @@ -0,0 +1,58 @@ +/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+#ifndef FREERTOS_CONFIG_H
+#define FREERTOS_CONFIG_H
+
+
+#define configCALL_STACK_SIZE 0x50
+
+#define configUSE_PREEMPTION 1
+#define configUSE_TIME_SLICING 0
+
+#define configUSE_IDLE_HOOK 0
+#define configUSE_TICK_HOOK 0
+#define configCPU_CLOCK_HZ ( ( unsigned long ) 700000000 )
+#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
+#define configMAX_PRIORITIES ( 5 )
+#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 0x200) //512 words
+#define configTOTAL_HEAP_SIZE ( (size_t ) ( 10450 ) )
+#define configMAX_TASK_NAME_LEN ( 128 )
+#define configUSE_TRACE_FACILITY 0
+#define configUSE_16_BIT_TICKS 1
+#define configIDLE_SHOULD_YIELD 0
+
+
+
+#define configUSE_ALTERNATIVE_API 0
+
+/* Co-routine definitions. */
+#define configUSE_CO_ROUTINES 0
+#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
+
+/* Set the following definitions to 1 to include the API function, or zero
+to exclude the API function. */
+
+#define INCLUDE_vTaskPrioritySet 0
+#define INCLUDE_uxTaskPriorityGet 0
+#define INCLUDE_vTaskDelete 0
+#define INCLUDE_vTaskCleanUpResources 0
+#define INCLUDE_vTaskSuspend 1
+#define INCLUDE_vTaskDelayUntil 1
+#define INCLUDE_vTaskDelay 1
+#define INCLUDE_xTaskGetCurrentTaskHandle 1
+#define INCLUDE_pcTaskGetTaskName 1
+
+#define C2C_MSG_TYPE int
+
+
+#endif /* FREERTOS_CONFIG_H */
diff --git a/RTFParallella/src/parallella/Makefile b/RTFParallella/src/parallella/Makefile new file mode 100755 index 0000000..15c1fba --- /dev/null +++ b/RTFParallella/src/parallella/Makefile @@ -0,0 +1,51 @@ +EPIPHANY_HOME=/opt/adapteva/esdk +#host compiler path +LCC=/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc +#device compiler path +CC=e-gcc +#FreeRTOS dependencies +CFLAGS=-I. +FREERTOSSRC=../../RTFP_RTOS_KERNEL_PATCHED/FreeRTOS/Source +INCLUDES= -g -I$(FREERTOSSRC)/include -I$(FREERTOSSRC)/portable/GCC/Epiphany -I. +DEPS = $(FREERTOSSRC)/portable/GCC/Epiphany/portmacro.h Makefile FreeRTOSConfig.h c2c.h debugFlags.h AmaltheaConverter.h taskCode.h ParallellaUtils.h +DEPSHOST = c2c.h debugFlags.h AmaltheaConverter.h shared_comms.h model_enumerations.h +#Epiphany SDK dependencies +ESDK=${EPIPHANY_HOME} +ELIBS=${ESDK}/tools/host.armv7l/lib +EINCS=${ESDK}/tools/host.armv7l/include +ELDF=${ESDK}/bsps/current/fast.ldf +EHDF=${EPIPHANY_HDF} +#search paths for C source code files +vpath %.c .:$(FREERTOSSRC)/:$(FREERTOSSRC)/portable/MemMang:$(FREERTOSSRC)/portable/GCC/Epiphany:/ +#search path for assembly listings +vpath %.s $(FREERTOSSRC)/portable/GCC/Epiphany +#main target +all: host_main_example1 armcode core0_main.elf core1_main.elf + @echo build status : successful +run: armcode core0_main.elf core1_main.elf + @echo build status : successful + +example1: host_main_example1 core0_main.elf core1_main.elf + @echo build status : successful + +#rule for every device target +%.elf: $(ELDF) tasks.o queue.o list.o portasm.o port.o heap_1.o c2c.o debugFlags.o AmaltheaConverter.o taskCode.o ParallellaUtils.o shared_comms.o %.o + $(CC) -g -T$< -Wl,--gc-sections -o $@ $(filter-out $<,$^) -le-lib + +#host target +armcode: armcode.c $(DEPSHOST) + $(LCC) $< -o $@ host_utils.c model_enumerations.c -I ${EINCS} -L ${ELIBS} -lpal -le-hal -le-loader -lpthread +host_main_example1: host_main_example1.c $(DEPSHOST) + $(LCC) $< -o $@ host_utils.c model_enumerations.c -I ${EINCS} -L ${ELIBS} -lpal -le-hal -le-loader -lpthread + +#clean target +clean: + rm -f *.o *.srec *.elf armcode host_main_example1 + +.SECONDARY: +%.o: %.c $(DEPS) + $(CC) -fdata-sections -ffunction-sections -c -o $@ $< $(INCLUDES) + +%.o: %.s $(DEPS) + $(CC) -c -o $@ $< $(INCLUDES) + diff --git a/RTFParallella/src/parallella/ParallellaUtils.c b/RTFParallella/src/parallella/ParallellaUtils.c new file mode 100755 index 0000000..ae8f393 --- /dev/null +++ b/RTFParallella/src/parallella/ParallellaUtils.c @@ -0,0 +1,26 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#include "ParallellaUtils.h" + +void sleepTimerMs(int ticks, int taskNum){ + updateDebugFlag(ticks*10); + int i; + for (i=0;i<ticks;i++){ + taskENTER_CRITICAL(); + traceRunningTask(taskNum); + e_wait(E_CTIMER_0,_1MS); + taskEXIT_CRITICAL(); + } +} + diff --git a/RTFParallella/src/parallella/ParallellaUtils.h b/RTFParallella/src/parallella/ParallellaUtils.h new file mode 100755 index 0000000..5cc2d7f --- /dev/null +++ b/RTFParallella/src/parallella/ParallellaUtils.h @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#ifndef SRC_PARALLELLA_PARALLELLAUTILS_H_ +#define SRC_PARALLELLA_PARALLELLAUTILS_H_ + +#include "debugFlags.h" +#include "e_lib.h" +//freeRTOS imports +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" + +//time units in processor cycles +#define _1MS 700000 +#define _1US 700 + +/** + * sleep for a multiple of milliseconds + * + * Arguments: + * ticks : number of milliseconds to sleep + * taskNum : index of task invoking this function (used for tracing during sleep) + * + */ +void sleepTimerMs(int ticks,int taskNum); + + +#endif /* SRC_PARALLELLA_PARALLELLAUTILS_H_ */ diff --git a/RTFParallella/src/parallella/armcode.c b/RTFParallella/src/parallella/armcode.c new file mode 100755 index 0000000..e7d3b1c --- /dev/null +++ b/RTFParallella/src/parallella/armcode.c @@ -0,0 +1,151 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <e-hal.h> //hardware abstraction library +#include <time.h> /* Needed for struct timespec */ + +#include "c2c.h" +#include "debugFlags.h" +#include "shared_comms.h" +#include "host_utils.h" +#include "model_enumerations.h" + +unsigned int shared_label_to_read[10]; +unsigned int shared_label_core_00[dstr_mem_sec_1_label_count]; +unsigned int shared_label_core_10[dstr_mem_sec_1_label_count]; + +int main() +{ + int label_enable_count_core0 = 0; + printf("RTFP demo host code\n"); + //setup visualization config for the first core + unsigned index_array1[dstr_mem_sec_1_label_count]; + unsigned index_array1_prv_val[dstr_mem_sec_1_label_count]; + array_init(index_array1,dstr_mem_sec_1_label_count); + array_init(index_array1_prv_val,dstr_mem_sec_1_label_count); + LabelVisual core1 = get_user_input(index_array1); + //setup visualization config for the first core + unsigned index_array2[dstr_mem_sec_1_label_count]; + unsigned index_array2_prv_val[dstr_mem_sec_1_label_count]; + array_init(index_array2,dstr_mem_sec_1_label_count); + array_init(index_array2_prv_val,dstr_mem_sec_1_label_count); + LabelVisual core2 = get_user_input(index_array2); + //steup visualization for shared memeory + unsigned index_array_DRAM[shared_mem_section1_label_count]; + unsigned index_array_prv_DRAM[shared_mem_section1_label_count]; + array_init(index_array_DRAM,shared_mem_section1_label_count); + array_init(index_array_prv_DRAM,shared_mem_section1_label_count); + unsigned dram_indices = get_user_input_DRAM(index_array_DRAM); + + //counters for row and column, cored id and loop counter + unsigned row_loop,col_loop; + // this will contain the epiphany platform configuration + e_platform_t epiphany; + e_epiphany_t dev; + e_return_stat_t result; + unsigned int message[9]; + unsigned int message2[9]; + int loop; + int addr; + e_mem_t emem; + e_init(NULL); // initialise the system establish connection to the Device + //initial ecore is set to 0,0 + /* + * reserve shared mem sections + * one section for each shared label in the model + * shared mem address space starts at 0x0100_0000 + * and ends at 0x3FFF_FFFF + * + */ + e_alloc(&emem, shared_mem_section , sizeof(shared_label_to_read)); + e_reset_system(); // reset the epiphnay chip + e_get_platform_info(&epiphany);//gets the configuration info for the parallella platofrm + //debug flag + //------------------------------------------------ + //one core within the parallella work group is 1 x 1 i.e single core + e_open(&dev,0,0,2,1); //2 rows one column rectangle size 2*1 + //reset the group + e_reset_group(&dev); + e_return_stat_t result1; + e_return_stat_t result2; + //load the group + result1 = e_load("core0_main.elf",&dev,0,0,E_FALSE); + result2 = e_load("core1_main.elf",&dev,1,0,E_FALSE); + if (result1 != E_OK || result2 != E_OK){ + fprintf(stderr,"Error Loading the Epiphany Application 1 %i\n", result); + } + e_start_group(&dev); + fprintf(stderr,"Legend: \n"); + fprintf(stderr,"--------\n"); + fprintf(stderr," Tick -> RTOS tick \n"); + fprintf(stderr," Core 1 -> (0,0) \n"); + fprintf(stderr," Core 2 -> (1,0) \n"); + fprintf(stderr," THC -> Task Holding Core(row, column) \n"); + fprintf(stderr," L -> Local core memory \n"); + fprintf(stderr," F -> Foreign memory (DRAM) \n"); + fprintf(stderr,"(L,row,column,indx) -> Label of index _indx_ on Local core memory(row, column) \n"); + fprintf(stderr,"----------------------------------------------\n"); + + fprintf(stderr,"RFTP demo started \n"); + addr = cnt_address; + int pollLoopCounter = 0; + int taskMessage; + int prevtaskMessage; + int prevpollLoopCounter = 0; + unsigned int chainLatencyEndIndicator = 0; + unsigned int chainLatencyStartIndicator = 10e6; + unsigned int lat1 = 0; + int label_to_feed_in = 97; + fprintf(stderr,"===========================================================================\n"); + fprintf(stderr," | Tasks being executed| Shared labels' values |\n"); + fprintf(stderr,"tick | Core 1 | Core 2 |"); + user_config_print_legend(core1,index_array1); + user_config_print_legend(core2,index_array2); + user_config_print_legend_auto(dram_indices,index_array_DRAM); + + fprintf(stderr,"\n"); + fprintf(stderr,"===========================================================================\n"); + + int prev1,prev2,prev3; + for (pollLoopCounter=0;pollLoopCounter<=40;pollLoopCounter++){ + message[3] = 0; + e_read(&dev,0,0,addr, &message, sizeof(message)); + e_read(&dev,0,0,dstr_mem_offset_sec_1, &shared_label_core_00, sizeof(shared_label_core_00)); + e_read(&dev,1,0,addr, &message2, sizeof(message2)); + e_read(&dev,1,0,dstr_mem_offset_sec_1, &shared_label_core_10, sizeof(shared_label_core_10)); + e_read(&emem,0,0,0x00, &shared_label_to_read, sizeof(shared_label_to_read)); + if (message[8]!= message2[8] ){ + //fprintf(stderr,"NIS->"); + } + fprintf(stderr, "%4d |",message[8]+1); + fprintf(stderr," %4u |", message[6]); + fprintf(stderr," %4u |", message2[6]); + user_config_print_values(core1,index_array1,shared_label_core_00,index_array1_prv_val); + user_config_print_values(core2,index_array2,shared_label_core_10,index_array2_prv_val); + user_config_print_values_auto(dram_indices,index_array_DRAM,shared_label_to_read,index_array_prv_DRAM); + fprintf(stderr,"\n"); + nsleep(1); + } + fprintf(stderr,"----------------------------------------------\n"); + e_close(&dev); + e_finalize(); + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + fprintf(stderr,"RFTP demo complete \n "); + return 0; +} + diff --git a/RTFParallella/src/parallella/c2c.c b/RTFParallella/src/parallella/c2c.c new file mode 100755 index 0000000..3045c04 --- /dev/null +++ b/RTFParallella/src/parallella/c2c.c @@ -0,0 +1,106 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#include "c2c.h" + +#include "e-lib.h" + +dstr_mem_sec_1_label_type *outbuf_dstr_shared[10]; +//e_mem_t emem_dst[16]; +int core_write_mutex=0; + +void shared_labels_init_core(){ + //shared buffer in core memory + outbuf_dstr_shared[0] = (dstr_mem_sec_1_label_type *) dstr_mem_offset_sec_1; + /*for (int i=1;i<dstr_mem_sec_1_label_count;i++){ + outbuf_dstr_shared[i] = outbuf_dstr_shared[i-1] + 1; + } + outbuf_dstr_shared[1] = outbuf_dstr_shared[0] + 1; + outbuf_dstr_shared[2] = outbuf_dstr_shared[1] + 1; + outbuf_dstr_shared[3] = outbuf_dstr_shared[2] + 1; + outbuf_dstr_shared[4] = outbuf_dstr_shared[3] + 1; + outbuf_dstr_shared[5] = outbuf_dstr_shared[4] + 1; + outbuf_dstr_shared[6] = outbuf_dstr_shared[5] + 1; + outbuf_dstr_shared[7] = outbuf_dstr_shared[6] + 1; + outbuf_dstr_shared[8] = outbuf_dstr_shared[7] + 1;*/ + //initialize buffer + int i; + for (i=0;i<9;i++){ + *outbuf_dstr_shared[i] =0; + } + /*int emem; + //define distributed memory section in Epi range + e_alloc(&emem[1], dstr_mem_offset_sec_1 , sizeof(outbuf_dstr_shared));*/ + +} + +uint8_t shared_label_write_core (unsigned row,unsigned col,int label_indx,int payload){ + unsigned int *addr; + unsigned int* addr_base; + addr_base = get_base_address_core(row,col); + addr = (unsigned int*) ((unsigned ) addr_base | (unsigned)outbuf_dstr_shared[label_indx]); + *addr = payload; +} + +unsigned int shared_label_read_core (unsigned row, unsigned col, int label_indx){ + unsigned int *addr; + unsigned int* addr_base; + addr_base = get_base_address_core(row,col); + addr = (unsigned int*) ((unsigned ) addr_base | (unsigned)outbuf_dstr_shared[label_indx]); + return *addr; +} + + +unsigned int get_base_address_core(int row, int col){ + if(row ==0 ){ + if (col == 0){ + return 0x80800000; + } else if (col ==1){ + return 0x80900000; + }else if (col == 2){ + return 0x80A00000; + }else if (col == 3){ + return 0x80B00000; + } + } else if(row ==1 ){ + if (col == 0){ + return 0x84800000; + } else if (col ==1){ + return 0x84900000; + }else if (col == 2){ + return 0x84A00000; + }else if (col == 3){ + return 0x84B00000; + } + } else if(row ==2 ){ + if (col == 0){ + return 0x88800000; + } else if (col ==1){ + return 0x88900000; + }else if (col == 2){ + return 0x88A00000; + }else if (col == 3){ + return 0x88B00000; + } + } else if(row ==3 ){ + if (col == 0){ + return 0x8C800000; + } else if (col ==1){ + return 0x8C900000; + }else if (col == 2){ + return 0x8CA00000; + }else if (col == 3){ + return 0x8CB00000; + } + } +} diff --git a/RTFParallella/src/parallella/c2c.h b/RTFParallella/src/parallella/c2c.h new file mode 100755 index 0000000..7b44987 --- /dev/null +++ b/RTFParallella/src/parallella/c2c.h @@ -0,0 +1,67 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#ifndef C2C_H +#define C2C_H + + +#include <stdint.h> +#define dstr_mem_offset_sec_1 0x4000 +#define dstr_mem_sec_1_label_count 10 +#define dstr_mem_sec_1_label_type unsigned int + +/** + * Initiate the shared label section, this funcion will assign addresses to labels in a section, + * and initialize those labels to 0 + * + * Arguments: + * + */ +void shared_labels_init_core(); + +/** + * write a value to a label in a distributed shared memory section + * + * Arguments: + * row : absolute row number of the core + * col : absolute column number of the core + * label_indx : index of the target shared label + * payload : value to write + * + */ +uint8_t shared_label_write_core (unsigned row,unsigned col,int label_indx,int payload); + +/** + * read a value of a label in a distributed shared memory section + * + * Arguments: + * row : absolute row number of the core + * col : absolute column number of the core + * label_indx : index of the target shared label + * + */ +unsigned int shared_label_read_core(unsigned row, unsigned col, int label_indx); + +/** + * get the absolute base memory address of a core + * + * Arguments: + * row : absolute row number of the core + * col : absolute column number of the core + * + */ +unsigned int get_base_address_core(int row, int col); + + + +#endif diff --git a/RTFParallella/src/parallella/core0_main.c b/RTFParallella/src/parallella/core0_main.c new file mode 100755 index 0000000..8a58f9d --- /dev/null +++ b/RTFParallella/src/parallella/core0_main.c @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +//epiphany imports +#include <stdlib.h> + +#include "AmaltheaConverter.h" +#include "c2c.h" +#include "debugFlags.h" +#include "shared_comms.h" +#include "taskCode.h" +#include "e_lib.h" +//freeRTOS imports +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" +//utility imports + +//--------------------------------------------- +int main(void) { + //initialize output buffer for debug messages + outbuf_init(); + shared_labels_init(); + shared_labels_init_core(); + //create Amalthea task objects + AmaltheaTask t5ms = createAmaltheaTask(handler5ms,cIn5ms,cOut5ms,5,5,2); + AmaltheaTask t10ms = createAmaltheaTask(handler10ms,cIn10ms,cOut10ms,10,10,3); + AmaltheaTask t20ms = createAmaltheaTask(handler20ms,cIn20ms,cOut20ms,20,20,5); + //create RTOS task from templates + createRTOSTask(&t5ms,3,0); + createRTOSTask(&t10ms,2,0); + createRTOSTask(&t20ms,1,0); + //start RTOS scheduler + vTaskStartScheduler(); + return EXIT_SUCCESS; +} +//--------------------------------------------- +//end of file diff --git a/RTFParallella/src/parallella/core1_main.c b/RTFParallella/src/parallella/core1_main.c new file mode 100755 index 0000000..82a1009 --- /dev/null +++ b/RTFParallella/src/parallella/core1_main.c @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +//epiphany imports +#include <stdlib.h> + +#include "AmaltheaConverter.h" +#include "c2c.h" +#include "debugFlags.h" +#include "shared_comms.h" +#include "taskCode.h" +#include "e_lib.h" +//freeRTOS imports +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" +//utility imports +//--------------------------------------------- +int main(void) { + //initialize output buffer for debug messages + outbuf_init(); + shared_labels_init(); + shared_labels_init_core(); + //create Amalthea task objects + AmaltheaTask t20ms = createAmaltheaTask(handler10msCore2,cIn10msCore2,cOut10msCore2,10,10,7); + AmaltheaTask t40ms = createAmaltheaTask(handler20msCore2,cIn20msCore2,cOut20msCore2,20,20,10); + //create RTOS task from templates + createRTOSTask(&t20ms,2,0); + createRTOSTask(&t40ms,1,0); + vTaskStartScheduler(); + return EXIT_SUCCESS; +} +//--------------------------------------------- +//end of file diff --git a/RTFParallella/src/parallella/debugFlags.c b/RTFParallella/src/parallella/debugFlags.c new file mode 100755 index 0000000..9172a6e --- /dev/null +++ b/RTFParallella/src/parallella/debugFlags.c @@ -0,0 +1,72 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#include "debugFlags.h" + +#include "FreeRTOS.h" +#include "task.h" + + +unsigned int *outbuf[10]; + +/* + * initialize output buffer with the addresses to array elements + */ +void outbuf_init(void ){ + //This will be the same on each core + //debug interface in shared memory + outbuf[0] = (unsigned int *) cnt_address; + outbuf[1] = outbuf[0] + 1; + outbuf[2] = outbuf[1] + 1; + outbuf[3] = outbuf[2] + 1; + outbuf[4] = outbuf[3] + 1; + outbuf[5] = outbuf[4] + 1; + outbuf[6] = outbuf[5] + 1; + outbuf[7] = outbuf[6] + 1; + outbuf[8] = outbuf[7] + 1; + *outbuf[1] = 200; + //initialize buffer + int i; + //timer1init(); + for (i=0;i<9;i++){ + *outbuf[i] =0; + } +} + +void traceRunningTask(unsigned taskNum){ + *outbuf[RUNNINGTASK_FLAG] = taskNum; +} + +void traceTaskPasses(unsigned taskNum, int currentPasses){ + if (taskNum == 1){ + *outbuf[TASK1_FLAG] = currentPasses; + }else if (taskNum == 2){ + *outbuf[TASK2_FLAG] = currentPasses; + }else if (taskNum == 3){ + *outbuf[TASK3_FLAG] = currentPasses; + } +} + +void updateTick(void){ + *outbuf[TICK_FLAG] = xTaskGetTickCount(); +} + +void updateDebugFlag(int debugMessage){ + *outbuf[DEBUG_FLAG] = debugMessage; +} + + + + + + diff --git a/RTFParallella/src/parallella/debugFlags.h b/RTFParallella/src/parallella/debugFlags.h new file mode 100755 index 0000000..9db71ec --- /dev/null +++ b/RTFParallella/src/parallella/debugFlags.h @@ -0,0 +1,72 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#ifndef SRC_PARALLELLA_DEBUGFLAGS_H_ +#define SRC_PARALLELLA_DEBUGFLAGS_H_ + +#define cnt_address 0x3000 + +#define TASK1_FLAG 2 +#define TASK2_FLAG 0 +#define TASK3_FLAG 4 +#define TASK4_FLAG 0 +#define TASK5_FLAG 4 +#define RUNNINGTASK_FLAG 6 +#define DEBUG_FLAG 7 +#define TICK_FLAG 8 + +/** + * initialize output buffer in core memory + * + * Arguments: + * + */ +void outbuf_init(void ); + +/** + * write the index of the running task to output buffer + * + * Arguments: + * taskNum : index of the task + * + */ +void traceRunningTask(unsigned taskNum); + +/** + * write the task instance (job) to output buffer + * + * Arguments: + * taskNum : index of the task + * currentPasses : instance of task (job number) + * + */ +void traceTaskPasses(unsigned taskNum, int currentPasses); + +/** + * update RTOS tick value in output buffer + * + * Arguments: + * + */ +void updateTick(void); + +/** + * Write a custom value to the output buffer for code coverage debugging + * + * Arguments: + * debugMessage : message to be written + * + */ +void updateDebugFlag(int debugMessage); + +#endif /* SRC_PARALLELLA_DEBUGFLAGS_H_ */ diff --git a/RTFParallella/src/parallella/host_main_example1.c b/RTFParallella/src/parallella/host_main_example1.c new file mode 100644 index 0000000..595211b --- /dev/null +++ b/RTFParallella/src/parallella/host_main_example1.c @@ -0,0 +1,135 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <e-hal.h> //hardware abstraction library +#include <time.h> /* Needed for struct timespec */ + +#include "c2c.h" +#include "debugFlags.h" +#include "shared_comms.h" +#include "host_utils.h" +#include "model_enumerations.h" + +unsigned int shared_label_to_read[10]; +unsigned int shared_label_core_00[dstr_mem_sec_1_label_count]; +unsigned int shared_label_core_10[dstr_mem_sec_1_label_count]; +unsigned int shared_label_core[core_count][dstr_mem_sec_1_label_count]; +int main() +{ + int label_enable_count_core0 = 0; + unsigned labelVisual_perCore[core_count][DSHM_visible_label_count]; + unsigned int prv_val_preCore[core_count][DSHM_visible_label_count]; + for (int i=0;i<core_count;i++){ + get_visible_label_index(labelVisual_perCore[i],MEM_TYPE_DSHM); + } + unsigned labelVisual_SHM[SHM_visible_label_count]; + unsigned int prv_val_SHM[SHM_visible_label_count]; + get_visible_label_index(labelVisual_SHM,MEM_TYPE_SHM); + for (int i=0;i<core_count;i++){ + printf ("@%d : ",i); + for (int j=0;j<DSHM_visible_label_count;j++){ + printf("L%d ",labelVisual_perCore[i][j]); + } + printf("\n"); + } + fprintf(stderr,"===========================================================================\n"); + fprintf(stderr," | Tasks being executed | observed labels values |\n"); + fprintf(stderr,"%6s|%12s|%12s|"," tick "," Core 1 "," Core 2 "); + for (int i=0;i<core_count;i++){ + print_legend_enum(DSHM_visible_label_count,labelVisual_perCore[i],MEM_TYPE_DSHM); + } + print_legend_enum(SHM_visible_label_count,labelVisual_SHM,MEM_TYPE_SHM); + fprintf(stderr,"\n"); + fprintf(stderr,"===========================================================================\n"); + //counters for row and column, cored id and loop counter + unsigned row_loop,col_loop; + // this will contain the epiphany platform configuration + e_platform_t epiphany; + e_epiphany_t dev; + e_return_stat_t result; + unsigned int message[9]; + unsigned int message2[9]; + int loop; + int addr; + e_mem_t emem; + e_init(NULL); + /* + * reserve shared mem sections + * one section for each shared label in the model + * shared mem address space starts at 0x0100_0000 + * and ends at 0x3FFF_FFFF + * + */ + e_alloc(&emem, shared_mem_section , sizeof(shared_label_to_read)); + e_reset_system(); // reset the epiphnay chip + e_get_platform_info(&epiphany);//gets the configuration info for the parallella platofrm + //debug flag + //------------------------------------------------ + //one core within the parallella work group is 1 x 1 i.e single core + e_open(&dev,0,0,2,1); //2 rows one column rectangle size 2*1 + //reset the group + e_reset_group(&dev); + e_return_stat_t result1; + e_return_stat_t result2; + //load the group + result1 = e_load("core0_main.elf",&dev,0,0,E_FALSE); + result2 = e_load("core1_main.elf",&dev,1,0,E_FALSE); + if (result1 != E_OK || result2 != E_OK){ + fprintf(stderr,"Error Loading the Epiphany Application 1 %i\n", result); + } + e_start_group(&dev); + addr = cnt_address; + int pollLoopCounter = 0; + unsigned int chainLatencyEndIndicator = 0; + unsigned int chainLatencyStartIndicator = 10e6; + unsigned int lat1 = 0; + char buffer1[label_str_len]; + array_init(buffer1,label_str_len); + char buffer2[label_str_len]; + array_init(buffer2,label_str_len); + + + int prev1,prev2,prev3; + for (pollLoopCounter=0;pollLoopCounter<=40;pollLoopCounter++){ + message[3] = 0; + e_read(&dev,0,0,addr, &message, sizeof(message)); + e_read(&dev,0,0,dstr_mem_offset_sec_1, &shared_label_core[0], sizeof(shared_label_core_00)); + e_read(&dev,1,0,addr, &message2, sizeof(message2)); + e_read(&dev,1,0,dstr_mem_offset_sec_1, &shared_label_core[1], sizeof(shared_label_core_10)); + e_read(&emem,0,0,0x00, &shared_label_to_read, sizeof(shared_label_core_10)); + if (message[8]!= message2[8] ){ + //fprintf(stderr,"NIS->"); + } + get_task_name(message[6],buffer1); + get_task_name(message2[6],buffer2); + fprintf(stderr," %4d | %10s | %10s | ",message[8]+1,buffer1,buffer2); + for (int i=0;i<core_count;i++){ + user_config_print_values_auto(DSHM_visible_label_count,labelVisual_perCore[i],shared_label_core[i],prv_val_preCore[i]); + } + user_config_print_values_auto(SHM_visible_label_count,labelVisual_SHM,shared_label_to_read,prv_val_SHM); + fprintf(stderr,"\n"); + nsleep(1); + } + fprintf(stderr,"----------------------------------------------\n"); + e_close(&dev); + e_finalize(); + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + fprintf(stderr,"RFTP demo complete \n "); + return 0; +} + diff --git a/RTFParallella/src/parallella/host_utils.c b/RTFParallella/src/parallella/host_utils.c new file mode 100755 index 0000000..d827db5 --- /dev/null +++ b/RTFParallella/src/parallella/host_utils.c @@ -0,0 +1,127 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#include "host_utils.h" + +void array_init(unsigned array[],unsigned array_size){ + for (int i=0;i<array_size;i++){ + array[i] = 0; + } +} + + +void user_config_print_legend(LabelVisual core_config,unsigned array[]){ + for (int i=0;i<core_config.num_visible_labels;i++){ + fprintf(stderr,"(L,%u,%u,%u)|",core_config.row,core_config.col,array[i]); + } +} + +void user_config_print_values(LabelVisual core_config,unsigned array[],unsigned int values_array[],unsigned int prv_val_array[]){ + for(int i=0;i<core_config.num_visible_labels;i++){ + int val_ind = array[i]; + unsigned int val_to_print = values_array[val_ind]; + if (val_to_print == prv_val_array[val_ind]){ + fprintf(stderr," ---- |"); + }else { + fprintf(stderr," %4d |",val_to_print); + prv_val_array[val_ind] = val_to_print; + } + + } +} + +LabelVisual get_user_input(unsigned indices[]){ + unsigned row_in,col_in,label_num; + printf("Enter row and column of core to read "); + scanf("%u,%u",&row_in,&col_in); + printf("Enter number of visible labels"); + scanf("%u",&label_num); + unsigned visible_label_array[label_num]; + printf("Enter indices of labels\n"); + for (int i=0;i<label_num;i++){ + scanf("%u",&indices[i]); + } + LabelVisual retVal; + retVal.row = row_in; + retVal.col = col_in; + retVal.num_visible_labels = label_num; + return retVal; +} + + +void user_config_print_legend_auto(unsigned array_length,unsigned array[]){ + for (int i=0;i<array_length;i++){ + fprintf(stderr,"(F,%u)|",array[i]); + } +} + +void user_config_print_values_auto(unsigned visible_label_count,unsigned array[],unsigned int values_array[],unsigned int prv_val_array[]){ + for(int i=0;i<visible_label_count;i++){ + int val_ind = array[i]; + unsigned int val_to_print = values_array[val_ind]; + if (val_to_print == prv_val_array[val_ind]){ + fprintf(stderr," |"); + }else { + fprintf(stderr," %10d |",val_to_print); + prv_val_array[val_ind] = val_to_print; + } + } +} + +unsigned get_user_input_DRAM(unsigned indices[]){ + unsigned label_num; + printf("Enter number of visible labels( shared mem)"); + scanf("%u",&label_num); + unsigned visible_label_array[label_num]; + printf("Enter indices of labels\n"); + for (int i=0;i<label_num;i++){ + scanf("%u",&indices[i]); + } + return label_num; +} + +void print_legend_enum (unsigned label_count,unsigned label_positions[], unsigned memory_type){ + char buf[label_count*label_str_len]; + for (int i=0;i<label_str_len;i++){ + buf[i] = ""; + } + char small_buf[label_str_len]; + //array_init(buf,label_str_len); + if (memory_type==MEM_TYPE_SHM){ + for (int i=0;i<label_count;i++){ + get_SHM_label_name(i,small_buf); + fprintf(stderr,"| %s ",small_buf); + //fflush(stderr); + } + } else { + for (int i=0;i<label_count;i++){ + get_DSHM_label_name(i,small_buf); + fprintf(stderr,"| %s ", small_buf); + } + } + //fprintf(stderr,"%s",buf); + //fflush(stderr); +} + + +int nsleep(long miliseconds){ + struct timespec req, rem; + if(miliseconds > 999){ + req.tv_sec = (int)(miliseconds / 1000); /* Must be Non-Negative */ + req.tv_nsec = (miliseconds - ((long)req.tv_sec * 1000)) * 1000000; /* Must be in range of 0 to 999999999 */ + } else { + req.tv_sec = 0; /* Must be Non-Negative */ + req.tv_nsec = miliseconds * 1000000; /* Must be in range of 0 to 999999999 */ + } + return nanosleep(&req , &rem); +} diff --git a/RTFParallella/src/parallella/host_utils.h b/RTFParallella/src/parallella/host_utils.h new file mode 100644 index 0000000..140336d --- /dev/null +++ b/RTFParallella/src/parallella/host_utils.h @@ -0,0 +1,64 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +//#include <e-hal.h> //hardware abstraction library +#include <time.h> /* Needed for struct timespec */ +//rtfp imports +#include "c2c.h" +#include "debugFlags.h" +#include "shared_comms.h" +#include "model_enumerations.h" + +#define READ_PRECISION_US 1000 + +#define MEM_TYPE_SHM 0 +#define MEM_TYPE_DSHM 1 + +typedef struct{ + unsigned row; + unsigned col; + unsigned num_visible_labels; +}LabelVisual; + +/** + * read a value of a label in a distributed shared memory section + * + * Arguments: + * row : absolute row number of the core + * col : absolute column number of the core + * label_indx : index of the target shared label + * + */ +void array_init(unsigned array[],unsigned array_size); + +void user_config_print_legend(LabelVisual core_config,unsigned array[]); + +void user_config_print_values(LabelVisual core_config,unsigned array[],unsigned int values_array[],unsigned int prv_val_array[]); + +LabelVisual get_user_input(unsigned indices[]); + +void user_config_print_legend_auto(unsigned array_length,unsigned array[]); + +void user_config_print_values_auto(unsigned visible_label_count,unsigned array[],unsigned int values_array[],unsigned int prv_val_array[]); + +unsigned get_user_input_DRAM(unsigned indices[]); + +void print_legend_enum (unsigned label_count,unsigned label_positions[], unsigned memory_type); + +int nsleep(long miliseconds); + + diff --git a/RTFParallella/src/parallella/model_enumerations.c b/RTFParallella/src/parallella/model_enumerations.c new file mode 100644 index 0000000..dce7949 --- /dev/null +++ b/RTFParallella/src/parallella/model_enumerations.c @@ -0,0 +1,88 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#include "model_enumerations.h" + + +char SHM_sec1_enum [SHM_section1_label_count][label_str_len] = +{ + "sh_label_a", + "sh_label_b", + "sh_label_c", + "sh_label_d", + "sh_label_e", + "sh_label_f", + "sh_label_g", + "sh_label_h", + "sh_label_i", + "sh_label_j" +}; + +char DSHM_sec1_enum [DSHM_section1_label_count][label_str_len] = +{ + "DSH_labelA", + "DSH_labelB", + "DSH_labelC", + "DSH_labelD", + "DSH_labelE", + "DSH_labelF", + "DSH_labelG", + "DSH_labelH", + "DSH_labelI", + "DSH_labelJ" +}; + +char task_enum [task_count +1][label_str_len] = +{ + "[idle]", + "Task5ms0", + "Task10ms0", + "Task20ms0", + "Task10ms1", + "Task20ms1" +}; + +unsigned DSHM_visible_labels [DSHM_visible_label_count] = {0,1}; +unsigned SHM_visible_labels [SHM_visible_label_count] = {0,1}; + + + +void get_SHM_label_name (int index,char str[]){ + for (int i=0;i<label_str_len;i++){ + str[i] = SHM_sec1_enum[index][i]; + } +} + +void get_DSHM_label_name(int index,char str[]){ + for (int i=0;i<label_str_len;i++){ + str[i] = DSHM_sec1_enum[index][i]; + } +} + +void get_task_name(int index,char *str){ + for (int i=0;i<label_str_len;i++){ + str[i] = task_enum[index][i]; + } +} + +void get_visible_label_index(unsigned array[],unsigned mem_type){ + if (mem_type==0){ + for (int i=0; i<SHM_visible_label_count;i++){ + array[i] = SHM_visible_labels[i]; + } + } + for (int i=0; i<DSHM_visible_label_count;i++){ + array[i] = DSHM_visible_labels[i]; + } +} + diff --git a/RTFParallella/src/parallella/model_enumerations.h b/RTFParallella/src/parallella/model_enumerations.h new file mode 100644 index 0000000..5a32d0f --- /dev/null +++ b/RTFParallella/src/parallella/model_enumerations.h @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#ifndef SRC_PARALLELLA_MODEL_ENUMERATIONS_H_ +#define SRC_PARALLELLA_MODEL_ENUMERATIONS_H_ + + +#define SHM_section1_label_count 10 + +#define DSHM_section1_label_count 10 + +#define label_str_len 10 + +#define task_count 5 + +#define core_count 2 + +#define SHM_visible_label_count 2 + +#define DSHM_visible_label_count 2 + +/** + * Get the string name of DRAM shared label + * + * Arguments: + * index : shared label index in the shared memory section + * *str : pointer to buffer string that holds the name + */ +void get_SHM_label_name (int index,char *str); + +/** + * Get the string name of distributed shared label (on a core) + * + * Arguments: + * index : shared label index in the memory section + * *str : pointer to buffer string that holds the name + */ +void get_DSHM_label_name(int index,char *str); + +/** + * Get the string name of the task being run + * + * Arguments: + * index : task index in the task_enum array + * *str : pointer to buffer string that holds the name + */ +void get_task_name(int index,char *str); + +/** + * Get the indices of required labels to show in either shared memory or distributed shared memory + * + * Arguments: + * array : array buffer that holds the indices + * mem_type : the memory type of indices requested (MEM_TYPE_SHM or MEM_TYPE_DSHM) + */ +void get_visible_label_index(unsigned array[],unsigned mem_type); + + +#endif /* SRC_PARALLELLA_MODEL_ENUMERATIONS_H_ */ diff --git a/RTFParallella/src/parallella/shared_comms.c b/RTFParallella/src/parallella/shared_comms.c new file mode 100755 index 0000000..b400623 --- /dev/null +++ b/RTFParallella/src/parallella/shared_comms.c @@ -0,0 +1,58 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#include "shared_comms.h" + +unsigned int *outbuf_shared[shared_mem_section1_label_count]; + +void shared_labels_init(){ + outbuf_shared[0] = (unsigned int *) shared_mem_section; + outbuf_shared[1] = outbuf_shared[0] + 1; + outbuf_shared[2] = outbuf_shared[1] + 1; + outbuf_shared[3] = outbuf_shared[2] + 1; + outbuf_shared[4] = outbuf_shared[3] + 1; + outbuf_shared[5] = outbuf_shared[4] + 1; + outbuf_shared[6] = outbuf_shared[5] + 1; + outbuf_shared[7] = outbuf_shared[6] + 1; + outbuf_shared[8] = outbuf_shared[7] + 1; + //initialize buffer + int i; + //timer1init(); + for (i=0;i<shared_mem_section1_label_count;i++){ + *outbuf_shared[i] =0; + } +} + +/*void shared_labels_init_multi(){ + +}*/ + + + +uint8_t shared_label_write(int label_indx,int payload){ + uint8_t retval=NULL; + *outbuf_shared[label_indx] = payload; + /*if (payload == *outbuf_shared[label_indx]){ + retval = 1; + }*/ + return retval; +} + + +unsigned int shared_label_read(int label_indx){ + return *outbuf_shared[label_indx]; +} + + + +//-------------------end of file-------------------------// diff --git a/RTFParallella/src/parallella/shared_comms.h b/RTFParallella/src/parallella/shared_comms.h new file mode 100755 index 0000000..39eb8d7 --- /dev/null +++ b/RTFParallella/src/parallella/shared_comms.h @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#ifndef SRC_PARALLELLA_SHARED_COMMS_H_ +#define SRC_PARALLELLA_SHARED_COMMS_H_ + +#include <stdlib.h> +#include <stdint.h> + + +#define shared_mem_section 0x01000000 + +#define shared_mem_section_2 0x01001000 + +#define shared_mem_section1_label_count 10 + + +/** + * Initiate the shared label section, this funcion will assign addresses to labels in a section, + * and initialize those labels to 0 + * + * Arguments: + * + */ +void shared_labels_init(); + +/** + * write a value to a label in a shared memory(DRAM) section + * + * Arguments: + * label_indx : index of the target shared label + * payload : value to write + * + */ +uint8_t shared_label_write (int label_indx,int payload); + +/** + * read a value of a label in a shared memory(DRAM) section + * + * Arguments: + * label_indx : index of the target shared label + * + */ +unsigned int shared_label_read(int label_indx); + + +#endif /* SRC_PARALLELLA_SHARED_COMMS_H_ */ diff --git a/RTFParallella/src/parallella/taskCode.c b/RTFParallella/src/parallella/taskCode.c new file mode 100755 index 0000000..06c4ae0 --- /dev/null +++ b/RTFParallella/src/parallella/taskCode.c @@ -0,0 +1,121 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#include "taskCode.h" + +/* define global variables to be + * accessed through a specific task (context) + */ +//task recurrence counters +int passes1 = 0; +int passes2 = 0; +int passes3 = 0; +int passes4 = 0; +int passes5 = 0; + +//extern unsigned int shared_label1; + +int label5_10_00; + +int label5_10_00_copy1; + +int shared_label_1; +int shared_label_2 = 97; + +//define tasks and copy operations here +//------- +void handler5ms(){ + int localLabel; + updateDebugFlag(700); + sleepTimerMs(2,1); + passes1++; + traceTaskPasses(1,passes1); + traceRunningTask(0); +} + +void handler10ms(){ + updateDebugFlag(800); + sleepTimerMs(3,2); + passes2++; + traceTaskPasses(2,passes2); + traceRunningTask(0); + +} + +void handler20ms(){ + updateDebugFlag(899); + sleepTimerMs(5,3); + passes3++; + traceRunningTask(0); + traceTaskPasses(3,passes3); + +} + +void handler10msCore2(){ + updateDebugFlag(899); + sleepTimerMs(3,4); + passes4++; + //shared_label1 = shared_label_to_read; + traceRunningTask(0); + traceTaskPasses(2,passes4); +} + +void handler20msCore2(){ + updateDebugFlag(899); + sleepTimerMs(7,5); + passes5++; + traceRunningTask(0); + traceTaskPasses(3,passes5); +} + + + + + +//------- +void cIn5ms(){ + label5_10_00_copy1 = label5_10_00; + shared_label_2 = 97 + passes1; +} +void cIn10ms(){ + +} +void cIn20ms(){ + +} + +void cIn10msCore2(){ + shared_label_1 = shared_label_read_core(1,0,0); +} +void cIn20msCore2(){ + +} + +//------- +void cOut5ms(){ + label5_10_00 = label5_10_00_copy1; + shared_label_write_core(1,0,0,shared_label_2); +} +void cOut10ms(){ + shared_label_write(0,2); +} +void cOut20ms(){ + +} +void cOut10msCore2(){ + shared_label_1++; + shared_label_write(1,shared_label_1); +} +void cOut20msCore2(){ + +} diff --git a/RTFParallella/src/parallella/taskCode.h b/RTFParallella/src/parallella/taskCode.h new file mode 100755 index 0000000..817adff --- /dev/null +++ b/RTFParallella/src/parallella/taskCode.h @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Dortmund University of Applied Sciences and Arts - initial API and implementation + *******************************************************************************/ + +#ifndef SRC_PARALLELLA_TASKCODE_H_ +#define SRC_PARALLELLA_TASKCODE_H_ +#include "c2c.h" +#include "debugFlags.h" +#include "ParallellaUtils.h" +#include "shared_comms.h" +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" + +//declare taskHandler functions + +void handler5ms(); +void handler10ms(); +void handler20ms(); +void handler10msCore2(); +void handler20msCore2(); +//------- +//declare cIn/Out operations +//to be set up from the amalthea model during +//code generation +void cIn5ms(); +void cIn10ms(); +void cIn20ms(); +void cIn10msCore2(); +void cIn20msCore2(); +//------- +void cOut5ms(); +void cOut10ms(); +void cOut20ms(); +void cOut10msCore2(); +void cOut20msCore2(); + +#endif /* SRC_PARALLELLA_TASKCODE_H_ */ |