Rename CORTEX_R4_RM48_CCS5 directory as it also includes the TMS570 code.

pull/1/head
Richard Barry 13 years ago
parent 2a47ddd1f5
commit 01bca41038

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?ccsproject version="1.0"?>
<projectOptions>
<deviceVariant value="Cortex R.RM48L952"/>
<deviceFamily value="TMS470"/>
<deviceEndianness value="little"/>
<codegenToolVersion value="4.9.5"/>
<isElfFormat value="true"/>
<connection value="common/targetdb/connections/TIXDS100v2_Connection.xml"/>
<rts value="rtsv7R4_T_le_v3D16_eabi.lib"/>
<templateProperties value="id=com.ti.common.project.core.emptyProjectWithMainTemplate,"/>
</projectOptions>

@ -1,180 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule configRelations="2" moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.580416121">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.580416121" moduleId="org.eclipse.cdt.core.settings" name="Without_FPU">
<externalSettings/>
<extensions>
<extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="com.ti.ccstudio.errorparser.CoffErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="com.ti.ccstudio.errorparser.LinkErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="com.ti.ccstudio.errorparser.AsmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.580416121" name="Without_FPU" parent="com.ti.ccstudio.buildDefinitions.TMS470.Debug">
<folderInfo id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.580416121." name="/" resourcePath="">
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.DebugToolchain.2131003966" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug.1033617493">
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2072640321" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=Cortex R.RM48L950"/>
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
<listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.1.0.01"/>
<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE=sys_link.cmd"/>
<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1381424494" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="4.9.7" valueType="string"/>
<targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.targetPlatformDebug.1179903155" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.targetPlatformDebug"/>
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.builderDebug.1089496991" keepEnvironmentInBuildfile="false" name="GNU Make" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.builderDebug"/>
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerDebug.696952532" name="ARM Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerDebug">
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.CODE_STATE.623387114" name="Designate code state, 16-bit (thumb) or 32-bit (--code_state)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.CODE_STATE.32" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.SILICON_VERSION.1841890606" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.SILICON_VERSION.7R4" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.FLOAT_SUPPORT.167466935" name="Specify floating point support (--float_support)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.FLOAT_SUPPORT" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.FLOAT_SUPPORT._none" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ABI.1404444528" name="Application binary interface (tiabi, ti_arm9_abi, eabi) (--abi)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ABI.eabi" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ENUM_TYPE.443601845" name="Designate enum type (Default is packed for EABI) (--enum_type)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ENUM_TYPE" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ENUM_TYPE.packed" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.LITTLE_ENDIAN.514210421" name="Little endian code (--little_endian, -me)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.OPT_LEVEL.267212406" name="Optimization level (--opt_level, -O)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.OPT_LEVEL.3" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEBUGGING_MODEL.1669626848" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.INCLUDE_PATH.1953076587" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.INCLUDE_PATH" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Library}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Common-Demo-Source/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/FreeRTOS/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/FreeRTOS/portable/CCS/ARM_Cortex-R4}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${CG_TOOL_ROOT}/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/startup}&quot;"/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DIAG_WARNING.588172833" name="Treat diagnostic &lt;id&gt; as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DIAG_WARNING" valueType="stringList">
<listOptionValue builtIn="false" value="225"/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DISPLAY_ERROR_NUMBER.1829685666" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__C_SRCS.1529542724" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__C_SRCS"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__CPP_SRCS.1515585759" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__CPP_SRCS"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM_SRCS.254481684" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM_SRCS"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM2_SRCS.892140900" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM2_SRCS"/>
</tool>
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug.1033617493" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug">
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.OUTPUT_FILE.1902415178" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.OUTPUT_FILE" value="&quot;${ProjName}.out&quot;" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.STACK_SIZE.1479532073" name="Set C system stack size (--stack_size, -stack)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.STACK_SIZE" value="0" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.MAP_FILE.749910416" name="Input and output sections listed into &lt;file&gt; (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.MAP_FILE" value="&quot;${ProjName}.map&quot;" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.HEAP_SIZE.153308438" name="Heap size for C/C++ dynamic memory allocation (--heap_size, -heap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.HEAP_SIZE" value="4096" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.SEARCH_PATH.1359859481" name="Add &lt;dir&gt; to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.SEARCH_PATH" valueType="stringList">
<listOptionValue builtIn="false" value="&quot;${CG_TOOL_ROOT}/lib&quot;"/>
<listOptionValue builtIn="false" value="&quot;${CG_TOOL_ROOT}/include&quot;"/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.DISPLAY_ERROR_NUMBER.1618522691" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.LIBRARY.498176643" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.LIBRARY" valueType="libs">
<listOptionValue builtIn="false" value="&quot;libc.a&quot;"/>
</option>
</tool>
</toolChain>
</folderInfo>
<fileInfo id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.580416121.sys_link.cmd" name="sys_link.cmd" rcbsApplicability="disable" resourcePath="sys_link.cmd" toolsToInvoke="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug.1033617493.346117375">
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug.1033617493.346117375" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug.1033617493"/>
</fileInfo>
<sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
<cconfiguration id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.580416121.1629342573">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.580416121.1629342573" moduleId="org.eclipse.cdt.core.settings" name="With_FPU">
<externalSettings/>
<extensions>
<extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="com.ti.ccstudio.errorparser.CoffErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="com.ti.ccstudio.errorparser.LinkErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="com.ti.ccstudio.errorparser.AsmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.580416121.1629342573" name="With_FPU" parent="com.ti.ccstudio.buildDefinitions.TMS470.Debug">
<folderInfo id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.580416121.1629342573." name="/" resourcePath="">
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.DebugToolchain.1409377084" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug.1033617493">
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.1069870709" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=Cortex R.RM48L950"/>
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
<listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.1.0.01"/>
<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE=sys_link.cmd"/>
<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.917449487" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="4.9.7" valueType="string"/>
<targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.targetPlatformDebug.377149914" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.targetPlatformDebug"/>
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.builderDebug.10592361" keepEnvironmentInBuildfile="false" name="GNU Make" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.builderDebug"/>
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerDebug.1091814429" name="ARM Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerDebug">
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.CODE_STATE.90735372" name="Designate code state, 16-bit (thumb) or 32-bit (--code_state)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.CODE_STATE.32" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.SILICON_VERSION.1017275641" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.SILICON_VERSION.7R4" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.FLOAT_SUPPORT.311679819" name="Specify floating point support (--float_support)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.FLOAT_SUPPORT" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.FLOAT_SUPPORT.VFPv3D16" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ABI.987144696" name="Application binary interface (tiabi, ti_arm9_abi, eabi) (--abi)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ABI.eabi" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ENUM_TYPE.533021714" name="Designate enum type (Default is packed for EABI) (--enum_type)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ENUM_TYPE" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ENUM_TYPE.packed" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.LITTLE_ENDIAN.547652161" name="Little endian code (--little_endian, -me)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.OPT_LEVEL.1159973282" name="Optimization level (--opt_level, -O)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.OPT_LEVEL.3" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEBUGGING_MODEL.1521598567" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.INCLUDE_PATH.207319174" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.INCLUDE_PATH" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Common-Demo-Source/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Library}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/FreeRTOS/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/FreeRTOS/portable/CCS/ARM_Cortex-R4}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${CG_TOOL_ROOT}/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/startup}&quot;"/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DIAG_WARNING.1653100908" name="Treat diagnostic &lt;id&gt; as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DIAG_WARNING" valueType="stringList">
<listOptionValue builtIn="false" value="225"/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DISPLAY_ERROR_NUMBER.1187428873" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.OPT_FOR_SPEED.2099723751" name="Optimize for speed (--opt_for_speed, -mf)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.OPT_FOR_SPEED._none" valueType="enumerated"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__C_SRCS.2129245761" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__C_SRCS"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__CPP_SRCS.1546995708" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__CPP_SRCS"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM_SRCS.935376908" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM_SRCS"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM2_SRCS.2079096160" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM2_SRCS"/>
</tool>
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug.2071872550" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug">
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.OUTPUT_FILE.427459274" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.OUTPUT_FILE" value="&quot;${ProjName}.out&quot;" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.STACK_SIZE.1308392207" name="Set C system stack size (--stack_size, -stack)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.STACK_SIZE" value="0" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.MAP_FILE.906805746" name="Input and output sections listed into &lt;file&gt; (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.MAP_FILE" value="&quot;${ProjName}.map&quot;" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.HEAP_SIZE.885342969" name="Heap size for C/C++ dynamic memory allocation (--heap_size, -heap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.HEAP_SIZE" value="4096" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.SEARCH_PATH.46804117" name="Add &lt;dir&gt; to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.SEARCH_PATH" valueType="stringList">
<listOptionValue builtIn="false" value="&quot;${CG_TOOL_ROOT}/lib&quot;"/>
<listOptionValue builtIn="false" value="&quot;${CG_TOOL_ROOT}/include&quot;"/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.DISPLAY_ERROR_NUMBER.1957385137" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.LIBRARY.1354746240" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.LIBRARY" valueType="libs">
<listOptionValue builtIn="false" value="&quot;libc.a&quot;"/>
</option>
</tool>
</toolChain>
</folderInfo>
<fileInfo id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.580416121.1629342573.sys_link.cmd" name="sys_link.cmd" rcbsApplicability="disable" resourcePath="sys_link.cmd" toolsToInvoke="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug.1153043732">
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug.1153043732" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug.2071872550"/>
</fileInfo>
<sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="FreeRTOS-RM48.com.ti.ccstudio.buildDefinitions.TMS470.ProjectType.470036695" name="ARM" projectType="com.ti.ccstudio.buildDefinitions.TMS470.ProjectType"/>
</storageModule>
<storageModule moduleId="scannerConfiguration"/>
<storageModule moduleId="org.eclipse.cdt.core.language.mapping">
<project-mappings>
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.asmSource" language="com.ti.ccstudio.core.TIASMLanguage"/>
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cHeader" language="com.ti.ccstudio.core.TIGCCLanguage"/>
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cSource" language="com.ti.ccstudio.core.TIGCCLanguage"/>
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cxxHeader" language="com.ti.ccstudio.core.TIGPPLanguage"/>
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cxxSource" language="com.ti.ccstudio.core.TIGPPLanguage"/>
</project-mappings>
</storageModule>
<storageModule moduleId="refreshScope"/>
</cproject>

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>FreeRTOS-RM48</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value>-k</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>${CCS_UTILS_DIR}/bin/gmake</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value>${BuildDirectory}</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>true</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.ti.ccstudio.core.ccsNature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

@ -1,3 +0,0 @@
eclipse.preferences.version=1
inEditor=false
onBuild=false

@ -1,2 +0,0 @@
eclipse.preferences.version=1
org.eclipse.cdt.debug.core.toggleBreakpointModel=com.ti.ccstudio.debug.CCSBreakpointMarker

@ -1,39 +0,0 @@
eclipse.preferences.version=1
encoding//With_FPU/Common-Demo-Source/subdir_rules.mk=UTF-8
encoding//With_FPU/Common-Demo-Source/subdir_vars.mk=UTF-8
encoding//With_FPU/FreeRTOS/portable/CCS/ARM_Cortex-R4_RM48_TMS570/subdir_rules.mk=UTF-8
encoding//With_FPU/FreeRTOS/portable/CCS/ARM_Cortex-R4_RM48_TMS570/subdir_vars.mk=UTF-8
encoding//With_FPU/FreeRTOS/portable/MemMang/subdir_rules.mk=UTF-8
encoding//With_FPU/FreeRTOS/portable/MemMang/subdir_vars.mk=UTF-8
encoding//With_FPU/FreeRTOS/subdir_rules.mk=UTF-8
encoding//With_FPU/FreeRTOS/subdir_vars.mk=UTF-8
encoding//With_FPU/Library/subdir_rules.mk=UTF-8
encoding//With_FPU/Library/subdir_vars.mk=UTF-8
encoding//With_FPU/RM48_FreeRTOS_Demo/source/subdir_rules.mk=UTF-8
encoding//With_FPU/RM48_FreeRTOS_Demo/source/subdir_vars.mk=UTF-8
encoding//With_FPU/makefile=UTF-8
encoding//With_FPU/objects.mk=UTF-8
encoding//With_FPU/sources.mk=UTF-8
encoding//With_FPU/startup/subdir_rules.mk=UTF-8
encoding//With_FPU/startup/subdir_vars.mk=UTF-8
encoding//With_FPU/subdir_rules.mk=UTF-8
encoding//With_FPU/subdir_vars.mk=UTF-8
encoding//Without_FPU/Common-Demo-Source/subdir_rules.mk=UTF-8
encoding//Without_FPU/Common-Demo-Source/subdir_vars.mk=UTF-8
encoding//Without_FPU/FreeRTOS/portable/CCS/ARM_Cortex-R4/subdir_rules.mk=UTF-8
encoding//Without_FPU/FreeRTOS/portable/CCS/ARM_Cortex-R4/subdir_vars.mk=UTF-8
encoding//Without_FPU/FreeRTOS/portable/MemMang/subdir_rules.mk=UTF-8
encoding//Without_FPU/FreeRTOS/portable/MemMang/subdir_vars.mk=UTF-8
encoding//Without_FPU/FreeRTOS/subdir_rules.mk=UTF-8
encoding//Without_FPU/FreeRTOS/subdir_vars.mk=UTF-8
encoding//Without_FPU/Library/subdir_rules.mk=UTF-8
encoding//Without_FPU/Library/subdir_vars.mk=UTF-8
encoding//Without_FPU/RM48_FreeRTOS_Demo/source/subdir_rules.mk=UTF-8
encoding//Without_FPU/RM48_FreeRTOS_Demo/source/subdir_vars.mk=UTF-8
encoding//Without_FPU/makefile=UTF-8
encoding//Without_FPU/objects.mk=UTF-8
encoding//Without_FPU/sources.mk=UTF-8
encoding//Without_FPU/startup/subdir_rules.mk=UTF-8
encoding//Without_FPU/startup/subdir_vars.mk=UTF-8
encoding//Without_FPU/subdir_rules.mk=UTF-8
encoding//Without_FPU/subdir_vars.mk=UTF-8

@ -1,58 +0,0 @@
REM This file should be executed from the command line prior to the first
REM build. It will be necessary to refresh the Eclipse project once the
REM .bat file has been executed (normally just press F5 to refresh).
REM Copies all the required files from their location within the standard
REM FreeRTOS directory structure to under the Eclipse project directory.
REM This permits the Eclipse project to be used in 'managed' mode and without
REM having to setup any linked resources.
REM Standard paths
SET FREERTOS_SOURCE=..\..\Source
SET COMMON_SOURCE=..\Common\minimal
SET COMMON_INCLUDE=..\Common\include
REM Have the files already been copied?
IF EXIST .\FreeRTOS_Source Goto END
REM Create the required directory structure.
MD FreeRTOS
MD FreeRTOS\include
MD FreeRTOS\portable
MD FreeRTOS\portable\CCS
MD FreeRTOS\portable\CCS\ARM_Cortex-R4
MD FreeRTOS\portable\MemMang
MD Common-Demo-Source
MD Common-Demo-Source\include
REM Copy the core kernel files into the project directory
copy %FREERTOS_SOURCE%\tasks.c FreeRTOS
copy %FREERTOS_SOURCE%\queue.c FreeRTOS
copy %FREERTOS_SOURCE%\list.c FreeRTOS
copy %FREERTOS_SOURCE%\timers.c FreeRTOS
REM Copy the common header files into the project directory
copy %FREERTOS_SOURCE%\include\*.* FreeRTOS\include
REM Copy the portable layer files into the project directory
copy %FREERTOS_SOURCE%\portable\CCS\ARM_Cortex-R4\*.* FreeRTOS\portable\CCS\ARM_Cortex-R4
REM Copy the memory allocation files into the project directory
copy %FREERTOS_SOURCE%\portable\MemMang\heap_4.c FreeRTOS\portable\MemMang
REM Copy the files that define the common demo tasks.
copy %COMMON_SOURCE%\dynamic.c Common-Demo-Source
copy %COMMON_SOURCE%\BlockQ.c Common-Demo-Source
copy %COMMON_SOURCE%\death.c Common-Demo-Source
copy %COMMON_SOURCE%\blocktim.c Common-Demo-Source
copy %COMMON_SOURCE%\semtest.c Common-Demo-Source
copy %COMMON_SOURCE%\PollQ.c Common-Demo-Source
copy %COMMON_SOURCE%\GenQTest.c Common-Demo-Source
copy %COMMON_SOURCE%\recmutex.c Common-Demo-Source
copy %COMMON_SOURCE%\countsem.c Common-Demo-Source
copy %COMMON_SOURCE%\integer.c Common-Demo-Source
REM Copy the common demo file headers.
copy %COMMON_INCLUDE%\*.h Common-Demo-Source\include
: END

@ -1,142 +0,0 @@
/*
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong?" *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest versions, license
and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
/*
* The following #error directive is to remind users that a batch file must be
* executed prior to this project being built. Once it has been executed
* remove the #error line below.
*/
#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above.
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*
* See http://www.freertos.org/a00110.html.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
#define configUSE_FPU 1
#define configUSE_IDLE_HOOK 1
#define configUSE_TICK_HOOK 1
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 80000000 ) /* Timer clock. */
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( 8 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 128 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) 32768 )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configIDLE_SHOULD_YIELD 1
#define configGENERATE_RUN_TIME_STATS 0
#define configUSE_MALLOC_FAILED_HOOK 1
#define configCHECK_FOR_STACK_OVERFLOW 2
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Mutexes */
#define configUSE_MUTEXES 1
#define configUSE_RECURSIVE_MUTEXES 1
/* Semaphores */
#define configUSE_COUNTING_SEMAPHORES 1
/* Timers */
#define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY ( 2 )
#define configTIMER_QUEUE_LENGTH 10
#define configTIMER_TASK_STACK_DEPTH ( 128 )
/* Set the following definitions to 1 to include the API function, or zero to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_xTaskResumeFromISR 0
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#define INCLUDE_xTaskGetSchedulerState 1
#define INCLUDE_uxTaskGetStackHighWaterMark 1
#define configASSERT( x ) if( ( x ) == pdFALSE ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
#endif /* FREERTOS_CONFIG_H */

@ -1,281 +0,0 @@
/** @file gio.c
* @brief GIO Driver Inmplmentation File
* @date 10.June.2010
* @version 1.01.000
*
*/
/* (c) Texas Instruments 2009-2010, All rights reserved. */
#include "gio.h"
/** @fn void gioInit(void)
* @brief Initializes the GIO Driver
*
* This function initializes the GIO module and set the GIO ports
* to the inital values.
*/
void gioInit(void)
{
/** bring GIO module out of reset */
gioREG->GCR0 = 1;
gioREG->INTENACLR = 0xFF;
gioREG->LVLCLR = 0xFF;
/** @b initalise @b Port @b A */
/** - Port A output values */
gioPORTA->DOUT = 0 /* Bit 0 */
| (0 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
/** - Port A direction */
gioPORTA->DIR = 1 /* Bit 0 */
| (1 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
/** - Port A open drain enable */
gioPORTA->PDR = 0 /* Bit 0 */
| (0 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
/** - Port A pullup / pulldown selection */
gioPORTA->PSL = 0 /* Bit 0 */
| (0 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
/** - Port A pullup / pulldown enable*/
gioPORTA->PULDIS = 0 /* Bit 0 */
| (0 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
/** @b initalise @b Port @b B */
/** - Port B output values */
gioPORTB->DOUT = 0 /* Bit 0 */
| (0 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
/** - Port B direction */
gioPORTB->DIR = 0 /* Bit 0 */
| (0 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
/** - Port B open drain enable */
gioPORTB->PDR = 0 /* Bit 0 */
| (0 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
/** - Port B pullup / pulldown selection */
gioPORTB->PSL = 0 /* Bit 0 */
| (0 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
/** - Port B pullup / pulldown enable*/
gioPORTB->PULDIS = 0 /* Bit 0 */
| (0 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
/** @b initalise @b interrupts */
/** - interrupt polarity */
gioREG->POL = 0 /* Bit 0 */
| (0 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
/** - interrupt level */
gioREG->LVLSET = 0 /* Bit 0 */
| (0 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
/** - clear all pending interrupts */
gioREG->FLG = 0xFF;
/** - enable interrupts */
gioREG->INTENASET = 0 /* Bit 0 */
| (0 << 1) /* Bit 1 */
| (0 << 2) /* Bit 2 */
| (0 << 3) /* Bit 3 */
| (0 << 4) /* Bit 4 */
| (0 << 5) /* Bit 5 */
| (0 << 6) /* Bit 6 */
| (0 << 7); /* Bit 7 */
}
/** @fn void gioSetDirection(gioPORT_t *port, unsigned dir)
* @brief Set Port Direction
* @param[in] port pointer to GIO port:
* - gioPORTA: PortA pointer
* - gioPORTB: PortB pointer
* @param[in] dir value to write to DIR register
*
* Set the direction of GIO pins at runtime.
*/
void gioSetDirection(gioPORT_t *port, unsigned dir)
{
port->DIR = dir;
}
/** @fn void gioSetBit(gioPORT_t *port, unsigned bit, unsigned value)
* @brief Write Bit
* @param[in] port pointer to GIO port:
* - gioPORTA: PortA pointer
* - gioPORTB: PortB pointer
* @param[in] bit number 0-7 that specifies the bit to be written to.
* - 0: LSB
* - 7: MSB
* @param[in] value binrary value to write to bit
*
* Writes a value to the specified pin of the given GIO port
*/
void gioSetBit(gioPORT_t *port, unsigned bit, unsigned value)
{
if (value)
{
port->DSET = 1 << bit;
}
else
{
port->DCLR = 1 << bit;
}
}
/** @fn void gioSetPort(gioPORT_t *port, unsigned value)
* @brief Write Port Value
* @param[in] port pointer to GIO port:
* - gioPORTA: PortA pointer
* - gioPORTB: PortB pointer
* @param[in] value value to write to port
*
* Writes a value to all pin of a given GIO port
*/
void gioSetPort(gioPORT_t *port, unsigned value)
{
port->DOUT = value;
}
/** @fn unsigned gioGetBit(gioPORT_t *port, unsigned bit)
* @brief Read Bit
* @param[in] port pointer to GIO port:
* - gioPORTA: PortA pointer
* - gioPORTB: PortB pointer
* @param[in] bit number 0-7 that specifies the bit to be written to.
* - 0: LSB
* - 7: MSB
*
* Reads a the current value from the specified pin of the given GIO port
*/
unsigned gioGetBit(gioPORT_t *port, unsigned bit)
{
return (port->DIN >> bit) & 1U;
}
/** @fn unsigned gioGetPort(gioPORT_t *port)
* @brief Read Port Value
* @param[in] port pointer to GIO port:
* - gioPORTA: PortA pointer
* - gioPORTB: PortB pointer
*
* Reads a the current value of a given GIO port
*/
unsigned gioGetPort(gioPORT_t *port)
{
return port->DIN;
}
/** @fn void gioEnableNotification(unsigned bit)
* @brief Enable Interrupt
* @param[in] bit interrupt pin to enable
* - 0: LSB
* - 7: MSB
*
* Enables an innterrupt pin of PortA
*/
void gioEnableNotification(unsigned bit)
{
gioREG->INTENASET = 1 << bit;
}
/** @fn void gioDisableNotification(unsigned bit)
* @brief Disable Interrupt
* @param[in] bit interrupt pin to enable
* - 0: LSB
* - 7: MSB
*
* Disables an innterrupt pin of PortA
*/
void gioDisableNotification(unsigned bit)
{
gioREG->INTENACLR = 1 << bit;
}

@ -1,94 +0,0 @@
/** @file gio.h
* @brief GIO Driver Definition File
* @date 11.August.2009
* @version 1.01.000
*
*/
/* (c) Texas Instruments 2009-2010, All rights reserved. */
#ifndef __GIO_H__
#define __GIO_H__
/** @struct gioBase
* @brief GIO Base Register Definition
*
* This structure is used to access the GIO module egisters.
*/
/** @typedef gioBASE_t
* @brief GIO Register Frame Type Definition
*
* This type is used to access the GIO Registers.
*/
typedef volatile struct gioBase
{
unsigned GCR0; /**< 0x0000: Global Control Register */
unsigned PWDN; /**< 0x0004: Power Down Register */
unsigned INTDET; /**< 0x0008: Interrupt Detect Regsiter*/
unsigned POL; /**< 0x000C: Interrupt Polarity Register */
unsigned INTENASET; /**< 0x0010: Interrupt Enable Set Register */
unsigned INTENACLR; /**< 0x0014: Interrupt Enable Clear Register */
unsigned LVLSET; /**< 0x0018: Interrupt Priority Set Register */
unsigned LVLCLR; /**< 0x001C: Interrupt Priority Clear Register */
unsigned FLG; /**< 0x0020: Interrupt Flag Register */
unsigned OFFSET0; /**< 0x0024: Interrupt Offset A Register */
unsigned OFFSET1; /**< 0x0028: Interrupt Offset B Register */
} gioBASE_t;
/** @struct gioPort
* @brief GIO Port Register Definition
*/
/** @typedef gioPORT_t
* @brief GIO Port Register Type Definition
*
* This type is used to access the GIO Port Registers.
*/
typedef volatile struct gioPort
{
unsigned DIR; /**< 0x0000: Data Direction Register */
unsigned DIN; /**< 0x0004: Data Input Register */
unsigned DOUT; /**< 0x0008: Data Output Register */
unsigned DSET; /**< 0x000C: Data Output Set Register */
unsigned DCLR; /**< 0x0010: Data Output Clear Register */
unsigned PDR; /**< 0x0014: Open Drain Regsiter */
unsigned PULDIS; /**< 0x0018: Pullup Disable Register */
unsigned PSL; /**< 0x001C: Pull Up/Down Selection Register */
} gioPORT_t;
/** @def gioREG
* @brief GIO Register Frame Pointer
*
* This pointer is used by the GIO driver to access the gio module registers.
*/
#define gioREG ((gioBASE_t *)0xFFF7BC00U)
/** @def gioPORTA
* @brief GIO Port (A) Register Pointer
*
* Pointer used by the GIO driver to access PORTA
*/
#define gioPORTA ((gioPORT_t *)0xFFF7BC34U)
/** @def gioPORTB
* @brief GIO Port (B) Register Pointer
*
* Pointer used by the GIO driver to access PORTB
*/
#define gioPORTB ((gioPORT_t *)0xFFF7BC54U)
/* GIO Interface Functions */
void gioInit(void);
void gioSetDirection(gioPORT_t *port, unsigned dir);
void gioSetBit(gioPORT_t *port, unsigned bit, unsigned value);
void gioSetPort(gioPORT_t *port, unsigned value);
unsigned gioGetBit(gioPORT_t *port, unsigned bit);
unsigned gioGetPort(gioPORT_t *port);
void gioEnableNotification(unsigned bit);
void gioDisableNotification(unsigned bit);
void gioNotification(int bit);
#endif

@ -1,121 +0,0 @@
/*
FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
#include "FreeRTOS.h"
#include "Task.h"
#include "gio.h"
#include "het.h"
/*
* Task that flashes the LEDS on the USB stick.
*
* This task is also run in Thumb mode to test the ARM/THUMB context switch
*/
#pragma TASK(vLedTask)
#pragma CODE_STATE(vLedTask, 16)
void vLedTask(void *pvParameters)
{
unsigned led = 0;
unsigned count = 0;
unsigned colour = 0;
/* Initalise the IO ports that drive the LEDs */
gioSetDirection(hetPORT, 0xFFFFFFFF);
/* switch all leds off */
gioSetPort(hetPORT, 0x08110034);
for(;;)
{
/* toggle on/off */
led ^= 1;
/* switch TOP row */
gioSetBit(hetPORT, 25, led);
gioSetBit(hetPORT, 18, led);
gioSetBit(hetPORT, 29, led);
/* switch BOTTOM row */
gioSetBit(hetPORT, 17, led ^ 1);
gioSetBit(hetPORT, 31, led ^ 1);
gioSetBit(hetPORT, 0, led ^ 1);
vTaskDelay(500);
if (++count > 5)
{
count = 0;
/* both leds to off */
gioSetBit(hetPORT, 2, 1); gioSetBit(hetPORT, 5, 1); gioSetBit(hetPORT, 20, 1);
gioSetBit(hetPORT, 4, 1); gioSetBit(hetPORT, 27, 1); gioSetBit(hetPORT, 16, 1);
switch(colour)
{
case 0:
gioSetBit(hetPORT, 2, 0); /* red */
gioSetBit(hetPORT, 4, 0);
colour++;
continue;
case 1:
gioSetBit(hetPORT, 5, 0); /* blue */
gioSetBit(hetPORT, 27, 0);
colour++;
continue;
case 2:
gioSetBit(hetPORT, 20, 0); /* green */
gioSetBit(hetPORT, 16, 0);
colour++;
continue;
}
colour = 0;
}
}
}

@ -1,128 +0,0 @@
/*
FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
#ifndef __HET_H__
#define __HET_H__
#include "gio.h"
/** @struct hetBase
* @brief HET Register Definition
*
* This structure is used to access the HET module egisters.
*/
/** @typedef hetBASE_t
* @brief HET Register Frame Type Definition
*
* This type is used to access the HET Registers.
*/
typedef volatile struct hetBase
{
unsigned GCR; /**< 0x0000: Global control register */
unsigned PFR; /**< 0x0004: Prescale factor register */
unsigned ADDR; /**< 0x0008: Current address register */
unsigned OFF1; /**< 0x000C: Interrupt offset register 1 */
unsigned OFF2; /**< 0x0010: Interrupt offset register 2 */
unsigned INTENAS; /**< 0x0014: Interrupt enable set register */
unsigned INTENAC; /**< 0x0018: Interrupt enable clear register */
unsigned EXC1; /**< 0x001C: Exeption control register 1 */
unsigned EXC2; /**< 0x0020: Exeption control register 2 */
unsigned PRY; /**< 0x0024: Interrupt priority register */
unsigned FLG; /**< 0x0028: Interrupt flag register */
unsigned : 32U; /**< 0x002C: Reserved */
unsigned : 32U; /**< 0x0030: Reserved */
unsigned HRSH; /**< 0x0034: High resoltion share register */
unsigned XOR; /**< 0x0038: XOR share register */
unsigned REQENS; /**< 0x003C: Request enable set register */
unsigned REQENC; /**< 0x0040: Request enable clear register */
unsigned REQDS; /**< 0x0044: Request destination select register */
unsigned : 32U; /**< 0x0048: Reserved */
unsigned DIR; /**< 0x004C: Direction register */
unsigned DIN; /**< 0x0050: Data input register */
unsigned DOUT; /**< 0x0054: Data output register */
unsigned DSET; /**< 0x0058: Data output set register */
unsigned DCLR; /**< 0x005C: Data output clear register */
unsigned PDR; /**< 0x0060: Open drain register */
unsigned PULDIS; /**< 0x0064: Pull disable register */
unsigned PSL; /**< 0x0068: Pull select register */
unsigned : 32U; /**< 0x006C: Reserved */
unsigned : 32U; /**< 0x0070: Reserved */
unsigned PCREG; /**< 0x0074: Parity control register */
unsigned PAR; /**< 0x0078: Parity address register */
unsigned PPR; /**< 0x007C: Parity pin select register */
unsigned SFPRLD; /**< 0x0080: Suppression filter preload register */
unsigned SFENA; /**< 0x0084: Suppression filter enable register */
unsigned : 32U; /**< 0x0088: Reserved */
unsigned LBPSEL; /**< 0x008C: Loop back pair select register */
unsigned LBPDIR; /**< 0x0090: Loop back pair direction register */
} hetBASE_t;
/** @def hetREG
* @brief HET Register Frame Pointer
*
* This pointer is used by the HET driver to access the het module registers.
*/
#define hetREG ((hetBASE_t *)0xFFF7B800U)
/** @def hetPORT
* @brief HET GIO Port Register Pointer
*
* Pointer used by the GIO driver to access I/O PORT of HET
* (use the GIO drivers to access the port pins).
*/
#define hetPORT ((gioPORT_t *)0xFFF7B84CU)
#endif

@ -1,144 +0,0 @@
/*
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong?" *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest versions, license
and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
/*-----------------------------------------------------------
* Simple IO routines to control the LEDs.
*-----------------------------------------------------------*/
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo includes. */
#include "partest.h"
/* Library includes. */
#include "het.h"
/* Port bits connected to LEDs. */
const unsigned long ulLEDBits[] = { 25, 18, 29, /* Bottom row. */
17, 31, 0, /* Top row. */
2, 5, 20, /* Red1, blue1, green1 */
4, 27, 16 }; /* Red2, blue2, green2 */
/* 1 turns a white LED on, or a coloured LED off. */
const unsigned long ulOnStates[] = { 1, 1, 1,
1, 1, 1,
0, 0, 0,
0, 0, 0 };
const unsigned long ulNumLEDs = sizeof( ulLEDBits ) / sizeof( unsigned long );
/*-----------------------------------------------------------*/
void vParTestInitialise( void )
{
unsigned long ul;
/* Initalise the IO ports that drive the LEDs */
gioSetDirection( hetPORT, 0xFFFFFFFF );
/* Turn all the LEDs off. */
for( ul = 0; ul < ulNumLEDs; ul++ )
{
gioSetBit( hetPORT, ulLEDBits[ ul ], !ulOnStates[ ul ] );
}
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned long ulLED, signed long xValue )
{
if( ulLED < ulNumLEDs )
{
if( xValue == pdFALSE )
{
xValue = !ulOnStates[ ulLED ];
}
else
{
xValue = ulOnStates[ ulLED ];
}
gioSetBit( hetPORT, ulLEDBits[ ulLED ], xValue );
}
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned long ulLED )
{
unsigned long ulBitState;
if( ulLED < ulNumLEDs )
{
ulBitState = gioGetBit( hetPORT, ulLEDBits[ ulLED ] );
gioSetBit( hetPORT, ulLEDBits[ ulLED ], !ulBitState );
}
}

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configurations XML_version="1.2" id="configurations_0">
<configuration XML_version="1.2" id="configuration_0">
<instance XML_version="1.2" desc="Texas Instruments XDS100v2 USB Emulator" href="connections/TIXDS100v2_Connection.xml" id="Texas Instruments XDS100v2 USB Emulator" xml="TIXDS100v2_Connection.xml" xmlpath="connections"/>
<connection XML_version="1.2" id="Texas Instruments XDS100v2 USB Emulator">
<instance XML_version="1.2" href="drivers/tixds100v2icepick_c.xml" id="drivers" xml="tixds100v2icepick_c.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="drivers/tixds100v2cs_dap.xml" id="drivers" xml="tixds100v2cs_dap.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="drivers/tixds100v2cortexR.xml" id="drivers" xml="tixds100v2cortexR.xml" xmlpath="drivers"/>
<platform XML_version="1.2" id="platform_0">
<instance XML_version="1.2" desc="RM48L950" href="devices/rm48l950.xml" id="RM48L950" xml="rm48l950.xml" xmlpath="devices"/>
</platform>
</connection>
</configuration>
</configurations>

@ -1,402 +0,0 @@
/*
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong?" *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest versions, license
and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
/*
* Creates eight tasks, each of which loops continuously performing an (emulated)
* floating point calculation.
*
* All the tasks run at the idle priority and never block or yield. This causes
* all eight tasks to time slice with the idle task. Running at the idle priority
* means that these tasks will get pre-empted any time another task is ready to run
* or a time slice occurs. More often than not the pre-emption will occur mid
* calculation, creating a good test of the schedulers context switch mechanism - a
* calculation producing an unexpected result could be a symptom of a corruption in
* the context of a task.
*/
#include <stdlib.h>
#include <math.h>
/* Scheduler include files. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo program include files. */
#include "flop.h"
#define mathSTACK_SIZE configMINIMAL_STACK_SIZE
#define mathNUMBER_OF_TASKS ( 8 )
/* Four tasks, each of which performs a different floating point calculation.
Each of the four is created twice. */
static portTASK_FUNCTION_PROTO( vCompetingMathTask1, pvParameters );
static portTASK_FUNCTION_PROTO( vCompetingMathTask2, pvParameters );
static portTASK_FUNCTION_PROTO( vCompetingMathTask3, pvParameters );
static portTASK_FUNCTION_PROTO( vCompetingMathTask4, pvParameters );
/* These variables are used to check that all the tasks are still running. If a
task gets a calculation wrong it will
stop incrementing its check variable. */
static volatile unsigned short usTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 };
/* Must be called before any hardware floating point operations are
performed to let the RTOS portable layer know that this task requires
a floating point context. */
#if __TI_VFP_SUPPORT__
extern void vPortTaskUsesFPU( void );
#endif
/*-----------------------------------------------------------*/
void vStartMathTasks( unsigned portBASE_TYPE uxPriority )
{
xTaskCreate( vCompetingMathTask1, ( signed char * ) "Math1", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 0 ] ), uxPriority, NULL );
xTaskCreate( vCompetingMathTask2, ( signed char * ) "Math2", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 1 ] ), uxPriority, NULL );
xTaskCreate( vCompetingMathTask3, ( signed char * ) "Math3", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 2 ] ), uxPriority, NULL );
xTaskCreate( vCompetingMathTask4, ( signed char * ) "Math4", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 3 ] ), uxPriority, NULL );
xTaskCreate( vCompetingMathTask1, ( signed char * ) "Math5", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 4 ] ), uxPriority, NULL );
xTaskCreate( vCompetingMathTask2, ( signed char * ) "Math6", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 5 ] ), uxPriority, NULL );
xTaskCreate( vCompetingMathTask3, ( signed char * ) "Math7", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 6 ] ), uxPriority, NULL );
xTaskCreate( vCompetingMathTask4, ( signed char * ) "Math8", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 7 ] ), uxPriority, NULL );
}
/*-----------------------------------------------------------*/
static portTASK_FUNCTION( vCompetingMathTask1, pvParameters )
{
volatile portDOUBLE d1, d2, d3, d4;
volatile unsigned short *pusTaskCheckVariable;
volatile portDOUBLE dAnswer;
short sError = pdFALSE;
/* Must be called before any hardware floating point operations are
performed to let the RTOS portable layer know that this task requires
a floating point context. */
#if __TI_VFP_SUPPORT__
vPortTaskUsesFPU();
#endif
d1 = 123.4567;
d2 = 2345.6789;
d3 = -918.222;
dAnswer = ( d1 + d2 ) * d3;
/* The variable this task increments to show it is still running is passed in
as the parameter. */
pusTaskCheckVariable = ( unsigned short * ) pvParameters;
/* Keep performing a calculation and checking the result against a constant. */
for(;;)
{
d1 = 123.4567;
d2 = 2345.6789;
d3 = -918.222;
d4 = ( d1 + d2 ) * d3;
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/* If the calculation does not match the expected constant, stop the
increment of the check variable. */
if( fabs( d4 - dAnswer ) > 0.001 )
{
sError = pdTRUE;
}
if( sError == pdFALSE )
{
/* If the calculation has always been correct, increment the check
variable so we know this task is still running okay. */
( *pusTaskCheckVariable )++;
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
}
}
/*-----------------------------------------------------------*/
static portTASK_FUNCTION( vCompetingMathTask2, pvParameters )
{
volatile portDOUBLE d1, d2, d3, d4;
volatile unsigned short *pusTaskCheckVariable;
volatile portDOUBLE dAnswer;
short sError = pdFALSE;
/* Must be called before any hardware floating point operations are
performed to let the RTOS portable layer know that this task requires
a floating point context. */
#if __TI_VFP_SUPPORT__
vPortTaskUsesFPU();
#endif
d1 = -389.38;
d2 = 32498.2;
d3 = -2.0001;
dAnswer = ( d1 / d2 ) * d3;
/* The variable this task increments to show it is still running is passed in
as the parameter. */
pusTaskCheckVariable = ( unsigned short * ) pvParameters;
/* Keep performing a calculation and checking the result against a constant. */
for( ;; )
{
d1 = -389.38;
d2 = 32498.2;
d3 = -2.0001;
d4 = ( d1 / d2 ) * d3;
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/* If the calculation does not match the expected constant, stop the
increment of the check variable. */
if( fabs( d4 - dAnswer ) > 0.001 )
{
sError = pdTRUE;
}
if( sError == pdFALSE )
{
/* If the calculation has always been correct, increment the check
variable so we know
this task is still running okay. */
( *pusTaskCheckVariable )++;
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
}
}
/*-----------------------------------------------------------*/
static portTASK_FUNCTION( vCompetingMathTask3, pvParameters )
{
volatile portDOUBLE *pdArray, dTotal1, dTotal2, dDifference;
volatile unsigned short *pusTaskCheckVariable;
const size_t xArraySize = 10;
size_t xPosition;
short sError = pdFALSE;
/* Must be called before any hardware floating point operations are
performed to let the RTOS portable layer know that this task requires
a floating point context. */
#if __TI_VFP_SUPPORT__
vPortTaskUsesFPU();
#endif
/* The variable this task increments to show it is still running is passed in
as the parameter. */
pusTaskCheckVariable = ( unsigned short * ) pvParameters;
pdArray = ( portDOUBLE * ) pvPortMalloc( xArraySize * sizeof( portDOUBLE ) );
/* Keep filling an array, keeping a running total of the values placed in the
array. Then run through the array adding up all the values. If the two totals
do not match, stop the check variable from incrementing. */
for( ;; )
{
dTotal1 = 0.0;
dTotal2 = 0.0;
for( xPosition = 0; xPosition < xArraySize; xPosition++ )
{
pdArray[ xPosition ] = ( portDOUBLE ) xPosition + 5.5;
dTotal1 += ( portDOUBLE ) xPosition + 5.5;
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
for( xPosition = 0; xPosition < xArraySize; xPosition++ )
{
dTotal2 += pdArray[ xPosition ];
}
dDifference = dTotal1 - dTotal2;
if( fabs( dDifference ) > 0.001 )
{
sError = pdTRUE;
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
if( sError == pdFALSE )
{
/* If the calculation has always been correct, increment the check
variable so we know this task is still running okay. */
( *pusTaskCheckVariable )++;
}
}
}
/*-----------------------------------------------------------*/
static portTASK_FUNCTION( vCompetingMathTask4, pvParameters )
{
volatile portDOUBLE *pdArray, dTotal1, dTotal2, dDifference;
volatile unsigned short *pusTaskCheckVariable;
const size_t xArraySize = 10;
size_t xPosition;
short sError = pdFALSE;
/* Must be called before any hardware floating point operations are
performed to let the RTOS portable layer know that this task requires
a floating point context. */
#if __TI_VFP_SUPPORT__
vPortTaskUsesFPU();
#endif
/* The variable this task increments to show it is still running is passed in
as the parameter. */
pusTaskCheckVariable = ( unsigned short * ) pvParameters;
pdArray = ( portDOUBLE * ) pvPortMalloc( xArraySize * sizeof( portDOUBLE ) );
/* Keep filling an array, keeping a running total of the values placed in the
array. Then run through the array adding up all the values. If the two totals
do not match, stop the check variable from incrementing. */
for( ;; )
{
dTotal1 = 0.0;
dTotal2 = 0.0;
for( xPosition = 0; xPosition < xArraySize; xPosition++ )
{
pdArray[ xPosition ] = ( portDOUBLE ) xPosition * 12.123;
dTotal1 += ( portDOUBLE ) xPosition * 12.123;
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
for( xPosition = 0; xPosition < xArraySize; xPosition++ )
{
dTotal2 += pdArray[ xPosition ];
}
dDifference = dTotal1 - dTotal2;
if( fabs( dDifference ) > 0.001 )
{
sError = pdTRUE;
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
if( sError == pdFALSE )
{
/* If the calculation has always been correct, increment the check
variable so we know this task is still running okay. */
( *pusTaskCheckVariable )++;
}
}
}
/*-----------------------------------------------------------*/
/* This is called to check that all the created tasks are still running. */
portBASE_TYPE xAreMathsTaskStillRunning( void )
{
/* Keep a history of the check variables so we know if they have been incremented
since the last call. */
static unsigned short usLastTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 };
portBASE_TYPE xReturn = pdTRUE, xTask;
/* Check the maths tasks are still running by ensuring their check variables
are still incrementing. */
for( xTask = 0; xTask < mathNUMBER_OF_TASKS; xTask++ )
{
if( usTaskCheck[ xTask ] == usLastTaskCheck[ xTask ] )
{
/* The check has not incremented so an error exists. */
xReturn = pdFALSE;
}
usLastTaskCheck[ xTask ] = usTaskCheck[ xTask ];
}
return xReturn;
}

@ -1,77 +0,0 @@
/*
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong?" *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest versions, license
and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
#ifndef FLOP_TASKS_H
#define FLOP_TASKS_H
void vStartMathTasks( unsigned portBASE_TYPE uxPriority );
portBASE_TYPE xAreMathsTaskStillRunning( void );
#endif

@ -1,201 +0,0 @@
/*
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong?" *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest versions, license
and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
/******************************************************************************
* This project provides two demo applications. A simple blinky style project,
* and a more comprehensive test and demo application. The
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting (defined in this file) is used to
* select between the two. The simply blinky demo is implemented and described
* in main_blinky.c. The more comprehensive test and demo application is
* implemented and described in main_full.c.
*
* This file implements the code that is not demo specific, including the
* hardware setup and FreeRTOS hook functions.
*
*/
/* Standard includes. */
#include <stdio.h>
/* Kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
/* Standard demo includes - just needed for the LED (ParTest) initialisation
function. */
#include "partest.h"
/* Library includes. */
#include "het.h"
/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to one to run the simple blinky demo,
or 0 to run the more comprehensive test and demo application. */
#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 0
/*-----------------------------------------------------------*/
/*
* Set up the hardware ready to run this demo.
*/
static void prvSetupHardware( void );
/*
* main_blinky() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.
* main_full() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0.
*/
extern void main_blinky( void );
extern void main_full( void );
/*-----------------------------------------------------------*/
/* See the documentation page for this demo on the FreeRTOS.org web site for
full information - including hardware setup requirements. */
int main( void )
{
/* Prepare the hardware to run this demo. */
prvSetupHardware();
/* The mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting is described at the top
of this file. */
#if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1
{
main_blinky();
}
#else
{
main_full();
}
#endif
return 0;
}
/*-----------------------------------------------------------*/
static void prvSetupHardware( void )
{
/* Perform any configuration necessary to use the ParTest LED output
functions. */
gioInit();
vParTestInitialise();
}
/*-----------------------------------------------------------*/
void vApplicationMallocFailedHook( void )
{
/* vApplicationMallocFailedHook() will only be called if
configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook
function that will get called if a call to pvPortMalloc() fails.
pvPortMalloc() is called internally by the kernel whenever a task, queue,
timer or semaphore is created. It is also called by various parts of the
demo application. If heap_1.c or heap_2.c are used, then the size of the
heap available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in
FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used
to query the size of free heap space that remains (although it does not
provide information on how the remaining heap might be fragmented). */
taskDISABLE_INTERRUPTS();
for( ;; );
}
/*-----------------------------------------------------------*/
void vApplicationIdleHook( void )
{
/* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set
to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle
task. It is essential that code added to this hook function never attempts
to block in any way (for example, call xQueueReceive() with a block time
specified, or call vTaskDelay()). If the application makes use of the
vTaskDelete() API function (as this demo application does) then it is also
important that vApplicationIdleHook() is permitted to return to its calling
function, because it is the responsibility of the idle task to clean up
memory allocated by the kernel to any task that has since been deleted. */
}
/*-----------------------------------------------------------*/
void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName )
{
( void ) pcTaskName;
( void ) pxTask;
/* Run time stack overflow checking is performed if
configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook
function is called if a stack overflow is detected. */
taskDISABLE_INTERRUPTS();
for( ;; );
}
/*-----------------------------------------------------------*/
void vApplicationTickHook( void )
{
/* This function will be called by each tick interrupt if
configUSE_TICK_HOOK is set to 1 in FreeRTOSConfig.h. User code can be
added here, but the tick hook is called from an interrupt context, so
code must not attempt to block, and only the interrupt safe FreeRTOS API
functions can be used (those that end in FromISR()). */
}
/*-----------------------------------------------------------*/

@ -1,242 +0,0 @@
volatile unsigned long ulRx = 0, ulTx = 0;
/*
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong?" *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest versions, license
and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
/******************************************************************************
* NOTE 1: This project provides two demo applications. A simple blinky style
* project, and a more comprehensive test and demo application. The
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting in main.c is used to select
* between the two. See the notes on using mainCREATE_SIMPLE_BLINKY_DEMO_ONLY
* in main.c. This file implements the simply blinky style version.
*
* NOTE 2: This file only contains the source code that is specific to the
* basic demo. Generic functions, such FreeRTOS hook functions, and functions
* required to configure the hardware, are defined in main.c.
******************************************************************************
*
* main_blinky() creates one queue, and two tasks. It then starts the
* scheduler.
*
* The Queue Send Task:
* The queue send task is implemented by the prvQueueSendTask() function in
* this file. prvQueueSendTask() sits in a loop that causes it to repeatedly
* block for 200 milliseconds, before sending the value 100 to the queue that
* was created within main_blinky(). Once the value is sent, the task loops
* back around to block for another 200 milliseconds.
*
* The Queue Receive Task:
* The queue receive task is implemented by the prvQueueReceiveTask() function
* in this file. prvQueueReceiveTask() sits in a loop where it repeatedly
* blocks on attempts to read data from the queue that was created within
* main_blinky(). When data is received, the task checks the value of the
* data, and if the value equals the expected 100, toggles the LED. The 'block
* time' parameter passed to the queue receive function specifies that the
* task should be held in the Blocked state indefinitely to wait for data to
* be available on the queue. The queue receive task will only leave the
* Blocked state when the queue send task writes to the queue. As the queue
* send task writes to the queue every 200 milliseconds, the queue receive
* task leaves the Blocked state every 200 milliseconds, and therefore toggles
* the LED every 200 milliseconds.
*/
/* Standard includes. */
#include <stdio.h>
/* Kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
/* Common demo includes. */
#include "partest.h"
/* Priorities at which the tasks are created. */
#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
/* The rate at which data is sent to the queue. The 200ms value is converted
to ticks using the portTICK_RATE_MS constant. */
#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_RATE_MS )
/* The number of items the queue can hold. This is 1 as the receive task
will remove items as they are added, meaning the send task should always find
the queue empty. */
#define mainQUEUE_LENGTH ( 1 )
/* Values passed to the two tasks just to check the task parameter
functionality. */
#define mainQUEUE_SEND_PARAMETER ( 0x1111UL )
#define mainQUEUE_RECEIVE_PARAMETER ( 0x22UL )
/*-----------------------------------------------------------*/
/*
* The tasks as described in the comments at the top of this file.
*/
static void prvQueueReceiveTask( void *pvParameters );
static void prvQueueSendTask( void *pvParameters );
/*
* Called by main() to create the simply blinky style application if
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.
*/
void main_blinky( void );
/*-----------------------------------------------------------*/
/* The queue used by both tasks. */
static xQueueHandle xQueue = NULL;
/*-----------------------------------------------------------*/
void main_blinky( void )
{
/* Create the queue. */
xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) );
if( xQueue != NULL )
{
/* Start the two tasks as described in the comments at the top of this
file. */
xTaskCreate( prvQueueReceiveTask, /* The function that implements the task. */
( signed char * ) "Rx", /* The text name assigned to the task - for debug only as it is not used by the kernel. */
configMINIMAL_STACK_SIZE, /* The size of the stack to allocate to the task. */
( void * ) mainQUEUE_RECEIVE_PARAMETER, /* The parameter passed to the task - just to check the functionality. */
mainQUEUE_RECEIVE_TASK_PRIORITY, /* The priority assigned to the task. */
NULL ); /* The task handle is not required, so NULL is passed. */
xTaskCreate( prvQueueSendTask, ( signed char * ) "TX", configMINIMAL_STACK_SIZE, ( void * ) mainQUEUE_SEND_PARAMETER, mainQUEUE_SEND_TASK_PRIORITY, NULL );
/* Start the tasks and timer running. */
vTaskStartScheduler();
}
/* If all is well, the scheduler will now be running, and the following
line will never be reached. If the following line does execute, then
there was insufficient FreeRTOS heap memory available for the idle and/or
timer tasks to be created. See the memory management section on the
FreeRTOS web site for more details. */
for( ;; );
}
/*-----------------------------------------------------------*/
static void prvQueueSendTask( void *pvParameters )
{
portTickType xNextWakeTime;
const unsigned long ulValueToSend = 100UL;
/* Check the task parameter is as expected. */
configASSERT( ( ( unsigned long ) pvParameters ) == mainQUEUE_SEND_PARAMETER );
/* Initialise xNextWakeTime - this only needs to be done once. */
xNextWakeTime = xTaskGetTickCount();
for( ;; )
{
/* Place this task in the blocked state until it is time to run again.
The block time is specified in ticks, the constant used converts ticks
to ms. While in the Blocked state this task will not consume any CPU
time. */
vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS );
/* Send to the queue - causing the queue receive task to unblock and
toggle the LED. 0 is used as the block time so the sending operation
will not block - it shouldn't need to block as the queue should always
be empty at this point in the code. */
xQueueSend( xQueue, &ulValueToSend, 0U );
ulTx++;
}
}
/*-----------------------------------------------------------*/
static void prvQueueReceiveTask( void *pvParameters )
{
unsigned long ulReceivedValue;
/* Check the task parameter is as expected. */
configASSERT( ( ( unsigned long ) pvParameters ) == mainQUEUE_RECEIVE_PARAMETER );
for( ;; )
{
/* Wait until something arrives in the queue - this task will block
indefinitely provided INCLUDE_vTaskSuspend is set to 1 in
FreeRTOSConfig.h. */
xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY );
/* To get here something must have been received from the queue, but
is it the expected value? If it is, toggle the LED. */
if( ulReceivedValue == 100UL )
{
vParTestToggleLED( 0 );
ulReceivedValue = 0U;
ulRx++;
}
}
}
/*-----------------------------------------------------------*/

@ -1,371 +0,0 @@
/*
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong?" *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest versions, license
and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
/******************************************************************************
* NOTE 1: This project provides two demo applications. A simple blinky style
* project, and a more comprehensive test and demo application. The
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting in main.c is used to select
* between the two. See the notes on using mainCREATE_SIMPLE_BLINKY_DEMO_ONLY
* in main.c. This file implements the comprehensive test and demo version.
*
* NOTE 2: This file only contains the source code that is specific to the
* full demo. Generic functions, such FreeRTOS hook functions, and functions
* required to configure the hardware, are defined in main.c.
******************************************************************************
*
* main_full() creates all the demo application tasks and two software timers,
* then starts the scheduler. The web documentation provides more details of
* the standard demo application tasks, which provide no particular
* functionality, but do provide a good example of how to use the FreeRTOS API.
*
* In addition to the standard demo tasks, the following tasks and tests are
* defined and/or created within this file:
*
* "Check" timer - The check software timer period is set to three seconds.
* The callback function associated with the check software timer checks that
* all the standard demo tasks are not only still executing, but are executing
* without reporting any errors. If the check software timer discovers that a
* task has either stalled, or reported an error, then the error is logged and
* the check software timer toggles the red LEDs. If an error has never been
* latched, the check software timer toggles the green LEDs. Therefore, if the
* system is executing correctly, the green LEDs will toggle every three
* seconds, and if an error has ever been detected, the red LEDs will toggle
* every three seconds.
*
* "Reg test" tasks - These fill both the core and floating point registers
* with known values, then check that each register maintains its expected
* value for the lifetime of the tasks. Each task uses a different set of
* values. The reg test tasks execute with a very low priority, so get
* preempted very frequently. A register containing an unexpected value is
* indicative of an error in the context switching mechanism.
*
* "LED" software timer - The callback function associated with the LED
* software time maintains a pattern of spinning white LEDs.
*
* See the documentation page for this demo on the FreeRTOS.org web site for
* full information, including hardware setup requirements.
*/
/* Standard includes. */
#include <stdio.h>
/* Kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "timers.h"
#include "semphr.h"
/* Standard demo application includes. */
#include "integer.h"
#include "PollQ.h"
#include "semtest.h"
#include "dynamic.h"
#include "BlockQ.h"
#include "blocktim.h"
#include "countsem.h"
#include "GenQTest.h"
#include "recmutex.h"
#include "death.h"
#include "partest.h"
#include "flop.h"
/* Priorities for the demo application tasks. */
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2UL )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1UL )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2UL )
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3UL )
#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY )
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY )
/* A block time of zero simply means "don't block". */
#define mainDONT_BLOCK ( 0UL )
/* The period after which the check timer will expire, converted to ticks. */
#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_RATE_MS )
/* The period after which the LED timer will expire, converted to ticks. */
#define mainLED_TIMER_PERIOD_MS ( 75UL / portTICK_RATE_MS )
/*-----------------------------------------------------------*/
/*
* The check timer callback function, as described at the top of this file.
*/
static void prvCheckTimerCallback( xTimerHandle xTimer );
/*
* The LED timer callback function, as described at the top of this file.
*/
static void prvLEDTimerCallback( xTimerHandle xTimer );
/*
* The reg test tasks, as described at the top of this file.
*/
extern void vRegTestTask1( void *pvParameters );
extern void vRegTestTask2( void *pvParameters );
/*-----------------------------------------------------------*/
/* Variables that are incremented on each iteration of the reg test tasks -
provided the tasks have not reported any errors. The check task inspects these
variables to ensure they are still incrementing as expected. If a variable
stops incrementing then it is likely that its associate task has stalled. */
volatile unsigned long ulRegTest1Counter = 0, ulRegTest2Counter = 0;
/*-----------------------------------------------------------*/
void main_full( void )
{
xTimerHandle xTimer = NULL;
/* Start all the standard demo/test tasks. These have not particular
functionality, but do demonstrate how to use the FreeRTOS API, and test the
kernel port. */
vStartIntegerMathTasks( tskIDLE_PRIORITY );
vStartDynamicPriorityTasks();
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vCreateBlockTimeTasks();
vStartCountingSemaphoreTasks();
vStartGenericQueueTasks( tskIDLE_PRIORITY );
vStartRecursiveMutexTasks();
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartMathTasks( mainFLOP_TASK_PRIORITY );
/* Create the register test tasks, as described at the top of this file. */
xTaskCreate( vRegTestTask1, ( const signed char * ) "Reg1...", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
xTaskCreate( vRegTestTask2, ( const signed char * ) "Reg2...", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
/* Create the software timer that performs the 'check' functionality,
as described at the top of this file. */
xTimer = xTimerCreate( ( const signed char * ) "CheckTimer",/* A text name, purely to help debugging. */
( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */
pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */
( void * ) 0, /* The ID is not used, so can be set to anything. */
prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */
);
if( xTimer != NULL )
{
xTimerStart( xTimer, mainDONT_BLOCK );
}
/* Create the software timer that performs the 'LED spin' functionality,
as described at the top of this file. */
xTimer = xTimerCreate( ( const signed char * ) "LEDTimer", /* A text name, purely to help debugging. */
( mainLED_TIMER_PERIOD_MS ), /* The timer period, in this case 75ms. */
pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */
( void * ) 0, /* The ID is not used, so can be set to anything. */
prvLEDTimerCallback /* The callback function that toggles the white LEDs. */
);
if( xTimer != NULL )
{
xTimerStart( xTimer, mainDONT_BLOCK );
}
/* The set of tasks created by the following function call have to be
created last as they keep account of the number of tasks they expect to see
running. */
vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );
/* Start the scheduler. */
vTaskStartScheduler();
/* If all is well, the scheduler will now be running, and the following line
will never be reached. If the following line does execute, then there was
insufficient FreeRTOS heap memory available for the idle and/or timer tasks
to be created. See the memory management section on the FreeRTOS web site
for more details. */
for( ;; );
}
/*-----------------------------------------------------------*/
static void prvCheckTimerCallback( xTimerHandle xTimer )
{
static long lChangeToRedLEDsAlready = pdFALSE;
static unsigned long ulLastRegTest1Counter = 0, ulLastRegTest2Counter = 0;
unsigned long ulErrorFound = pdFALSE;
/* LEDs are defaulted to use the Green LEDs. The Red LEDs are used if an error
is found. */
static unsigned long ulLED1 = 8, ulLED2 = 11;
const unsigned long ulRedLED1 = 6, ulRedLED2 = 9;
/* Check all the demo tasks (other than the flash tasks) to ensure
they are all still running, and that none have detected an error. */
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
ulErrorFound = pdTRUE;
}
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
ulErrorFound = pdTRUE;
}
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
ulErrorFound = pdTRUE;
}
if ( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
{
ulErrorFound = pdTRUE;
}
if ( xAreGenericQueueTasksStillRunning() != pdTRUE )
{
ulErrorFound = pdTRUE;
}
if ( xAreRecursiveMutexTasksStillRunning() != pdTRUE )
{
ulErrorFound = pdTRUE;
}
if( xIsCreateTaskStillRunning() != pdTRUE )
{
ulErrorFound = pdTRUE;
}
if( xArePollingQueuesStillRunning() != pdTRUE )
{
ulErrorFound = pdTRUE;
}
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
ulErrorFound = pdTRUE;
}
if( xAreMathsTaskStillRunning() != pdTRUE )
{
ulErrorFound = pdTRUE;
}
/* Check the reg test tasks are still cycling. They will stop
incrementing their loop counters if they encounter an error. */
if( ulRegTest1Counter == ulLastRegTest1Counter )
{
ulErrorFound = pdTRUE;
}
if( ulRegTest2Counter == ulLastRegTest2Counter )
{
ulErrorFound = pdTRUE;
}
ulLastRegTest1Counter = ulRegTest1Counter;
ulLastRegTest2Counter = ulRegTest2Counter;
/* Toggle the check LEDs to give an indication of the system status. If
the green LEDs are toggling, then no errors have been detected. If the red
LEDs are toggling, then an error has been reported in at least one task. */
vParTestToggleLED( ulLED1 );
vParTestToggleLED( ulLED2 );
/* Have any errors been latch in ulErrorFound? If so, ensure the gree LEDs
are off, then switch to using the red LEDs. */
if( ulErrorFound != pdFALSE )
{
if( lChangeToRedLEDsAlready == pdFALSE )
{
lChangeToRedLEDsAlready = pdTRUE;
/* An error has been found. Switch to use the red LEDs. */
vParTestSetLED( ulLED1, pdFALSE );
vParTestSetLED( ulLED2, pdFALSE );
ulLED1 = ulRedLED1;
ulLED2 = ulRedLED2;
}
}
}
/*-----------------------------------------------------------*/
static void prvLEDTimerCallback( xTimerHandle xTimer )
{
const unsigned long ulNumWhiteLEDs = 6;
static unsigned long ulLit1 = 2, ulLit2 = 1;
vParTestSetLED( ulLit2, pdFALSE );
ulLit2 = ulLit1;
ulLit1++;
if( ulLit1 >= ulNumWhiteLEDs )
{
ulLit1 = 0;
}
vParTestSetLED( ulLit1, pdTRUE );
}
/*-----------------------------------------------------------*/

@ -1,483 +0,0 @@
;/*
; FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
;
;
; ***************************************************************************
; * *
; * FreeRTOS tutorial books are available in pdf and paperback. *
; * Complete, revised, and edited pdf reference manuals are also *
; * available. *
; * *
; * Purchasing FreeRTOS documentation will not only help you, by *
; * ensuring you get running as quickly as possible and with an *
; * in-depth knowledge of how to use FreeRTOS, it will also help *
; * the FreeRTOS project to continue with its mission of providing *
; * professional grade, cross platform, de facto standard solutions *
; * for microcontrollers - completely free of charge! *
; * *
; * >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
; * *
; * Thank you for using FreeRTOS, and thank you for your support! *
; * *
; ***************************************************************************
;
;
; This file is part of the FreeRTOS distribution.
;
; FreeRTOS is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License (version 2) as published by the
; Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
; >>>NOTE<<< The modification to the GPL is included to allow you to
; distribute a combined work that includes FreeRTOS without being obliged to
; provide the source code for proprietary components outside of the FreeRTOS
; kernel. FreeRTOS is distributed in the hope that it will be useful, but
; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
; more details. You should have received a copy of the GNU General Public
; License and the FreeRTOS license exception along with FreeRTOS; if not it
; can be viewed here: http://www.freertos.org/a00114.html and also obtained
; by writing to Richard Barry, contact details for whom are available on the
; FreeRTOS WEB site.
;
; 1 tab == 4 spaces!
;
; ***************************************************************************
; * *
; * Having a problem? Start by reading the FAQ "My application does *
; * not run, what could be wrong? *
; * *
; * http://www.FreeRTOS.org/FAQHelp.html *
; * *
; ***************************************************************************
;
;
; http://www.FreeRTOS.org - Documentation, training, latest information,
; license and contact details.
;
; http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
; including FreeRTOS+Trace - an indispensable productivity tool.
;
; Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
; the code with commercial support, indemnification, and middleware, under
; the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
; provide a safety engineered and independently SIL3 certified version under
; the SafeRTOS brand: http://www.SafeRTOS.com.
;*/
;-------------------------------------------------
;
.def vRegTestTask1
.ref ulRegTest1Counter
.if (__TI_VFP_SUPPORT__)
.ref vPortTaskUsesFPU
.endif ;__TI_VFP_SUPPORT__
.text
.arm
vRegTestTask1:
.if (__TI_VFP_SUPPORT__)
; Let the port layer know that this task needs its FPU context saving.
BL vPortTaskUsesFPU
.endif
; Fill each general purpose register with a known value.
mov r0, #0xFF
mov r1, #0x11
mov r2, #0x22
mov r3, #0x33
mov r4, #0x44
mov r5, #0x55
mov r6, #0x66
mov r7, #0x77
mov r8, #0x88
mov r9, #0x99
mov r10, #0xAA
mov r11, #0xBB
mov r12, #0xCC
mov r14, #0xEE
.if (__TI_VFP_SUPPORT__)
; Fill each FPU register with a known value.
vmov d0, r0, r1
vmov d1, r2, r3
vmov d2, r4, r5
vmov d3, r6, r7
vmov d4, r8, r9
vmov d5, r10, r11
vmov d6, r0, r1
vmov d7, r2, r3
vmov d8, r4, r5
vmov d9, r6, r7
vmov d10, r8, r9
vmov d11, r10, r11
vmov d12, r0, r1
vmov d13, r2, r3
vmov d14, r4, r5
vmov d15, r6, r7
.endif
vRegTestLoop1:
; Force yeild
swi #0
.if (__TI_VFP_SUPPORT__)
; Check all the VFP registers still contain the values set above.
; First save registers that are clobbered by the test.
push { r0-r1 }
vmov r0, r1, d0
cmp r0, #0xFF
bne reg1_error_loopf
cmp r1, #0x11
bne reg1_error_loopf
vmov r0, r1, d1
cmp r0, #0x22
bne reg1_error_loopf
cmp r1, #0x33
bne reg1_error_loopf
vmov r0, r1, d2
cmp r0, #0x44
bne reg1_error_loopf
cmp r1, #0x55
bne reg1_error_loopf
vmov r0, r1, d3
cmp r0, #0x66
bne reg1_error_loopf
cmp r1, #0x77
bne reg1_error_loopf
vmov r0, r1, d4
cmp r0, #0x88
bne reg1_error_loopf
cmp r1, #0x99
bne reg1_error_loopf
vmov r0, r1, d5
cmp r0, #0xAA
bne reg1_error_loopf
cmp r1, #0xBB
bne reg1_error_loopf
vmov r0, r1, d6
cmp r0, #0xFF
bne reg1_error_loopf
cmp r1, #0x11
bne reg1_error_loopf
vmov r0, r1, d7
cmp r0, #0x22
bne reg1_error_loopf
cmp r1, #0x33
bne reg1_error_loopf
vmov r0, r1, d8
cmp r0, #0x44
bne reg1_error_loopf
cmp r1, #0x55
bne reg1_error_loopf
vmov r0, r1, d9
cmp r0, #0x66
bne reg1_error_loopf
cmp r1, #0x77
bne reg1_error_loopf
vmov r0, r1, d10
cmp r0, #0x88
bne reg1_error_loopf
cmp r1, #0x99
bne reg1_error_loopf
vmov r0, r1, d11
cmp r0, #0xAA
bne reg1_error_loopf
cmp r1, #0xBB
bne reg1_error_loopf
vmov r0, r1, d12
cmp r0, #0xFF
bne reg1_error_loopf
cmp r1, #0x11
bne reg1_error_loopf
vmov r0, r1, d13
cmp r0, #0x22
bne reg1_error_loopf
cmp r1, #0x33
bne reg1_error_loopf
vmov r0, r1, d14
cmp r0, #0x44
bne reg1_error_loopf
cmp r1, #0x55
bne reg1_error_loopf
vmov r0, r1, d15
cmp r0, #0x66
bne reg1_error_loopf
cmp r1, #0x77
bne reg1_error_loopf
; Restore the registers that were clobbered by the test.
pop {r0-r1}
; VFP register test passed. Jump to the core register test.
b reg1_loopf_pass
reg1_error_loopf:
; If this line is hit then a VFP register value was found to be
; incorrect.
b reg1_error_loopf
reg1_loopf_pass:
.endif ;__TI_VFP_SUPPORT__
; Test each general purpose register to check that it still contains the
; expected known value, jumping to vRegTestError1 if any register contains
; an unexpected value.
cmp r0, #0xFF
bne vRegTestError1
cmp r1, #0x11
bne vRegTestError1
cmp r2, #0x22
bne vRegTestError1
cmp r3, #0x33
bne vRegTestError1
cmp r4, #0x44
bne vRegTestError1
cmp r5, #0x55
bne vRegTestError1
cmp r6, #0x66
bne vRegTestError1
cmp r7, #0x77
bne vRegTestError1
cmp r8, #0x88
bne vRegTestError1
cmp r9, #0x99
bne vRegTestError1
cmp r10, #0xAA
bne vRegTestError1
cmp r11, #0xBB
bne vRegTestError1
cmp r12, #0xCC
bne vRegTestError1
cmp r14, #0xEE
bne vRegTestError1
; This task is still running without jumping to vRegTestError1, so increment
; the loop counter so the check task knows the task is running error free.
stmfd sp!, { r0-r1 }
ldr r0, Count1Const
ldr r1, [r0]
add r1, r1, #1
str r1, [r0]
ldmfd sp!, { r0-r1 }
; Loop again, performing the same tests.
b vRegTestLoop1
Count1Const .word ulRegTest1Counter
vRegTestError1:
b vRegTestError1
;-------------------------------------------------
;
.def vRegTestTask2
.ref ulRegTest2Counter
.text
.arm
;
vRegTestTask2:
.if (__TI_VFP_SUPPORT__)
; Let the port layer know that this task needs its FPU context saving.
BL vPortTaskUsesFPU
.endif
; Fill each general purpose register with a known value.
mov r0, #0xFF000000
mov r1, #0x11000000
mov r2, #0x22000000
mov r3, #0x33000000
mov r4, #0x44000000
mov r5, #0x55000000
mov r6, #0x66000000
mov r7, #0x77000000
mov r8, #0x88000000
mov r9, #0x99000000
mov r10, #0xAA000000
mov r11, #0xBB000000
mov r12, #0xCC000000
mov r14, #0xEE000000
.if (__TI_VFP_SUPPORT__)
; Fill each FPU register with a known value.
vmov d0, r0, r1
vmov d1, r2, r3
vmov d2, r4, r5
vmov d3, r6, r7
vmov d4, r8, r9
vmov d5, r10, r11
vmov d6, r0, r1
vmov d7, r2, r3
vmov d8, r4, r5
vmov d9, r6, r7
vmov d10, r8, r9
vmov d11, r10, r11
vmov d12, r0, r1
vmov d13, r2, r3
vmov d14, r4, r5
vmov d15, r6, r7
.endif
vRegTestLoop2:
.if (__TI_VFP_SUPPORT__)
; Check all the VFP registers still contain the values set above.
; First save registers that are clobbered by the test.
push { r0-r1 }
vmov r0, r1, d0
cmp r0, #0xFF000000
bne reg2_error_loopf
cmp r1, #0x11000000
bne reg2_error_loopf
vmov r0, r1, d1
cmp r0, #0x22000000
bne reg2_error_loopf
cmp r1, #0x33000000
bne reg2_error_loopf
vmov r0, r1, d2
cmp r0, #0x44000000
bne reg2_error_loopf
cmp r1, #0x55000000
bne reg2_error_loopf
vmov r0, r1, d3
cmp r0, #0x66000000
bne reg2_error_loopf
cmp r1, #0x77000000
bne reg2_error_loopf
vmov r0, r1, d4
cmp r0, #0x88000000
bne reg2_error_loopf
cmp r1, #0x99000000
bne reg2_error_loopf
vmov r0, r1, d5
cmp r0, #0xAA000000
bne reg2_error_loopf
cmp r1, #0xBB000000
bne reg2_error_loopf
vmov r0, r1, d6
cmp r0, #0xFF000000
bne reg2_error_loopf
cmp r1, #0x11000000
bne reg2_error_loopf
vmov r0, r1, d7
cmp r0, #0x22000000
bne reg2_error_loopf
cmp r1, #0x33000000
bne reg2_error_loopf
vmov r0, r1, d8
cmp r0, #0x44000000
bne reg2_error_loopf
cmp r1, #0x55000000
bne reg2_error_loopf
vmov r0, r1, d9
cmp r0, #0x66000000
bne reg2_error_loopf
cmp r1, #0x77000000
bne reg2_error_loopf
vmov r0, r1, d10
cmp r0, #0x88000000
bne reg2_error_loopf
cmp r1, #0x99000000
bne reg2_error_loopf
vmov r0, r1, d11
cmp r0, #0xAA000000
bne reg2_error_loopf
cmp r1, #0xBB000000
bne reg2_error_loopf
vmov r0, r1, d12
cmp r0, #0xFF000000
bne reg2_error_loopf
cmp r1, #0x11000000
bne reg2_error_loopf
vmov r0, r1, d13
cmp r0, #0x22000000
bne reg2_error_loopf
cmp r1, #0x33000000
bne reg2_error_loopf
vmov r0, r1, d14
cmp r0, #0x44000000
bne reg2_error_loopf
cmp r1, #0x55000000
bne reg2_error_loopf
vmov r0, r1, d15
cmp r0, #0x66000000
bne reg2_error_loopf
cmp r1, #0x77000000
bne reg2_error_loopf
; Restore the registers that were clobbered by the test.
pop {r0-r1}
; VFP register test passed. Jump to the core register test.
b reg2_loopf_pass
reg2_error_loopf:
; If this line is hit then a VFP register value was found to be
; incorrect.
b reg2_error_loopf
reg2_loopf_pass:
.endif ;__TI_VFP_SUPPORT__
; Test each general purpose register to check that it still contains the
; expected known value, jumping to vRegTestError2 if any register contains
; an unexpected value.
cmp r0, #0xFF000000
bne vRegTestError2
cmp r1, #0x11000000
bne vRegTestError2
cmp r2, #0x22000000
bne vRegTestError2
cmp r3, #0x33000000
bne vRegTestError2
cmp r4, #0x44000000
bne vRegTestError2
cmp r5, #0x55000000
bne vRegTestError2
cmp r6, #0x66000000
bne vRegTestError2
cmp r7, #0x77000000
bne vRegTestError2
cmp r8, #0x88000000
bne vRegTestError2
cmp r9, #0x99000000
bne vRegTestError2
cmp r10, #0xAA000000
bne vRegTestError2
cmp r11, #0xBB000000
bne vRegTestError2
cmp r12, #0xCC000000
bne vRegTestError2
cmp r14, #0xEE000000
bne vRegTestError2
; This task is still running without jumping to vRegTestError2, so increment
; the loop counter so the check task knows the task is running error free.
stmfd sp!, { r0-r1 }
ldr r0, Count2Const
ldr r1, [r0]
add r1, r1, #1
str r1, [r0]
ldmfd sp!, { r0-r1 }
; Loop again, performing the same tests.
b vRegTestLoop2
Count2Const .word ulRegTest2Counter
vRegTestError2:
b vRegTestError2
;-------------------------------------------------

@ -1,198 +0,0 @@
/*----------------------------------------------------------------------------*/
/* sys_common.h 10/20/10 15:19:19 */
/* */
/* (c) Texas Instruments 2003-2010, All rights reserved. */
/* */
#ifndef __sys_common_h__
#define __sys_common_h__
/*----------------------------------------------------------------------------*/
/* NULL */
#ifndef NULL
#define NULL ((void *) 0)
#endif
/*----------------------------------------------------------------------------*/
/* Error Codes */
#define IO_E_OK 0U
#define IO_E_BUSY 1U
#define IO_E_UNKNOWN_MODE 2U
#define IO_E_OVR 3U
#define IO_E_FCN_SUSPENDED 16U
#define IO_E_PARAM_IGNORED 17U
#define IO_E_INVALID_CHANNEL_ID 18U
#define IO_E_INVALID_VALUE 19U
#define IO_E_INVALID_SIZE 20U
#define IO_E_INVALID_POSITION 21U
#define IO_E_INVALID_NOTIF_TYPE 22U
#define IO_E_MISSING_INIT 64U
#define IO_E_INVALID_GROUP_ID 66U
#define IO_E_INVALID_POINTER 67U
#define IO_E_INVALID_NODE 68U
#define IO_E_INVALID_CAN_ID 69U
#define IO_E_INVALID_OVR 70U
#define IO_E_INVALID_CONFIG 72U
#define IO_E_MISSING_CONNECT 73U
#define IO_E_MISSING_DISCONNECT 74U
#define IO_E_ALREADY_CONNECTED 75U
#define IO_E_GRP_NOTACTIVATED 80U
#define IO_E_INVALID_RESULT 81U
#define IO_E_TIMEOUT 82U
#define IO_E_INVALID_PARITY 83U
#define IO_E_SINGLE_ERROR 84U
#define IO_E_DOUBLE_ERROR 85U
#define IO_E_SINGLE_ERROR_EVEN 86U
#define IO_E_SINGLE_ERROR_ODD 87U
#define IO_E_DOUBLE_ERROR_EVEN 88U
#define IO_E_DOUBLE_ERROR_ODD 89U
/*----------------------------------------------------------------------------*/
/* Device Types */
#define IO_SPI 0U
#define IO_DIO 1U
#define IO_TIM 2U
#define IO_PWM 3U
#define IO_CCU 4U
#define IO_RTI 5U
#define IO_WDT 6U
#define IO_ADC 7U
#define IO_SCI 8U
#define IO_FLS 9U
#define IO_CAN 10U
#define IO_QSPI 11U
#define IO_MSPI 11U
#define IO_LIN 12U
#define IO_CRC 13U
#define IO_DMA 14U
#define IO_HTU 15U
#define IO_PWD 16U
#define IO_HET 17U
#define IO_ESM 18U
#define IO_I2C 19U
#define IO_ECC 20U
#define IO_VIM 21U
#define IO_STC 22U
/*----------------------------------------------------------------------------*/
/* Device States */
#define IO_STATE_IDLE 0U
#define IO_STATE_ACTIVE 1U
/*----------------------------------------------------------------------------*/
/* Notification Types */
#define IO_N_RISING_EDGE 0U
#define IO_N_FALLING_EDGE 1U
#define IO_N_THRESHOLD_1 2U
#define IO_N_THRESHOLD_2 3U
#define IO_N_CAPTURE 4U
#define IO_N_ALL 5U
#define IO_N_ROLLOVER 6U
#define IO_N_READY 7U
#define IO_N_FCN_SUSPENDED 8U
#define IO_N_PARITY_ERROR 9U
#define IO_N_FRAMING_ERROR 10U
#define IO_N_BUFFER_OVERRUN 11U
#define IO_N_RECEIVE 12U
#define IO_N_TRANSMIT 13U
#define IO_N_TX_ERROR 15U
#define IO_N_RX_ERROR 16U
#define IO_N_BAUDRATE_ERROR 17U
#define IO_N_PHASE_ERROR 18U
#define IO_N_OCSET 19U
#define IO_N_OCRESET 20U
#define IO_N_RX_LOST 21U
#define IO_N_ACTIVE 22U
#define IO_N_WARNING 23U
#define IO_N_PASSIVE 24U
#define IO_N_BUS_OFF 25U
#define IO_N_WAKE_UP 26U
#define IO_N_LAST_ERROR 27U
#define IO_N_GRP_READY 30U
#define IO_N_ERROR 31U
#define IO_N_HDR_RECEIVE 32U
#define IO_N_HDR_TRANSMIT 33U
#define IO_N_ID_ERROR 34U
#define IO_N_CHECKSUM_ERROR 35U
#define IO_N_BIT_ERROR 36U
#define IO_N_FRAME_TIMEOUT 37U
#define IO_N_BUS_ERROR 38U
#define IO_N_SYNC_FIELD_ERROR 39U
#define IO_N_WAKE_UP_RECEIVE 40U
#define IO_N_WAKE_UP_TRANSMIT 41U
#define IO_N_ADJUST_BAUDRATE 42U
#define IO_N_BUS_IDLE_TIMEOUT 43U
#define IO_N_WAKE_UP_TIMEOUT 44U
/*----------------------------------------------------------------------------*/
/* Programming Interface Constants */
#define IO_LOW 0U
#define IO_HIGH 1U
#define IO_INVALID 0xFFFFU
/*----------------------------------------------------------------------------*/
/* Data Types */
typedef T_U32 IO_ErrorType;
typedef T_U32 IO_DeviceType;
typedef T_U32 IO_FunctionNrType;
typedef T_U32 IO_DeviceStateType;
typedef T_U32 IO_ChannelType;
typedef T_U32 IO_ModeType;
typedef T_U32 IO_ValueType;
typedef T_U32 IO_U32;
/*----------------------------------------------------------------------------*/
/* Error hook */
void IO_ErrorHook(IO_DeviceType device, IO_ErrorType error);
/*----------------------------------------------------------------------------*/
/* ISR Function Prototypes */
void IO_PHANTOM_INT(void);
void IO_ESM_INT_HIGH(void);
void IO_TIM0_INT(void);
void IO_TIM1_INT(void);
void IO_DIO_INT_HIGH(void);
void IO_HET_INT_HIGH(void);
void IO_HTU_INT_HIGH(void);
void IO_MIBSPI1_INT_HIGH(void);
void IO_LIN_INT_HIGH(void);
void IO_MIBADC_INT_GROUP0(void);
void IO_MIBADC_INT_GROUP1(void);
void IO_CAN1_INT_HIGH(void);
void IO_SPI2_INT_HIGH(void);
void IO_ESM_INT_LOW(void);
void IO_DIO_INT_LOW(void);
void IO_HET_INT_LOW(void);
void IO_HTU_INT_LOW(void);
void IO_MIBSPI1_INT_LOW(void);
void IO_LIN_INT_LOW(void);
void IO_MIBADC_INT_GROUP2(void);
void IO_CAN1_INT_LOW(void);
void IO_SPI2_INT_LOW(void);
void IO_MIBADC_INT_MAG(void);
void IO_DMA_INT_FTCA(void);
void IO_DMA_INT_LFSA(void);
void IO_CAN2_INT_HIGH(void);
void IO_MIBSPI3_INT_HIGH(void);
void IO_MIBSPI3_INT_LOW(void);
void IO_DMA_INT_HBCA(void);
void IO_DMA_INT_BTCA(void);
void IO_CAN2_INT_LOW(void);
/*----------------------------------------------------------------------------*/
/* Notification Function Prototypes */
#endif
/*----------------------------------------------------------------------------*/

@ -1,165 +0,0 @@
;-------------------------------------------------------------------------------
; sys_core.asm
;
; (c) Texas Instruments 2009, All rights reserved.
;
.text
.arm
;-------------------------------------------------------------------------------
; Initialize CPU Registers
.def _coreInitRegisters
_coreInitRegisters:
mov r0, lr
mov r1, #0x0000
mov r2, #0x0000
mov r3, #0x0000
mov r4, #0x0000
mov r5, #0x0000
mov r6, #0x0000
mov r7, #0x0000
mov r8, #0x0000
mov r9, #0x0000
mov r10, #0x0000
mov r11, #0x0000
mov r12, #0x0000
mov r13, #0x0000
cps #0x11
mov lr, r0
mov r8, #0x0000
mov r9, #0x0000
mov r10, #0x0000
mov r11, #0x0000
mov r12, #0x0000
mov r13, #0x0000
cps #0x12
mov r13, #0x0000
mov lr, r0
cps #0x17
mov r13, #0x0000
mov lr, r0
cps #0x1B
mov r13, #0x0000
mov lr, r0
cps #0x13
mov r13, #0x0000
.if (__TI_VFPV3D16_SUPPORT__)
fmdrr d0, r1, r1
fmdrr d1, r1, r1
fmdrr d2, r1, r1
fmdrr d3, r1, r1
fmdrr d4, r1, r1
fmdrr d5, r1, r1
fmdrr d6, r1, r1
fmdrr d7, r1, r1
fmdrr d8, r1, r1
fmdrr d9, r1, r1
fmdrr d10, r1, r1
fmdrr d11, r1, r1
fmdrr d12, r1, r1
fmdrr d13, r1, r1
fmdrr d14, r1, r1
fmdrr d15, r1, r1
.endif
bl $+4
bl $+4
bl $+4
bl $+4
bx r0
;-------------------------------------------------------------------------------
; Initialize Stack Pointers
.def _coreInitStackPointer
_coreInitStackPointer:
msr cpsr_c, #0xD1
ldr sp, fiqSp
msr cpsr_c, #0xD2
ldr sp, irqSp
msr cpsr_c, #0xD7
ldr sp, abortSp
msr cpsr_c, #0xDB
ldr sp, undefSp
msr cpsr_c, #0xDF
ldr sp, userSp
msr cpsr_c, #0xD3
ldr sp, svcSp
bx lr
userSp .word 0x00000000+0x00000000
svcSp .word 0x08000000+0x00000100
fiqSp .word 0x00000000+0x00000000
irqSp .word 0x08000100+0x00000100
abortSp .word 0x00000000+0x00000000
undefSp .word 0x00000000+0x00000000
;-------------------------------------------------------------------------------
; Enable VFP Unit
.def _coreEnableVfp
_coreEnableVfp:
.if (__TI_VFPV3D16_SUPPORT__)
mrc p15, #0x00, r0, c1, c0, #0x02
orr r0, r0, #0xF00000
mcr p15, #0x00, r0, c1, c0, #0x02
mov r0, #0x40000000
fmxr fpexc, r0
.endif
bx lr
;-------------------------------------------------------------------------------
; Enable Event Bus Export
.def _coreEnableEventBusExport
_coreEnableEventBusExport:
mrc p15, #0x00, r0, c9, c12, #0x00
orr r0, r0, #0x10
mcr p15, #0x00, r0, c9, c12, #0x00
bx lr
;-------------------------------------------------------------------------------
; Enable RAM ECC Support
.def _coreEnableRamEcc
_coreEnableRamEcc:
mrc p15, #0x00, r0, c1, c0, #0x01
orr r0, r0, #0x0C000000
mcr p15, #0x00, r0, c1, c0, #0x01
bx lr
;-------------------------------------------------------------------------------
; Enable Flash ECC Support
.def _coreEnableFlashEcc
_coreEnableFlashEcc:
mrc p15, #0x00, r0, c1, c0, #0x01
orr r0, r0, #0x02000000
mcr p15, #0x00, r0, c1, c0, #0x01
bx lr
;-------------------------------------------------------------------------------
; Enable Offset via Vic controller
.def _coreEnableIrqVicOffset
_coreEnableIrqVicOffset:
mrc p15, #0, r0, c1, c0, #0
orr r0, r0, #0x01000000
mcr p15, #0, r0, c1, c0, #0
bx lr
;-------------------------------------------------------------------------------

@ -1,61 +0,0 @@
/** @file sys_core.h
* @brief System Core Header File
* @date 23.July.2009
* @version 1.00.000
*
* This file contains:
* - Core Interface Functions
* .
* which are relevant for the System driver.
*/
/* (c) Texas Instruments 2009, All rights reserved. */
#ifndef __SYS_CORE_H__
#define __SYS_CORE_H__
/* System Core Interface Functions */
/** @fn void _coreInitRegisters_(void)
* @brief Initialize Core register
*/
void _coreInitRegisters(void);
/** @fn void _coreInitStackPointer_(void)
* @brief Initialize Core stack pointer
*/
void _coreInitStackPointer(void);
/** @fn void _coreEnableIrqVicOffset_(void)
* @brief Enable Irq offset propagation via Vic controller
*/
void _coreEnableIrqVicOffset(void);
/** @fn void _coreEnableEventBusExport_(void)
* @brief Enable event bus export for external monitoring modules
* @note It is required to enable event bus export to process ecc issues.
*
* This function enables event bus exports to external monitoring modules
* like tightly coupled RAM wrapper, Flash wrapper and error signaling module.
*/
void _coreEnableEventBusExport(void);
/** @fn void _coreEnableRamEcc_(void)
* @brief Enable external ecc error for RAM odd and even bank
* @note It is required to enable event bus export to process ecc issues.
*/
void _coreEnableRamEcc(void);
/** @fn void _coreEnableFlashEcc_(void)
* @brief Enable external ecc error for the Flash
* @note It is required to enable event bus export to process ecc issues.
*/
void _coreEnableFlashEcc(void);
/** @fn void _coreEnableVfp(void)
* @brief Enable Cortex-R4 FPU
*/
void _coreEnableVfp();
#endif

@ -1,28 +0,0 @@
;-------------------------------------------------------------------------------
; sys_intvecs.asm
;
; (c) Texas Instruments 2009-2010, All rights reserved.
;
.sect ".intvecs"
;-------------------------------------------------------------------------------
; import reference for interrupt routines
.ref _c_int00
.ref vPortYieldProcessor
;-------------------------------------------------------------------------------
; interrupt vectors
b _c_int00 ; reset
b #-8 ; undefined instruction
b vPortYieldProcessor ; software interrupt
b #-8 ; Abort (prefetch)
b #-8 ; Abort (data)
b #-8 ; Reserved
ldr pc,[pc,#-0x1b0] ; IRQ
ldr pc,[pc,#-0x1b0] ; FIQ
;-------------------------------------------------------------------------------

@ -1,36 +0,0 @@
;-------------------------------------------------------------------------------
; sys_memory.asm
;
; (c) Texas Instruments 2009, All rights reserved.
;
.text
.arm
;-------------------------------------------------------------------------------
; Initialize memory
.def _memoryInit
_memoryInit:
ldr r12, regMinitGcr ; MINITGCR register pointer
mov r4, #0xA
str r4, [r12]
ldr r4, ramInitMask ; load RAM initialization mask
str r4, [r12, #4]
mloop
ldr r5, [r12, #12]
tst r5, #0x100
beq mloop
mov r4, #5
str r4, [r12]
bx lr
ramInitMask .word 0x00000001
regMinitGcr .word 0xFFFFFF5C
;-------------------------------------------------------------------------------

@ -1,22 +0,0 @@
/** @file sys_memory.h
* @brief System Memory Header File
* @date 23.July.2009
* @version 1.00.000
*
* This file contains:
* - Memory Interface Functions
* .
* which are relevant for the System driver.
*/
/* (c) Texas Instruments 2009, All rights reserved. */
#ifndef __SYS_MEMORY_H__
#define __SYS_MEMORY_H__
/** @fn void _memoryInit_(void)
* @brief Automatic hardware memory initialization
*/
void _memoryInit(void);
#endif

@ -1,19 +0,0 @@
/** @file sys_phantom.c
* @brief Phantom Interrupt Source File
* @date 15.July.2009
* @version 1.00.000
*
* This file contains:
* - Phantom Interrupt Handler
*/
/* (c) Texas Instruments 2009, All rights reserved. */
/* Phantom Interrupt Handler */
#pragma INTERRUPT(phantomInterrupt, IRQ)
void phantomInterrupt(void)
{
for(;;);
}

@ -1,324 +0,0 @@
/** @file sys_startup.c
* @brief Startup Source File
* @date 05.November.2010
* @version 1.01.001
*
* This file contains:
* - Include Files
* - Type Definitions
* - External Functions
* - VIM RAM Setup
* - Startup Routine
* .
* which are relevant for the Starup.
*/
/* (c) Texas Instruments 2010, All rights reserved. */
/* Include Files */
#include "sys_types.h"
#include "sys_common.h"
#include "sys_system.h"
#include "sys_vim.h"
#include "sys_core.h"
#include "sys_memory.h"
/* External Functions */
extern void __TI_auto_init(void);
extern void main(void);
extern void exit(int);
/* Vim Ram Definition */
/** @struct vimRam
* @brief Vim Ram Definition
*
* This type is used to access the Vim Ram.
*/
/** @typedef vimRAM_t
* @brief Vim Ram Type Definition
*
* This type is used to access the Vim Ram.
*/
typedef volatile struct vimRam
{
t_isrFuncPTR ISR[VIM_CHANNELS];
} vimRAM_t;
#define vimRAM ((vimRAM_t *)0xFFF82000U)
static const t_isrFuncPTR s_vim_init[] =
{
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
vPortPreemptiveTick, /* RTI */
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
vPortYeildWithinAPI, /* software interrupt */
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
};
/* Startup Routine */
#pragma INTERRUPT(_c_int00, RESET)
void _c_int00()
{
/* Enable VFP Unit */
_coreEnableVfp();
/* Initialize Core Registers */
_coreInitRegisters();
/* Initialize Stack Pointers */
_coreInitStackPointer();
/* Enable IRQ offset via Vic controller */
_coreEnableIrqVicOffset();
/* Initialize System */
systemInit();
/* Initialize VIM table */
{
unsigned i;
for (i = 0; i < 96U; i++)
{
vimRAM->ISR[i] = s_vim_init[i];
}
}
/* set IRQ/FIQ priorities */
vimREG->FIRQPR0 = SYS_FIQ
| (SYS_FIQ << 1U)
| (SYS_IRQ << 2U)
| (SYS_IRQ << 3U)
| (SYS_IRQ << 4U)
| (SYS_IRQ << 5U)
| (SYS_IRQ << 6U)
| (SYS_IRQ << 7U)
| (SYS_IRQ << 8U)
| (SYS_IRQ << 9U)
| (SYS_IRQ << 10U)
| (SYS_IRQ << 11U)
| (SYS_IRQ << 12U)
| (SYS_IRQ << 13U)
| (SYS_IRQ << 14U)
| (SYS_IRQ << 15U)
| (SYS_IRQ << 16U)
| (SYS_IRQ << 17U)
| (SYS_IRQ << 18U)
| (SYS_IRQ << 19U)
| (SYS_IRQ << 20U)
| (SYS_IRQ << 21U)
| (SYS_IRQ << 22U)
| (SYS_IRQ << 23U)
| (SYS_IRQ << 24U)
| (SYS_IRQ << 25U)
| (SYS_IRQ << 26U)
| (SYS_IRQ << 27U)
| (SYS_IRQ << 28U)
| (SYS_IRQ << 29U)
| (SYS_IRQ << 30U)
| (SYS_IRQ << 31U);
vimREG->FIRQPR1 = SYS_IRQ
| (SYS_IRQ << 1U)
| (SYS_IRQ << 2U)
| (SYS_IRQ << 3U)
| (SYS_IRQ << 4U)
| (SYS_IRQ << 5U)
| (SYS_IRQ << 6U)
| (SYS_IRQ << 7U)
| (SYS_IRQ << 8U)
| (SYS_IRQ << 9U)
| (SYS_IRQ << 10U)
| (SYS_IRQ << 11U)
| (SYS_IRQ << 12U)
| (SYS_IRQ << 13U)
| (SYS_IRQ << 14U)
| (SYS_IRQ << 15U)
| (SYS_IRQ << 16U)
| (SYS_IRQ << 17U)
| (SYS_IRQ << 18U)
| (SYS_IRQ << 19U)
| (SYS_IRQ << 20U)
| (SYS_IRQ << 21U)
| (SYS_IRQ << 22U)
| (SYS_IRQ << 23U)
| (SYS_IRQ << 24U)
| (SYS_IRQ << 25U)
| (SYS_IRQ << 26U)
| (SYS_IRQ << 27U)
| (SYS_IRQ << 28U)
| (SYS_IRQ << 29U)
| (SYS_IRQ << 30U);
/* enable interrupts */
vimREG->REQMASKSET0 = 1U
| (0U << 1)
| (1U << 2) /* RTI */
| (0U << 3)
| (0U << 4)
| (0U << 5)
| (0U << 6)
| (0U << 7)
| (0U << 8)
| (0U << 9)
| (0U << 10)
| (0U << 11)
| (0U << 12)
| (0U << 13)
| (0U << 14)
| (0U << 15)
| (0U << 16)
| (0U << 17)
| (0U << 18)
| (0U << 19)
| (0U << 20)
| (1U << 21) /* Software Interrupt */
| (0U << 22)
| (0U << 23)
| (0U << 24)
| (0U << 25)
| (0U << 26)
| (0U << 27)
| (0U << 28)
| (0U << 29)
| (0U << 30)
| (0U << 31);
vimREG->REQMASKSET1 = 0U
| (0U << 1)
| (0U << 2)
| (0U << 3)
| (0U << 4)
| (0U << 5)
| (0U << 6)
| (0U << 7)
| (0U << 8)
| (0U << 9)
| (0U << 10)
| (0U << 11)
| (0U << 12)
| (0U << 13)
| (0U << 14)
| (0U << 15)
| (0U << 16)
| (0U << 17)
| (0U << 18)
| (0U << 19)
| (0U << 20)
| (0U << 21)
| (0U << 22)
| (0U << 23)
| (0U << 24)
| (0U << 25)
| (0U << 26)
| (0U << 27)
| (0U << 28)
| (0U << 29)
| (0U << 30);
/* initalise global variable and constructors */
__TI_auto_init();
/* call the application */
main();
exit(0);
}

@ -1,137 +0,0 @@
/** @file system.c
* @brief System Driver Source File
* @date 05.November.2010
* @version 1.01.000
*
* This file contains:
* - API Funcions
* .
* which are relevant for the System driver.
*/
/* (c) Texas Instruments 2010, All rights reserved. */
/* Include Files */
#include "sys_system.h"
/** @fn void systemInit(void)
* @brief Initializes System Driver
*
* This function initializes the System driver.
*
*/
void systemInit(void)
{
/** @b Initialize @b Flash @b Wrapper: */
/** - Setup flash read mode, address wait states and data wait states */
flashWREG->FRDCNTL = 0x01000000U
| (3U << 8U)
| (1U << 4U)
| 1U;
/** @b Initialize @b Pll: */
/** - Setup pll control register 1:
* - Setup reset on oscillator slip
* - Setup bypass on pll slip
* - Setup Pll output clock divider
* - Setup reset on oscillator fail
* - Setup reference clock divider
* - Setup Pll multiplier
*/
#if 0
/* 180Mhz */
systemREG1->PLLCTL1 = 0x00000000U
| 0x20000000U
| (0U << 24U)
| 0x00000000U
| (5U << 16U)
| (134U << 8U);
#endif
#if 1
/* 160Mhz */
systemREG1->PLLCTL1 = 0x00000000U
| 0x20000000U
| (0U << 24U)
| 0x00000000U
| (5U << 16U)
| (113U << 8U);
#endif
/** - Setup pll control register 1
* - Enable/Disable frequency modulation
* - Setup spreading rate
* - Setup bandwidth adjustment
* - Setup internal Pll output divider
* - Setup spreading amount
*/
systemREG1->PLLCTL2 = 0x00000000U
| (255U << 22U)
| (7U << 12U)
| (1U << 9U)
| 61U;
/** @b Initialize @b Clock @b Tree: */
/** - Start clock source lock */
systemREG1->CSDISCLR = 0x00000000U
| 0x00000000U
| 0x00000000U
| 0x00000000U
| 0x00000002U;
/** - Wait for until clocks are locked */
while ((systemREG1->CSVSTAT & 0x00000002U) == 0x00); /* wait for PLL */
/** - Setup GCLK, HCLK and VCLK clock source for normal operation, power down mode and after wakeup */
systemREG1->GHVSRC = (SYS_PLL << 24U)
| (SYS_PLL << 16U)
| SYS_PLL;
/** - Power-up all peripharals */
pcrREG->PSPWRDWNCLR0 = 0xFFFFFFFFU;
pcrREG->PSPWRDWNCLR1 = 0xFFFFFFFFU;
pcrREG->PSPWRDWNCLR2 = 0xFFFFFFFFU;
pcrREG->PSPWRDWNCLR3 = 0xFFFFFFFFU;
/** - Setup synchronous peripheral clock dividers for VCLK1 and VCLK2 */
systemREG1->PENA = 0U;
systemREG1->VCLKR = 15U;
systemREG1->VCLK2R = 1U;
systemREG1->VCLKR = 1U;
systemREG2->CLK2CNTRL = (1U << 8U)
| 1U;
/** - Setup RTICLK1 and RTICLK2 clocks */
systemREG1->RCLKSRC = (1U << 24U)
| (SYS_VCLK << 16U)
| (1U << 8U)
| SYS_VCLK;
/** - Setup asynchronous peripheral clock sources for AVCLK1 and AVCLK2 */
systemREG1->VCLKASRC = (SYS_FR_PLL << 8U)
| SYS_VCLK;
/** - Setup asynchronous peripheral clock sources for AVCLK3 and AVCLK4 */
systemREG2->VCLKACON1 = (0U << 24U)
| (0U << 20U)
| (SYS_EXTERNAL2 << 16U)
| (3U << 8U)
| (0U << 4U)
| SYS_EXTERNAL;
/** - Enable Peripherals */
systemREG1->PENA = 1U;
/** @note: HCLK >= VCLK2 >= VCLK_sys */
}

@ -1,464 +0,0 @@
/** @file system.h
* @brief System Driver Header File
* @date 23.July.2009
* @version 1.01.001
*
* This file contains:
* - Definitions
* - Types
* .
* which are relevant for the System driver.
*/
/* (c) Texas Instruments 2009-2010, All rights reserved. */
#ifndef __SYS_SYSTEM_H__
#define __SYS_SYSTEM_H__
/* USER CODE BEGIN (0) */
/* USER CODE END */
/* System General Definitions */
/** @enum systemInterrupt
* @brief Alias names for clock sources
*
* This enumeration is used to provide alias names for the clock sources:
* - IRQ
* - FIQ
*/
enum systemInterrupt
{
SYS_IRQ, /**< Alias for IRQ interrupt */
SYS_FIQ /**< Alias for FIQ interrupt */
};
/** @enum systemClockSource
* @brief Alias names for clock sources
*
* This enumeration is used to provide alias names for the clock sources:
* - Oscillator
* - Pll
* - 32 kHz Oscillator
* - External1
* - Low Power Oscillator Low
* - Low Power Oscillator High
* - Flexray Pll
* - External2
* - Synchronous VCLK1
*/
enum systemClockSource
{
SYS_OSC = 0, /**< Alias for oscillator clock Source */
SYS_PLL = 1, /**< Alias for Pll clock Source */
SYS_O32 = 2, /**< Alias for 32 kHz oscillator clock Source */
SYS_EXTERNAL = 3, /**< Alias for external clock Source */
SYS_LPO_LOW = 4, /**< Alias for low power oscillator low clock Source */
SYS_LPO_HIGH = 5, /**< Alias for low power oscillator high clock Source */
SYS_FR_PLL = 6, /**< Alias for flexray pll clock Source */
SYS_EXTERNAL2 = 7, /**< Alias for external 2 clock Source */
SYS_VCLK = 9 /**< Alias for synchronous VCLK1 clock Source */
};
#define SYS_DOZE_MODE 0x000F3F02U
#define SYS_SNOOZE_MODE 0x000F3F03U
#define SYS_SLEEP_MODE 0x000FFFFFU
/** @def SYS_PRE1
* @brief Alias name for RTI1CLK PRE clock source
*
* This is an alias name for the RTI1CLK pre clock source.
* This can be either:
* - Oscillator
* - Pll
* - 32 kHz Oscillator
* - External
* - Low Power Oscillator Low
* - Low Power Oscillator High
* - Flexray Pll
*/
#define SYS_PRE1 SYS_PLL
/** @def SYS_PRE2
* @brief Alias name for RTI2CLK pre clock source
*
* This is an alias name for the RTI2CLK pre clock source.
* This can be either:
* - Oscillator
* - Pll
* - 32 kHz Oscillator
* - External
* - Low Power Oscillator Low
* - Low Power Oscillator High
* - Flexray Pll
*/
#define SYS_PRE2 SYS_PLL
/* USER CODE BEGIN (1) */
/* USER CODE END */
/* System Register Frame 1 Definition */
/** @struct systemBase1
* @brief System Register Frame 1 Definition
*
* This type is used to access the System 1 Registers.
*/
/** @typedef systemBASE1_t
* @brief System Register Frame 1 Type Definition
*
* This type is used to access the System 1 Registers.
*/
typedef volatile struct systemBase1
{
unsigned SYSPC1; /* 0x0000 */
unsigned SYSPC2; /* 0x0004 */
unsigned SYSPC3; /* 0x0008 */
unsigned SYSPC4; /* 0x000C */
unsigned SYSPC5; /* 0x0010 */
unsigned SYSPC6; /* 0x0014 */
unsigned SYSPC7; /* 0x0018 */
unsigned SYSPC8; /* 0x001C */
unsigned SYSPC9; /* 0x0020 */
unsigned SSWPLL1; /* 0x0024 */
unsigned SSWPLL2; /* 0x0028 */
unsigned SSWPLL3; /* 0x002C */
unsigned CSDIS; /* 0x0030 */
unsigned CSDISSET; /* 0x0034 */
unsigned CSDISCLR; /* 0x0038 */
unsigned CSDDIS; /* 0x003C */
unsigned CSDDISSET; /* 0x0040 */
unsigned CSDDISCLR; /* 0x0044 */
unsigned GHVSRC; /* 0x0048 */
unsigned VCLKASRC; /* 0x004C */
unsigned RCLKSRC; /* 0x0050 */
unsigned CSVSTAT; /* 0x0054 */
unsigned MSTGCR; /* 0x0058 */
unsigned MINITGCR; /* 0x005C */
unsigned MSINENA; /* 0x0060 */
unsigned MSTFAIL; /* 0x0064 */
unsigned MSTCGSTAT; /* 0x0068 */
unsigned MINISTAT; /* 0x006C */
unsigned PLLCTL1; /* 0x0070 */
unsigned PLLCTL2; /* 0x0074 */
unsigned UERFLAG; /* 0x0078 */
unsigned DIEIDL; /* 0x007C */
unsigned DIEIDH; /* 0x0080 */
unsigned VRCTL; /* 0x0084 */
unsigned LPOMONCTL; /* 0x0088 */
unsigned CLKTEST; /* 0x008C */
unsigned DFTCTRLREG1; /* 0x0090 */
unsigned DFTCTRLREG2; /* 0x0094 */
unsigned : 32U; /* 0x0098 */
unsigned : 32U; /* 0x009C */
unsigned GPREG1; /* 0x00A0 */
unsigned BTRMSEL; /* 0x00A4 */
unsigned IMPFASTS; /* 0x00A8 */
unsigned IMPFTADD; /* 0x00AC */
unsigned SSISR1; /* 0x00B0 */
unsigned SSISR2; /* 0x00B4 */
unsigned SSISR3; /* 0x00B8 */
unsigned SSISR4; /* 0x00BC */
unsigned RAMGCR; /* 0x00C0 */
unsigned BMMCR1; /* 0x00C4 */
unsigned BMMCR2; /* 0x00C8 */
unsigned MMUGCR; /* 0x00CC */
#ifdef __little_endian__
unsigned : 8U; /* 0x00D0 */
unsigned PENA : 1U; /* 0x00D0 */
unsigned : 7U; /* 0x00D0 */
unsigned VCLKR : 4U; /* 0x00D0 */
unsigned : 4U; /* 0x00D0 */
unsigned VCLK2R : 4U; /* 0x00D0 */
unsigned : 4U; /* 0x00D0 */
#else
unsigned : 4U; /* 0x00D0 */
unsigned VCLK2R : 4U; /* 0x00D0 */
unsigned : 4U; /* 0x00D0 */
unsigned VCLKR : 4U; /* 0x00D0 */
unsigned : 7U; /* 0x00D0 */
unsigned PENA : 1U; /* 0x00D0 */
unsigned : 8U; /* 0x00D0 */
#endif
unsigned ECPCNTL; /* 0x00D4 */
unsigned DSPGCR; /* 0x00D8 */
unsigned DEVCR1; /* 0x00DC */
unsigned SYSECR; /* 0x00E0 */
unsigned SYSESR; /* 0x00E4 */
unsigned ITIFLAG; /* 0x00E8 */
unsigned GBLSTAT; /* 0x00EC */
unsigned DEV; /* 0x00F0 */
unsigned SSIVEC; /* 0x00F4 */
unsigned SSIF; /* 0x00F8 */
} systemBASE1_t;
/** @def systemREG1
* @brief System Register Frame 1 Pointer
*
* This pointer is used by the system driver to access the system frame 1 registers.
*/
#define systemREG1 ((systemBASE1_t *)0xFFFFFF00U)
/** @def systemPORT
* @brief ECLK GIO Port Register Pointer
*
* Pointer used by the GIO driver to access I/O PORT of System/Eclk
* (use the GIO drivers to access the port pins).
*/
#define systemPORT ((gioPORT_t *)0xFFFFFF04U)
/* USER CODE BEGIN (2) */
/* USER CODE END */
/* System Register Frame 2 Definition */
/** @struct systemBase2
* @brief System Register Frame 2 Definition
*
* This type is used to access the System 2 Registers.
*/
/** @typedef systemBASE2_t
* @brief System Register Frame 2 Type Definition
*
* This type is used to access the System 2 Registers.
*/
typedef volatile struct systemBase2
{
unsigned PLLCTL3; /* 0x0000 */
unsigned : 32U; /* 0x0004 */
unsigned STCCLKDIV; /* 0x0008 */
unsigned CLKHB_GLBREG; /* 0x000C */
unsigned CLKHB_RTIDREG; /* 0x0010 */
unsigned HBCD_STAT; /* 0x0014 */
unsigned : 32U; /* 0x0018 */
unsigned : 32U; /* 0x001C */
unsigned CLKTRMI1; /* 0x0020 */
unsigned ECPCNTRL0; /* 0x0024 */
unsigned ECPCNTRL1; /* 0x0028 */
unsigned ECPCNTRL2; /* 0x002C */
unsigned ECPCNTRL3; /* 0x0030 */
unsigned : 32U; /* 0x0034 */
unsigned : 32U; /* 0x0038 */
unsigned CLK2CNTRL; /* 0x003C */
unsigned VCLKACON1; /* 0x0040 */
} systemBASE2_t;
/** @def systemREG2
* @brief System Register Frame 2 Pointer
*
* This pointer is used by the system driver to access the system frame 2 registers.
*/
#define systemREG2 ((systemBASE2_t *)0xFFFFE100U)
/* USER CODE BEGIN (3) */
/* USER CODE END */
/** @struct pcrBase
* @brief Pcr Register Frame Definition
*
* This type is used to access the Pcr Registers.
*/
/** @typedef pcrBASE_t
* @brief PCR Register Frame Type Definition
*
* This type is used to access the PCR Registers.
*/
typedef volatile struct pcrBase
{
unsigned PMPROTSET0; /* 0x0000 */
unsigned PMPROTSET1; /* 0x0004 */
unsigned : 32U; /* 0x0008 */
unsigned : 32U; /* 0x000C */
unsigned PMPROTCLR0; /* 0x0010 */
unsigned PMPROTCLR1; /* 0x0014 */
unsigned : 32U; /* 0x0018 */
unsigned : 32U; /* 0x001C */
unsigned PPROTSET0; /* 0x0020 */
unsigned PPROTSET1; /* 0x0024 */
unsigned PPROTSET2; /* 0x0028 */
unsigned PPROTSET3; /* 0x002C */
unsigned : 32U; /* 0x0030 */
unsigned : 32U; /* 0x0034 */
unsigned : 32U; /* 0x0038 */
unsigned : 32U; /* 0x003C */
unsigned PPROTCLR0; /* 0x0040 */
unsigned PPROTCLR1; /* 0x0044 */
unsigned PPROTCLR2; /* 0x0048 */
unsigned PPROTCLR3; /* 0x004C */
unsigned : 32U; /* 0x0050 */
unsigned : 32U; /* 0x0054 */
unsigned : 32U; /* 0x0058 */
unsigned : 32U; /* 0x005C */
unsigned PCSPWRDWNSET0; /* 0x0060 */
unsigned PCSPWRDWNSET1; /* 0x0064 */
unsigned : 32U; /* 0x0068 */
unsigned : 32U; /* 0x006C */
unsigned PCSPWRDWNCLR0; /* 0x0070 */
unsigned PCSPWRDWNCLR1; /* 0x0074 */
unsigned : 32U; /* 0x0078 */
unsigned : 32U; /* 0x007C */
unsigned PSPWRDWNSET0; /* 0x0080 */
unsigned PSPWRDWNSET1; /* 0x0084 */
unsigned PSPWRDWNSET2; /* 0x0088 */
unsigned PSPWRDWNSET3; /* 0x008C */
unsigned : 32U; /* 0x0090 */
unsigned : 32U; /* 0x0094 */
unsigned : 32U; /* 0x0098 */
unsigned : 32U; /* 0x009C */
unsigned PSPWRDWNCLR0; /* 0x00A0 */
unsigned PSPWRDWNCLR1; /* 0x00A4 */
unsigned PSPWRDWNCLR2; /* 0x00A8 */
unsigned PSPWRDWNCLR3; /* 0x00AC */
} pcrBASE_t;
/** @def pcrREG
* @brief Pcr Register Frame Pointer
*
* This pointer is used by the system driver to access the Pcr registers.
*/
#define pcrREG ((pcrBASE_t *)0xFFFFE000U)
/* USER CODE BEGIN (4) */
/* USER CODE END */
/* FlashW General Definitions */
/** @enum flashWPowerModes
* @brief Alias names for flash bank power modes
*
* This enumeration is used to provide alias names for the flash bank power modes:
* - sleep
* - standby
* - active
*/
enum flashWPowerModes
{
SYS_SLEEP = 0U, /**< Alias for flash bank power mode sleep */
SYS_STANDBY = 1U, /**< Alias for flash bank power mode standby */
SYS_ACTIVE = 3U /**< Alias for flash bank power mode active */
};
/* USER CODE BEGIN (5) */
/* USER CODE END */
/** @struct flashWBase
* @brief Flash Wrapper Register Frame Definition
*
* This type is used to access the Flash Wrapper Registers.
*/
/** @typedef flashWBASE_t
* @brief Flash Wrapper Register Frame Type Definition
*
* This type is used to access the Flash Wrapper Registers.
*/
typedef volatile struct flashWBase
{
unsigned FRDCNTL; /* 0x0000 */
unsigned FSPRD; /* 0x0004 */
unsigned FEDACCTRL1; /* 0x0008 */
unsigned FEDACCTRL2; /* 0x000C */
unsigned FCORERRCNT; /* 0x0010 */
unsigned FCORERRADD; /* 0x0014 */
unsigned FCORERRPOS; /* 0x0018 */
unsigned FEDACSTATUS; /* 0x001C */
unsigned FUNCERRADD; /* 0x0020 */
unsigned FEDACSDIS; /* 0x0024 */
unsigned FPRIMADDTAG; /* 0x0028 */
unsigned FREDUADDTAG; /* 0x002C */
unsigned FBPROT; /* 0x0030 */
unsigned FBSE; /* 0x0034 */
unsigned FBBUSY; /* 0x0038 */
unsigned FBAC; /* 0x003C */
unsigned FBFALLBACK; /* 0x0040 */
unsigned FBPRDY; /* 0x0044 */
unsigned FPAC1; /* 0x0048 */
unsigned FPAC2; /* 0x004C */
unsigned FMAC; /* 0x0050 */
unsigned FMSTAT; /* 0x0054 */
unsigned FEMUDMSW; /* 0x0058 */
unsigned FEMUDLSW; /* 0x005C */
unsigned FEMUECC; /* 0x0060 */
unsigned FLOCK; /* 0x0064 */
unsigned FEMUADDR; /* 0x0068 */
unsigned FDIAGCTRL; /* 0x006C */
unsigned FRAWDATAH; /* 0x0070 */
unsigned FRAWDATAL; /* 0x0074 */
unsigned FRAWECC; /* 0x0078 */
unsigned FPAROVR; /* 0x007C */
unsigned FVREADCT; /* 0x0080 */
unsigned FVHVCT1; /* 0x0084 */
unsigned FVHVCT2; /* 0x0088 */
unsigned FVNVCT; /* 0x008C */
unsigned FVPPCT; /* 0x0090 */
unsigned FVWLCT; /* 0x0094 */
unsigned FEFUSE; /* 0x0098 */
unsigned : 32U; /* 0x009C */
unsigned : 32U; /* 0x00A0 */
unsigned : 32U; /* 0x00A4 */
unsigned : 32U; /* 0x00A8 */
unsigned : 32U; /* 0x00AC */
unsigned : 32U; /* 0x00B0 */
unsigned : 32U; /* 0x00B4 */
unsigned : 32U; /* 0x00B8 */
unsigned : 32U; /* 0x00BC */
unsigned FEDACSDIS2; /* 0x00C0 */
unsigned : 32U; /* 0x00C4 */
unsigned : 32U; /* 0x00C8 */
unsigned : 32U; /* 0x00CC */
unsigned : 32U; /* 0x00D0 */
unsigned : 32U; /* 0x00D4 */
unsigned : 32U; /* 0x00D8 */
unsigned : 32U; /* 0x00DC */
unsigned : 32U; /* 0x00E0 */
unsigned : 32U; /* 0x00E4 */
unsigned : 32U; /* 0x00E8 */
unsigned : 32U; /* 0x00EC */
unsigned : 32U; /* 0x00F0 */
unsigned : 32U; /* 0x00F4 */
unsigned : 32U; /* 0x00F8 */
unsigned : 32U; /* 0x00FC */
unsigned FBSTROBES; /* 0x0100 */
unsigned FPSTROBES; /* 0x0104 */
unsigned FBMODE; /* 0x0108 */
unsigned FTCR; /* 0x010C */
unsigned FADDR; /* 0x0110 */
unsigned FWRITE; /* 0x0114 */
unsigned FCBITSEL; /* 0x0118 */
unsigned FTCTRL; /* 0x011C */
unsigned FWPWRITE0; /* 0x0120 */
unsigned FWPWRITE1; /* 0x0124 */
unsigned FWPWRITE2; /* 0x0128 */
unsigned FWPWRITE3; /* 0x012C */
unsigned FWPWRITE4; /* 0x0130 */
} flashWBASE_t;
/** @def flashWREG
* @brief Flash Wrapper Register Frame Pointer
*
* This pointer is used by the system driver to access the flash wrapper registers.
*/
#define flashWREG ((flashWBASE_t *)(0xFFF87000U))
/* USER CODE BEGIN (6) */
/* USER CODE END */
/* System Interface Functions */
void systemInit(void);
void systemPowerDown(unsigned mode);
/* USER CODE BEGIN (7) */
/* USER CODE END */
#endif

@ -1,49 +0,0 @@
/*----------------------------------------------------------------------------*/
/* sys_types.h 10/20/10 15:19:19 */
/* */
/* (c) Texas Instruments 2003-2010, All rights reserved. */
/* */
#ifndef __sys_types_h__
#define __sys_types_h__
/*----------------------------------------------------------------------------*/
/* Standard Types */
typedef signed char T_S8;
#define MAX_S8 (127)
#define MIN_S8 (-128)
typedef unsigned char T_U8;
#define MAX_U8 (255)
#define MIN_U8 (0)
typedef signed short T_S16;
#define MAX_S16 (32767)
#define MIN_S16 (-32767-1)
typedef unsigned short T_U16;
#define MAX_U16 (0xFFFFU)
#define MIN_U16 (0)
typedef signed int T_S32;
#define MAX_S32 (2147483647L)
#define MIN_S32 (-2147483647L-1)
typedef unsigned int T_U32;
#define MAX_U32 (0xFFFFFFFFU)
#define MIN_U32 (0)
typedef float T_F32;
#define MAX_F32 (3.39e+38)
#define MIN_F32 (1.18e-38)
typedef double T_F64;
#define MAX_F64 (1.79e+308)
#define MIN_F64 (2.23e-308)
#endif
/*----------------------------------------------------------------------------*/

@ -1,110 +0,0 @@
/** @file sys_vim.h
* @brief Vectored Interrupt Module Header File
* @date 05.November.2010
* @version 1.01.000
*
* This file contains:
* - VIM Type Definitions
* - VIM General Definitions
* .
* which are relevant for the Vectored Interrupt Controller.
*/
/* (c) Texas Instruments 2010, All rights reserved. */
#ifndef __SYS_VIM_H__
#define __SYS_VIM_H__
/* USER CODE BEGIN (0) */
/* USER CODE END */
/* VIM Type Definitions */
/** @typedef t_isrFuncPTR
* @brief ISR Function Pointer Type Definition
*
* This type is used to access the ISR handler.
*/
typedef void (*t_isrFuncPTR)();
/* USER CODE BEGIN (1) */
/* USER CODE END */
/* VIM General Configuration */
#define VIM_CHANNELS 96U
/* USER CODE BEGIN (2) */
/* USER CODE END */
/* Interrupt Handlers */
extern void phantomInterrupt(void);
extern void esmHighLevelInterrupt(void);
extern void vPortPreemptiveTick(void);
extern void vPortNonPreemptiveTick(void);
extern void vPortYeildWithinAPI(void);
/* Vim Register Frame Definition */
/** @struct vimBase
* @brief Vim Register Frame Definition
*
* This type is used to access the Vim Registers.
*/
/** @typedef vimBASE_t
* @brief VIM Register Frame Type Definition
*
* This type is used to access the VIM Registers.
*/
typedef volatile struct vimBase
{
unsigned : 24U; /* 0x0000 */
unsigned IRQIVEC : 8U; /* 0x0000 */
unsigned : 24U; /* 0x0004 */
unsigned FIQIVEC : 8U; /* 0x0004 */
unsigned : 32U; /* 0x0008 */
unsigned : 32U; /* 0x000C */
unsigned FIRQPR0; /* 0x0010 */
unsigned FIRQPR1; /* 0x0014 */
unsigned FIRQPR2; /* 0x0018 */
unsigned FIRQPR3; /* 0x001C */
unsigned INTREQ0; /* 0x0020 */
unsigned INTREQ1; /* 0x0024 */
unsigned INTREQ2; /* 0x0028 */
unsigned INTREQ3; /* 0x002C */
unsigned REQMASKSET0; /* 0x0030 */
unsigned REQMASKSET1; /* 0x0034 */
unsigned REQMASKSET2; /* 0x0038 */
unsigned REQMASKSET3; /* 0x003C */
unsigned REQMASKCLR0; /* 0x0040 */
unsigned REQMASKCLR1; /* 0x0044 */
unsigned REQMASKCLR2; /* 0x0048 */
unsigned REQMASKCLR3; /* 0x004C */
unsigned WAKEMASKSET0; /* 0x0050 */
unsigned WAKEMASKSET1; /* 0x0054 */
unsigned WAKEMASKSET2; /* 0x0058 */
unsigned WAKEMASKSET3; /* 0x005C */
unsigned WAKEMASKCLR0; /* 0x0060 */
unsigned WAKEMASKCLR1; /* 0x0064 */
unsigned WAKEMASKCLR2; /* 0x0068 */
unsigned WAKEMASKCLR3; /* 0x006C */
unsigned IRQVECREG; /* 0x0070 */
unsigned FIQVECREQ; /* 0x0074 */
unsigned : 9U; /* 0x0078 */
unsigned CAPEVTSRC1 : 7U; /* 0x0078 */
unsigned : 9U; /* 0x0078 */
unsigned CAPEVTSRC0 : 7U; /* 0x0078 */
unsigned : 32U; /* 0x007C */
unsigned char CHANMAP[64U]; /* 0x0080-0x017C */
} vimBASE_t;
#define vimREG ((vimBASE_t *)0xFFFFFE00U)
/* USER CODE BEGIN (3) */
/* USER CODE END */
#endif

@ -1,37 +0,0 @@
/*----------------------------------------------------------------------------*/
/* sys_link.cmd */
/* */
/*----------------------------------------------------------------------------*/
/* Linker Settings */
/*----------------------------------------------------------------------------*/
/* Memory Map */
MEMORY
{
VECTORS (X) : origin=0x00000000 length=0x00000020
FLASH0 (RX) : origin=0x00000020 length=0x0017FFE0
FLASH1 (RX) : origin=0x00180000 length=0x00180000
STACKS (RW) : origin=0x08000000 length=0x00000200
RAM (RW) : origin=0x08000200 length=0x0003FE00
}
/*----------------------------------------------------------------------------*/
/* Section Configuration */
SECTIONS
{
.intvecs : {} > VECTORS
.text : {} > FLASH0 | FLASH1
.const : {} > FLASH0 | FLASH1
.cinit : {} > FLASH0 | FLASH1
.pinit : {} > FLASH0 | FLASH1
.heap : {} > RAM
.bss : {} > RAM
.data : {} > RAM
.sysmem : {} > RAM
}
/*----------------------------------------------------------------------------*/
Loading…
Cancel
Save