mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Commit 3 RX100 low power demos.
This commit is contained in:
parent
2b41be4cb9
commit
2bd7d0c1f5
130
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/.HardwareDebuglinker
Normal file
130
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/.HardwareDebuglinker
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
<?xml version="1.0" encoding="ASCII"?>
|
||||||
|
<com.renesas.linkersection.model:SectionContainer xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:com.renesas.linkersection.model="http:///LinkerSection.ecore" targets="GNU_RX">
|
||||||
|
<definedRegionsList name="RAM">
|
||||||
|
<startAddress xsi:type="com.renesas.linkersection.model:FixedAddress"/>
|
||||||
|
<endAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="20479"/>
|
||||||
|
</definedRegionsList>
|
||||||
|
<definedRegionsList name="ROM">
|
||||||
|
<startAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294836224"/>
|
||||||
|
<endAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294967295"/>
|
||||||
|
</definedRegionsList>
|
||||||
|
<sections name=".fvectors" isKeep="true">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294967248"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".fvectors"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".option_bytes" isKeep="true">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294967176"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".option_bytes"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".endian_bytes" isKeep="true">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294967168"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".endian_bytes"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".text">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294836224"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".text"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".text.*"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="P"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="etext"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".rvectors">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:ReferencedSectionAddress" referencedSection="//@sections.3"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_rvectors_start"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".rvectors"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_rvectors_end"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".init">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:ReferencedSectionAddress" referencedSection="//@sections.4"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".init"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="__preinit_array_start"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".preinit_array"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="__preinit_array_end"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="__init_array_start = (. + 3) & ~ 3"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".init_array"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="SORT(.init_array.*)"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="__init_array_end"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="__fini_array_start"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".fini_array"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="SORT(.fini_array.*)"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="__fini_array_end"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".fini">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:ReferencedSectionAddress" referencedSection="//@sections.5"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".fini"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".got">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:ReferencedSectionAddress" referencedSection="//@sections.6"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".got"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".got.plt"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".rodata">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:ReferencedSectionAddress" referencedSection="//@sections.7"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".rodata"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".rodata.*"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="C_1"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="C_2"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="C"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_erodata"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".eh_frame_hdr">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:ReferencedSectionAddress" referencedSection="//@sections.8"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".eh_frame_hdr"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".eh_frame">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:ReferencedSectionAddress" referencedSection="//@sections.9"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".eh_frame"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".jcr">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:ReferencedSectionAddress" referencedSection="//@sections.10"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".jcr"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".tors">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:ReferencedSectionAddress" referencedSection="//@sections.11"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="__CTOR_LIST__"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="___ctors"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".ctors"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="___ctors_end"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="__CTOR_END__"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="__DTOR_LIST__"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="___dtors"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".dtors"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="___dtors_end"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="__DTOR_END__"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_mdata"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".data">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="512"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_data"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".data"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".data.*"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="D"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="D_1"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="D_2"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_edata"/>
|
||||||
|
<reservedMemAddress xsi:type="com.renesas.linkersection.model:ReferencedLabelAddress" label="//@sections.12/@contents.10"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".gcc_exc">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:ReferencedSectionAddress" referencedSection="//@sections.13"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".gcc_exc"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".bss">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:ReferencedSectionAddress" referencedSection="//@sections.14"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_bss"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".bss"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".bss.**"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="COMMON"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="B"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="B_1"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name="B_2"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_ebss"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_end"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".ustack">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="511"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_ustack"/>
|
||||||
|
</sections>
|
||||||
|
<sections name=".istack">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="507"/>
|
||||||
|
<contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_istack"/>
|
||||||
|
</sections>
|
||||||
|
</com.renesas.linkersection.model:SectionContainer>
|
202
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/.cproject
Normal file
202
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/.cproject
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?>
|
||||||
|
|
||||||
|
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.1038200195">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.1038200195" moduleId="org.eclipse.cdt.core.settings" name="HardwareDebug">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="RTOSDemo_GCC" buildArtefactType="com.renesas.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=com.renesas.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf *.lst *.lis *.lpp *.map" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.VCErrorParser" id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.1038200195" name="HardwareDebug" parent="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id">
|
||||||
|
<folderInfo id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.1038200195." name="/" resourcePath="">
|
||||||
|
<toolChain id="%com.renesas.cdt.rx.hardwaredebug.win32.toolChain.Id.1200713553" name="KPIT GNURX-ELF Toolchain" superClass="%com.renesas.cdt.rx.hardwaredebug.win32.toolChain.Id">
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.PE" id="com.renesas.cdt.rx.hardwaredebug.win32.targetPlatform.Id.2026223031" osList="win32" superClass="com.renesas.cdt.rx.hardwaredebug.win32.targetPlatform.Id"/>
|
||||||
|
<builder buildPath="${workspace_loc:/RTOSDemo_GCC/HardwareDebug}" id="com.renesas.cdt.rx.hardwaredebug.win32.builder.Id.53784355" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GNU Make Builder" superClass="com.renesas.cdt.rx.hardwaredebug.win32.builder.Id"/>
|
||||||
|
<tool command="rx-elf-libgen" id="com.renesas.cdt.rx.hardwaredebug.win32.tool.libgen.Id.454501696" name="Library Generator" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.libgen.Id">
|
||||||
|
<option id="com.renesas.cdt.core.LibraryGenerator.option.stdlib.1751934062" name="stdlib.h : Performs C program statndard processing such as storage area management" superClass="com.renesas.cdt.core.LibraryGenerator.option.stdlib" value="true" valueType="boolean"/>
|
||||||
|
<option id="com.renesas.cdt.core.LibraryGenerator.option.string.223218455" name="string.h : Performs string comparison, copying " superClass="com.renesas.cdt.core.LibraryGenerator.option.string" value="true" valueType="boolean"/>
|
||||||
|
<option id="com.renesas.cdt.core.LibraryGenerator.option.selectLibrary.850493556" name="Select library" superClass="com.renesas.cdt.core.LibraryGenerator.option.selectLibrary" value="Optimized" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.core.LibraryGenerator.option.libraryType.1978494303" name="Library type" superClass="com.renesas.cdt.core.LibraryGenerator.option.libraryType" value="Project-Built" valueType="enumerated"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.compiler.Id.1144539497" name="Compiler" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.compiler.Id">
|
||||||
|
<option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.dataEndian.769042703" name="Data Endian" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.dataEndian" value="Little-endian data" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.cpuType.2018307272" name="CPU type" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.cpuType" value="RX100" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.core.Compiler.option.includeFileDir.316833280" name="Include file directories" superClass="com.renesas.cdt.core.Compiler.option.includeFileDir" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value=""${TCINSTALL}\rx-elf\optlibinc""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${TCINSTALL}\rx-elf\include""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/Common_Demo_Tasks/include}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/Renesas_Files/r_bsp/mcu/rx111}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/FreeRTOS_Source/include}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/FreeRTOS_Source/portable/GCC/RX100}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/Renesas_Files/r_bsp}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/Renesas_Files/r_bsp/board/rskrx111}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/Renesas_Files/r_switches}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/Renesas_Files/r_switches/src}""/>
|
||||||
|
</option>
|
||||||
|
<option id="com.renesas.cdt.core.Compiler.option.CPUSeries.2032738140" name="Cpu Series" superClass="com.renesas.cdt.core.Compiler.option.CPUSeries" value="RX111" valueType="string"/>
|
||||||
|
<option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.debugLevel.1225535928" name="Debug level" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.debugLevel" value="com.renesas.cdt.rx.HardwareDebug.Compiler.option.debugLevel.none" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.optimizationLevel.1088290642" name="Optimization level" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.optimizationLevel" value="com.renesas.cdt.rx.HardwareDebug.Compiler.option.optimizationLevel.speedCodeSize" valueType="enumerated"/>
|
||||||
|
<inputType id="%Base.Compiler.C.InputType.Id.962451183" name="C Input" superClass="%Base.Compiler.C.InputType.Id"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.assembler.Id.1642705589" name="Assembler" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.assembler.Id">
|
||||||
|
<option id="com.renesas.cdt.rx.HardwareDebug.Assembler.option.dataEndian.67883143" name="Data Endian" superClass="com.renesas.cdt.rx.HardwareDebug.Assembler.option.dataEndian" value="Little-endian data" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.core.Assembler.option.includeFileDirectories.434361507" name="Include file directories" superClass="com.renesas.cdt.core.Assembler.option.includeFileDirectories" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}}\src""/>
|
||||||
|
</option>
|
||||||
|
<inputType id="%Base.Assembler.inputType.Id.2097860459" name="Assembler InputType" superClass="%Base.Assembler.inputType.Id"/>
|
||||||
|
</tool>
|
||||||
|
<tool command="rx-elf-ld" commandLinePattern="${COMMAND} ${OUTPUT_FLAG}${OUTPUT_PREFIX} ${OUTPUT}${INPUTS} ${FLAGS}" id="com.renesas.cdt.rx.hardwaredebug.win32.tool.linker.Id.1295703269" name="Linker" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.linker.Id">
|
||||||
|
<option id="com.renesas.cdt.rx.HardwareDebug.Linker.option.dataEndian.1400369130" name="Data Endian" superClass="com.renesas.cdt.rx.HardwareDebug.Linker.option.dataEndian" value="Little-endian data" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rx.HardwareDebug.Linker.option.archiveSearchDirectories.770090581" name="Archive search directories" superClass="com.renesas.cdt.rx.HardwareDebug.Linker.option.archiveSearchDirectories" valueType="stringList">
|
||||||
|
<listOptionValue builtIn="false" value=""${CONFIGDIR}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${TCINSTALL}\lib\gcc\rx-elf\\${GCC_VERSION}""/>
|
||||||
|
</option>
|
||||||
|
<option id="com.renesas.cdt.rx.HardwareDebug.Linker.option.archiveLibraryFiles.1867799274" name="Archive (library) files" superClass="com.renesas.cdt.rx.HardwareDebug.Linker.option.archiveLibraryFiles" valueType="stringList">
|
||||||
|
<listOptionValue builtIn="false" value="${ProjName}"/>
|
||||||
|
<listOptionValue builtIn="false" value="gcc"/>
|
||||||
|
</option>
|
||||||
|
<option id="com.renesas.cdt.core.Linker.option.userDefinedOptions.1094627795" name="User defined options" superClass="com.renesas.cdt.core.Linker.option.userDefinedOptions" valueType="stringList">
|
||||||
|
<listOptionValue builtIn="false" value="-e_PowerON_Reset"/>
|
||||||
|
</option>
|
||||||
|
</tool>
|
||||||
|
<tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.objcopy.Id.1559563032" name="Objcopy" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.objcopy.Id"/>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<profile id="com.iar.cdt.v850.scanner.IAR_V850_PerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="false" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="com.iar.cdt.v850.toolchain.scannerInfoProvider1">
|
||||||
|
<runAction arguments="" command="" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="com.iar.cdt.rl78.scanner.IAR_RL78_PerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="false" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="com.iar.cdt.rl78.toolchain.scannerInfoProviderRL78">
|
||||||
|
<runAction arguments="" command="" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="com.iar.cdt.rx.scanner.IAR_RX_PerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="false" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="com.iar.cdt.rx.toolchain.scannerInfoProviderRX">
|
||||||
|
<runAction arguments="" command="" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="makefileGenerator">
|
||||||
|
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="RTOSDemo_GCC.com.renesas.cdt.rx.projectType.Id.1714941242" name="GNURX" projectType="com.renesas.cdt.rx.projectType.Id"/>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
6
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/.info
Normal file
6
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/.info
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
TOOL_CHAIN=KPIT GNURX-ELF Toolchain
|
||||||
|
VERSION=v12.01
|
||||||
|
TC_INSTALL=C:\devtools\Renesas\e2studio\GNURXV~1.01-\rx-elf\
|
||||||
|
GCC_STRING=4.6-GNURX_v12.01
|
||||||
|
VERISON_IDE=3.06.02.080
|
||||||
|
E2STUDIO_VERSION=1.1.1.7
|
83
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/.project
Normal file
83
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/.project
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>RTOSDemo_GCC</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.renesas.cdt.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></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>make</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildLocation</key>
|
||||||
|
<value>${workspace_loc:/RTOSDemo_GCC/HardwareDebug}</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.configurationIds</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</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>true</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>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>com.renesas.cdt.core.kpitcnature</nature>
|
||||||
|
<nature>com.renesas.cdt.core.kpitccnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,22 @@
|
||||||
|
#Mon Mar 11 11:21:23 GMT 2013
|
||||||
|
Library\ Generator\ Command=rx-elf-libgen
|
||||||
|
com.renesas.cdt.core.Assembler.option.includeFileDirectories="${workspace_loc\:/${ProjName}}\\src";
|
||||||
|
com.renesas.cdt.core.Compiler.option.includeFileDir.316833280="${TCINSTALL}\\rx-elf\\optlibinc";
|
||||||
|
com.renesas.cdt.core.LibraryGenerator.option.ctype=true
|
||||||
|
com.renesas.cdt.core.LibraryGenerator.option.libraryType=Project-Built
|
||||||
|
com.renesas.cdt.core.LibraryGenerator.option.math=false
|
||||||
|
com.renesas.cdt.core.LibraryGenerator.option.selectLibrary=Optimized
|
||||||
|
com.renesas.cdt.core.LibraryGenerator.option.stdio=false
|
||||||
|
com.renesas.cdt.core.LibraryGenerator.option.stdlib=true
|
||||||
|
com.renesas.cdt.core.LibraryGenerator.option.string=true
|
||||||
|
com.renesas.cdt.core.Linker.option.userDefinedOptions=[Ljava.lang.String;@13ec853
|
||||||
|
com.renesas.cdt.rx.HardwareDebug.Compiler.option.cpuType=RX100
|
||||||
|
com.renesas.cdt.rx.HardwareDebug.Compiler.option.cpuType.2018307272=RX100
|
||||||
|
com.renesas.cdt.rx.HardwareDebug.Compiler.option.dataEndian=Little-endian data
|
||||||
|
com.renesas.cdt.rx.HardwareDebug.Compiler.option.disableFPUInstructions=false
|
||||||
|
com.renesas.cdt.rx.HardwareDebug.Compiler.option.genCodeForRX610=false
|
||||||
|
com.renesas.cdt.rx.HardwareDebug.Compiler.option.generateRXas100output=false
|
||||||
|
com.renesas.cdt.rx.HardwareDebug.Compiler.option.make64bitDouble=false
|
||||||
|
com.renesas.cdt.rx.HardwareDebug.Linker.option.archiveLibraryFiles=${ProjName};gcc;
|
||||||
|
com.renesas.cdt.rx.HardwareDebug.Linker.option.archiveSearchDirectories.770090581="${CONFIGDIR}";"${TCINSTALL}\\lib\\gcc\\rx-elf\\\\${GCC_VERSION}";
|
||||||
|
eclipse.preferences.version=1
|
|
@ -0,0 +1,52 @@
|
||||||
|
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 RTOSDemo\FreeRTOS_Source Goto END
|
||||||
|
|
||||||
|
REM Create the required directory structure.
|
||||||
|
MD RTOSDemo\FreeRTOS_Source
|
||||||
|
MD RTOSDemo\FreeRTOS_Source\include
|
||||||
|
MD RTOSDemo\FreeRTOS_Source\portable
|
||||||
|
MD RTOSDemo\FreeRTOS_Source\portable\MemMang
|
||||||
|
MD RTOSDemo\FreeRTOS_Source\portable\GCC
|
||||||
|
MD RTOSDemo\FreeRTOS_Source\portable\GCC\RX100
|
||||||
|
MD RTOSDemo\Common_Demo_Tasks
|
||||||
|
MD RTOSDemo\Common_Demo_Tasks\include
|
||||||
|
|
||||||
|
REM Copy the core kernel files into the project directory
|
||||||
|
copy %FREERTOS_SOURCE%\tasks.c RTOSDemo\FreeRTOS_Source
|
||||||
|
copy %FREERTOS_SOURCE%\queue.c RTOSDemo\FreeRTOS_Source
|
||||||
|
copy %FREERTOS_SOURCE%\list.c RTOSDemo\FreeRTOS_Source
|
||||||
|
copy %FREERTOS_SOURCE%\timers.c RTOSDemo\FreeRTOS_Source
|
||||||
|
|
||||||
|
REM Copy the common header files into the project directory
|
||||||
|
copy %FREERTOS_SOURCE%\include\*.* RTOSDemo\FreeRTOS_Source\include
|
||||||
|
|
||||||
|
REM Copy the portable layer files into the project directory
|
||||||
|
copy %FREERTOS_SOURCE%\portable\GCC\RX100\*.* RTOSDemo\FreeRTOS_Source\portable\GCC\RX100
|
||||||
|
|
||||||
|
REM Copy the memory allocation files into the project directory
|
||||||
|
copy %FREERTOS_SOURCE%\portable\MemMang\heap_4.c RTOSDemo\FreeRTOS_Source\portable\MemMang
|
||||||
|
|
||||||
|
REM Copy the files that define the common demo tasks.
|
||||||
|
copy %COMMON_SOURCE%\death.c RTOSDemo\Common_Demo_Tasks
|
||||||
|
copy %COMMON_SOURCE%\blocktim.c RTOSDemo\Common_Demo_Tasks
|
||||||
|
copy %COMMON_SOURCE%\GenQTest.c RTOSDemo\Common_Demo_Tasks
|
||||||
|
copy %COMMON_SOURCE%\recmutex.c RTOSDemo\Common_Demo_Tasks
|
||||||
|
|
||||||
|
REM Copy the common demo file headers.
|
||||||
|
copy %COMMON_INCLUDE%\*.h RTOSDemo\Common_Demo_Tasks\include
|
||||||
|
|
||||||
|
: END
|
186
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo/FreeRTOSConfig.h
Normal file
186
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo/FreeRTOSConfig.h
Normal file
|
@ -0,0 +1,186 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following #error directive is to remind users that a batch file must be
|
||||||
|
* executed prior to this project being built. The batch file *cannot* be
|
||||||
|
* executed from within the IDE! Once it has been executed, re-open or refresh
|
||||||
|
* the Eclipse project and 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
|
||||||
|
|
||||||
|
/* Hardware specifics. */
|
||||||
|
#include "platform.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.
|
||||||
|
*----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* DEMO SPECIFIC SETTING:
|
||||||
|
* Set configCREATE_LOW_POWER_DEMO to one to run the low power demo with tick
|
||||||
|
* suppression, or 0 to run the more comprehensive test and demo application.
|
||||||
|
* If configCREATE_LOW_POWER_DEMO is set to 1 then main() calls main_low_power().
|
||||||
|
* If configCREATE_LOW_POWER_DEMO is set to 0 then main() calls main_full().
|
||||||
|
*/
|
||||||
|
#define configCREATE_LOW_POWER_DEMO 1
|
||||||
|
|
||||||
|
|
||||||
|
#define configUSE_PREEMPTION 1
|
||||||
|
#define configUSE_TICKLESS_IDLE configCREATE_LOW_POWER_DEMO
|
||||||
|
#define configUSE_IDLE_HOOK 0
|
||||||
|
#define configUSE_TICK_HOOK 0
|
||||||
|
#define configCPU_CLOCK_HZ ( ICLK_HZ ) /* Set in mcu_info.h. */
|
||||||
|
#define configPERIPHERAL_CLOCK_HZ ( PCLKB_HZ ) /* Set in muc_info.h. */
|
||||||
|
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||||
|
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 100 )
|
||||||
|
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 9 * 1024 ) )
|
||||||
|
#define configMAX_TASK_NAME_LEN ( 12 )
|
||||||
|
#define configUSE_TRACE_FACILITY 1
|
||||||
|
#define configUSE_16_BIT_TICKS 0
|
||||||
|
#define configIDLE_SHOULD_YIELD 1
|
||||||
|
#define configUSE_CO_ROUTINES 0
|
||||||
|
#define configUSE_MUTEXES 1
|
||||||
|
#define configGENERATE_RUN_TIME_STATS 0
|
||||||
|
#define configCHECK_FOR_STACK_OVERFLOW 2
|
||||||
|
#define configUSE_RECURSIVE_MUTEXES 1
|
||||||
|
#define configQUEUE_REGISTRY_SIZE 0
|
||||||
|
#define configUSE_MALLOC_FAILED_HOOK 0
|
||||||
|
#define configUSE_APPLICATION_TASK_TAG 0
|
||||||
|
|
||||||
|
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 7 )
|
||||||
|
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
|
||||||
|
|
||||||
|
/* Software timer definitions - only included when the demo is configured to
|
||||||
|
build the full demo (as opposed to the low power demo). */
|
||||||
|
#if configCREATE_LOW_POWER_DEMO == 1
|
||||||
|
#define configUSE_TIMERS 0
|
||||||
|
#else
|
||||||
|
#define configUSE_TIMERS 1
|
||||||
|
#define configTIMER_TASK_PRIORITY ( 3 )
|
||||||
|
#define configTIMER_QUEUE_LENGTH 5
|
||||||
|
#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE )
|
||||||
|
#endif /* configCREATE_LOW_POWER_DEMO */
|
||||||
|
|
||||||
|
/* The interrupt priority used by the kernel itself for the tick interrupt and
|
||||||
|
the pended interrupt. This would normally be the lowest priority. */
|
||||||
|
#define configKERNEL_INTERRUPT_PRIORITY 1
|
||||||
|
|
||||||
|
/* The maximum interrupt priority from which FreeRTOS API calls can be made.
|
||||||
|
Interrupts that use a priority above this will not be effected by anything the
|
||||||
|
kernel is doing but must not make any use of FreeRTOS functionality.
|
||||||
|
interrupts that use a priority at or below configMAX_SYSCALL_INTERRUPT_PRIORITY
|
||||||
|
can make use of FreeRTOS API function but *only* functions that end in
|
||||||
|
"FromISR()". */
|
||||||
|
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4
|
||||||
|
|
||||||
|
/* Set the following definitions to 1 to include the API function, or zero
|
||||||
|
to exclude the API function. */
|
||||||
|
#define INCLUDE_vTaskPrioritySet 1
|
||||||
|
#define INCLUDE_uxTaskPriorityGet 1
|
||||||
|
#define INCLUDE_vTaskDelete 1
|
||||||
|
#define INCLUDE_vTaskCleanUpResources 0
|
||||||
|
#define INCLUDE_vTaskSuspend 1
|
||||||
|
#define INCLUDE_vTaskDelayUntil 1
|
||||||
|
#define INCLUDE_vTaskDelay 1
|
||||||
|
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
||||||
|
#define INCLUDE_xTaskGetSchedulerState 1
|
||||||
|
|
||||||
|
extern void vAssertCalled( void );
|
||||||
|
#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled();
|
||||||
|
|
||||||
|
/* The configPRE_SLEEP_PROCESSING() and configPOST_SLEEP_PROCESSING() macros
|
||||||
|
allow the application writer to add additional code before and after the MCU is
|
||||||
|
placed into the low power state respectively. The implementations provided in
|
||||||
|
this demo can be extended to save even more power - for example the analog
|
||||||
|
input used by the low power demo could be switched off in the pre-sleep macro
|
||||||
|
and back on again in the post sleep macro. */
|
||||||
|
void vPreSleepProcessing( unsigned long xExpectedIdleTime );
|
||||||
|
void vPostSleepProcessing( unsigned long xExpectedIdleTime );
|
||||||
|
#define configPRE_SLEEP_PROCESSING( xExpectedIdleTime ) vPreSleepProcessing( xExpectedIdleTime );
|
||||||
|
#define configPOST_SLEEP_PROCESSING( xExpectedIdleTime ) vPostSleepProcessing( xExpectedIdleTime );
|
||||||
|
|
||||||
|
#endif /* FREERTOS_CONFIG_H */
|
200
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo/ParTest.c
Normal file
200
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo/ParTest.c
Normal file
|
@ -0,0 +1,200 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------
|
||||||
|
* Simple IO routines to control the LEDs.
|
||||||
|
*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Scheduler includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
|
/* Demo includes. */
|
||||||
|
#include "partest.h"
|
||||||
|
|
||||||
|
#define partestNUM_LEDS ( 4 )
|
||||||
|
|
||||||
|
long lParTestGetLEDState( unsigned long ulLED );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vParTestInitialise( void )
|
||||||
|
{
|
||||||
|
/* Port pin configuration is done by the low level set up prior to this
|
||||||
|
function being called. */
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vParTestSetLED( unsigned long ulLED, signed long xValue )
|
||||||
|
{
|
||||||
|
if( ulLED < partestNUM_LEDS )
|
||||||
|
{
|
||||||
|
if( xValue != 0 )
|
||||||
|
{
|
||||||
|
/* Turn the LED on. */
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
switch( ulLED )
|
||||||
|
{
|
||||||
|
case 0: LED0 = LED_ON;
|
||||||
|
break;
|
||||||
|
case 1: LED1 = LED_ON;
|
||||||
|
break;
|
||||||
|
case 2: LED2 = LED_ON;
|
||||||
|
break;
|
||||||
|
case 3: LED3 = LED_ON;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Turn the LED off. */
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
switch( ulLED )
|
||||||
|
{
|
||||||
|
case 0: LED0 = LED_OFF;
|
||||||
|
break;
|
||||||
|
case 1: LED1 = LED_OFF;
|
||||||
|
break;
|
||||||
|
case 2: LED2 = LED_OFF;
|
||||||
|
break;
|
||||||
|
case 3: LED3 = LED_OFF;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vParTestToggleLED( unsigned long ulLED )
|
||||||
|
{
|
||||||
|
if( ulLED < partestNUM_LEDS )
|
||||||
|
{
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
if( lParTestGetLEDState( ulLED ) != 0x00 )
|
||||||
|
{
|
||||||
|
vParTestSetLED( ulLED, 0 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vParTestSetLED( ulLED, 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
long lParTestGetLEDState( unsigned long ulLED )
|
||||||
|
{
|
||||||
|
long lReturn = pdTRUE;
|
||||||
|
|
||||||
|
if( ulLED < partestNUM_LEDS )
|
||||||
|
{
|
||||||
|
switch( ulLED )
|
||||||
|
{
|
||||||
|
case 0 : if( LED0 != 0 )
|
||||||
|
{
|
||||||
|
lReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1 : if( LED1 != 0 )
|
||||||
|
{
|
||||||
|
lReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2 : if( LED2 != 0 )
|
||||||
|
{
|
||||||
|
lReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3 : if( LED3 != 0 )
|
||||||
|
{
|
||||||
|
lReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return lReturn;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
|
@ -0,0 +1,252 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : lcd.c
|
||||||
|
* Device(s) : RX
|
||||||
|
* H/W Platform : RSKRX111
|
||||||
|
* Description : Provides variable and function declarations for lcd.c file
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Standard string manipulation & formatting functions */
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
/* Defines standard variable types used in this function */
|
||||||
|
#include <stdint.h>
|
||||||
|
/* Bring in board includes. */
|
||||||
|
#include "platform.h"
|
||||||
|
/* Following header file provides function prototypes for LCD controlling functions & macro defines */
|
||||||
|
#include "lcd.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Private global variables and functions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void lcd_delay(volatile int32_t nsecs);
|
||||||
|
static void lcd_nibble_write(uint8_t data_or_ctrl, uint8_t value);
|
||||||
|
static void lcd_write(uint8_t data_or_ctrl, uint8_t value);
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_initialize
|
||||||
|
* Description : Initializes the LCD display.
|
||||||
|
* Arguments : none
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void lcd_initialize(void)
|
||||||
|
{
|
||||||
|
/* Set LCD data pins as outputs. */
|
||||||
|
PORT4.PDR.BYTE |= 0x0F;
|
||||||
|
|
||||||
|
/* Set LCD control pins as outputs. */
|
||||||
|
RS_PIN_DDR = 1;
|
||||||
|
E_PIN_DDR = 1;
|
||||||
|
|
||||||
|
/* Power Up Delay for the LCD Module */
|
||||||
|
lcd_delay(50000000);
|
||||||
|
|
||||||
|
/* Display initialises in 8 bit mode - so send one write (seen as 8 bit) to set to 4 bit mode. */
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x03);
|
||||||
|
lcd_delay(5000000);
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x03);
|
||||||
|
lcd_delay(5000000);
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x03);
|
||||||
|
lcd_delay(5000000);
|
||||||
|
|
||||||
|
/* Function Set */
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x02);
|
||||||
|
lcd_delay(39000);
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x02);
|
||||||
|
lcd_nibble_write(CTRL_WR, (LCD_DISPLAY_ON | LCD_TWO_LINE ));
|
||||||
|
lcd_delay(39000);
|
||||||
|
|
||||||
|
/* Display ON/OFF control */
|
||||||
|
lcd_write(CTRL_WR, LCD_CURSOR_OFF);
|
||||||
|
lcd_delay(39000);
|
||||||
|
|
||||||
|
/* Display Clear */
|
||||||
|
lcd_write(CTRL_WR, LCD_CLEAR);
|
||||||
|
lcd_delay(2000000);
|
||||||
|
|
||||||
|
/* Entry Mode Set */
|
||||||
|
lcd_write(CTRL_WR, 0x06);
|
||||||
|
lcd_delay(39000);
|
||||||
|
|
||||||
|
/* Home the cursor */
|
||||||
|
lcd_write(CTRL_WR, LCD_HOME_L1);
|
||||||
|
lcd_delay(5000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_clear
|
||||||
|
* Description : Clears the LCD
|
||||||
|
* Arguments : none
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void lcd_clear(void)
|
||||||
|
{
|
||||||
|
/* Display Clear */
|
||||||
|
lcd_write(CTRL_WR, LCD_CLEAR);
|
||||||
|
lcd_delay(2000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_display
|
||||||
|
* Description : This function controls LCD writes to line 1 or 2 of the LCD.
|
||||||
|
* You need to use the defines LCD_LINE1 and LCD_LINE2 in order to specify the starting position.
|
||||||
|
* For example, to start at the 2nd position on line 1...
|
||||||
|
* lcd_display(LCD_LINE1 + 1, "Hello")
|
||||||
|
* Arguments : position -
|
||||||
|
* Line number of display
|
||||||
|
* string -
|
||||||
|
* Pointer to null terminated string
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void lcd_display(uint8_t position, uint8_t const * string)
|
||||||
|
{
|
||||||
|
/* Declare next position variable */
|
||||||
|
static uint8_t next_pos = 0xFF;
|
||||||
|
|
||||||
|
/* Set line position if needed. We don't want to if we don't need to because LCD control operations take longer
|
||||||
|
than LCD data operations. */
|
||||||
|
if (next_pos != position)
|
||||||
|
{
|
||||||
|
if(position < LCD_LINE2)
|
||||||
|
{
|
||||||
|
/* Display on Line 1 */
|
||||||
|
lcd_write(CTRL_WR, ((uint8_t)(LCD_HOME_L1 + position)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Display on Line 2 */
|
||||||
|
lcd_write(CTRL_WR, ((uint8_t)((LCD_HOME_L2 + position) - LCD_LINE2)));
|
||||||
|
}
|
||||||
|
|
||||||
|
lcd_delay(39000);
|
||||||
|
|
||||||
|
/* set position index to known value */
|
||||||
|
next_pos = position;
|
||||||
|
}
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
/* Write character to LCD. */
|
||||||
|
lcd_write(DATA_WR,*string++);
|
||||||
|
|
||||||
|
lcd_delay(43000);
|
||||||
|
|
||||||
|
/* Increment position index */
|
||||||
|
next_pos++;
|
||||||
|
}
|
||||||
|
while(*string);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_delay
|
||||||
|
* Description : Implements LCD required delays.
|
||||||
|
* Arguments : nsecs -
|
||||||
|
* Number of nanoseconds to delay. RX111 has max clock of 32MHz which gives a cycle time of 31.3ns.
|
||||||
|
* This means that nothing under 313ns should be input. 313ns would be 10 cycles which is still
|
||||||
|
* being optimistic for getting in and out of this function.
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void lcd_delay(volatile int32_t nsecs)
|
||||||
|
{
|
||||||
|
while (0 < nsecs)
|
||||||
|
{
|
||||||
|
/* Subtract off 10 cycles per iteration. This number was obtained when using the Renesas toolchain at
|
||||||
|
optimization level 2. The number to nanoseconds to subtract off below is calculated off of the ICLK speed. */
|
||||||
|
nsecs -= (int32_t)((313.0)*(32000000.0/(float)ICLK_HZ));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_nibble_write
|
||||||
|
* Description : Writes data to display. Sends command to display.
|
||||||
|
* Arguments : value -
|
||||||
|
* The value to write
|
||||||
|
* data_or_ctrl -
|
||||||
|
* Whether to write data or control.
|
||||||
|
* 1 = DATA
|
||||||
|
* 0 = CONTROL
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void lcd_nibble_write(uint8_t data_or_ctrl, uint8_t value)
|
||||||
|
{
|
||||||
|
/* Set Register Select pin high for Data */
|
||||||
|
if (data_or_ctrl == DATA_WR)
|
||||||
|
{
|
||||||
|
/* Data write. */
|
||||||
|
RS_PIN = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Control write. */
|
||||||
|
RS_PIN = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* tsu1 delay */
|
||||||
|
lcd_delay(60);
|
||||||
|
|
||||||
|
/* EN enable chip (HIGH) */
|
||||||
|
E_PIN = 1;
|
||||||
|
|
||||||
|
/* Output the data */
|
||||||
|
PORT4.PODR.BYTE = (value & 0x0F);
|
||||||
|
|
||||||
|
/* tw delay */
|
||||||
|
lcd_delay(450);
|
||||||
|
|
||||||
|
/* Latch data by dropping E */
|
||||||
|
E_PIN = 0;
|
||||||
|
|
||||||
|
/* th2 delay */
|
||||||
|
lcd_delay(10);
|
||||||
|
|
||||||
|
/* tc delay */
|
||||||
|
lcd_delay(480);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_write
|
||||||
|
* Description : This function controls LCD writes to line 1 or 2 of the LCD. You need to use the defines LCD_LINE1 and
|
||||||
|
* LCD_LINE2 in order to specify the starting position.
|
||||||
|
* For example, to start at the 2nd position on line 1...
|
||||||
|
* lcd_display(LCD_LINE1 + 1, "Hello")
|
||||||
|
* Arguments : value -
|
||||||
|
* The value to write
|
||||||
|
* data_or_ctrl -
|
||||||
|
* Whether to write data or control.
|
||||||
|
* 1 = DATA
|
||||||
|
* 0 = CONTROL
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void lcd_write(uint8_t data_or_ctrl, uint8_t value)
|
||||||
|
{
|
||||||
|
/* Write upper nibble first */
|
||||||
|
lcd_nibble_write(data_or_ctrl, (uint8_t)((value & 0xF0) >> 4));
|
||||||
|
|
||||||
|
/* Write lower nibble second */
|
||||||
|
lcd_nibble_write(data_or_ctrl, (uint8_t)(value & 0x0F));
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : lcd.h
|
||||||
|
* Device(s) : RX
|
||||||
|
* H/W Platform : RSKRX111
|
||||||
|
* Description : Provides variable and function declarations for lcd.c file
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/* Multiple inclusion prevention macro */
|
||||||
|
#ifndef LCD_H
|
||||||
|
#define LCD_H
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Defines standard integer variable types used in this file */
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* RS register select pin */
|
||||||
|
#define RS_PIN PORTC.PODR.BIT.B5
|
||||||
|
#define RS_PIN_DDR PORTC.PDR.BIT.B5
|
||||||
|
/* Display enable pin */
|
||||||
|
#define E_PIN PORTB.PODR.BIT.B1
|
||||||
|
#define E_PIN_DDR PORTB.PDR.BIT.B1
|
||||||
|
/* Data write/read definition */
|
||||||
|
#define DATA_WR 1
|
||||||
|
/* Control write/read definition */
|
||||||
|
#define CTRL_WR 0
|
||||||
|
/* Maximum characters per line of LCD display. */
|
||||||
|
#define NUMB_CHARS_PER_LINE 8
|
||||||
|
/* Number of lines on the LCD display */
|
||||||
|
#define MAXIMUM_LINES 2
|
||||||
|
/* Character position of LCD line 1 */
|
||||||
|
#define LCD_LINE1 0
|
||||||
|
/* Character position of LCD line 2 */
|
||||||
|
#define LCD_LINE2 16
|
||||||
|
/* Clear LCD display and home cursor */
|
||||||
|
#define LCD_CLEAR 0x01
|
||||||
|
/* Move cursor to line 1 */
|
||||||
|
#define LCD_HOME_L1 0x80
|
||||||
|
/* Move cursor to line 2 */
|
||||||
|
#define LCD_HOME_L2 0xC0
|
||||||
|
/* Cursor auto decrement after R/W */
|
||||||
|
#define CURSOR_MODE_DEC 0x04
|
||||||
|
/* Cursor auto increment after R/W */
|
||||||
|
#define CURSOR_MODE_INC 0x06
|
||||||
|
/* Setup, 4 bits,2 lines, 5X7 */
|
||||||
|
#define FUNCTION_SET 0x28
|
||||||
|
/* Display ON with Cursor */
|
||||||
|
#define LCD_CURSOR_ON 0x0E
|
||||||
|
/* Display ON with Cursor off */
|
||||||
|
#define LCD_CURSOR_OFF 0x0C
|
||||||
|
/* Display on with blinking cursor */
|
||||||
|
#define LCD_CURSOR_BLINK 0x0D
|
||||||
|
/* Move Cursor Left One Position */
|
||||||
|
#define LCD_CURSOR_LEFT 0x10
|
||||||
|
/* Move Cursor Right One Position */
|
||||||
|
#define LCD_CURSOR_RIGHT 0x14
|
||||||
|
/* Enable LCD display */
|
||||||
|
#define LCD_DISPLAY_ON 0x04
|
||||||
|
/* Enable both LCD lines */
|
||||||
|
#define LCD_TWO_LINE 0x08
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Exported global functions (to be accessed by other files)
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* LCD initialisation function declaration */
|
||||||
|
void lcd_initialize (void);
|
||||||
|
|
||||||
|
/* Update display function declaration */
|
||||||
|
void lcd_display(uint8_t position, uint8_t const * string);
|
||||||
|
|
||||||
|
/* Clear LCD function delcaration */
|
||||||
|
void lcd_clear (void);
|
||||||
|
|
||||||
|
/* End of multiple inclusion prevention macro */
|
||||||
|
#endif
|
|
@ -0,0 +1,50 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_bsp.h
|
||||||
|
* H/W Platform : RSKRX111
|
||||||
|
* Description : Has the header files that should be included for this platform.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef PLATFORM_BOARD_RSKRX111
|
||||||
|
#define PLATFORM_BOARD_RSKRX111
|
||||||
|
|
||||||
|
/* Make sure that no other platforms have already been defined. Do not touch this! */
|
||||||
|
#ifdef PLATFORM_DEFINED
|
||||||
|
#error "Error - Multiple platforms defined in platform.h!"
|
||||||
|
#else
|
||||||
|
#define PLATFORM_DEFINED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
INCLUDE APPROPRIATE MCU AND BOARD FILES
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#include "r_bsp_config.h"
|
||||||
|
#include ".\mcu\rx111\iodefine.h"
|
||||||
|
#include ".\mcu\rx111\mcu_info.h"
|
||||||
|
#include ".\board\rskrx111\rskrx111.h"
|
||||||
|
#include ".\board\rskrx111\lcd.h"
|
||||||
|
|
||||||
|
#endif /* PLATFORM_BOARD_RSKRX111 */
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,250 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_bsp_config_reference.c
|
||||||
|
* Device(s) : RX111
|
||||||
|
* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included
|
||||||
|
* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h)
|
||||||
|
* is just a reference file that the user can use to make their own r_bsp_config.h file.
|
||||||
|
************************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 07.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#ifndef R_BSP_CONFIG_REF_HEADER_FILE
|
||||||
|
#define R_BSP_CONFIG_REF_HEADER_FILE
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Configuration Options
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Enter the product part number for your MCU. This information will be used to obtain information about your MCU such
|
||||||
|
as package and memory size.
|
||||||
|
To help parse this information, the part number will be defined using multiple macros.
|
||||||
|
R 5 F 51 11 5 A D FM
|
||||||
|
| | | | | | | | | Macro Name Description
|
||||||
|
| | | | | | | | |__MCU_PART_PACKAGE = Package type, number of pins, and pin pitch
|
||||||
|
| | | | | | | |____not used = Products with wide temperature range (D: -40 to 85C G: -40 to 105C)
|
||||||
|
| | | | | | |______not used = Blank
|
||||||
|
| | | | | |________MCU_PART_MEMORY_SIZE = ROM, RAM, and Data Flash Capacity
|
||||||
|
| | | | |___________MCU_PART_GROUP = Group name
|
||||||
|
| | | |______________MCU_PART_SERIES = Series name
|
||||||
|
| | |________________MCU_PART_MEMORY_TYPE = Type of memory (Flash)
|
||||||
|
| |__________________not used = Renesas MCU
|
||||||
|
|____________________not used = Renesas semiconductor product.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Package type. Set the macro definition based on values below:
|
||||||
|
Character(s) = Value for macro = Package Type/Number of Pins/Pin Pitch
|
||||||
|
FM = 0x0 = LFQFP/64/0.50
|
||||||
|
FK = 0x1 = LQFP/64/0.80
|
||||||
|
LF = 0x2 = TFLGA/64/0.50
|
||||||
|
FL = 0x3 = LFQFP/48/0.50
|
||||||
|
NE = 0x4 = VQFN/48/0.50
|
||||||
|
NC = 0x5 = HWQFN/36/0.50
|
||||||
|
LM = 0x6 = WFLGA/36/0.50
|
||||||
|
SB = 0x7 = SSOP/36/0.80
|
||||||
|
*/
|
||||||
|
#define MCU_PART_PACKAGE (0x0)
|
||||||
|
|
||||||
|
/* ROM, RAM, and Data Flash Capacity.
|
||||||
|
Character(s) = Value for macro = ROM Size/Ram Size/Data Flash Size
|
||||||
|
5 = 0x5 = 128KB/16KB/8KB
|
||||||
|
4 = 0x4 = 96KB/16KB/8KB
|
||||||
|
3 = 0x3 = 64KB/10KB/8KB
|
||||||
|
1 = 0x1 = 32KB/10KB/8KB
|
||||||
|
J = 0x0 = 16KB/8KB/8KB
|
||||||
|
*/
|
||||||
|
#define MCU_PART_MEMORY_SIZE (0x5)
|
||||||
|
|
||||||
|
/* Group name.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
10 = 0x0 = RX110 Group
|
||||||
|
11 = 0x1 = RX111 Group
|
||||||
|
*/
|
||||||
|
#define MCU_PART_GROUP (0x1)
|
||||||
|
|
||||||
|
/* Series name.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
51 = 0x0 = RX100 Series
|
||||||
|
*/
|
||||||
|
#define MCU_PART_SERIES (0x0)
|
||||||
|
|
||||||
|
/* Memory type.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
F = 0x0 = Flash memory version
|
||||||
|
*/
|
||||||
|
#define MCU_PART_MEMORY_TYPE (0x0)
|
||||||
|
|
||||||
|
/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a
|
||||||
|
'#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */
|
||||||
|
#if defined(BSP_DECLARE_STACK)
|
||||||
|
/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||||
|
#pragma stacksize su=0x400
|
||||||
|
/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||||
|
#pragma stacksize si=0x100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Heap size in bytes. */
|
||||||
|
#define HEAP_BYTES (0x400)
|
||||||
|
|
||||||
|
/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information
|
||||||
|
on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual.
|
||||||
|
0 = Stay in Supervisor mode.
|
||||||
|
1 = Switch to User mode.
|
||||||
|
*/
|
||||||
|
#define RUN_IN_USER_MODE (0)
|
||||||
|
|
||||||
|
|
||||||
|
/* This macro lets other modules no if a RTOS is being used.
|
||||||
|
0 = RTOS is not used.
|
||||||
|
1 = RTOS is used.
|
||||||
|
*/
|
||||||
|
#define RTOS_USED (0)
|
||||||
|
|
||||||
|
/* Clock source select (CKSEL).
|
||||||
|
0 = Low Speed On-Chip Oscillator (LOCO)
|
||||||
|
1 = High Speed On-Chip Oscillator (HOCO)
|
||||||
|
2 = Main Clock Oscillator
|
||||||
|
3 = Sub-Clock Oscillator
|
||||||
|
4 = PLL Circuit
|
||||||
|
*/
|
||||||
|
#define CLOCK_SOURCE (4)
|
||||||
|
|
||||||
|
/* Clock configuration options.
|
||||||
|
The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The
|
||||||
|
multiplier settings are used to set the clock registers in resetprg.c. If a 16MHz clock is used and the
|
||||||
|
ICLK is 24MHz, PCLKB is 24MHz, FCLK is 24MHz, PCLKD is 24MHz, and CKO is 1MHz then the
|
||||||
|
settings would be:
|
||||||
|
|
||||||
|
XTAL_HZ = 16000000
|
||||||
|
PLL_DIV = 2
|
||||||
|
PLL_MUL = 6 (16MHz x 3 = 48MHz)
|
||||||
|
ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 24MHz
|
||||||
|
PCKB_DIV = 2 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 24MHz
|
||||||
|
PCKD_DIV = 2 : Peripheral Clock D (PCLKD) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV) = 24MHz
|
||||||
|
FCK_DIV = 2 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 24MHz
|
||||||
|
*/
|
||||||
|
/* XTAL - Input clock frequency in Hz */
|
||||||
|
#define XTAL_HZ (16000000)
|
||||||
|
/* PLL Input Frequency Divider Select (PLIDIV).
|
||||||
|
Available divisors = /1 (no division), /2, /4
|
||||||
|
*/
|
||||||
|
#define PLL_DIV (2)
|
||||||
|
/* PLL Frequency Multiplication Factor Select (STC).
|
||||||
|
Available multipliers = x6, x8
|
||||||
|
*/
|
||||||
|
#define PLL_MUL (6)
|
||||||
|
/* System Clock Divider (ICK).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define ICK_DIV (2)
|
||||||
|
/* Peripheral Module Clock B Divider (PCKB).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define PCKB_DIV (2)
|
||||||
|
/* Peripheral Module Clock D Divider (PCKD).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define PCKD_DIV (2)
|
||||||
|
/* Flash IF Clock Divider (FCK).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define FCK_DIV (2)
|
||||||
|
|
||||||
|
/* Below are callback functions that can be used for detecting MCU exceptions, undefined interrupt sources, and
|
||||||
|
bus errors. If the user wishes to be alerted of these events then they will need to define the macro as a
|
||||||
|
function to be called when the event occurs. For example, if the user wanted the function
|
||||||
|
excep_undefined_instr_isr() to be called when an undefined interrupt source ISR is triggered then they would
|
||||||
|
do the following:
|
||||||
|
#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||||
|
If the user does not wish to be alerted of these events then they should comment out the macros.
|
||||||
|
|
||||||
|
NOTE: When a callback function is called it will be called from within a ISR. This means that the function
|
||||||
|
will essentially be an interrupt and will hold off other interrupts that occur in the system while it
|
||||||
|
is executing. For this reason, it is recommended to keep these callback functions short as to not
|
||||||
|
decrease the real-time response of your system.
|
||||||
|
*/
|
||||||
|
/* Callback for Supervisor Instruction Violation Exception. */
|
||||||
|
//#define EXCEP_SUPERVISOR_ISR_CALLBACK supervisor_instr_cb
|
||||||
|
|
||||||
|
/* Callback for Undefined Instruction Exception. */
|
||||||
|
//#define EXCEP_UNDEFINED_INSTR_ISR_CALLBACK undefined_instr_cb
|
||||||
|
|
||||||
|
/* Callback for Non-maskable Interrupt. */
|
||||||
|
//#define NMI_ISR_CALLBACK nmi_cb
|
||||||
|
|
||||||
|
/* Callback for all undefined interrupt vectors. User can set a breakpoint in this function to determine which source
|
||||||
|
is creating unwanted interrupts. */
|
||||||
|
//#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||||
|
|
||||||
|
/* Callback for Bus Error Interrupt. */
|
||||||
|
//#define BUS_ERROR_ISR_CALLBACK bus_error_cb
|
||||||
|
|
||||||
|
/* The user has the option of separately choosing little or big endian for the User Application Area */
|
||||||
|
|
||||||
|
/* Endian mode for User Application.
|
||||||
|
0 = Big Endian
|
||||||
|
Else = Little Endian (Default)
|
||||||
|
*/
|
||||||
|
#define USER_APP_ENDIAN (1)
|
||||||
|
|
||||||
|
|
||||||
|
/* Configure WDT and IWDT settings.
|
||||||
|
OFS0 - Option Function Select Register 0
|
||||||
|
OFS0 - Option Function Select Register 0
|
||||||
|
b31:b15 Reserved (set to 1)
|
||||||
|
b14 IWDTSLCSTP - IWDT Sleep Mode Count Stop Control - (0=can't stop count, 1=stop w/some low power modes)
|
||||||
|
b13 Reserved (set to 1)
|
||||||
|
b12 IWDTRSTIRQS - IWDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU)
|
||||||
|
b11:b10 IWDTRPSS - IWDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use)
|
||||||
|
b9:b8 IWDTRPES - IWDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use)
|
||||||
|
b7:b4 IWDTCKS - IWDT Clock Frequency Division Ratio - (0=none, 2=/16, 3 = /32, 4=/64, 0xF=/128, 5=/256)
|
||||||
|
b3:b2 IWDTTOPS - IWDT Timeout Period Select - (0=128 cycles, 1=512, 2=1024, 3=2048)
|
||||||
|
b1 IWDTSTRT - IWDT Start Mode Select - (0=auto-start after reset, 1=halt after reset)
|
||||||
|
b0 Reserved (set to 1) */
|
||||||
|
#define OFS0_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||||
|
|
||||||
|
/* Configure whether voltage detection 1 circuit and HOCO are enabled after reset.
|
||||||
|
OFS1 - Option Function Select Register 1
|
||||||
|
b31:b9 Reserved (set to 1)
|
||||||
|
b8 HOCOEN - Enable/disable HOCO oscillation after a reset (0=enable, 1=disable)
|
||||||
|
b7:b4 STUPLVD1LVL - Startup Voltage Monitoring 1 Reset Detection Level Select
|
||||||
|
0 1 0 0: 3.10 V
|
||||||
|
0 1 0 1: 3.00 V
|
||||||
|
0 1 1 0: 2.90 V
|
||||||
|
0 1 1 1: 2.79 V
|
||||||
|
1 0 0 0: 2.68 V
|
||||||
|
1 0 0 1: 2.58 V
|
||||||
|
1 0 1 0: 2.48 V
|
||||||
|
1 0 1 1: 2.06 V
|
||||||
|
1 1 0 0: 1.96 V
|
||||||
|
1 1 0 1: 1.86 V
|
||||||
|
b3:b2 Reserved (set to 1)
|
||||||
|
b2 STUPLVD1REN - Startup Voltage Monitoring 1 Reset Enable (1=monitoring disabled)
|
||||||
|
b0 FASTSTUP - Power-On Fast Startup Time (1=normal; read only) */
|
||||||
|
#define OFS1_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||||
|
|
||||||
|
/* Initializes C input & output library functions.
|
||||||
|
0 = Disable I/O library initialization in resetprg.c. If you are not using stdio then use this value.
|
||||||
|
1 = Enable I/O library initialization in resetprg.c. This is default and needed if you are using stdio. */
|
||||||
|
#define IO_LIB_ENABLE (1)
|
||||||
|
|
||||||
|
#endif /* R_BSP_CONFIG_REF_HEADER_FILE */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : rskrx111.h
|
||||||
|
* H/W Platform : RSKRX111
|
||||||
|
* Description : Board specific definitions for the RSKRX111.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef RSKRX111_H
|
||||||
|
#define RSKRX111_H
|
||||||
|
|
||||||
|
/* Local defines */
|
||||||
|
#define LED_ON (0)
|
||||||
|
#define LED_OFF (1)
|
||||||
|
#define SET_BIT_HIGH (1)
|
||||||
|
#define SET_BIT_LOW (0)
|
||||||
|
#define SET_BYTE_HIGH (0xFF)
|
||||||
|
#define SET_BYTE_LOW (0x00)
|
||||||
|
|
||||||
|
/* Switches */
|
||||||
|
#define SW_ACTIVE 0
|
||||||
|
#define SW1 PORT3.PIDR.BIT.B0
|
||||||
|
#define SW2 PORT3.PIDR.BIT.B1
|
||||||
|
#define SW3 PORTE.PIDR.BIT.B4
|
||||||
|
#define SW1_PDR PORT3.PDR.BIT.B0
|
||||||
|
#define SW2_PDR PORT3.PDR.BIT.B1
|
||||||
|
#define SW3_PDR PORTE.PDR.BIT.B4
|
||||||
|
#define SW1_PMR PORT3.PMR.BIT.B0
|
||||||
|
#define SW2_PMR PORT3.PMR.BIT.B1
|
||||||
|
#define SW3_PMR PORTE.PMR.BIT.B4
|
||||||
|
|
||||||
|
/* LEDs */
|
||||||
|
#define LED0 PORTB.PODR.BIT.B7
|
||||||
|
#define LED1 PORTA.PODR.BIT.B0
|
||||||
|
#define LED2 PORT5.PODR.BIT.B4
|
||||||
|
#define LED3 PORT1.PODR.BIT.B7
|
||||||
|
#define LED0_PDR PORTB.PDR.BIT.B7
|
||||||
|
#define LED1_PDR PORTA.PDR.BIT.B0
|
||||||
|
#define LED2_PDR PORT5.PDR.BIT.B4
|
||||||
|
#define LED3_PDR PORT1.PDR.BIT.B7
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* RSKRX111_H */
|
|
@ -0,0 +1,367 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : hwsetup.c
|
||||||
|
* Device(s) : RX
|
||||||
|
* H/W Platform : RSKRX210
|
||||||
|
* Description : Defines the initialization routines used each time the MCU is restarted.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* I/O Register and board definitions */
|
||||||
|
#include "platform.h"
|
||||||
|
#include "r_switches_config.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Private global variables and functions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* MCU I/O port configuration function delcaration */
|
||||||
|
static void output_ports_configure(void);
|
||||||
|
|
||||||
|
/* Interrupt configuration function delcaration */
|
||||||
|
static void interrupts_configure(void);
|
||||||
|
|
||||||
|
/* MCU peripheral module configuration function declaration */
|
||||||
|
static void peripheral_modules_enable(void);
|
||||||
|
|
||||||
|
/* Configure MCU clocks. */
|
||||||
|
static void clock_source_select (void);
|
||||||
|
void operating_frequency_set(void);
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: hardware_setup
|
||||||
|
* Description : Contains setup functions called at device restart
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void HardwareSetup(void)
|
||||||
|
{
|
||||||
|
operating_frequency_set();
|
||||||
|
output_ports_configure();
|
||||||
|
interrupts_configure();
|
||||||
|
peripheral_modules_enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: output_ports_configure
|
||||||
|
* Description : Configures the port and pin direction settings, and sets the pin outputs to a safe level.
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void output_ports_configure(void)
|
||||||
|
{
|
||||||
|
/* Enable LEDs. */
|
||||||
|
/* Start with LEDs off. */
|
||||||
|
LED0 = LED_OFF;
|
||||||
|
LED1 = LED_OFF;
|
||||||
|
LED2 = LED_OFF;
|
||||||
|
LED3 = LED_OFF;
|
||||||
|
|
||||||
|
/* Set LED pins as outputs. */
|
||||||
|
LED0_PDR = 1;
|
||||||
|
LED1_PDR = 1;
|
||||||
|
LED2_PDR = 1;
|
||||||
|
LED3_PDR = 1;
|
||||||
|
|
||||||
|
/* Enable switches. */
|
||||||
|
/* Set pins as inputs. */
|
||||||
|
SW1_PDR = 0;
|
||||||
|
SW2_PDR = 0;
|
||||||
|
SW3_PDR = 0;
|
||||||
|
|
||||||
|
/* Set port mode registers for switches. */
|
||||||
|
SW1_PMR = 0;
|
||||||
|
SW2_PMR = 0;
|
||||||
|
SW3_PMR = 0;
|
||||||
|
|
||||||
|
/* Unlock MPC registers to enable writing to them. */
|
||||||
|
MPC.PWPR.BIT.B0WI = 0 ; /* Unlock protection register */
|
||||||
|
MPC.PWPR.BIT.PFSWE = 1 ; /* Unlock MPC registers */
|
||||||
|
|
||||||
|
/* TXD1 is output. */
|
||||||
|
PORT1.PDR.BIT.B6 = 1;
|
||||||
|
PORT1.PMR.BIT.B6 = 1;
|
||||||
|
MPC.P16PFS.BYTE = 0x0A;
|
||||||
|
/* RXD1 is input. */
|
||||||
|
PORT1.PDR.BIT.B5 = 0;
|
||||||
|
PORT1.PMR.BIT.B5 = 1;
|
||||||
|
MPC.P15PFS.BYTE = 0x0A;
|
||||||
|
|
||||||
|
/* Configure the pin connected to the ADC Pot as an input */
|
||||||
|
PORT4.PDR.BIT.B4 = 0;
|
||||||
|
|
||||||
|
/* Protect off. */
|
||||||
|
SYSTEM.PRCR.WORD = 0xA50B;
|
||||||
|
|
||||||
|
/* Turn off module stop for the A2D converter. */
|
||||||
|
SYSTEM.MSTPCRA.BIT.MSTPA17 = 0;
|
||||||
|
|
||||||
|
/* Protect on. */
|
||||||
|
SYSTEM.PRCR.WORD = 0xA500;
|
||||||
|
|
||||||
|
/* Initialise the first button to generate an interrupt. */
|
||||||
|
R_SWITCHES_Init();
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: interrupts_configure
|
||||||
|
* Description : Configures interrupts used
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void interrupts_configure(void)
|
||||||
|
{
|
||||||
|
/* Add code here to setup additional interrupts */
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: peripheral_modules_enable
|
||||||
|
* Description : Enables and configures peripheral devices on the MCU
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void peripheral_modules_enable(void)
|
||||||
|
{
|
||||||
|
/* Enable triggers to start an ADC conversion. */
|
||||||
|
S12AD.ADCSR.BIT.TRGE = 1;
|
||||||
|
|
||||||
|
/* Only channel 4 is going to be used. */
|
||||||
|
S12AD.ADANSA.BIT.ANSA4 = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: operating_frequency_set
|
||||||
|
* Description : Configures the clock settings for each of the device clocks
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void operating_frequency_set(void)
|
||||||
|
{
|
||||||
|
/* Used for constructing value to write to SCKCR and CKOCR registers. */
|
||||||
|
uint32_t temp_clock = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Clock Description Frequency
|
||||||
|
----------------------------------------
|
||||||
|
Input Clock Frequency............ 16 MHz
|
||||||
|
PLL frequency (x3)............... 48 MHz
|
||||||
|
Internal Clock Frequency......... 24 MHz
|
||||||
|
Peripheral Clock Frequency....... 24 MHz
|
||||||
|
Clock Out Frequency.............. 1 MHz */
|
||||||
|
|
||||||
|
volatile unsigned int i;
|
||||||
|
|
||||||
|
/* Protect off. */
|
||||||
|
SYSTEM.PRCR.WORD = 0xA50B;
|
||||||
|
|
||||||
|
/* Select the clock based upon user's choice. */
|
||||||
|
clock_source_select();
|
||||||
|
|
||||||
|
|
||||||
|
/* Figure out setting for FCK bits. */
|
||||||
|
#if FCK_DIV == 1
|
||||||
|
/* Do nothing since FCK bits should be 0. */
|
||||||
|
#elif FCK_DIV == 2
|
||||||
|
temp_clock |= 0x10000000;
|
||||||
|
#elif FCK_DIV == 4
|
||||||
|
temp_clock |= 0x20000000;
|
||||||
|
#elif FCK_DIV == 8
|
||||||
|
temp_clock |= 0x30000000;
|
||||||
|
#elif FCK_DIV == 16
|
||||||
|
temp_clock |= 0x40000000;
|
||||||
|
#elif FCK_DIV == 32
|
||||||
|
temp_clock |= 0x50000000;
|
||||||
|
#elif FCK_DIV == 64
|
||||||
|
temp_clock |= 0x60000000;
|
||||||
|
#else
|
||||||
|
#error "Error! Invalid setting for FCK_DIV in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Figure out setting for ICK bits. */
|
||||||
|
#if ICK_DIV == 1
|
||||||
|
/* Do nothing since ICK bits should be 0. */
|
||||||
|
#elif ICK_DIV == 2
|
||||||
|
temp_clock |= 0x01000000;
|
||||||
|
#elif ICK_DIV == 4
|
||||||
|
temp_clock |= 0x02000000;
|
||||||
|
#elif ICK_DIV == 8
|
||||||
|
temp_clock |= 0x03000000;
|
||||||
|
#elif ICK_DIV == 16
|
||||||
|
temp_clock |= 0x04000000;
|
||||||
|
#elif ICK_DIV == 32
|
||||||
|
temp_clock |= 0x05000000;
|
||||||
|
#elif ICK_DIV == 64
|
||||||
|
temp_clock |= 0x06000000;
|
||||||
|
#else
|
||||||
|
#error "Error! Invalid setting for ICK_DIV in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Figure out setting for PCKB bits. */
|
||||||
|
#if PCKB_DIV == 1
|
||||||
|
/* Do nothing since PCKB bits should be 0. */
|
||||||
|
#elif PCKB_DIV == 2
|
||||||
|
temp_clock |= 0x00000100;
|
||||||
|
#elif PCKB_DIV == 4
|
||||||
|
temp_clock |= 0x00000200;
|
||||||
|
#elif PCKB_DIV == 8
|
||||||
|
temp_clock |= 0x00000300;
|
||||||
|
#elif PCKB_DIV == 16
|
||||||
|
temp_clock |= 0x00000400;
|
||||||
|
#elif PCKB_DIV == 32
|
||||||
|
temp_clock |= 0x00000500;
|
||||||
|
#elif PCKB_DIV == 64
|
||||||
|
temp_clock |= 0x00000600;
|
||||||
|
#else
|
||||||
|
#error "Error! Invalid setting for PCKB_DIV in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Figure out setting for PCKD bits. */
|
||||||
|
#if PCKD_DIV == 1
|
||||||
|
/* Do nothing since PCKD bits should be 0. */
|
||||||
|
#elif PCKD_DIV == 2
|
||||||
|
temp_clock |= 0x00000001;
|
||||||
|
#elif PCKD_DIV == 4
|
||||||
|
temp_clock |= 0x00000002;
|
||||||
|
#elif PCKD_DIV == 8
|
||||||
|
temp_clock |= 0x00000003;
|
||||||
|
#elif PCKD_DIV == 16
|
||||||
|
temp_clock |= 0x00000004;
|
||||||
|
#elif PCKD_DIV == 32
|
||||||
|
temp_clock |= 0x00000005;
|
||||||
|
#elif PCKD_DIV == 64
|
||||||
|
temp_clock |= 0x00000006;
|
||||||
|
#else
|
||||||
|
#error "Error! Invalid setting for PCKD_DIV in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Set SCKCR register. */
|
||||||
|
SYSTEM.SCKCR.LONG = temp_clock;
|
||||||
|
|
||||||
|
/* Choose clock source. Default for r_bsp_config.h is PLL. */
|
||||||
|
SYSTEM.SCKCR3.WORD = ((uint16_t)CLOCK_SOURCE) << 8;
|
||||||
|
|
||||||
|
/* Protect on. */
|
||||||
|
SYSTEM.PRCR.WORD = 0xA500;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: clock_source_select
|
||||||
|
* Description : Enables and disables clocks as chosen by the user. This function also implements the software delays
|
||||||
|
* needed for the clocks to stabilize.
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void clock_source_select (void)
|
||||||
|
{
|
||||||
|
/* Declared volatile for software delay purposes. */
|
||||||
|
volatile unsigned int i;
|
||||||
|
|
||||||
|
/* NOTE: AS OF VERSION 0.50 OF THE RX111 HARDWARE MANUAL, ALL OF THE CLOCK
|
||||||
|
* STABILIZATION TIMES ARE TBD. FOR NOW, WHERE EVER A WAIT COUNT REGISTER
|
||||||
|
* IS AVAILABLE, THE DELAY IS SET TO THE MAX NUMBER OF CYCLES. WHERE EVER
|
||||||
|
* DELAY LOOPS ARE PRESENT, THE VALUES FROM THE 63N ARE RE-USED. KEEP IN
|
||||||
|
* MIND THAT THE 63N RUNS ON A FASTER CRYSTAL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if (CLOCK_SOURCE == 1)
|
||||||
|
/* HOCO is chosen. Start it operating. */
|
||||||
|
SYSTEM.HOCOCR.BYTE = 0x00;
|
||||||
|
/* The delay period needed is to make sure that the HOCO has stabilized.*/
|
||||||
|
for(i = 0; i< 28; i++) // tHOCOWT2 is TBD
|
||||||
|
{
|
||||||
|
__asm volatile( "NOP" );
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
/* HOCO is not chosen. Stop the HOCO. */
|
||||||
|
SYSTEM.HOCOCR.BYTE = 0x01;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CLOCK_SOURCE == 2)
|
||||||
|
/* Main clock oscillator is chosen. Start it operating. */
|
||||||
|
SYSTEM.MOSCWTCR.BYTE = 0x07; // Wait 65,536 cycles
|
||||||
|
/* Set the main clock to operating. */
|
||||||
|
SYSTEM.MOSCCR.BYTE = 0x00;
|
||||||
|
/* The delay period needed is to make sure that the main clock has stabilized. */
|
||||||
|
for(i = 0; i< 140; i++) // tMAINOSCWT is TBD
|
||||||
|
{
|
||||||
|
__asm volatile( "NOT" );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CLOCK_SOURCE == 3)
|
||||||
|
/* Sub-clock oscillator is chosen. Start it operating. */
|
||||||
|
/* In section 9.8.4, there is a reference to a SOSCWTCR register, but there is no
|
||||||
|
* description for this register in the manual nor reference for it in iodefine.h. */
|
||||||
|
|
||||||
|
/* Set the sub-clock to operating. */
|
||||||
|
SYSTEM.SOSCCR.BYTE = 0x00;
|
||||||
|
/* The delay period needed is to make sure that the sub-clock has stabilized. */
|
||||||
|
for(i = 0; i< 30233; i++) // tSUBOSCWT0 is TBD
|
||||||
|
{
|
||||||
|
__asm volatile( "NOP" );
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
/* Set the sub-clock to stopped. */
|
||||||
|
SYSTEM.SOSCCR.BYTE = 0x01;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CLOCK_SOURCE == 4)
|
||||||
|
/* PLL is chosen. Start it operating. Must start main clock as well since PLL uses it. */
|
||||||
|
SYSTEM.MOSCWTCR.BYTE = 0x07; // Wait 65,536 cycles
|
||||||
|
/* Set the main clock to operating. */
|
||||||
|
SYSTEM.MOSCCR.BYTE = 0x00;
|
||||||
|
|
||||||
|
/* Set PLL Input Divisor. */
|
||||||
|
SYSTEM.PLLCR.BIT.PLIDIV = PLL_DIV >> 1;
|
||||||
|
|
||||||
|
/* Set PLL Multiplier. */
|
||||||
|
SYSTEM.PLLCR.BIT.STC = (PLL_MUL * 2) - 1;
|
||||||
|
|
||||||
|
/* Set the PLL to operating. */
|
||||||
|
SYSTEM.PLLCR2.BYTE = 0x00;
|
||||||
|
/* The delay period needed is to make sure that the main clock and PLL have stabilized. */
|
||||||
|
for(i = 0; i< 140; i++) // tPLLWT2 is TBD
|
||||||
|
{
|
||||||
|
__asm volatile( "NOP" );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* LOCO is saved for last since it is what is running by default out of reset. This means you do not want to turn
|
||||||
|
it off until another clock has been enabled and is ready to use. */
|
||||||
|
#if (CLOCK_SOURCE == 0)
|
||||||
|
/* LOCO is chosen. This is the default out of reset. */
|
||||||
|
SYSTEM.LOCOCR.BYTE = 0x00;
|
||||||
|
#else
|
||||||
|
/* LOCO is not chosen and another clock has already been setup. Turn off the LOCO. */
|
||||||
|
SYSTEM.LOCOCR.BYTE = 0x01;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Make sure a valid clock was chosen. */
|
||||||
|
#if (CLOCK_SOURCE > 4) || (CLOCK_SOURCE < 0)
|
||||||
|
#error "ERROR - Valid clock source must be chosen in r_bsp_config.h using CLOCK_SOURCE macro."
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_bsp.h
|
||||||
|
* Description : Has the header files that should be included for this platform.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 13.01.2012 1.00 First Release
|
||||||
|
* : 27.06.2012 1.10 Updated with new information to reflect udpated r_bsp structure.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef PLATFORM_BOARD_USER
|
||||||
|
#define PLATFORM_BOARD_USER
|
||||||
|
|
||||||
|
/* Make sure that no other platforms have already been defined. Do not touch this! */
|
||||||
|
#ifdef PLATFORM_DEFINED
|
||||||
|
#error "Error - Multiple platforms defined in platform.h!"
|
||||||
|
#else
|
||||||
|
#define PLATFORM_DEFINED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
INCLUDE APPROPRIATE MCU AND BOARD FILES
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* This is a user defined board. Start off by:
|
||||||
|
1)Copy and rename one of the 'board' folders that most closely matches your system (same MCU Series and Group).
|
||||||
|
2)Substitute in your MCU Group for the *MCU Group* option in the #include below for mcu_info.h.
|
||||||
|
3)Copy the other #includes from the r_bsp.h in the 'board' folder that you copied earlier.
|
||||||
|
4)Configure the BSP for your board by modifying the r_bsp_config_reference.h.
|
||||||
|
5)Copy r_bsp_config_reference.h to your project directory and rename it r_bsp_config.h.
|
||||||
|
You can also add your own include files here as well. */
|
||||||
|
#include "r_bsp_config.h"
|
||||||
|
#include ".\mcu\*MCU Group*\mcu_info.h"
|
||||||
|
|
||||||
|
#endif /* PLATFORM_BOARD_USER */
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,283 @@
|
||||||
|
/***********************************************************************/
|
||||||
|
/* */
|
||||||
|
/* PROJECT NAME : RTOSDemo_GCC */
|
||||||
|
/* FILE : interrupt_handlers.c */
|
||||||
|
/* DESCRIPTION : Interrupt Handler */
|
||||||
|
/* CPU SERIES : RX100 */
|
||||||
|
/* CPU TYPE : RX111 */
|
||||||
|
/* */
|
||||||
|
/* This file is generated by e2studio. */
|
||||||
|
/* */
|
||||||
|
/***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include "interrupt_handlers.h"
|
||||||
|
|
||||||
|
// INT_Exception(Supervisor Instruction)
|
||||||
|
void INT_Excep_SuperVisorInst(void){/* brk(); */}
|
||||||
|
|
||||||
|
// Exception(Undefined Instruction)
|
||||||
|
void INT_Excep_UndefinedInst(void){/* brk(); */}
|
||||||
|
|
||||||
|
// Exception(Floating Point)
|
||||||
|
void INT_Excep_FloatingPoint(void){/* brk(); */}
|
||||||
|
|
||||||
|
// NMI
|
||||||
|
void INT_NonMaskableInterrupt(void){/* brk(); */}
|
||||||
|
|
||||||
|
// Dummy
|
||||||
|
void Dummy(void)
|
||||||
|
{
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
|
||||||
|
// BRK
|
||||||
|
void INT_Excep_BRK(void){/* wait(); */}
|
||||||
|
//;0x0000 Reserved
|
||||||
|
|
||||||
|
void INT_Excep_BUSERR(void){ }
|
||||||
|
|
||||||
|
// ICU SWINT
|
||||||
|
void INT_Excep_ICU_SWINT(void){ }
|
||||||
|
|
||||||
|
// CMT0 CMI0
|
||||||
|
void INT_Excep_CMT0_CMI0(void){ }
|
||||||
|
|
||||||
|
// CMT1 CMI1
|
||||||
|
void INT_Excep_CMT1_CMI1(void){ }
|
||||||
|
|
||||||
|
// CAC FERRF
|
||||||
|
void INT_Excep_CAC_FERRF(void){ }
|
||||||
|
|
||||||
|
// CAC MENDF
|
||||||
|
void INT_Excep_CAC_MENDF(void){ }
|
||||||
|
|
||||||
|
// CAC OVFF
|
||||||
|
void INT_Excep_CAC_OVFF(void){ }
|
||||||
|
|
||||||
|
// USB0 D0FIFO0
|
||||||
|
void INT_Excep_USB0_D0FIFO0(void){ }
|
||||||
|
|
||||||
|
// USB0 D1FIFO0
|
||||||
|
void INT_Excep_USB0_D1FIFO0(void){ }
|
||||||
|
|
||||||
|
// USB0 USBI0
|
||||||
|
void INT_Excep_USB0_USBI0(void){ }
|
||||||
|
|
||||||
|
// RSPI0 SPEI0
|
||||||
|
void INT_Excep_RSPI0_SPEI0(void){ }
|
||||||
|
|
||||||
|
// RSPI0 SPRI0
|
||||||
|
void INT_Excep_RSPI0_SPRI0(void){ }
|
||||||
|
|
||||||
|
// RSPI0 SPTI0
|
||||||
|
void INT_Excep_RSPI0_SPTI0(void){ }
|
||||||
|
|
||||||
|
// RSPI0 SPII0
|
||||||
|
void INT_Excep_RSPI0_SPII0(void){ }
|
||||||
|
|
||||||
|
// DOC DOPCF
|
||||||
|
void INT_Excep_DOC_DOPCF(void){ }
|
||||||
|
|
||||||
|
// RTC CUP
|
||||||
|
void INT_Excep_RTC_CUP(void){ }
|
||||||
|
|
||||||
|
// ICU IRQ0
|
||||||
|
void INT_Excep_ICU_IRQ0(void){ }
|
||||||
|
|
||||||
|
// ICU IRQ1
|
||||||
|
void INT_Excep_ICU_IRQ1(void){ }
|
||||||
|
|
||||||
|
// ICU IRQ2
|
||||||
|
void INT_Excep_ICU_IRQ2(void){ }
|
||||||
|
|
||||||
|
// ICU IRQ3
|
||||||
|
void INT_Excep_ICU_IRQ3(void){ }
|
||||||
|
|
||||||
|
// ICU IRQ4
|
||||||
|
void INT_Excep_ICU_IRQ4(void){ }
|
||||||
|
|
||||||
|
// ICU IRQ5
|
||||||
|
void INT_Excep_ICU_IRQ5(void){ }
|
||||||
|
|
||||||
|
// ICU IRQ6
|
||||||
|
void INT_Excep_ICU_IRQ6(void){ }
|
||||||
|
|
||||||
|
// ICU IRQ7
|
||||||
|
void INT_Excep_ICU_IRQ7(void){ }
|
||||||
|
|
||||||
|
// LVD LVD1
|
||||||
|
void INT_Excep_LVD_LVD1(void){ }
|
||||||
|
|
||||||
|
// LVD LVD2
|
||||||
|
void INT_Excep_LVD_LVD2(void){ }
|
||||||
|
|
||||||
|
// USB0 USBR0
|
||||||
|
void INT_Excep_USB0_USBR0(void){ }
|
||||||
|
|
||||||
|
// RTC ALM
|
||||||
|
void INT_Excep_RTC_ALM(void){ }
|
||||||
|
|
||||||
|
// RTC PRD
|
||||||
|
void INT_Excep_RTC_PRD(void){ }
|
||||||
|
|
||||||
|
// S12AD S12ADI0
|
||||||
|
void INT_Excep_S12AD_S12ADI0(void){ }
|
||||||
|
|
||||||
|
// S12AD GBADI
|
||||||
|
void INT_Excep_S12AD_GBADI(void){ }
|
||||||
|
|
||||||
|
// ELC ELSR18I
|
||||||
|
void INT_Excep_ELC_ELSR18I(void){ }
|
||||||
|
|
||||||
|
// MTU0 TGIA0
|
||||||
|
void INT_Excep_MTU0_TGIA0(void){ }
|
||||||
|
|
||||||
|
// MTU0 TGIB0
|
||||||
|
void INT_Excep_MTU0_TGIB0(void){ }
|
||||||
|
|
||||||
|
// MTU0 TGIC0
|
||||||
|
void INT_Excep_MTU0_TGIC0(void){ }
|
||||||
|
|
||||||
|
// MTU0 TGID0
|
||||||
|
void INT_Excep_MTU0_TGID0(void){ }
|
||||||
|
|
||||||
|
// MTU0 TCIV0
|
||||||
|
void INT_Excep_MTU0_TCIV0(void){ }
|
||||||
|
|
||||||
|
// MTU0 TGIE0
|
||||||
|
void INT_Excep_MTU0_TGIE0(void){ }
|
||||||
|
|
||||||
|
// MTU0 TGIF0
|
||||||
|
void INT_Excep_MTU0_TGIF0(void){ }
|
||||||
|
|
||||||
|
// MTU1 TGIA1
|
||||||
|
void INT_Excep_MTU1_TGIA1(void){ }
|
||||||
|
|
||||||
|
// MTU1 TGIB1
|
||||||
|
void INT_Excep_MTU1_TGIB1(void){ }
|
||||||
|
|
||||||
|
// MTU1 TCIV1
|
||||||
|
void INT_Excep_MTU1_TCIV1(void){ }
|
||||||
|
|
||||||
|
// MTU1 TCIU1
|
||||||
|
void INT_Excep_MTU1_TCIU1(void){ }
|
||||||
|
|
||||||
|
// MTU2 TGIA2
|
||||||
|
void INT_Excep_MTU2_TGIA2(void){ }
|
||||||
|
|
||||||
|
// MTU2 TGIB2
|
||||||
|
void INT_Excep_MTU2_TGIB2(void){ }
|
||||||
|
|
||||||
|
// MTU2 TCIV2
|
||||||
|
void INT_Excep_MTU2_TCIV2(void){ }
|
||||||
|
|
||||||
|
// MTU2 TCIU2
|
||||||
|
void INT_Excep_MTU2_TCIU2(void){ }
|
||||||
|
|
||||||
|
// MTU3 TGIA3
|
||||||
|
void INT_Excep_MTU3_TGIA3(void){ }
|
||||||
|
|
||||||
|
// MTU3 TGIB3
|
||||||
|
void INT_Excep_MTU3_TGIB3(void){ }
|
||||||
|
|
||||||
|
// MTU3 TGIC3
|
||||||
|
void INT_Excep_MTU3_TGIC3(void){ }
|
||||||
|
|
||||||
|
// MTU3 TGID3
|
||||||
|
void INT_Excep_MTU3_TGID3(void){ }
|
||||||
|
|
||||||
|
// MTU3 TCIV3
|
||||||
|
void INT_Excep_MTU3_TCIV3(void){ }
|
||||||
|
|
||||||
|
// MTU4 TGIA4
|
||||||
|
void INT_Excep_MTU4_TGIA4(void){ }
|
||||||
|
|
||||||
|
// MTU4 TGIB4
|
||||||
|
void INT_Excep_MTU4_TGIB4(void){ }
|
||||||
|
|
||||||
|
// MTU4 TGIC4
|
||||||
|
void INT_Excep_MTU4_TGIC4(void){ }
|
||||||
|
|
||||||
|
// MTU4 TGID4
|
||||||
|
void INT_Excep_MTU4_TGID4(void){ }
|
||||||
|
|
||||||
|
// MTU4 TCIV4
|
||||||
|
void INT_Excep_MTU4_TCIV4(void){ }
|
||||||
|
|
||||||
|
// MTU5 TGIU5
|
||||||
|
void INT_Excep_MTU5_TGIU5(void){ }
|
||||||
|
|
||||||
|
// MTU5 TGIV5
|
||||||
|
void INT_Excep_MTU5_TGIV5(void){ }
|
||||||
|
|
||||||
|
// MTU5 TGIW5
|
||||||
|
void INT_Excep_MTU5_TGIW5(void){ }
|
||||||
|
|
||||||
|
// POE OEI1
|
||||||
|
void INT_Excep_POE_OEI1(void){ }
|
||||||
|
|
||||||
|
// POE OEI2
|
||||||
|
void INT_Excep_POE_OEI2(void){ }
|
||||||
|
|
||||||
|
// SCI1 ERI1
|
||||||
|
void INT_Excep_SCI1_ERI1(void){ }
|
||||||
|
|
||||||
|
// SCI1 RXI1
|
||||||
|
void INT_Excep_SCI1_RXI1(void){ }
|
||||||
|
|
||||||
|
// SCI1 TXI1
|
||||||
|
void INT_Excep_SCI1_TXI1(void){ }
|
||||||
|
|
||||||
|
// SCI1 TEI1
|
||||||
|
void INT_Excep_SCI1_TEI1(void){ }
|
||||||
|
|
||||||
|
// SCI5 ERI5
|
||||||
|
void INT_Excep_SCI5_ERI5(void){ }
|
||||||
|
|
||||||
|
// SCI5 RXI5
|
||||||
|
void INT_Excep_SCI5_RXI5(void){ }
|
||||||
|
|
||||||
|
// SCI5 TXI5
|
||||||
|
void INT_Excep_SCI5_TXI5(void){ }
|
||||||
|
|
||||||
|
// SCI5 TEI5
|
||||||
|
void INT_Excep_SCI5_TEI5(void){ }
|
||||||
|
|
||||||
|
// SCI12 ERI12
|
||||||
|
void INT_Excep_SCI12_ERI12(void){ }
|
||||||
|
|
||||||
|
// SCI12 RXI12
|
||||||
|
void INT_Excep_SCI12_RXI12(void){ }
|
||||||
|
|
||||||
|
// SCI12 TXI12
|
||||||
|
void INT_Excep_SCI12_TXI12(void){ }
|
||||||
|
|
||||||
|
// SCI12 TEI12
|
||||||
|
void INT_Excep_SCI12_TEI12(void){ }
|
||||||
|
|
||||||
|
// SCI12 SCIX0
|
||||||
|
void INT_Excep_SCI12_SCIX0(void){ }
|
||||||
|
|
||||||
|
// SCI12 SCIX1
|
||||||
|
void INT_Excep_SCI12_SCIX1(void){ }
|
||||||
|
|
||||||
|
// SCI12 SCIX2
|
||||||
|
void INT_Excep_SCI12_SCIX2(void){ }
|
||||||
|
|
||||||
|
// SCI12 SCIX3
|
||||||
|
void INT_Excep_SCI12_SCIX3(void){ }
|
||||||
|
|
||||||
|
// RIIC0 EEI0
|
||||||
|
void INT_Excep_RIIC0_EEI0(void){ }
|
||||||
|
|
||||||
|
// RIIC0 RXI0
|
||||||
|
void INT_Excep_RIIC0_RXI0(void){ }
|
||||||
|
|
||||||
|
// RIIC0 TXI0
|
||||||
|
void INT_Excep_RIIC0_TXI0(void){ }
|
||||||
|
|
||||||
|
// RIIC0 TEI0
|
||||||
|
void INT_Excep_RIIC0_TEI0(void){ }
|
|
@ -0,0 +1,371 @@
|
||||||
|
/***********************************************************************/
|
||||||
|
/* */
|
||||||
|
/* PROJECT NAME : RTOSDemo_GCC */
|
||||||
|
/* FILE : interrupt_handlers.h */
|
||||||
|
/* DESCRIPTION : Interrupt Handler Declarations */
|
||||||
|
/* CPU SERIES : RX100 */
|
||||||
|
/* CPU TYPE : RX111 */
|
||||||
|
/* */
|
||||||
|
/* This file is generated by e2studio. */
|
||||||
|
/* */
|
||||||
|
/***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef INTERRUPT_HANDLERS_H
|
||||||
|
#define INTERRUPT_HANDLERS_H
|
||||||
|
|
||||||
|
// Exception(Supervisor Instruction)
|
||||||
|
// Exception(Supervisor Instruction)
|
||||||
|
void INT_Excep_SuperVisorInst(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// Exception(Undefined Instruction)
|
||||||
|
void INT_Excep_UndefinedInst(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// Exception(Floating Point)
|
||||||
|
void INT_Excep_FloatingPoint(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// NMI
|
||||||
|
void INT_NonMaskableInterrupt(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// Dummy
|
||||||
|
void Dummy (void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// BRK
|
||||||
|
void INT_Excep_BRK(void) __attribute__ ((interrupt));
|
||||||
|
//;0x0000 Reserved
|
||||||
|
|
||||||
|
void INT_Excep_BUSERR(void) __attribute__ ((interrupt));
|
||||||
|
//;0x0044 Reserved
|
||||||
|
|
||||||
|
void INT_Excep_ICU_SWINT(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// CMT0 CMI0
|
||||||
|
|
||||||
|
void INT_Excep_CMT0_CMI0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// CMT1 CMI1
|
||||||
|
|
||||||
|
void INT_Excep_CMT1_CMI1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// CAC FERRF
|
||||||
|
|
||||||
|
void INT_Excep_CAC_FERRF(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// CAC MENDF
|
||||||
|
|
||||||
|
|
||||||
|
void INT_Excep_CAC_MENDF(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// CAC OVFF
|
||||||
|
|
||||||
|
void INT_Excep_CAC_OVFF(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// USB0 D0FIFO0
|
||||||
|
|
||||||
|
void INT_Excep_USB0_D0FIFO0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// USB0 D1FIFO0
|
||||||
|
|
||||||
|
void INT_Excep_USB0_D1FIFO0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// USB0 USBI0
|
||||||
|
|
||||||
|
void INT_Excep_USB0_USBI0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// RSPI0 SPEI0
|
||||||
|
|
||||||
|
void INT_Excep_RSPI0_SPEI0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// RSPI0 SPRI0
|
||||||
|
|
||||||
|
void INT_Excep_RSPI0_SPRI0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// RSPI0 SPTI0
|
||||||
|
|
||||||
|
void INT_Excep_RSPI0_SPTI0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// RSPI0 SPII0
|
||||||
|
|
||||||
|
void INT_Excep_RSPI0_SPII0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// DOC DOPCF
|
||||||
|
|
||||||
|
void INT_Excep_DOC_DOPCF(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// RTC CUP
|
||||||
|
|
||||||
|
void INT_Excep_RTC_CUP(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// ICU IRQ0
|
||||||
|
|
||||||
|
void INT_Excep_ICU_IRQ0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// ICU IRQ1
|
||||||
|
|
||||||
|
void INT_Excep_ICU_IRQ1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// ICU IRQ2
|
||||||
|
|
||||||
|
void INT_Excep_ICU_IRQ2(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// ICU IRQ3
|
||||||
|
|
||||||
|
void INT_Excep_ICU_IRQ3(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// ICU IRQ4
|
||||||
|
|
||||||
|
void INT_Excep_ICU_IRQ4(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// ICU IRQ5
|
||||||
|
|
||||||
|
void INT_Excep_ICU_IRQ5(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// ICU IRQ6
|
||||||
|
|
||||||
|
void INT_Excep_ICU_IRQ6(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// ICU IRQ7
|
||||||
|
|
||||||
|
void INT_Excep_ICU_IRQ7(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// LVD LVD1
|
||||||
|
|
||||||
|
void INT_Excep_LVD_LVD1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// LVD LVD2
|
||||||
|
|
||||||
|
void INT_Excep_LVD_LVD2(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// USB0 USBR0
|
||||||
|
|
||||||
|
void INT_Excep_USB0_USBR0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// RTC ALM
|
||||||
|
|
||||||
|
void INT_Excep_RTC_ALM(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// RTC PRD
|
||||||
|
|
||||||
|
void INT_Excep_RTC_PRD(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// S12AD S12ADI0
|
||||||
|
|
||||||
|
void INT_Excep_S12AD_S12ADI0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// S12AD GBADI
|
||||||
|
|
||||||
|
void INT_Excep_S12AD_GBADI(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// ELC ELSR18I
|
||||||
|
|
||||||
|
void INT_Excep_ELC_ELSR18I(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU0 TGIA0
|
||||||
|
|
||||||
|
void INT_Excep_MTU0_TGIA0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU0 TGIB0
|
||||||
|
|
||||||
|
void INT_Excep_MTU0_TGIB0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU0 TGIC0
|
||||||
|
|
||||||
|
void INT_Excep_MTU0_TGIC0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU0 TGID0
|
||||||
|
|
||||||
|
void INT_Excep_MTU0_TGID0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU0 TCIV0
|
||||||
|
|
||||||
|
void INT_Excep_MTU0_TCIV0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU0 TGIE0
|
||||||
|
|
||||||
|
void INT_Excep_MTU0_TGIE0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU0 TGIF0
|
||||||
|
|
||||||
|
void INT_Excep_MTU0_TGIF0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU1 TGIA1
|
||||||
|
|
||||||
|
void INT_Excep_MTU1_TGIA1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU1 TGIB1
|
||||||
|
|
||||||
|
void INT_Excep_MTU1_TGIB1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU1 TCIV1
|
||||||
|
|
||||||
|
void INT_Excep_MTU1_TCIV1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU1 TCIU1
|
||||||
|
|
||||||
|
void INT_Excep_MTU1_TCIU1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU2 TGIA2
|
||||||
|
|
||||||
|
void INT_Excep_MTU2_TGIA2(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU2 TGIB2
|
||||||
|
|
||||||
|
void INT_Excep_MTU2_TGIB2(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU2 TCIV2
|
||||||
|
|
||||||
|
void INT_Excep_MTU2_TCIV2(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU2 TCIU2
|
||||||
|
|
||||||
|
void INT_Excep_MTU2_TCIU2(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU3 TGIA3
|
||||||
|
|
||||||
|
void INT_Excep_MTU3_TGIA3(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU3 TGIB3
|
||||||
|
|
||||||
|
void INT_Excep_MTU3_TGIB3(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU3 TGIC3
|
||||||
|
|
||||||
|
void INT_Excep_MTU3_TGIC3(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU3 TGID3
|
||||||
|
|
||||||
|
void INT_Excep_MTU3_TGID3(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU3 TCIV3
|
||||||
|
|
||||||
|
void INT_Excep_MTU3_TCIV3(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU4 TGIA4
|
||||||
|
|
||||||
|
void INT_Excep_MTU4_TGIA4(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU4 TGIB4
|
||||||
|
|
||||||
|
void INT_Excep_MTU4_TGIB4(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU4 TGIC4
|
||||||
|
|
||||||
|
void INT_Excep_MTU4_TGIC4(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU4 TGID4
|
||||||
|
|
||||||
|
void INT_Excep_MTU4_TGID4(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU4 TCIV4
|
||||||
|
|
||||||
|
void INT_Excep_MTU4_TCIV4(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU5 TGIU5
|
||||||
|
|
||||||
|
void INT_Excep_MTU5_TGIU5(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU5 TGIV5
|
||||||
|
|
||||||
|
void INT_Excep_MTU5_TGIV5(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// MTU5 TGIW5
|
||||||
|
|
||||||
|
void INT_Excep_MTU5_TGIW5(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// POE OEI1
|
||||||
|
|
||||||
|
void INT_Excep_POE_OEI1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// POE OEI2
|
||||||
|
|
||||||
|
void INT_Excep_POE_OEI2(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI1 ERI1
|
||||||
|
|
||||||
|
void INT_Excep_SCI1_ERI1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI1 RXI1
|
||||||
|
|
||||||
|
void INT_Excep_SCI1_RXI1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI1 TXI1
|
||||||
|
|
||||||
|
void INT_Excep_SCI1_TXI1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI1 TEI1
|
||||||
|
|
||||||
|
void INT_Excep_SCI1_TEI1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI5 ERI5
|
||||||
|
|
||||||
|
void INT_Excep_SCI5_ERI5(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI5 RXI5
|
||||||
|
|
||||||
|
void INT_Excep_SCI5_RXI5(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI5 TXI5
|
||||||
|
|
||||||
|
void INT_Excep_SCI5_TXI5(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI5 TEI5
|
||||||
|
|
||||||
|
void INT_Excep_SCI5_TEI5(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI12 ERI12
|
||||||
|
|
||||||
|
void INT_Excep_SCI12_ERI12(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI12 RXI12
|
||||||
|
|
||||||
|
void INT_Excep_SCI12_RXI12(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI12 TXI12
|
||||||
|
|
||||||
|
void INT_Excep_SCI12_TXI12(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI12 TEI12
|
||||||
|
|
||||||
|
void INT_Excep_SCI12_TEI12(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI12 SCIX0
|
||||||
|
|
||||||
|
void INT_Excep_SCI12_SCIX0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI12 SCIX1
|
||||||
|
|
||||||
|
void INT_Excep_SCI12_SCIX1(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI12 SCIX2
|
||||||
|
|
||||||
|
void INT_Excep_SCI12_SCIX2(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// SCI12 SCIX3
|
||||||
|
|
||||||
|
void INT_Excep_SCI12_SCIX3(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// RIIC0 EEI0
|
||||||
|
|
||||||
|
void INT_Excep_RIIC0_EEI0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// RIIC0 RXI0
|
||||||
|
|
||||||
|
void INT_Excep_RIIC0_RXI0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// RIIC0 TXI0
|
||||||
|
|
||||||
|
void INT_Excep_RIIC0_TXI0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
// RIIC0 TEI0
|
||||||
|
|
||||||
|
void INT_Excep_RIIC0_TEI0(void) __attribute__ ((interrupt));
|
||||||
|
|
||||||
|
//;<<VECTOR DATA START (POWER ON RESET)>>
|
||||||
|
//;Power On Reset PC
|
||||||
|
extern void PowerON_Reset(void);
|
||||||
|
//;<<VECTOR DATA END (POWER ON RESET)>>
|
||||||
|
#endif
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,112 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : mcu_info.h
|
||||||
|
* Device(s) : RX111
|
||||||
|
* Description : Information about the MCU on this board (RSKRX111).
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _MCU_INFO
|
||||||
|
#define _MCU_INFO
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Gets MCU configuration information. */
|
||||||
|
#include "r_bsp_config.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* MCU Series. */
|
||||||
|
#if MCU_PART_SERIES == 0x0
|
||||||
|
#define MCU_SERIES_RX100 (1)
|
||||||
|
#else
|
||||||
|
#error "ERROR - MCU_PART_SERIES - Unknown MCU Series chosen in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* MCU Group name. */
|
||||||
|
#if MCU_PART_GROUP == 0x1
|
||||||
|
#define MCU_RX111 (1)
|
||||||
|
#define MCU_RX11x (1)
|
||||||
|
#else
|
||||||
|
#error "ERROR - MCU_PART_GROUP - Unknown MCU Group chosen in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Package. */
|
||||||
|
#if MCU_PART_PACKAGE == 0x0
|
||||||
|
#define PACKAGE_LFQFP64 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x1
|
||||||
|
#define PACKAGE_LQFP64 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x2
|
||||||
|
#define PACKAGE_TFLGA64 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x3
|
||||||
|
#define PACKAGE_LFQFP48 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x4
|
||||||
|
#define PACKAGE_VQFN48 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x5
|
||||||
|
#define PACKAGE_HWQFN36 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x6
|
||||||
|
#define PACKAGE_WFLGA36 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x7
|
||||||
|
#define PACKAGE_SSOP36 (1)
|
||||||
|
#else
|
||||||
|
#error "ERROR - MCU_PART_PACKAGE - Unknown package chosen in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Memory size of your MCU. */
|
||||||
|
#if MCU_PART_MEMORY_SIZE == 0x0 // "J" parts
|
||||||
|
#define ROM_SIZE_BYTES (16384)
|
||||||
|
#define RAM_SIZE_BYTES (8192)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#elif MCU_PART_MEMORY_SIZE == 0x1
|
||||||
|
#define ROM_SIZE_BYTES (32768)
|
||||||
|
#define RAM_SIZE_BYTES (10240)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#elif MCU_PART_MEMORY_SIZE == 0x3
|
||||||
|
#define ROM_SIZE_BYTES (65536)
|
||||||
|
#define RAM_SIZE_BYTES (10240)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#elif MCU_PART_MEMORY_SIZE == 0x4
|
||||||
|
#define ROM_SIZE_BYTES (98304)
|
||||||
|
#define RAM_SIZE_BYTES (16384)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#elif MCU_PART_MEMORY_SIZE == 0x5
|
||||||
|
#define ROM_SIZE_BYTES (131072)
|
||||||
|
#define RAM_SIZE_BYTES (16384)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#else
|
||||||
|
#error "ERROR - MCU_PART_MEMORY_SIZE - Unknown memory size chosen in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* System clock speed in Hz. */
|
||||||
|
#define ICLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV)
|
||||||
|
/* Peripheral Module Clock B speed in Hz. */
|
||||||
|
#define PCLKB_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV)
|
||||||
|
/* Peripheral Module Clock D speed in Hz. */
|
||||||
|
#define PCLKD_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV)
|
||||||
|
/* FlashIF clock speed in Hz. */
|
||||||
|
#define FCLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV)
|
||||||
|
|
||||||
|
#endif /* _MCU_INFO */
|
||||||
|
|
|
@ -0,0 +1,175 @@
|
||||||
|
/***********************************************************************/
|
||||||
|
/* */
|
||||||
|
/* PROJECT NAME : RTOSDemo_GCC */
|
||||||
|
/* FILE : reset_program.asm */
|
||||||
|
/* DESCRIPTION : Reset Program */
|
||||||
|
/* CPU SERIES : RX100 */
|
||||||
|
/* CPU TYPE : RX111 */
|
||||||
|
/* */
|
||||||
|
/* This file is generated by e2studio. */
|
||||||
|
/* */
|
||||||
|
/***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*reset_program.asm*/
|
||||||
|
|
||||||
|
.list
|
||||||
|
.section .text
|
||||||
|
.global _PowerON_Reset /*global Start routine */
|
||||||
|
|
||||||
|
.extern _HardwareSetup /*external Sub-routine to initialise Hardware*/
|
||||||
|
.extern _data
|
||||||
|
.extern _mdata
|
||||||
|
.extern _ebss
|
||||||
|
.extern _bss
|
||||||
|
.extern _edata
|
||||||
|
.extern _main
|
||||||
|
.extern _ustack
|
||||||
|
.extern _istack
|
||||||
|
.extern _rvectors
|
||||||
|
.extern _exit
|
||||||
|
|
||||||
|
|
||||||
|
_PowerON_Reset :
|
||||||
|
/* initialise user stack pointer */
|
||||||
|
mvtc #_ustack,USP
|
||||||
|
|
||||||
|
/* initialise interrupt stack pointer */
|
||||||
|
mvtc #_istack,ISP
|
||||||
|
|
||||||
|
/* setup intb */
|
||||||
|
mvtc #_rvectors_start, intb /* INTERRUPT VECTOR ADDRESS definition */
|
||||||
|
|
||||||
|
/* load data section from ROM to RAM */
|
||||||
|
|
||||||
|
mov #_mdata,r2 /* src ROM address of data section in R2 */
|
||||||
|
mov #_data,r1 /* dest start RAM address of data section in R1 */
|
||||||
|
mov #_edata,r3 /* end RAM address of data section in R3 */
|
||||||
|
sub r1,r3 /* size of data section in R3 (R3=R3-R1) */
|
||||||
|
smovf /* block copy R3 bytes from R2 to R1 */
|
||||||
|
|
||||||
|
/* bss initialisation : zero out bss */
|
||||||
|
|
||||||
|
mov #00h,r2 /* load R2 reg with zero */
|
||||||
|
mov #_ebss, r3 /* store the end address of bss in R3 */
|
||||||
|
mov #_bss, r1 /* store the start address of bss in R1 */
|
||||||
|
sub r1,r3 /* size of bss section in R3 (R3=R3-R1) */
|
||||||
|
sstr.b
|
||||||
|
/* call the hardware initialiser */
|
||||||
|
bsr.a _HardwareSetup
|
||||||
|
nop
|
||||||
|
|
||||||
|
#ifdef RUN_IN_USER_MODE
|
||||||
|
/* setup PSW */
|
||||||
|
mvtc #10000h, psw /* Set Ubit & Ibit for PSW */
|
||||||
|
|
||||||
|
/* change PSW PM to user-mode */
|
||||||
|
MVFC PSW,R1
|
||||||
|
OR #00100000h,R1
|
||||||
|
PUSH.L R1
|
||||||
|
MVFC PC,R1
|
||||||
|
ADD #10,R1
|
||||||
|
PUSH.L R1
|
||||||
|
RTE
|
||||||
|
NOP
|
||||||
|
NOP
|
||||||
|
#endif
|
||||||
|
#ifdef CPPAPP
|
||||||
|
bsr.a __rx_init
|
||||||
|
#endif
|
||||||
|
/* start user program */
|
||||||
|
bsr.a _main
|
||||||
|
bsr.a _exit
|
||||||
|
|
||||||
|
#ifdef CPPAPP
|
||||||
|
.global _rx_run_preinit_array
|
||||||
|
.type _rx_run_preinit_array,@function
|
||||||
|
_rx_run_preinit_array:
|
||||||
|
mov #__preinit_array_start,r1
|
||||||
|
mov #__preinit_array_end,r2
|
||||||
|
bra.a _rx_run_inilist
|
||||||
|
|
||||||
|
.global _rx_run_init_array
|
||||||
|
.type _rx_run_init_array,@function
|
||||||
|
_rx_run_init_array:
|
||||||
|
mov #__init_array_start,r1
|
||||||
|
mov #__init_array_end,r2
|
||||||
|
mov #4, r3
|
||||||
|
bra.a _rx_run_inilist
|
||||||
|
|
||||||
|
.global _rx_run_fini_array
|
||||||
|
.type _rx_run_fini_array,@function
|
||||||
|
_rx_run_fini_array:
|
||||||
|
mov #__fini_array_start,r2
|
||||||
|
mov #__fini_array_end,r1
|
||||||
|
mov #-4, r3
|
||||||
|
/* fall through */
|
||||||
|
|
||||||
|
_rx_run_inilist:
|
||||||
|
next_inilist:
|
||||||
|
cmp r1,r2
|
||||||
|
beq.b done_inilist
|
||||||
|
mov.l [r1],r4
|
||||||
|
cmp #-1, r4
|
||||||
|
beq.b skip_inilist
|
||||||
|
cmp #0, r4
|
||||||
|
beq.b skip_inilist
|
||||||
|
pushm r1-r3
|
||||||
|
jsr r4
|
||||||
|
popm r1-r3
|
||||||
|
skip_inilist:
|
||||||
|
add r3,r1
|
||||||
|
bra.b next_inilist
|
||||||
|
done_inilist:
|
||||||
|
rts
|
||||||
|
|
||||||
|
.section .init,"ax"
|
||||||
|
.balign 4
|
||||||
|
|
||||||
|
.global __rx_init
|
||||||
|
__rx_init:
|
||||||
|
|
||||||
|
.section .fini,"ax"
|
||||||
|
.balign 4
|
||||||
|
|
||||||
|
.global __rx_fini
|
||||||
|
__rx_fini:
|
||||||
|
bsr.a _rx_run_fini_array
|
||||||
|
|
||||||
|
.section .sdata
|
||||||
|
.balign 4
|
||||||
|
.global __gp
|
||||||
|
.weak __gp
|
||||||
|
__gp:
|
||||||
|
|
||||||
|
.section .data
|
||||||
|
.global ___dso_handle
|
||||||
|
.weak ___dso_handle
|
||||||
|
___dso_handle:
|
||||||
|
.long 0
|
||||||
|
|
||||||
|
.section .init,"ax"
|
||||||
|
bsr.a _rx_run_preinit_array
|
||||||
|
bsr.a _rx_run_init_array
|
||||||
|
rts
|
||||||
|
|
||||||
|
.global __rx_init_end
|
||||||
|
__rx_init_end:
|
||||||
|
|
||||||
|
.section .fini,"ax"
|
||||||
|
|
||||||
|
rts
|
||||||
|
.global __rx_fini_end
|
||||||
|
__rx_fini_end:
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* call to exit*/
|
||||||
|
_exit:
|
||||||
|
bra _loop_here
|
||||||
|
_loop_here:
|
||||||
|
bra _loop_here
|
||||||
|
|
||||||
|
.text
|
||||||
|
.end
|
|
@ -0,0 +1,25 @@
|
||||||
|
/***********************************************************************/
|
||||||
|
/* */
|
||||||
|
/* PROJECT NAME : RTOSDemo_GCC */
|
||||||
|
/* FILE : typedefine.h */
|
||||||
|
/* DESCRIPTION : Aliases of Integer Type */
|
||||||
|
/* CPU SERIES : RX100 */
|
||||||
|
/* CPU TYPE : RX111 */
|
||||||
|
/* */
|
||||||
|
/* This file is generated by e2studio. */
|
||||||
|
/* */
|
||||||
|
/***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef signed char _SBYTE;
|
||||||
|
typedef unsigned char _UBYTE;
|
||||||
|
typedef signed short _SWORD;
|
||||||
|
typedef unsigned short _UWORD;
|
||||||
|
typedef signed int _SINT;
|
||||||
|
typedef unsigned int _UINT;
|
||||||
|
typedef signed long _SDWORD;
|
||||||
|
typedef unsigned long _UDWORD;
|
||||||
|
typedef signed long long _SQWORD;
|
||||||
|
typedef unsigned long long _UQWORD;
|
|
@ -0,0 +1,590 @@
|
||||||
|
/***********************************************************************/
|
||||||
|
/* */
|
||||||
|
/* PROJECT NAME : RTOSDemo_GCC */
|
||||||
|
/* FILE : vector_table.c */
|
||||||
|
/* DESCRIPTION : Vector Table */
|
||||||
|
/* CPU SERIES : RX100 */
|
||||||
|
/* CPU TYPE : RX111 */
|
||||||
|
/* */
|
||||||
|
/* This file is generated by e2studio. */
|
||||||
|
/* */
|
||||||
|
/***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include "interrupt_handlers.h"
|
||||||
|
|
||||||
|
typedef void (*fp) (void);
|
||||||
|
extern void PowerON_Reset (void);
|
||||||
|
extern void stack (void);
|
||||||
|
extern void vPortSoftwareInterruptISR( void );
|
||||||
|
extern void vPortTickISR( void );
|
||||||
|
extern void Dummy( void );
|
||||||
|
extern void vButtonInterrupt( void );
|
||||||
|
|
||||||
|
#ifdef __RX_LITTLE_ENDIAN__
|
||||||
|
const unsigned char Endian_Select[] __attribute__ ((section (".endian_bytes"))) = {
|
||||||
|
0xff, 0xff, 0xff, 0xff
|
||||||
|
};
|
||||||
|
#elif __RX_BIG_ENDIAN__
|
||||||
|
const unsigned char Endian_Select[] __attribute__ ((section (".endian_bytes"))) = {
|
||||||
|
0xff, 0xff, 0xff, 0xf8
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Option bytes setting for OFS1:0xFFFFFF88 and OFS0:0xFFFFFF8C
|
||||||
|
const unsigned char Security_Id[] __attribute__ ((section (".option_bytes"))) = {
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#define FVECT_SECT __attribute__ ((section (".fvectors")))
|
||||||
|
|
||||||
|
const void *HardwareVectors[] FVECT_SECT = {
|
||||||
|
//;0xffffffd0 Exception(Supervisor Instruction)
|
||||||
|
INT_Excep_SuperVisorInst,
|
||||||
|
//;0xffffffd4 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0xffffffd8 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0xffffffdc Exception(Undefined Instruction)
|
||||||
|
INT_Excep_UndefinedInst,
|
||||||
|
//;0xffffffe0 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0xffffffe4 Exception(Floating Point)
|
||||||
|
INT_Excep_FloatingPoint,
|
||||||
|
//;0xffffffe8 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0xffffffec Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0xfffffff0 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0xfffffff4 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0xfffffff8 NMI
|
||||||
|
INT_NonMaskableInterrupt,
|
||||||
|
//;0xfffffffc RESET
|
||||||
|
//;<<VECTOR DATA START (POWER ON RESET)>>
|
||||||
|
//;Power On Reset PC
|
||||||
|
PowerON_Reset
|
||||||
|
//;<<VECTOR DATA END (POWER ON RESET)>>
|
||||||
|
};
|
||||||
|
#define RVECT_SECT __attribute__ ((section (".rvectors")))
|
||||||
|
|
||||||
|
const fp RelocatableVectors[] RVECT_SECT = {
|
||||||
|
|
||||||
|
//;0x0000 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0004 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0008 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x000C Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0010 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0014 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0018 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x001C Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0020 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0024 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0028 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x002C Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0030 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0034 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0038 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x003C Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0040
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0044 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0048 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x004C Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0050 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0054
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0058 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x005C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0060 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0064 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0068 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x006C Reserved
|
||||||
|
(fp)vPortSoftwareInterruptISR,
|
||||||
|
//;0x0070 CMTU0_CMT0
|
||||||
|
(fp)vPortTickISR,
|
||||||
|
//;0x0074
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0078
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x007C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0080
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0084 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0088 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x008C Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0090 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0094 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0098 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x009C Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00A0 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00A4 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00A8 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00AC Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00B0 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00B4 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00B8 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00BC Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00C0 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00C4 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00C8 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00CC Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00D0 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00D4 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00D8 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00DC Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00E0 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00E4 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00E8 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00EC Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00F0 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00F4 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00F8 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x00FC Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0100 IRQ0
|
||||||
|
(fp)vButtonInterrupt,
|
||||||
|
//;0x0104 IRQ1
|
||||||
|
(fp)vButtonInterrupt,
|
||||||
|
//;0x0108 IRQ2
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x010C IRQ3
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0110 IRQ4
|
||||||
|
(fp)vButtonInterrupt,
|
||||||
|
//;0x0114 IRQ5
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0118 IRQ6
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x011C IRQ7
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0120
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0124
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0128
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x012C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0130
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0134
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0138
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x013C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0140 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0144 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0148 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x014C Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0150 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0154 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0158 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x015C Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0160 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0164 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0168 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x016C Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0170 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0174 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0178 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x017C Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0180
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0184 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x0188
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x018C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0190
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0194
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0198 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x019C Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x01A0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01A4
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01A8
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01AC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01B0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01B4 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x01B8 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x01BC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01C0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01C4 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01C8 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01CC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01D0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01D4
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01D8
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01DC Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01E0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01E4
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01E8
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01EC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01F0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01F4
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01F8
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x01FC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0200
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0204 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0208 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x020C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0210
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0214
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0218
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x021C Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0220
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0224
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0228
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x022C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0230
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0234
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0238
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x023C Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0240 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0244
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0248
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x024C Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0250 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0254
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0258
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x025C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0260
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0264 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0268
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x026C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0270
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0274
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0278
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x027C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0280
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0284
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0288
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x028C Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0290 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0294
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0298
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x029C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02A0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02A4 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02A8
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02AC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02B0 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02B4 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02B8
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02BC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02C0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02C4
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02C8
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02CC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02D0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02D4
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02D8
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02DC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02E0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02E4
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02E8 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02EC Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02F0 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02F4 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02F8 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x02FC Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0300 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0304 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0308 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x030C Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0310 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0314 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0318
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x031C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0320
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0324
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0328 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x032C Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0330 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0334 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0338 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x033C Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0340 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0344 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0348 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x034C Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0350 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0354 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0358
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x035C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0360
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0364
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0368
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x036C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0370
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0374
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0378
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x037C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0380
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0384
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0388
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x038C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0390
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0394
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x0398
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x039C
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03A0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03A4
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03A8
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03AC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03B0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03B4
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03B8
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03BC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03C0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03C4
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03C8 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03CC Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03D0 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03D4 Reserved
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03D8
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03DC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03E0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03E4
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03E8
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03EC
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03F0
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03F4
|
||||||
|
(fp)Dummy,
|
||||||
|
//;0x03F8 Reserved
|
||||||
|
(fp)0,
|
||||||
|
//;0x03FC Reserved
|
||||||
|
(fp)0,
|
||||||
|
};
|
|
@ -0,0 +1,88 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : platform.h
|
||||||
|
* Description : The user chooses which MCU and board they are developing for in this file. If the board you are using
|
||||||
|
* is not listed below, please add your own or use the default 'User Board'.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 30.11.2011 1.00 First Release
|
||||||
|
* : 13.01.2012 1.10 Moved from having platform defined using macro defintion, to having platform defined
|
||||||
|
* by choosing an include path. This makes this file simpler and cleans up the issue
|
||||||
|
* where HEW shows all header files for all platforms under 'Dependencies'.
|
||||||
|
* : 14.02.2012 1.20 Added RX210 BSP.
|
||||||
|
* : 18.04.2012 1.30 Updated to v0.70 of FIT S/W Spec and v0.20 of FIT r_bsp Spec. This includes adding
|
||||||
|
* locking.c and locking.h in board folders. Also, r_bsp can now be configured through
|
||||||
|
* r_bsp_config.h.
|
||||||
|
* : 26.06.2012 1.40 Added new options such as exception callbacks and the ability to choose your MCU using
|
||||||
|
* its part number in r_bsp_config.h. Moved mcu_info.h to the 'mcu' folder. Made an effort
|
||||||
|
* to remove any extra files that the user would need to touch. Removed the flash_options.c
|
||||||
|
* file and put its contents in vecttbl.c.
|
||||||
|
* : 17.07.2012 1.50 Fixed bug with exception callback function names. Added BCLK_OUTPUT and SDCLK_OUTPUT
|
||||||
|
* macro options in r_bsp_config.h. Added some extra code to handle exceptions in
|
||||||
|
* vecttbl.c. Added vecttbl.h so that user has prototypes for exception callbacks.
|
||||||
|
* : 08.11.2012 1.60 Added RX111 BSP
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _PLATFORM_H_
|
||||||
|
#define _PLATFORM_H_
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
DEFINE YOUR SYSTEM - UNCOMMENT THE INCLUDE PATH FOR THE PLATFORM YOU ARE USING.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* RSKRX610 */
|
||||||
|
//#include "./board/rskrx610/r_bsp.h"
|
||||||
|
|
||||||
|
/* RSKRX62N */
|
||||||
|
//#include "./board/rskrx62n/r_bsp.h"
|
||||||
|
|
||||||
|
/* RSKRX62T */
|
||||||
|
//#include "./board/rskrx62t/r_bsp.h"
|
||||||
|
|
||||||
|
/* RDKRX62N */
|
||||||
|
//#include "./board/rdkrx62n/r_bsp.h"
|
||||||
|
|
||||||
|
/* RSKRX630 */
|
||||||
|
//#include "./board/rskrx630/r_bsp.h"
|
||||||
|
|
||||||
|
/* RSKRX63N */
|
||||||
|
//#include "./board/rskrx63n/r_bsp.h"
|
||||||
|
|
||||||
|
/* RDKRX63N */
|
||||||
|
//#include "./board/rdkrx63n/r_bsp.h"
|
||||||
|
|
||||||
|
/* RSKRX210 */
|
||||||
|
//#include "./board/rskrx210/r_bsp.h"
|
||||||
|
|
||||||
|
/* RSKRX111 */
|
||||||
|
#include "./board/rskrx111/r_bsp.h"
|
||||||
|
|
||||||
|
/* User Board - Define your own board here. */
|
||||||
|
//#include "./board/user/r_bsp.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
MAKE SURE AT LEAST ONE PLATFORM WAS DEFINED - DO NOT EDIT BELOW THIS POINT
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#ifndef PLATFORM_DEFINED
|
||||||
|
#error "Error - No platform defined in platform.h!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _PLATFORM_H_ */
|
||||||
|
|
|
@ -0,0 +1,250 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_bsp_config_reference.c
|
||||||
|
* Device(s) : RX111
|
||||||
|
* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included
|
||||||
|
* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h)
|
||||||
|
* is just a reference file that the user can use to make their own r_bsp_config.h file.
|
||||||
|
************************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 07.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#ifndef R_BSP_CONFIG_REF_HEADER_FILE
|
||||||
|
#define R_BSP_CONFIG_REF_HEADER_FILE
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Configuration Options
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Enter the product part number for your MCU. This information will be used to obtain information about your MCU such
|
||||||
|
as package and memory size.
|
||||||
|
To help parse this information, the part number will be defined using multiple macros.
|
||||||
|
R 5 F 51 11 5 A D FM
|
||||||
|
| | | | | | | | | Macro Name Description
|
||||||
|
| | | | | | | | |__MCU_PART_PACKAGE = Package type, number of pins, and pin pitch
|
||||||
|
| | | | | | | |____not used = Products with wide temperature range (D: -40 to 85C G: -40 to 105C)
|
||||||
|
| | | | | | |______not used = Blank
|
||||||
|
| | | | | |________MCU_PART_MEMORY_SIZE = ROM, RAM, and Data Flash Capacity
|
||||||
|
| | | | |___________MCU_PART_GROUP = Group name
|
||||||
|
| | | |______________MCU_PART_SERIES = Series name
|
||||||
|
| | |________________MCU_PART_MEMORY_TYPE = Type of memory (Flash)
|
||||||
|
| |__________________not used = Renesas MCU
|
||||||
|
|____________________not used = Renesas semiconductor product.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Package type. Set the macro definition based on values below:
|
||||||
|
Character(s) = Value for macro = Package Type/Number of Pins/Pin Pitch
|
||||||
|
FM = 0x0 = LFQFP/64/0.50
|
||||||
|
FK = 0x1 = LQFP/64/0.80
|
||||||
|
LF = 0x2 = TFLGA/64/0.50
|
||||||
|
FL = 0x3 = LFQFP/48/0.50
|
||||||
|
NE = 0x4 = VQFN/48/0.50
|
||||||
|
NC = 0x5 = HWQFN/36/0.50
|
||||||
|
LM = 0x6 = WFLGA/36/0.50
|
||||||
|
SB = 0x7 = SSOP/36/0.80
|
||||||
|
*/
|
||||||
|
#define MCU_PART_PACKAGE (0x0)
|
||||||
|
|
||||||
|
/* ROM, RAM, and Data Flash Capacity.
|
||||||
|
Character(s) = Value for macro = ROM Size/Ram Size/Data Flash Size
|
||||||
|
5 = 0x5 = 128KB/16KB/8KB
|
||||||
|
4 = 0x4 = 96KB/16KB/8KB
|
||||||
|
3 = 0x3 = 64KB/10KB/8KB
|
||||||
|
1 = 0x1 = 32KB/10KB/8KB
|
||||||
|
J = 0x0 = 16KB/8KB/8KB
|
||||||
|
*/
|
||||||
|
#define MCU_PART_MEMORY_SIZE (0x5)
|
||||||
|
|
||||||
|
/* Group name.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
10 = 0x0 = RX110 Group
|
||||||
|
11 = 0x1 = RX111 Group
|
||||||
|
*/
|
||||||
|
#define MCU_PART_GROUP (0x1)
|
||||||
|
|
||||||
|
/* Series name.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
51 = 0x0 = RX100 Series
|
||||||
|
*/
|
||||||
|
#define MCU_PART_SERIES (0x0)
|
||||||
|
|
||||||
|
/* Memory type.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
F = 0x0 = Flash memory version
|
||||||
|
*/
|
||||||
|
#define MCU_PART_MEMORY_TYPE (0x0)
|
||||||
|
|
||||||
|
/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a
|
||||||
|
'#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */
|
||||||
|
#if defined(BSP_DECLARE_STACK)
|
||||||
|
/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||||
|
#pragma stacksize su=0x400
|
||||||
|
/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||||
|
#pragma stacksize si=0x100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Heap size in bytes. */
|
||||||
|
#define HEAP_BYTES (0x001)
|
||||||
|
|
||||||
|
/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information
|
||||||
|
on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual.
|
||||||
|
0 = Stay in Supervisor mode.
|
||||||
|
1 = Switch to User mode.
|
||||||
|
*/
|
||||||
|
#define RUN_IN_USER_MODE (0)
|
||||||
|
|
||||||
|
|
||||||
|
/* This macro lets other modules no if a RTOS is being used.
|
||||||
|
0 = RTOS is not used.
|
||||||
|
1 = RTOS is used.
|
||||||
|
*/
|
||||||
|
#define RTOS_USED (0)
|
||||||
|
|
||||||
|
/* Clock source select (CKSEL).
|
||||||
|
0 = Low Speed On-Chip Oscillator (LOCO)
|
||||||
|
1 = High Speed On-Chip Oscillator (HOCO)
|
||||||
|
2 = Main Clock Oscillator
|
||||||
|
3 = Sub-Clock Oscillator
|
||||||
|
4 = PLL Circuit
|
||||||
|
*/
|
||||||
|
#define CLOCK_SOURCE (4) // GI org 4
|
||||||
|
|
||||||
|
/* Clock configuration options.
|
||||||
|
The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The
|
||||||
|
multiplier settings are used to set the clock registers in resetprg.c. If a 16MHz clock is used and the
|
||||||
|
ICLK is 24MHz, PCLKB is 24MHz, FCLK is 24MHz, PCLKD is 24MHz, and CKO is 1MHz then the
|
||||||
|
settings would be:
|
||||||
|
|
||||||
|
XTAL_HZ = 16000000
|
||||||
|
PLL_DIV = 2
|
||||||
|
PLL_MUL = 6 (16MHz x 3 = 48MHz)
|
||||||
|
ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 24MHz
|
||||||
|
PCKB_DIV = 2 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 24MHz
|
||||||
|
PCKD_DIV = 2 : Peripheral Clock D (PCLKD) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV) = 24MHz
|
||||||
|
FCK_DIV = 2 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 24MHz
|
||||||
|
*/
|
||||||
|
/* XTAL - Input clock frequency in Hz */
|
||||||
|
#define XTAL_HZ (16000000)
|
||||||
|
/* PLL Input Frequency Divider Select (PLIDIV).
|
||||||
|
Available divisors = /1 (no division), /2, /4
|
||||||
|
*/
|
||||||
|
#define PLL_DIV (2) // GI org 2
|
||||||
|
/* PLL Frequency Multiplication Factor Select (STC).
|
||||||
|
Available multipliers = x6, x8
|
||||||
|
*/
|
||||||
|
#define PLL_MUL (6) // GI org 6
|
||||||
|
/* System Clock Divider (ICK).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define ICK_DIV (2) // NOTE: ICLK CANNOT BE SLOWER THAN PCLK!
|
||||||
|
/* Peripheral Module Clock B Divider (PCKB).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define PCKB_DIV (2) // GI org 2
|
||||||
|
/* Peripheral Module Clock D Divider (PCKD).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define PCKD_DIV (2)
|
||||||
|
/* Flash IF Clock Divider (FCK).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define FCK_DIV (2)
|
||||||
|
|
||||||
|
/* Below are callback functions that can be used for detecting MCU exceptions, undefined interrupt sources, and
|
||||||
|
bus errors. If the user wishes to be alerted of these events then they will need to define the macro as a
|
||||||
|
function to be called when the event occurs. For example, if the user wanted the function
|
||||||
|
excep_undefined_instr_isr() to be called when an undefined interrupt source ISR is triggered then they would
|
||||||
|
do the following:
|
||||||
|
#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||||
|
If the user does not wish to be alerted of these events then they should comment out the macros.
|
||||||
|
|
||||||
|
NOTE: When a callback function is called it will be called from within a ISR. This means that the function
|
||||||
|
will essentially be an interrupt and will hold off other interrupts that occur in the system while it
|
||||||
|
is executing. For this reason, it is recommended to keep these callback functions short as to not
|
||||||
|
decrease the real-time response of your system.
|
||||||
|
*/
|
||||||
|
/* Callback for Supervisor Instruction Violation Exception. */
|
||||||
|
//#define EXCEP_SUPERVISOR_ISR_CALLBACK supervisor_instr_cb
|
||||||
|
|
||||||
|
/* Callback for Undefined Instruction Exception. */
|
||||||
|
//#define EXCEP_UNDEFINED_INSTR_ISR_CALLBACK undefined_instr_cb
|
||||||
|
|
||||||
|
/* Callback for Non-maskable Interrupt. */
|
||||||
|
//#define NMI_ISR_CALLBACK nmi_cb
|
||||||
|
|
||||||
|
/* Callback for all undefined interrupt vectors. User can set a breakpoint in this function to determine which source
|
||||||
|
is creating unwanted interrupts. */
|
||||||
|
//#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||||
|
|
||||||
|
/* Callback for Bus Error Interrupt. */
|
||||||
|
//#define BUS_ERROR_ISR_CALLBACK bus_error_cb
|
||||||
|
|
||||||
|
/* The user has the option of separately choosing little or big endian for the User Application Area */
|
||||||
|
|
||||||
|
/* Endian mode for User Application.
|
||||||
|
0 = Big Endian
|
||||||
|
Else = Little Endian (Default)
|
||||||
|
*/
|
||||||
|
#define USER_APP_ENDIAN (1)
|
||||||
|
|
||||||
|
|
||||||
|
/* Configure WDT and IWDT settings.
|
||||||
|
OFS0 - Option Function Select Register 0
|
||||||
|
OFS0 - Option Function Select Register 0
|
||||||
|
b31:b15 Reserved (set to 1)
|
||||||
|
b14 IWDTSLCSTP - IWDT Sleep Mode Count Stop Control - (0=can't stop count, 1=stop w/some low power modes)
|
||||||
|
b13 Reserved (set to 1)
|
||||||
|
b12 IWDTRSTIRQS - IWDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU)
|
||||||
|
b11:b10 IWDTRPSS - IWDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use)
|
||||||
|
b9:b8 IWDTRPES - IWDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use)
|
||||||
|
b7:b4 IWDTCKS - IWDT Clock Frequency Division Ratio - (0=none, 2=/16, 3 = /32, 4=/64, 0xF=/128, 5=/256)
|
||||||
|
b3:b2 IWDTTOPS - IWDT Timeout Period Select - (0=128 cycles, 1=512, 2=1024, 3=2048)
|
||||||
|
b1 IWDTSTRT - IWDT Start Mode Select - (0=auto-start after reset, 1=halt after reset)
|
||||||
|
b0 Reserved (set to 1) */
|
||||||
|
#define OFS0_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||||
|
|
||||||
|
/* Configure whether voltage detection 1 circuit and HOCO are enabled after reset.
|
||||||
|
OFS1 - Option Function Select Register 1
|
||||||
|
b31:b9 Reserved (set to 1)
|
||||||
|
b8 HOCOEN - Enable/disable HOCO oscillation after a reset (0=enable, 1=disable)
|
||||||
|
b7:b4 STUPLVD1LVL - Startup Voltage Monitoring 1 Reset Detection Level Select
|
||||||
|
0 1 0 0: 3.10 V
|
||||||
|
0 1 0 1: 3.00 V
|
||||||
|
0 1 1 0: 2.90 V
|
||||||
|
0 1 1 1: 2.79 V
|
||||||
|
1 0 0 0: 2.68 V
|
||||||
|
1 0 0 1: 2.58 V
|
||||||
|
1 0 1 0: 2.48 V
|
||||||
|
1 0 1 1: 2.06 V
|
||||||
|
1 1 0 0: 1.96 V
|
||||||
|
1 1 0 1: 1.86 V
|
||||||
|
b3:b2 Reserved (set to 1)
|
||||||
|
b2 STUPLVD1REN - Startup Voltage Monitoring 1 Reset Enable (1=monitoring disabled)
|
||||||
|
b0 FASTSTUP - Power-On Fast Startup Time (1=normal; read only) */
|
||||||
|
#define OFS1_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||||
|
|
||||||
|
/* Initializes C input & output library functions.
|
||||||
|
0 = Disable I/O library initialization in resetprg.c. If you are not using stdio then use this value.
|
||||||
|
1 = Enable I/O library initialization in resetprg.c. This is default and needed if you are using stdio. */
|
||||||
|
#define IO_LIB_ENABLE (0)
|
||||||
|
|
||||||
|
#endif /* R_BSP_CONFIG_REF_HEADER_FILE */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
r_bsp Package
|
||||||
|
=============
|
||||||
|
|
||||||
|
Document Number
|
||||||
|
---------------
|
||||||
|
N/A
|
||||||
|
|
||||||
|
Version
|
||||||
|
-------
|
||||||
|
v1.60
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
The r_bsp package provides a foundation for code to be built on top of. It provides startup code, iodefines, and MCU
|
||||||
|
information for different boards. There are 2 folders that make up the r_bsp package. The 'mcu' folder has iodefine
|
||||||
|
files and a file named 'mcu_info.h' for each MCU group. The 'mcu_info.h' file has information about the MCU on the board
|
||||||
|
and is configured based on the information given in r_bsp_config.h. The information in 'mcu_info.h' is used to help
|
||||||
|
configure Renesas middleware that uses the r_bsp package. The 'board' folder has a folder with startup code for each
|
||||||
|
supported board. Which MCU and board is chosen is decided by the settings in 'platform.h'. The user can choose which
|
||||||
|
board they are using by uncommenting the include path that applies to their board. For example, if you are using the
|
||||||
|
RSK+RX62N then you would uncomment the #include "./board/rskrx62n/r_bsp.h" include path. Users are encouraged to add
|
||||||
|
their own boards to the 'board' directory. BSPs are configured by using the r_bsp_config.h file. Each board will have a
|
||||||
|
reference configuration file named r_bsp_config_reference.h. The user should copy this file to their project, rename it
|
||||||
|
to r_bsp_config.h, and use the options inside the file to configure the BSP for their project.
|
||||||
|
|
||||||
|
Features
|
||||||
|
--------
|
||||||
|
* Provides foundation to build code on top of.
|
||||||
|
* Provides MCU startup code.
|
||||||
|
* Provides SFR access through iodefine.h
|
||||||
|
* Stores details of MCU in 'mcu_info.h' to help configure Renesas middleware.
|
||||||
|
* Easily configure BSP through r_bsp_config.h.
|
||||||
|
* Choose MCU easily by inputting part number details in r_bsp_config.h.
|
||||||
|
* Provides callbacks for MCU exceptions and the bus error interrupt.
|
||||||
|
|
||||||
|
Limitations
|
||||||
|
-----------
|
||||||
|
N/A
|
||||||
|
|
||||||
|
Peripherals Used Directly
|
||||||
|
-------------------------
|
||||||
|
N/A
|
||||||
|
|
||||||
|
Required Packages
|
||||||
|
-----------------
|
||||||
|
* r_glyph [required if you want to use LCD for RDK boards]
|
||||||
|
* r_rspi_rx [required if you want to use LCD for RDK boards]
|
||||||
|
|
||||||
|
How to add to your project
|
||||||
|
--------------------------
|
||||||
|
* Copy the r_bsp folder to your project.
|
||||||
|
* Add an include path to the 'r_bsp' directory.
|
||||||
|
* Add all of the source files for your board from the 'r_bsp\board\--YOUR_BOARD--' directory to your project.
|
||||||
|
* Uncomment the include path for your board in 'platform.h' which is located in the 'r_bsp' directory.
|
||||||
|
* Copy the file r_bsp_config_reference.h from the 'r_bsp\board\--YOUR_BOARD--' directory and copy it to your project's
|
||||||
|
source code directory. Rename the file r_bsp_config.h.
|
||||||
|
* Open r_bsp_config.h and use the macros to configure the BSP for your project.
|
||||||
|
|
||||||
|
File Structure
|
||||||
|
--------------
|
||||||
|
r_bsp
|
||||||
|
| platform.h (choose which board is being used)
|
||||||
|
| readme.txt
|
||||||
|
|
|
||||||
|
+---board (contains supported boards)
|
||||||
|
| +---rdkrx62n (contains BSP source and header files)
|
||||||
|
| |
|
||||||
|
| +---rdkrx63n
|
||||||
|
| |
|
||||||
|
| +---rskrx111
|
||||||
|
| |
|
||||||
|
| +---rskrx210
|
||||||
|
| |
|
||||||
|
| +---rskrx610
|
||||||
|
| |
|
||||||
|
| +---rskrx62n
|
||||||
|
| |
|
||||||
|
| +---rskrx62t
|
||||||
|
| |
|
||||||
|
| +---rskrx630
|
||||||
|
| |
|
||||||
|
| +---rskrx63n
|
||||||
|
| |
|
||||||
|
| \---user
|
||||||
|
|
|
||||||
|
\---mcu
|
||||||
|
+---rx111 (contains common files to this MCU group, e.g. iodefine.h)
|
||||||
|
|
|
||||||
|
+---rx210
|
||||||
|
|
|
||||||
|
+---rx610
|
||||||
|
|
|
||||||
|
+---rx62n
|
||||||
|
|
|
||||||
|
+---rx62t
|
||||||
|
|
|
||||||
|
+---rx630
|
||||||
|
|
|
||||||
|
\---rx63n
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,47 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_switches_config.c
|
||||||
|
* Description : Configures the switches code
|
||||||
|
************************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 17.01.2012 1.00 First Release
|
||||||
|
* : 17.02.2012 1.10 Added RSKRX210 support.
|
||||||
|
* : 08.03.2012 1.20 Added GetVersion() function (though it's really a macro).
|
||||||
|
* : 04.06.2012 1.30 Code can now be interrupt or poll driven.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#ifndef SWITCHES_CONFIG_HEADER_FILE
|
||||||
|
#define SWITCHES_CONFIG_HEADER_FILE
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Configuration Options
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* This macro sets whether interrupts or polling is used for detecting switch presses. The benefit of using interrupts
|
||||||
|
is that no extra processing is used for polling and the use of a system timer tick is not a requirement. The downside
|
||||||
|
of using interrupts is that callback functions are called from within an interrupt so if your ISR is long then it can
|
||||||
|
degrade the real-time response of your system. The benefit of polling is that functions are called at the application
|
||||||
|
level and debouncing is supported. The downside to polling is that your system must call the R_SWITCHES_Update() on a
|
||||||
|
regular basis which requires extra processing.
|
||||||
|
|
||||||
|
0 = Use interrupts
|
||||||
|
1 = Use polling
|
||||||
|
*/
|
||||||
|
#define SWITCHES_DETECTION_MODE (0)
|
||||||
|
|
||||||
|
#endif /* SWITCHES_CONFIG_HEADER_FILE */
|
|
@ -0,0 +1,72 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_switches_if.h
|
||||||
|
* Description : Functions for using switches with callback functions.
|
||||||
|
************************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 17.01.2012 1.00 First Release
|
||||||
|
* : 17.02.2012 1.10 Added RSKRX210 support.
|
||||||
|
* : 08.03.2012 1.20 Added GetVersion() function (though it's really a macro).
|
||||||
|
* : 04.06.2012 1.30 Code can now be interrupt or poll driven.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef SWITCHES_API_HEADER_FILE
|
||||||
|
#define SWITCHES_API_HEADER_FILE
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Fixed width integer support. */
|
||||||
|
#include <stdint.h>
|
||||||
|
/* Used for configuring the code */
|
||||||
|
#include "r_switches_config.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Version Number of API. */
|
||||||
|
#define SWITCHES_VERSION_MAJOR (1)
|
||||||
|
#define SWITCHES_VERSION_MINOR (0)
|
||||||
|
/* The process of getting the version number is done through the macro below. The version number is encoded where the
|
||||||
|
top 2 bytes are the major version number and the bottom 2 bytes are the minor version number. For example,
|
||||||
|
Version 4.25 would be returned as 0x00040019. */
|
||||||
|
#define R_SWITCHES_GetVersion() ((((uint32_t)SWITCHES_VERSION_MAJOR) << 16) | (uint32_t)SWITCHES_VERSION_MINOR)
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Public Functions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void R_SWITCHES_Init(void);
|
||||||
|
void R_SWITCHES_Update(void);
|
||||||
|
|
||||||
|
/* Callback prototypes. */
|
||||||
|
#if defined(SW1_CALLBACK_FUNCTION)
|
||||||
|
void SW1_CALLBACK_FUNCTION(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(SW2_CALLBACK_FUNCTION)
|
||||||
|
void SW2_CALLBACK_FUNCTION(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(SW3_CALLBACK_FUNCTION)
|
||||||
|
void SW3_CALLBACK_FUNCTION(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* SWITCHES_API_HEADER_FILE */
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
PLEASE REFER TO THE APPLICATION NOTE FOR THIS MIDDLEWARE FOR MORE INFORMATION
|
||||||
|
|
||||||
|
Switches
|
||||||
|
========
|
||||||
|
|
||||||
|
Document Number
|
||||||
|
---------------
|
||||||
|
N/A
|
||||||
|
|
||||||
|
Version
|
||||||
|
-------
|
||||||
|
v1.40
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
Configures port pins for switches and calls user defined function on switch press. Switch presses can be detected using
|
||||||
|
IRQ interrupts or by polling. The benefit of using interrupts is that no extra processing is used for polling and the
|
||||||
|
use of a system timer tick is not a requirement. The downside of using interrupts is that callback functions are called
|
||||||
|
from within an interrupt so if your ISR is long then it can degrade the real-time response of your system. The benefit
|
||||||
|
of polling is that functions are called at the application level and debouncing is supported. The downside to polling is
|
||||||
|
that your system must call the R_SWITCHES_Update() on a regular basis which requires extra processing.
|
||||||
|
|
||||||
|
Features
|
||||||
|
--------
|
||||||
|
* Call one function to setup switches.
|
||||||
|
* Define function to call when switch is pressed.
|
||||||
|
* Can be configured to be interrupt or poll driven.
|
||||||
|
|
||||||
|
Supported MCUs
|
||||||
|
--------------
|
||||||
|
* RX610 Group
|
||||||
|
* RX621, RX62N Group
|
||||||
|
* RX62T Group
|
||||||
|
* RX630 Group
|
||||||
|
* RX631, RX63N Group
|
||||||
|
* RX210 Group
|
||||||
|
* RX111 Group
|
||||||
|
|
||||||
|
Boards Tested On
|
||||||
|
----------------
|
||||||
|
* RSKRX610
|
||||||
|
* RSK+RX62N
|
||||||
|
* RSKRX62T
|
||||||
|
* RDKRX62N
|
||||||
|
* RSKRX630
|
||||||
|
* RSKRX63N
|
||||||
|
* RDKRX63N
|
||||||
|
* RSKRX111
|
||||||
|
|
||||||
|
Limitations
|
||||||
|
-----------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Peripherals Used Directly
|
||||||
|
-------------------------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Required Packages
|
||||||
|
-----------------
|
||||||
|
* None
|
||||||
|
|
||||||
|
How to add to your project
|
||||||
|
--------------------------
|
||||||
|
* Add src\r_switches.c to your project.
|
||||||
|
* Add an include path to the 'r_switches' directory.
|
||||||
|
* Add an include path to the 'r_switches\src' directory.
|
||||||
|
* Configure middleware through r_switches_config.h.
|
||||||
|
* Add a #include for r_switches_if.h to files that need to use this package.
|
||||||
|
|
||||||
|
Toolchain(s) Used
|
||||||
|
-----------------
|
||||||
|
* Renesas RX v1.02
|
||||||
|
|
||||||
|
File Structure
|
||||||
|
--------------
|
||||||
|
r_switches
|
||||||
|
| readme.txt
|
||||||
|
| r_switches_config.h
|
||||||
|
| r_switches_if.h
|
||||||
|
|
|
||||||
|
\---src
|
||||||
|
r_switches.c
|
||||||
|
|
|
@ -0,0 +1,232 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_switches.c
|
||||||
|
* Description : Functions for using switches with callback functions.
|
||||||
|
************************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 17.01.2012 1.00 First Release
|
||||||
|
* : 17.02.2012 1.10 Added RSKRX210 support.
|
||||||
|
* : 08.03.2012 1.20 Added GetVersion() function (though it's really a macro).
|
||||||
|
* : 04.06.2012 1.30 Code can now be interrupt or poll driven.
|
||||||
|
* : 07.11.2012 1.40 Added support for RSKRX111
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Board and MCU support. */
|
||||||
|
#include "platform.h"
|
||||||
|
/* Switches prototypes. */
|
||||||
|
#include "r_switches_if.h"
|
||||||
|
/* Scheduler includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
typedef int bool;
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* This helps reduce the amount of unique code for each supported board. */
|
||||||
|
#define X_IRQ( x ) XX_IRQ( x )
|
||||||
|
#define XX_IRQ( x ) _ICU_IRQ##x
|
||||||
|
|
||||||
|
/* These macros define which IRQ pins are used for the switches. Note that these defintions cannot have parentheses
|
||||||
|
around them. */
|
||||||
|
#if defined(PLATFORM_BOARD_RSKRX111)
|
||||||
|
#define SW1_IRQ_NUMBER 0
|
||||||
|
#define SW2_IRQ_NUMBER 1
|
||||||
|
#define SW3_IRQ_NUMBER 4
|
||||||
|
#else
|
||||||
|
#error This file is only for use on the RX100 RSK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Number of switches on this board. */
|
||||||
|
#define SWITCHES_NUM (3)
|
||||||
|
|
||||||
|
/* Register definitions not yet correct in iodefine.h. */
|
||||||
|
#define MPC_P30PFS_REG ( * ( unsigned char * ) 0x0008C158 )
|
||||||
|
#define MPC_P31PFS_REG ( * ( unsigned char * ) 0x0008C159 )
|
||||||
|
#define MPC_PE4PFS_REG ( * ( unsigned char * ) 0x0008C1B4 )
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Typedef definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
bool active;
|
||||||
|
int32_t debounce_cnt;
|
||||||
|
} switch_t;
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Private global variables and functions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#if SWITCHES_DETECTION_MODE == 1
|
||||||
|
/* Update Hz */
|
||||||
|
static uint32_t g_sw_debounce_cnts;
|
||||||
|
/* Used for debounce. */
|
||||||
|
switch_t g_switches[SWITCHES_NUM];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function Name: R_SWITCHES_Init
|
||||||
|
* Description : Initializes pins to be input and interrupt on switch presses.
|
||||||
|
* Arguments :
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
void R_SWITCHES_Init (void)
|
||||||
|
{
|
||||||
|
/* Unlock protection register */
|
||||||
|
MPC.PWPR.BYTE &= 0x7F;
|
||||||
|
/* Unlock MPC registers */
|
||||||
|
MPC.PWPR.BYTE |= 0x40;
|
||||||
|
|
||||||
|
/* Make switch pins inputs. */
|
||||||
|
PORT3.PDR.BYTE &= 0xFC;
|
||||||
|
PORTE.PDR.BYTE &= 0xEF;
|
||||||
|
|
||||||
|
/* Set port mode registers for switches. */
|
||||||
|
PORT3.PMR.BYTE &= 0xFC;
|
||||||
|
PORTE.PMR.BYTE &= 0xEF;
|
||||||
|
|
||||||
|
MPC_P30PFS_REG = 0x40; /* P30 is used as IRQ pin */
|
||||||
|
MPC_P31PFS_REG = 0x40; /* P31 is used as IRQ pin */
|
||||||
|
MPC_PE4PFS_REG = 0x40; /* PE4 is used as IRQ pin */
|
||||||
|
|
||||||
|
/* Set IRQ type (falling edge) */
|
||||||
|
ICU.IRQCR[ SW1_IRQ_NUMBER ].BYTE = 0x04;
|
||||||
|
ICU.IRQCR[ SW2_IRQ_NUMBER ].BYTE = 0x04;
|
||||||
|
ICU.IRQCR[ SW3_IRQ_NUMBER ].BYTE = 0x04;
|
||||||
|
|
||||||
|
/* Set interrupt priorities, which must be below
|
||||||
|
configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
||||||
|
_IPR( X_IRQ(SW1_IRQ_NUMBER) ) = configKERNEL_INTERRUPT_PRIORITY;
|
||||||
|
_IPR( X_IRQ(SW2_IRQ_NUMBER) ) = configKERNEL_INTERRUPT_PRIORITY;
|
||||||
|
_IPR( X_IRQ(SW3_IRQ_NUMBER) ) = configKERNEL_INTERRUPT_PRIORITY;
|
||||||
|
|
||||||
|
/* Clear any pending interrupts */
|
||||||
|
_IR( X_IRQ(SW1_IRQ_NUMBER) ) = 0;
|
||||||
|
_IR( X_IRQ(SW2_IRQ_NUMBER) ) = 0;
|
||||||
|
_IR( X_IRQ(SW3_IRQ_NUMBER) ) = 0;
|
||||||
|
|
||||||
|
/* Enable the interrupts */
|
||||||
|
_IEN( X_IRQ(SW1_IRQ_NUMBER) ) = 1;
|
||||||
|
_IEN( X_IRQ(SW2_IRQ_NUMBER) ) = 1;
|
||||||
|
_IEN( X_IRQ(SW3_IRQ_NUMBER) ) = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If using polling then the user must call the update function. */
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: R_SWITCHES_Update
|
||||||
|
* Description : Polls switches and calls callback functions as needed. If you are using IRQ mode then this function
|
||||||
|
* is not needed and can be removed if desired. It is left in so that code will not fail when switching
|
||||||
|
* between polling or IRQ mode.
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void R_SWITCHES_Update (void)
|
||||||
|
{
|
||||||
|
#if SWITCHES_DETECTION_MODE == 1
|
||||||
|
/* This code is only needed for polling mode. */
|
||||||
|
/* Check switch 1. */
|
||||||
|
if (SW1 == SW_ACTIVE)
|
||||||
|
{
|
||||||
|
if (g_switches[0].active != true)
|
||||||
|
{
|
||||||
|
if (++g_switches[0].debounce_cnt >= g_sw_debounce_cnts)
|
||||||
|
{
|
||||||
|
/* Set this to true so we only call the callback function once per press. */
|
||||||
|
g_switches[0].active = true;
|
||||||
|
|
||||||
|
/* Call callback function. */
|
||||||
|
SW1_CALLBACK_FUNCTION();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (0 == g_switches[0].debounce_cnt)
|
||||||
|
{
|
||||||
|
g_switches[0].active = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_switches[0].debounce_cnt--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check switch 2. */
|
||||||
|
if (SW2 == SW_ACTIVE)
|
||||||
|
{
|
||||||
|
if (g_switches[1].active != true)
|
||||||
|
{
|
||||||
|
if (++g_switches[1].debounce_cnt >= g_sw_debounce_cnts)
|
||||||
|
{
|
||||||
|
/* Set this to true so we only call the callback function once per press. */
|
||||||
|
g_switches[1].active = true;
|
||||||
|
|
||||||
|
/* Call callback function. */
|
||||||
|
SW2_CALLBACK_FUNCTION();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (0 == g_switches[1].debounce_cnt)
|
||||||
|
{
|
||||||
|
g_switches[1].active = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_switches[1].debounce_cnt--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check switch 3. */
|
||||||
|
if (SW3 == SW_ACTIVE)
|
||||||
|
{
|
||||||
|
if (g_switches[2].active != true)
|
||||||
|
{
|
||||||
|
if (++g_switches[2].debounce_cnt >= g_sw_debounce_cnts)
|
||||||
|
{
|
||||||
|
/* Set this to true so we only call the callback function once per press. */
|
||||||
|
g_switches[2].active = true;
|
||||||
|
|
||||||
|
/* Call callback function. */
|
||||||
|
SW3_CALLBACK_FUNCTION();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (0 == g_switches[2].debounce_cnt)
|
||||||
|
{
|
||||||
|
g_switches[2].active = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_switches[2].debounce_cnt--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* SWITCHES_DETECTION_MODE */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
204
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo/main.c
Normal file
204
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo/main.c
Normal file
|
@ -0,0 +1,204 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* This project provides two demo applications. A low power project that
|
||||||
|
* demonstrates the FreeRTOS tickless mode, and a more comprehensive test and
|
||||||
|
* demo application. The configCREATE_LOW_POWER_DEMO setting (defined at the
|
||||||
|
* top of FreeRTOSConfig.h) is used to select between the two. The low power
|
||||||
|
* demo is implemented and described in main_low_power.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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Kernel includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
|
/* Platform includes. */
|
||||||
|
#include "lcd.h"
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* main_low_power() is used when configCREATE_LOW_POWER_DEMO is set to 1.
|
||||||
|
* main_full() is used when configCREATE_LOW_POWER_DEMO is set to 0.
|
||||||
|
*/
|
||||||
|
extern void main_low_power( void );
|
||||||
|
extern void main_full( void );
|
||||||
|
|
||||||
|
/* Prototypes for the standard FreeRTOS callback/hook functions implemented
|
||||||
|
within this file. */
|
||||||
|
void vApplicationMallocFailedHook( void );
|
||||||
|
void vApplicationIdleHook( void );
|
||||||
|
void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName );
|
||||||
|
void vApplicationTickHook( void );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* See the documentation page for this demo on the FreeRTOS.org web site for
|
||||||
|
full information - including hardware setup requirements. */
|
||||||
|
|
||||||
|
void main( void )
|
||||||
|
{
|
||||||
|
lcd_initialize();
|
||||||
|
lcd_display( LCD_LINE1, "FreeRTOS" );
|
||||||
|
|
||||||
|
/* The configCREATE_LOW_POWER_DEMO setting is described in FreeRTOSConfig.h. */
|
||||||
|
#if configCREATE_LOW_POWER_DEMO == 1
|
||||||
|
{
|
||||||
|
lcd_display( LCD_LINE2, "LP Demo" );
|
||||||
|
main_low_power();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
{
|
||||||
|
lcd_display( LCD_LINE2, "Ful Demo" );
|
||||||
|
main_full();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
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, heap_2.c or heap_4.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()). */
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vAssertCalled( void )
|
||||||
|
{
|
||||||
|
volatile unsigned long ul = 0;
|
||||||
|
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
/* Set ul to a non-zero value using the debugger to step out of this
|
||||||
|
function. */
|
||||||
|
while( ul == 0 )
|
||||||
|
{
|
||||||
|
__asm volatile( "NOP" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
540
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo/main_full.c
Normal file
540
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo/main_full.c
Normal file
|
@ -0,0 +1,540 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ****************************************************************************
|
||||||
|
* This project includes a lot of tasks and tests and is therefore complex.
|
||||||
|
* If you would prefer a much simpler project to get started with then select
|
||||||
|
* the 'low power' demo by setting configCREATE_LOW_POWER_DEMO to 1 in
|
||||||
|
* FreeRTOSConfig.h. When configCREATE_LOW_POWER_DEMO is set to 1 main() will
|
||||||
|
* call main_low_power() instead of main_full().
|
||||||
|
* ****************************************************************************
|
||||||
|
*
|
||||||
|
* Creates all the demo application tasks, 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:
|
||||||
|
*
|
||||||
|
* "Reg test" tasks - These fill the registers with known values, then
|
||||||
|
* repeatedly check that each register still contains its expected value for
|
||||||
|
* the lifetime of the tasks. Each task uses different values. The tasks run
|
||||||
|
* with very low priority so get preempted very frequently. A check variable
|
||||||
|
* is incremented on each iteration of the test loop. A register containing an
|
||||||
|
* unexpected value is indicative of an error in the context switching
|
||||||
|
* mechanism and will result in a branch to a null loop - which in turn will
|
||||||
|
* prevent the check variable from incrementing any further and allow the check
|
||||||
|
* timer (described below) to determine that an error has occurred. The nature
|
||||||
|
* of the reg test tasks necessitates that they are written in assembly code.
|
||||||
|
*
|
||||||
|
* "Check Timer" and Callback Function - The check timer period is initially
|
||||||
|
* set to three seconds. The check timer callback function checks that all the
|
||||||
|
* standard demo tasks are not only still executing, but are executing without
|
||||||
|
* reporting any errors. If the check timer discovers that a task has either
|
||||||
|
* stalled, or reported an error, then it changes its own period from the
|
||||||
|
* initial three seconds, to just 200ms. The check timer callback function
|
||||||
|
* also toggles LED 0 each time it is called. This provides a visual
|
||||||
|
* indication of the system status: If the LED toggles every three seconds,
|
||||||
|
* then no issues have been discovered. If the LED toggles every 200ms, then
|
||||||
|
* an issue has been discovered with at least one task.
|
||||||
|
*
|
||||||
|
* *NOTE 1* The CPU must be in Supervisor mode when the scheduler is started.
|
||||||
|
* The PowerON_Reset_PC() supplied in resetprg.c with this demo has
|
||||||
|
* Change_PSW_PM_to_UserMode() commented out to ensure this is the case.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Standard includes. */
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* Hardware specific includes. */
|
||||||
|
#include "iodefine.h"
|
||||||
|
|
||||||
|
/* Kernel includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
#include "timers.h"
|
||||||
|
#include "semphr.h"
|
||||||
|
|
||||||
|
/* Standard demo includes. */
|
||||||
|
#include "partest.h"
|
||||||
|
#include "death.h"
|
||||||
|
#include "blocktim.h"
|
||||||
|
#include "GenQTest.h"
|
||||||
|
#include "recmutex.h"
|
||||||
|
|
||||||
|
/* The code in this file is only built when configCREATE_LOW_POWER_DEMO is set
|
||||||
|
to 0, otherwise the code in main_low_power.c is used. */
|
||||||
|
#if configCREATE_LOW_POWER_DEMO == 0
|
||||||
|
|
||||||
|
|
||||||
|
/* Values that are passed into the reg test tasks using the task parameter.
|
||||||
|
The tasks check that the values are passed in correctly. */
|
||||||
|
#define mainREG_TEST_1_PARAMETER ( 0x12121212UL )
|
||||||
|
#define mainREG_TEST_2_PARAMETER ( 0x12345678UL )
|
||||||
|
|
||||||
|
/* Priorities at which the standard demo tasks are created. */
|
||||||
|
#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||||
|
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
|
||||||
|
|
||||||
|
/* The LED toggled by the check timer. */
|
||||||
|
#define mainCHECK_LED ( 0 )
|
||||||
|
|
||||||
|
/* The period at which the check timer will expire, in ms, provided no errors
|
||||||
|
have been reported by any of the standard demo tasks. ms are converted to the
|
||||||
|
equivalent in ticks using the portTICK_RATE_MS constant. */
|
||||||
|
#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_RATE_MS )
|
||||||
|
|
||||||
|
/* The period at which the check timer will expire, in ms, if an error has been
|
||||||
|
reported in one of the standard demo tasks. ms are converted to the equivalent
|
||||||
|
in ticks using the portTICK_RATE_MS constant. */
|
||||||
|
#define mainERROR_CHECK_TIMER_PERIOD_MS ( 200UL / portTICK_RATE_MS )
|
||||||
|
|
||||||
|
/* A block time of zero simple means "Don't Block". */
|
||||||
|
#define mainDONT_BLOCK ( 0UL )
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The reg test tasks as described at the top of this file.
|
||||||
|
*/
|
||||||
|
static void prvRegTest1Task( void *pvParameters );
|
||||||
|
static void prvRegTest2Task( void *pvParameters );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The actual implementation of the reg test functionality, which, because of
|
||||||
|
* the direct register access, have to be in assembly.
|
||||||
|
*/
|
||||||
|
static void prvRegTest1Implementation( void ) __attribute__(( naked ));
|
||||||
|
static void prvRegTest2Implementation( void ) __attribute__(( naked ));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The check timer callback function, as described at the top of this file.
|
||||||
|
*/
|
||||||
|
static void prvCheckTimerCallback( xTimerHandle xTimer );
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Variables that are incremented on each iteration of the reg test tasks -
|
||||||
|
provided the tasks have not reported any errors. The check timer inspects these
|
||||||
|
variables to ensure they are still incrementing as expected. If a variable
|
||||||
|
stops incrementing then it is likely that its associated task has stalled. */
|
||||||
|
unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL;
|
||||||
|
|
||||||
|
/* The check timer. This uses prvCheckTimerCallback() as its callback
|
||||||
|
function. */
|
||||||
|
static xTimerHandle xCheckTimer = NULL;
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void main_full( void )
|
||||||
|
{
|
||||||
|
/* Start the reg test tasks which test the context switching mechanism. */
|
||||||
|
xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL );
|
||||||
|
xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL );
|
||||||
|
|
||||||
|
/* Create the standard demo tasks. */
|
||||||
|
vCreateBlockTimeTasks();
|
||||||
|
vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );
|
||||||
|
vStartRecursiveMutexTasks();
|
||||||
|
|
||||||
|
/* The suicide tasks must be created last as they need to know how many
|
||||||
|
tasks were running prior to their creation in order to ascertain whether
|
||||||
|
or not the correct/expected number of tasks are running at any given time. */
|
||||||
|
vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );
|
||||||
|
|
||||||
|
/* Create the software timer that performs the 'check' functionality,
|
||||||
|
as described at the top of this file. */
|
||||||
|
xCheckTimer = xTimerCreate( ( const signed char * ) "CheckTimer",/* A text name, purely to help debugging. */
|
||||||
|
( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */
|
||||||
|
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. */
|
||||||
|
);
|
||||||
|
|
||||||
|
configASSERT( xCheckTimer );
|
||||||
|
|
||||||
|
/* Start the check timer. It will actually start when the scheduler is
|
||||||
|
started. */
|
||||||
|
xTimerStart( xCheckTimer, mainDONT_BLOCK );
|
||||||
|
|
||||||
|
/* Start the tasks running. */
|
||||||
|
vTaskStartScheduler();
|
||||||
|
|
||||||
|
/* If all is well execution will never reach here as the scheduler will be
|
||||||
|
running. If this null loop is reached then it is likely there was
|
||||||
|
insufficient FreeRTOS heap available for the idle task and/or timer task to
|
||||||
|
be created. See http://www.freertos.org/a00111.html. */
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvCheckTimerCallback( xTimerHandle xTimer )
|
||||||
|
{
|
||||||
|
static long lChangedTimerPeriodAlready = pdFALSE, lErrorStatus = pdPASS;
|
||||||
|
static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL;
|
||||||
|
|
||||||
|
/* Remove compiler warnings about unused parameters. */
|
||||||
|
( void ) xTimer;
|
||||||
|
|
||||||
|
/* Check the standard demo tasks are running without error. */
|
||||||
|
if( xAreGenericQueueTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
lErrorStatus = pdFAIL;
|
||||||
|
}
|
||||||
|
else if( xIsCreateTaskStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
lErrorStatus = pdFAIL;
|
||||||
|
}
|
||||||
|
else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
lErrorStatus = pdFAIL;
|
||||||
|
}
|
||||||
|
else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
lErrorStatus = pdFAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check the reg test tasks are still cycling. They will stop incrementing
|
||||||
|
their loop counters if they encounter an error. */
|
||||||
|
if( ulRegTest1CycleCount == ulLastRegTest1CycleCount )
|
||||||
|
{
|
||||||
|
lErrorStatus = pdFAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ulRegTest2CycleCount == ulLastRegTest2CycleCount )
|
||||||
|
{
|
||||||
|
lErrorStatus = pdFAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remember the loop counter values this time around so they can be checked
|
||||||
|
again the next time this callback function executes. */
|
||||||
|
ulLastRegTest1CycleCount = ulRegTest1CycleCount;
|
||||||
|
ulLastRegTest2CycleCount = ulRegTest2CycleCount;
|
||||||
|
|
||||||
|
/* Toggle the check LED to give an indication of the system status. If
|
||||||
|
the LED toggles every three seconds then everything is ok. A faster toggle
|
||||||
|
indicates an error. */
|
||||||
|
vParTestToggleLED( mainCHECK_LED );
|
||||||
|
|
||||||
|
/* Was an error detected this time through the callback execution? */
|
||||||
|
if( lErrorStatus != pdPASS )
|
||||||
|
{
|
||||||
|
if( lChangedTimerPeriodAlready == pdFALSE )
|
||||||
|
{
|
||||||
|
lChangedTimerPeriodAlready = pdTRUE;
|
||||||
|
|
||||||
|
/* This call to xTimerChangePeriod() uses a zero block time.
|
||||||
|
Functions called from inside of a timer callback function must
|
||||||
|
*never* attempt to block. */
|
||||||
|
xTimerChangePeriod( xCheckTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* This function is explained in the comments at the top of this file. */
|
||||||
|
static void prvRegTest1Task( void *pvParameters )
|
||||||
|
{
|
||||||
|
if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER )
|
||||||
|
{
|
||||||
|
/* The parameter did not contain the expected value. */
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
/* Stop the tick interrupt so its obvious something has gone wrong. */
|
||||||
|
taskDISABLE_INTERRUPTS();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is an inline asm function that never returns. */
|
||||||
|
prvRegTest1Implementation();
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* This function is explained in the comments at the top of this file. */
|
||||||
|
static void prvRegTest2Task( void *pvParameters )
|
||||||
|
{
|
||||||
|
if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER )
|
||||||
|
{
|
||||||
|
/* The parameter did not contain the expected value. */
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
/* Stop the tick interrupt so its obvious something has gone wrong. */
|
||||||
|
taskDISABLE_INTERRUPTS();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is an inline asm function that never returns. */
|
||||||
|
prvRegTest2Implementation();
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* This function is explained in the comments at the top of this file. */
|
||||||
|
static void prvRegTest1Implementation( void )
|
||||||
|
{
|
||||||
|
__asm volatile
|
||||||
|
(
|
||||||
|
/* Set each register to a known value. */
|
||||||
|
" MOV.L #0x33333333, R15 \n\t"
|
||||||
|
" MVTACHI R15 \n\t"
|
||||||
|
" MOV.L #0x44444444, R15 \n\t"
|
||||||
|
" MVTACLO R15 \n\t"
|
||||||
|
" MOV.L #1, R1 \n\t"
|
||||||
|
" MOV.L #2, R2 \n\t"
|
||||||
|
" MOV.L #3, R3 \n\t"
|
||||||
|
" MOV.L #4, R4 \n\t"
|
||||||
|
" MOV.L #5, R5 \n\t"
|
||||||
|
" MOV.L #6, R6 \n\t"
|
||||||
|
" MOV.L #7, R7 \n\t"
|
||||||
|
" MOV.L #8, R8 \n\t"
|
||||||
|
" MOV.L #9, R9 \n\t"
|
||||||
|
" MOV.L #10, R10 \n\t"
|
||||||
|
" MOV.L #11, R11 \n\t"
|
||||||
|
" MOV.L #12, R12 \n\t"
|
||||||
|
" MOV.L #13, R13 \n\t"
|
||||||
|
" MOV.L #14, R14 \n\t"
|
||||||
|
" MOV.L #15, R15 \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Loop, checking each iteration that each register still contains the
|
||||||
|
expected value. */
|
||||||
|
"TestLoop1: \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Push the registers that are going to get clobbered. */
|
||||||
|
" PUSHM R14-R15 \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Increment the loop counter to show this task is still getting CPU
|
||||||
|
time. */
|
||||||
|
" MOV.L #_ulRegTest1CycleCount, R14 \n\t"
|
||||||
|
" MOV.L [ R14 ], R15 \n\t"
|
||||||
|
" ADD #1, R15 \n\t"
|
||||||
|
" MOV.L R15, [ R14 ] \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Yield to extend the text coverage. Set the bit in the ITU SWINTR
|
||||||
|
register. */
|
||||||
|
" MOV.L #1, R14 \n\t"
|
||||||
|
" MOV.L #0872E0H, R15 \n\t"
|
||||||
|
" MOV.B R14, [R15] \n\t"
|
||||||
|
" NOP \n\t"
|
||||||
|
" NOP \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Check the accumulator value. */
|
||||||
|
" MVFACHI R15 \n\t"
|
||||||
|
" CMP #0x33333333, R15 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" MVFACMI R15 \n\t"
|
||||||
|
" CMP #0x33334444, R15 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Restore the clobbered registers. */
|
||||||
|
" POPM R14-R15 \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Now compare each register to ensure it still contains the value that
|
||||||
|
was set before this loop was entered. */
|
||||||
|
" CMP #1, R1 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #2, R2 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #3, R3 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #4, R4 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #5, R5 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #6, R6 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #7, R7 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #8, R8 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #9, R9 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #10, R10 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #11, R11 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #12, R12 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #13, R13 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #14, R14 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" CMP #15, R15 \n\t"
|
||||||
|
" BNE RegTest1Error \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* All comparisons passed, start a new iteration of this loop. */
|
||||||
|
" BRA TestLoop1 \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* A compare failed, just loop here so the loop counter stops
|
||||||
|
incrementing causing the check timer to indicate the error. */
|
||||||
|
"RegTest1Error: \n\t"
|
||||||
|
" BRA RegTest1Error "
|
||||||
|
);
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* This function is explained in the comments at the top of this file. */
|
||||||
|
static void prvRegTest2Implementation( void )
|
||||||
|
{
|
||||||
|
__asm volatile
|
||||||
|
(
|
||||||
|
/* Set each register to a known value. */
|
||||||
|
" MOV.L #0x11111111, R15 \n\t"
|
||||||
|
" MVTACHI R15 \n\t"
|
||||||
|
" MOV.L #0x22222222, R15 \n\t"
|
||||||
|
" MVTACLO R15 \n\t"
|
||||||
|
" MOV.L #100, R1 \n\t"
|
||||||
|
" MOV.L #200, R2 \n\t"
|
||||||
|
" MOV.L #300, R3 \n\t"
|
||||||
|
" MOV.L #400, R4 \n\t"
|
||||||
|
" MOV.L #500, R5 \n\t"
|
||||||
|
" MOV.L #600, R6 \n\t"
|
||||||
|
" MOV.L #700, R7 \n\t"
|
||||||
|
" MOV.L #800, R8 \n\t"
|
||||||
|
" MOV.L #900, R9 \n\t"
|
||||||
|
" MOV.L #1000, R10 \n\t"
|
||||||
|
" MOV.L #1001, R11 \n\t"
|
||||||
|
" MOV.L #1002, R12 \n\t"
|
||||||
|
" MOV.L #1003, R13 \n\t"
|
||||||
|
" MOV.L #1004, R14 \n\t"
|
||||||
|
" MOV.L #1005, R15 \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Loop, checking each iteration that each register still contains the
|
||||||
|
expected value. */
|
||||||
|
"TestLoop2: \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Push the registers that are going to get clobbered. */
|
||||||
|
" PUSHM R14-R15 \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Increment the loop counter to show this task is still getting CPU
|
||||||
|
time. */
|
||||||
|
" MOV.L #_ulRegTest2CycleCount, R14 \n\t"
|
||||||
|
" MOV.L [ R14 ], R15 \n\t"
|
||||||
|
" ADD #1, R15 \n\t"
|
||||||
|
" MOV.L R15, [ R14 ] \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Check the accumulator value. */
|
||||||
|
" MVFACHI R15 \n\t"
|
||||||
|
" CMP #0x11111111, R15 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" MVFACMI R15 \n\t"
|
||||||
|
" CMP #0x11112222, R15 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Restore the clobbered registers. */
|
||||||
|
" POPM R14-R15 \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* Now compare each register to ensure it still contains the value that
|
||||||
|
was set before this loop was entered. */
|
||||||
|
" CMP #100, R1 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #200, R2 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #300, R3 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #400, R4 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #500, R5 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #600, R6 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #700, R7 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #800, R8 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #900, R9 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #1000, R10 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #1001, R11 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #1002, R12 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #1003, R13 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #1004, R14 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" CMP #1005, R15 \n\t"
|
||||||
|
" BNE RegTest2Error \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* All comparisons passed, start a new iteration of this loop. */
|
||||||
|
" BRA TestLoop2 \n\t"
|
||||||
|
" \n\t"
|
||||||
|
/* A compare failed, just loop here so the loop counter stops
|
||||||
|
incrementing causing the check timer to indicate the error. */
|
||||||
|
"RegTest2Error: \n\t"
|
||||||
|
" BRA RegTest2Error "
|
||||||
|
);
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#endif /* configCREATE_LOW_POWER_DEMO */
|
436
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo/main_low_power.c
Normal file
436
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo/main_low_power.c
Normal file
|
@ -0,0 +1,436 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ****************************************************************************
|
||||||
|
* When configCREATE_LOW_POWER_DEMO is set to 1 in FreeRTOSConfig.h main() will
|
||||||
|
* call main_low_power(), which is defined in this file. main_low_power()
|
||||||
|
* demonstrates FreeRTOS tick suppression being used to allow the MCU to be
|
||||||
|
* placed into both the low power deep sleep mode and the low power software
|
||||||
|
* standby mode. When configCREATE_LOW_POWER_DEMO is set to 0 main will
|
||||||
|
* instead call main_full(), which is a more comprehensive RTOS demonstration.
|
||||||
|
* ****************************************************************************
|
||||||
|
*
|
||||||
|
* This application demonstrates the FreeRTOS tickless idle mode (tick
|
||||||
|
* suppression). See http://www.freertos.org/low-power-tickless-rtos.html
|
||||||
|
* The demo is configured to execute on the Renesas RX100 RSK.
|
||||||
|
*
|
||||||
|
* Functionality:
|
||||||
|
*
|
||||||
|
* + Two tasks are created, an Rx task and a Tx task.
|
||||||
|
*
|
||||||
|
* + The Rx task repeatedly blocks on a queue to wait for data. The Rx task
|
||||||
|
* toggles LED 0 each time is receives a value from the queue.
|
||||||
|
*
|
||||||
|
* + The Tx task repeatedly enters the Blocked state for an amount of time
|
||||||
|
* that is set by the position of the potentiometer. On exiting the blocked
|
||||||
|
* state the Tx task sends a value through the queue to the Rx task (causing
|
||||||
|
* the Rx task to exit the blocked state and toggle LED 0).
|
||||||
|
*
|
||||||
|
* If the value read from the potentiometer is less than or equal to
|
||||||
|
* mainSOFTWARE_STANDBY_DELAY then the Tx task blocks for the equivalent
|
||||||
|
* number of milliseconds. For example, if the sampled analog value is
|
||||||
|
* 2000, then the Tx task blocks for 2000ms. Blocking for a finite period
|
||||||
|
* allows the kernel to stop the tick interrupt and place the RX100 into
|
||||||
|
* deep sleep mode.
|
||||||
|
*
|
||||||
|
* If the value read form the potentiometer is greater than
|
||||||
|
* mainSOFTWARE_STANDBY_DELAY then the Tx task blocks on a semaphore with
|
||||||
|
* an infinite timeout. Blocking with an infinite timeout allows the kernel
|
||||||
|
* to stop the tick interrupt and place the RX100 into software standby
|
||||||
|
* mode. Pressing a button will generate an interrupt that causes the RX100
|
||||||
|
* to exit software standby mode. The interrupt service routine 'gives' the
|
||||||
|
* semaphore to unblock the Tx task.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Using the Demo and Observed Behaviour:
|
||||||
|
*
|
||||||
|
* 1) Turn the potentiometer completely counter clockwise.
|
||||||
|
*
|
||||||
|
* 2) Program the RX100 with the application, then disconnect the programming/
|
||||||
|
* debugging hardware to ensure power readings are not effected by any
|
||||||
|
* connected interfaces.
|
||||||
|
*
|
||||||
|
* 3) Start the application running. LED 0 will toggle quickly because the
|
||||||
|
* potentiometer is turned to its lowest value. LED 1 will be illuminated
|
||||||
|
* when the RX100 is not in a power saving mode, but will appear to be off
|
||||||
|
* because most execution time is spent in a sleep mode. Led 2 will be
|
||||||
|
* illuminated when the RX100 is in deep sleep mode, and will appear to be
|
||||||
|
* always on, again because most execution time is spent in deep sleep mode.
|
||||||
|
* The LEDs are turned on and off by the application defined pre and post
|
||||||
|
* sleep macros (see the definitions of configPRE_SLEEP_PROCESSING() and
|
||||||
|
* configPOST_SLEEP_PROCESSING() in FreeRTOSConfig.h).
|
||||||
|
*
|
||||||
|
* 4) Slowly turn the potentiometer in the clockwise direction. This will
|
||||||
|
* increase the value read from the potentiometer, which will increase the
|
||||||
|
* time the Tx task spends in the Blocked state, which will therefore
|
||||||
|
* decrease the frequency at which the Tx task sends data to the queue (and
|
||||||
|
* the rate at which LED 0 is toggled).
|
||||||
|
*
|
||||||
|
* 5) Keep turning the potentiometer in the clockwise direction. Eventually
|
||||||
|
* the value read from the potentiometer will go above
|
||||||
|
* mainSOFTWARE_STANDBY_DELAY, causing the Tx task to block on the semaphore
|
||||||
|
* with an infinite timeout. LED 0 will stop toggling because the Tx task is
|
||||||
|
* no longer sending to the queue. LED 1 and LED 2 will both be off because
|
||||||
|
* the RX100 is neither running or in deep sleep mode (it is in software
|
||||||
|
* standby mode).
|
||||||
|
*
|
||||||
|
* 6) Turn the potentiometer counter clockwise again to ensure its value goes
|
||||||
|
* back below mainSOFTWARE_STANDBY_DELAY.
|
||||||
|
*
|
||||||
|
* 7) Press any of the three buttons to generate an interrupt. The interrupt
|
||||||
|
* will take the RX100 out of software standby mode, and the interrupt
|
||||||
|
* service routine will unblock the Tx task by 'giving' the semaphore. LED 0
|
||||||
|
* will then start to toggle again.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Hardware specific includes. */
|
||||||
|
#include "platform.h"
|
||||||
|
#include "r_switches_if.h"
|
||||||
|
|
||||||
|
/* Kernel includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
#include "queue.h"
|
||||||
|
#include "semphr.h"
|
||||||
|
|
||||||
|
/* Common demo includes. */
|
||||||
|
#include "partest.h"
|
||||||
|
|
||||||
|
/* Priorities at which the Rx and Tx tasks are created. */
|
||||||
|
#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||||
|
#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||||
|
|
||||||
|
/* The number of items the queue can hold. This is 1 as the Rx task will
|
||||||
|
remove items as they are added so the Tx task should always find the queue
|
||||||
|
empty. */
|
||||||
|
#define mainQUEUE_LENGTH ( 1 )
|
||||||
|
|
||||||
|
/* The LED used to indicate that a value has been received on the queue. */
|
||||||
|
#define mainQUEUE_LED ( 0 )
|
||||||
|
|
||||||
|
/* The LED used to indicate that full power is being used (the MCU is not in
|
||||||
|
deep sleep or software standby mode). */
|
||||||
|
#define mainFULL_POWER_LED ( 1 )
|
||||||
|
|
||||||
|
/* The LED used to indicate that deep sleep mode is being used. */
|
||||||
|
#define mainDEEP_SLEEP_LED ( 2 )
|
||||||
|
|
||||||
|
/* The Tx task sends to the queue with a frequency that is set by the value
|
||||||
|
read from the potentiometer until the value goes above that set by the
|
||||||
|
mainSOFTWARE_STANDBY_DELAY constant - at which time the Tx task instead blocks
|
||||||
|
indefinitely on a semaphore. */
|
||||||
|
#define mainSOFTWARE_STANDBY_DELAY ( 3000UL )
|
||||||
|
|
||||||
|
/* A block time of zero simply means "don't block". */
|
||||||
|
#define mainDONT_BLOCK ( 0 )
|
||||||
|
|
||||||
|
/* The value that is sent from the Tx task to the Rx task on the queue. */
|
||||||
|
#define mainQUEUED_VALUE ( 100UL )
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The Rx and Tx tasks as described at the top of this file.
|
||||||
|
*/
|
||||||
|
static void prvQueueReceiveTask( void *pvParameters );
|
||||||
|
static void prvQueueSendTask( void *pvParameters );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reads and returns the value of the ADC connected to the potentiometer built
|
||||||
|
* onto the RSK.
|
||||||
|
*/
|
||||||
|
static unsigned short prvReadPOT( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The handler for the interrupt generated when any of the buttons are pressed.
|
||||||
|
*/
|
||||||
|
void vButtonInterrupt( void ) __attribute__((interrupt));
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* The queue to pass data from the Tx task to the Rx task. */
|
||||||
|
static xQueueHandle xQueue = NULL;
|
||||||
|
|
||||||
|
/* The semaphore that is 'given' by interrupts generated from button pushes. */
|
||||||
|
static xSemaphoreHandle xSemaphore = NULL;
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void main_low_power( void )
|
||||||
|
{
|
||||||
|
/* Create the queue. */
|
||||||
|
xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) );
|
||||||
|
configASSERT( xQueue );
|
||||||
|
|
||||||
|
/* Create the semaphore that is 'given' by an interrupt generated from a
|
||||||
|
button push. */
|
||||||
|
vSemaphoreCreateBinary( xSemaphore );
|
||||||
|
configASSERT( xSemaphore );
|
||||||
|
|
||||||
|
/* Make sure the semaphore starts in the expected state - no button pushes
|
||||||
|
have yet occurred. A block time of zero can be used as it is guaranteed
|
||||||
|
that the semaphore will be available because it has just been created. */
|
||||||
|
xSemaphoreTake( xSemaphore, mainDONT_BLOCK );
|
||||||
|
|
||||||
|
/* Start the two tasks as described at the top of this file. */
|
||||||
|
xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL );
|
||||||
|
xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL );
|
||||||
|
|
||||||
|
/* The CPU is currently running, not sleeping, so turn on the LED that
|
||||||
|
shows the CPU is not in a sleep mode. */
|
||||||
|
vParTestSetLED( mainFULL_POWER_LED, pdTRUE );
|
||||||
|
|
||||||
|
/* Start the scheduler running running. */
|
||||||
|
vTaskStartScheduler();
|
||||||
|
|
||||||
|
/* If all is well the next line of code will not be reached as the
|
||||||
|
scheduler will be running. If the next line is reached then it is likely
|
||||||
|
there was insufficient FreeRTOS heap available for the idle task and/or
|
||||||
|
timer task to be created. See http://www.freertos.org/a00111.html. */
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvQueueSendTask( void *pvParameters )
|
||||||
|
{
|
||||||
|
portTickType xDelay;
|
||||||
|
const unsigned long ulValueToSend = mainQUEUED_VALUE;
|
||||||
|
|
||||||
|
/* Remove compiler warning about unused parameter. */
|
||||||
|
( void ) pvParameters;
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
/* The delay period between successive sends to the queue is set by
|
||||||
|
the potentiometer reading. */
|
||||||
|
xDelay = ( portTickType ) prvReadPOT();
|
||||||
|
|
||||||
|
/* If the block time is greater than 3000 milliseconds then block
|
||||||
|
indefinitely waiting for a button push. */
|
||||||
|
if( xDelay > mainSOFTWARE_STANDBY_DELAY )
|
||||||
|
{
|
||||||
|
/* As this is an indefinite delay the kernel will place the CPU
|
||||||
|
into software standby mode the next time the idle task runs. */
|
||||||
|
xSemaphoreTake( xSemaphore, portMAX_DELAY );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Convert a time in milliseconds to a time in ticks. */
|
||||||
|
xDelay /= portTICK_RATE_MS;
|
||||||
|
|
||||||
|
/* Place this task in the blocked state until it is time to run
|
||||||
|
again. As this is not an indefinite sleep the kernel will place
|
||||||
|
the CPU into the deep sleep state when the idle task next runs. */
|
||||||
|
vTaskDelay( xDelay );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Send to the queue - causing the queue receive task to flash its LED.
|
||||||
|
It should not be necessary to block on the queue send because the Rx
|
||||||
|
task will have removed the last queued item. */
|
||||||
|
xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvQueueReceiveTask( void *pvParameters )
|
||||||
|
{
|
||||||
|
unsigned long ulReceivedValue;
|
||||||
|
|
||||||
|
/* Remove compiler warning about unused parameter. */
|
||||||
|
( void ) pvParameters;
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
/* Wait until something arrives in the queue - this will block
|
||||||
|
indefinitely provided INCLUDE_vTaskSuspend is set to 1 in
|
||||||
|
FreeRTOSConfig.h. */
|
||||||
|
xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY );
|
||||||
|
|
||||||
|
/* To get here something must have arrived, but is it the expected
|
||||||
|
value? If it is, toggle the LED. */
|
||||||
|
if( ulReceivedValue == mainQUEUED_VALUE )
|
||||||
|
{
|
||||||
|
vParTestToggleLED( mainQUEUE_LED );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vPreSleepProcessing( unsigned long ulExpectedIdleTime )
|
||||||
|
{
|
||||||
|
/* Called by the kernel before it places the MCU into a sleep mode because
|
||||||
|
configPRE_SLEEP_PROCESSING() is #defined to vPreSleepProcessing().
|
||||||
|
|
||||||
|
NOTE: Additional actions can be taken here to get the power consumption
|
||||||
|
even lower. For example, the ADC input used by this demo could be turned
|
||||||
|
off here, and then back on again in the power sleep processing function.
|
||||||
|
For maximum power saving ensure all unused pins are in their lowest power
|
||||||
|
state. */
|
||||||
|
|
||||||
|
/* Avoid compiler warnings about the unused parameter. */
|
||||||
|
( void ) ulExpectedIdleTime;
|
||||||
|
|
||||||
|
/* Is the MCU about to enter deep sleep mode or software standby mode? */
|
||||||
|
if( SYSTEM.SBYCR.BIT.SSBY == 0 )
|
||||||
|
{
|
||||||
|
/* Turn on the LED that indicates deep sleep mode is being entered. */
|
||||||
|
vParTestSetLED( mainDEEP_SLEEP_LED, pdTRUE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Software standby mode is being used, so no LEDs are illuminated to
|
||||||
|
ensure minimum power readings are obtained. Ensure the Queue LED is
|
||||||
|
also off. */
|
||||||
|
vParTestSetLED( mainQUEUE_LED, pdFALSE );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Turn off the LED that indicates full power is being used. */
|
||||||
|
vParTestSetLED( mainFULL_POWER_LED, pdFALSE );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vPostSleepProcessing( unsigned long ulExpectedIdleTime )
|
||||||
|
{
|
||||||
|
/* Called by the kernel when the MCU exits a sleep mode because
|
||||||
|
configPOST_SLEEP_PROCESSING is #defined to vPostSleepProcessing(). */
|
||||||
|
|
||||||
|
/* Avoid compiler warnings about the unused parameter. */
|
||||||
|
( void ) ulExpectedIdleTime;
|
||||||
|
|
||||||
|
/* Turn off the LED that indicates deep sleep mode, and turn on the LED
|
||||||
|
that indicates full power is being used. */
|
||||||
|
vParTestSetLED( mainDEEP_SLEEP_LED, pdFALSE );
|
||||||
|
vParTestSetLED( mainFULL_POWER_LED, pdTRUE );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static unsigned short prvReadPOT( void )
|
||||||
|
{
|
||||||
|
unsigned short usADCValue;
|
||||||
|
const unsigned short usMinADCValue = 128;
|
||||||
|
|
||||||
|
/* Start an ADC scan. */
|
||||||
|
S12AD.ADCSR.BIT.ADST = 1;
|
||||||
|
while( S12AD.ADCSR.BIT.ADST == 1 )
|
||||||
|
{
|
||||||
|
/* Just waiting for the ADC scan to complete. Inefficient
|
||||||
|
polling! */
|
||||||
|
}
|
||||||
|
|
||||||
|
usADCValue = S12AD.ADDR4;
|
||||||
|
|
||||||
|
/* Don't let the ADC value get too small as the LED behaviour will look
|
||||||
|
erratic. */
|
||||||
|
if( usADCValue < usMinADCValue )
|
||||||
|
{
|
||||||
|
usADCValue = usMinADCValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return usADCValue;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vButtonInterrupt( void )
|
||||||
|
{
|
||||||
|
long lHigherPriorityTaskWoken = pdFALSE;
|
||||||
|
|
||||||
|
/* The semaphore is only created when the build is configured to create the
|
||||||
|
low power demo. */
|
||||||
|
if( xSemaphore != NULL )
|
||||||
|
{
|
||||||
|
/* This interrupt will bring the CPU out of deep sleep and software
|
||||||
|
standby modes. Give the semaphore that was used to place the Tx task
|
||||||
|
into an indefinite sleep. */
|
||||||
|
if( uxQueueMessagesWaitingFromISR( xSemaphore ) == 0 )
|
||||||
|
{
|
||||||
|
xSemaphoreGiveFromISR( xSemaphore, &lHigherPriorityTaskWoken );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* The semaphore was already available, so the task is not blocked
|
||||||
|
on it and there is no point giving it. */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If giving the semaphore caused a task to leave the Blocked state,
|
||||||
|
and the task that left the Blocked state has a priority equal to or
|
||||||
|
above the priority of the task that this interrupt interrupted, then
|
||||||
|
lHigherPriorityTaskWoken will have been set to pdTRUE inside the call
|
||||||
|
to xSemaphoreGiveFromISR(), and calling portYIELD_FROM_ISR() will cause
|
||||||
|
a context switch to the unblocked task. */
|
||||||
|
portYIELD_FROM_ISR( lHigherPriorityTaskWoken );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
293
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo/printf-stdarg.c
Normal file
293
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo/printf-stdarg.c
Normal file
|
@ -0,0 +1,293 @@
|
||||||
|
/*
|
||||||
|
Copyright 2001, 2002 Georges Menie (www.menie.org)
|
||||||
|
stdarg version contributed by Christian Ettinger
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
putchar is the only external dependency for this file,
|
||||||
|
if you have a working putchar, leave it commented out.
|
||||||
|
If not, uncomment the define below and
|
||||||
|
replace outbyte(c) by your own function call.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define putchar(c) c
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
static void printchar(char **str, int c)
|
||||||
|
{
|
||||||
|
//extern int putchar(int c);
|
||||||
|
|
||||||
|
if (str) {
|
||||||
|
**str = (char)c;
|
||||||
|
++(*str);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)putchar(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define PAD_RIGHT 1
|
||||||
|
#define PAD_ZERO 2
|
||||||
|
|
||||||
|
static int prints(char **out, const char *string, int width, int pad)
|
||||||
|
{
|
||||||
|
register int pc = 0, padchar = ' ';
|
||||||
|
|
||||||
|
if (width > 0) {
|
||||||
|
register int len = 0;
|
||||||
|
register const char *ptr;
|
||||||
|
for (ptr = string; *ptr; ++ptr) ++len;
|
||||||
|
if (len >= width) width = 0;
|
||||||
|
else width -= len;
|
||||||
|
if (pad & PAD_ZERO) padchar = '0';
|
||||||
|
}
|
||||||
|
if (!(pad & PAD_RIGHT)) {
|
||||||
|
for ( ; width > 0; --width) {
|
||||||
|
printchar (out, padchar);
|
||||||
|
++pc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for ( ; *string ; ++string) {
|
||||||
|
printchar (out, *string);
|
||||||
|
++pc;
|
||||||
|
}
|
||||||
|
for ( ; width > 0; --width) {
|
||||||
|
printchar (out, padchar);
|
||||||
|
++pc;
|
||||||
|
}
|
||||||
|
|
||||||
|
return pc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* the following should be enough for 32 bit int */
|
||||||
|
#define PRINT_BUF_LEN 12
|
||||||
|
|
||||||
|
static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase)
|
||||||
|
{
|
||||||
|
char print_buf[PRINT_BUF_LEN];
|
||||||
|
register char *s;
|
||||||
|
register int t, neg = 0, pc = 0;
|
||||||
|
register unsigned int u = (unsigned int)i;
|
||||||
|
|
||||||
|
if (i == 0) {
|
||||||
|
print_buf[0] = '0';
|
||||||
|
print_buf[1] = '\0';
|
||||||
|
return prints (out, print_buf, width, pad);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sg && b == 10 && i < 0) {
|
||||||
|
neg = 1;
|
||||||
|
u = (unsigned int)-i;
|
||||||
|
}
|
||||||
|
|
||||||
|
s = print_buf + PRINT_BUF_LEN-1;
|
||||||
|
*s = '\0';
|
||||||
|
|
||||||
|
while (u) {
|
||||||
|
t = (unsigned int)u % b;
|
||||||
|
if( t >= 10 )
|
||||||
|
t += letbase - '0' - 10;
|
||||||
|
*--s = (char)(t + '0');
|
||||||
|
u /= b;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (neg) {
|
||||||
|
if( width && (pad & PAD_ZERO) ) {
|
||||||
|
printchar (out, '-');
|
||||||
|
++pc;
|
||||||
|
--width;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
*--s = '-';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pc + prints (out, s, width, pad);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int print( char **out, const char *format, va_list args )
|
||||||
|
{
|
||||||
|
register int width, pad;
|
||||||
|
register int pc = 0;
|
||||||
|
char scr[2];
|
||||||
|
|
||||||
|
for (; *format != 0; ++format) {
|
||||||
|
if (*format == '%') {
|
||||||
|
++format;
|
||||||
|
width = pad = 0;
|
||||||
|
if (*format == '\0') break;
|
||||||
|
if (*format == '%') goto out;
|
||||||
|
if (*format == '-') {
|
||||||
|
++format;
|
||||||
|
pad = PAD_RIGHT;
|
||||||
|
}
|
||||||
|
while (*format == '0') {
|
||||||
|
++format;
|
||||||
|
pad |= PAD_ZERO;
|
||||||
|
}
|
||||||
|
for ( ; *format >= '0' && *format <= '9'; ++format) {
|
||||||
|
width *= 10;
|
||||||
|
width += *format - '0';
|
||||||
|
}
|
||||||
|
if( *format == 's' ) {
|
||||||
|
register char *s = (char *)va_arg( args, int );
|
||||||
|
pc += prints (out, s?s:"(null)", width, pad);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if( *format == 'd' ) {
|
||||||
|
pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if( *format == 'x' ) {
|
||||||
|
pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if( *format == 'X' ) {
|
||||||
|
pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if( *format == 'u' ) {
|
||||||
|
pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if( *format == 'c' ) {
|
||||||
|
/* char are converted to int then pushed on the stack */
|
||||||
|
scr[0] = (char)va_arg( args, int );
|
||||||
|
scr[1] = '\0';
|
||||||
|
pc += prints (out, scr, width, pad);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
out:
|
||||||
|
printchar (out, *format);
|
||||||
|
++pc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (out) **out = '\0';
|
||||||
|
va_end( args );
|
||||||
|
return pc;
|
||||||
|
}
|
||||||
|
|
||||||
|
int printf(const char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
va_start( args, format );
|
||||||
|
return print( 0, format, args );
|
||||||
|
}
|
||||||
|
|
||||||
|
int sprintf(char *out, const char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
va_start( args, format );
|
||||||
|
return print( &out, format, args );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int snprintf( char *buf, unsigned int count, const char *format, ... )
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
( void ) count;
|
||||||
|
|
||||||
|
va_start( args, format );
|
||||||
|
return print( &buf, format, args );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef TEST_PRINTF
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
char *ptr = "Hello world!";
|
||||||
|
char *np = 0;
|
||||||
|
int i = 5;
|
||||||
|
unsigned int bs = sizeof(int)*8;
|
||||||
|
int mi;
|
||||||
|
char buf[80];
|
||||||
|
|
||||||
|
mi = (1 << (bs-1)) + 1;
|
||||||
|
printf("%s\n", ptr);
|
||||||
|
printf("printf test\n");
|
||||||
|
printf("%s is null pointer\n", np);
|
||||||
|
printf("%d = 5\n", i);
|
||||||
|
printf("%d = - max int\n", mi);
|
||||||
|
printf("char %c = 'a'\n", 'a');
|
||||||
|
printf("hex %x = ff\n", 0xff);
|
||||||
|
printf("hex %02x = 00\n", 0);
|
||||||
|
printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3);
|
||||||
|
printf("%d %s(s)%", 0, "message");
|
||||||
|
printf("\n");
|
||||||
|
printf("%d %s(s) with %%\n", 0, "message");
|
||||||
|
sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf);
|
||||||
|
sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf);
|
||||||
|
sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf);
|
||||||
|
sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf);
|
||||||
|
sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf);
|
||||||
|
sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf);
|
||||||
|
sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf);
|
||||||
|
sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* if you compile this file with
|
||||||
|
* gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c
|
||||||
|
* you will get a normal warning:
|
||||||
|
* printf.c:214: warning: spurious trailing `%' in format
|
||||||
|
* this line is testing an invalid % at the end of the format string.
|
||||||
|
*
|
||||||
|
* this should display (on 32bit int machine) :
|
||||||
|
*
|
||||||
|
* Hello world!
|
||||||
|
* printf test
|
||||||
|
* (null) is null pointer
|
||||||
|
* 5 = 5
|
||||||
|
* -2147483647 = - max int
|
||||||
|
* char a = 'a'
|
||||||
|
* hex ff = ff
|
||||||
|
* hex 00 = 00
|
||||||
|
* signed -3 = unsigned 4294967293 = hex fffffffd
|
||||||
|
* 0 message(s)
|
||||||
|
* 0 message(s) with %
|
||||||
|
* justif: "left "
|
||||||
|
* justif: " right"
|
||||||
|
* 3: 0003 zero padded
|
||||||
|
* 3: 3 left justif.
|
||||||
|
* 3: 3 right justif.
|
||||||
|
* -3: -003 zero padded
|
||||||
|
* -3: -3 left justif.
|
||||||
|
* -3: -3 right justif.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* To keep linker happy. */
|
||||||
|
int write( int i, char* c, int n)
|
||||||
|
{
|
||||||
|
(void)i;
|
||||||
|
(void)n;
|
||||||
|
(void)c;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
78
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo_GCC.launch
Normal file
78
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/RTOSDemo_GCC.launch
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="com.renesas.cdt.launch.dsf.gdbremote.launchConfigurationType">
|
||||||
|
<intAttribute key="com.renesas.cdt.core.admPortNumber" value="61236"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.initCommands" value=""/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.ipAddress" value="localhost"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.jtagDevice" value="E1"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.core.loadImage" value="true"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.optionInitCommands" value=""/>
|
||||||
|
<intAttribute key="com.renesas.cdt.core.portNumber" value="61234"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.runCommands" value=""/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.serverParam" value="-g E1 -l 0 -t R5F51115 -p 61234 -d 61236 -uClockSrcHoco= 0 -uInputClock= 12.0000 -uAllowClockSourceInternal= 1 -uUseFine= 1 -uFineBaudRate= 2.00 -w 0 -z 0 -uRegisterSetting= 0 -uModePin= 0 -uDebugMode= 0 -uExecuteProgram= 0 -uIdCode= FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -n 0 -uWorkRamAddress= 1000 -uProgReWriteIRom= 0 -uProgReWriteDFlash= 0"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.core.setResume" value="true"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.core.setStopAt" value="true"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.core.startServer" value="true"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.stopAt" value="main"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.targetDevice" value="R5F51115"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.core.useRemoteTarget" value="true"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.core.verboseMode" value="false"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.launch.dsf.IO_MAP" value="${eclipse_home}..\internal\IoFiles\RX\RX111.sfrx"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.launch.dsf.USE_DEFAULT_IO_MAP" value="true"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.allow.clock.source.internal" value="true"/>
|
||||||
|
<intAttribute key="com.renesas.hardwaredebug.e1.clock_source" value="0"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.connection.mode" value="0"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.e1_pwr" value="false"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.execute.program" value="false"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.external_memory" value=""/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.fine.baud.rate" value="2.00"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.flash_overwrite_blocks" value=""/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.hw_break" value="false"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.id_code" value="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.inputclock" value="12.0000"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.jtag.clock.freq" value="16.5"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.jtag.or.fine" value="1"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.le" value="true"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.mode" value="0"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.mode_pin" value="0"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.prog_rewrite_dflash" value="false"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.prog_rewrite_irom" value="false"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.supply.voltage" value="3.3V"/>
|
||||||
|
<intAttribute key="com.renesas.hardwaredebug.e1.work_ram_start" value="4096"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e20.le" value="true"/>
|
||||||
|
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.delay" value="3"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="false"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.runCommands" value=""/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${eclipse_home}../DebugComp/rx-elf-gdb"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="true"/>
|
||||||
|
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="HardwareDebug\RTOSDemo_GCC.x"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="RTOSDemo_GCC"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
|
<listEntry value="/RTOSDemo_GCC"/>
|
||||||
|
</listAttribute>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
|
<listEntry value="4"/>
|
||||||
|
</listAttribute>
|
||||||
|
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
|
||||||
|
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="reserved-for-future-use"/> "/>
|
||||||
|
</launchConfiguration>
|
0
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/custom.bat
Normal file
0
FreeRTOS/Demo/RX100-RSK_GCC_e2studio/custom.bat
Normal file
183
FreeRTOS/Demo/RX100-RSK_IAR/FreeRTOSConfig.h
Normal file
183
FreeRTOS/Demo/RX100-RSK_IAR/FreeRTOSConfig.h
Normal file
|
@ -0,0 +1,183 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef FREERTOS_CONFIG_H
|
||||||
|
#define FREERTOS_CONFIG_H
|
||||||
|
|
||||||
|
/* Hardware specifics. */
|
||||||
|
#include "platform.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.
|
||||||
|
*----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* DEMO SPECIFIC SETTING:
|
||||||
|
* Set configCREATE_LOW_POWER_DEMO to one to run the low power demo with tick
|
||||||
|
* suppression, or 0 to run the more comprehensive test and demo application.
|
||||||
|
* If configCREATE_LOW_POWER_DEMO is set to 1 then main() calls main_low_power().
|
||||||
|
* If configCREATE_LOW_POWER_DEMO is set to 0 then main() calls main_full().
|
||||||
|
*/
|
||||||
|
#define configCREATE_LOW_POWER_DEMO 1
|
||||||
|
|
||||||
|
|
||||||
|
#define configUSE_PREEMPTION 1
|
||||||
|
#define configUSE_TICKLESS_IDLE configCREATE_LOW_POWER_DEMO
|
||||||
|
#define configUSE_IDLE_HOOK 0
|
||||||
|
#define configUSE_TICK_HOOK 0
|
||||||
|
#define configCPU_CLOCK_HZ ( ICLK_HZ ) /* Set in mcu_info.h. */
|
||||||
|
#define configPERIPHERAL_CLOCK_HZ ( PCLKB_HZ ) /* Set in muc_info.h. */
|
||||||
|
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||||
|
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 100 )
|
||||||
|
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 9 * 1024 ) )
|
||||||
|
#define configMAX_TASK_NAME_LEN ( 12 )
|
||||||
|
#define configUSE_TRACE_FACILITY 1
|
||||||
|
#define configUSE_16_BIT_TICKS 0
|
||||||
|
#define configIDLE_SHOULD_YIELD 1
|
||||||
|
#define configUSE_CO_ROUTINES 0
|
||||||
|
#define configUSE_MUTEXES 1
|
||||||
|
#define configGENERATE_RUN_TIME_STATS 0
|
||||||
|
#define configCHECK_FOR_STACK_OVERFLOW 2
|
||||||
|
#define configUSE_RECURSIVE_MUTEXES 1
|
||||||
|
#define configQUEUE_REGISTRY_SIZE 0
|
||||||
|
#define configUSE_MALLOC_FAILED_HOOK 0
|
||||||
|
#define configUSE_APPLICATION_TASK_TAG 0
|
||||||
|
|
||||||
|
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 7 )
|
||||||
|
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
|
||||||
|
|
||||||
|
/* Software timer definitions - only included when the demo is configured to
|
||||||
|
build the full demo (as opposed to the low power demo). */
|
||||||
|
#if configCREATE_LOW_POWER_DEMO == 1
|
||||||
|
#define configUSE_TIMERS 0
|
||||||
|
#else
|
||||||
|
#define configUSE_TIMERS 1
|
||||||
|
#define configTIMER_TASK_PRIORITY ( 3 )
|
||||||
|
#define configTIMER_QUEUE_LENGTH 5
|
||||||
|
#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE )
|
||||||
|
#endif /* configCREATE_LOW_POWER_DEMO */
|
||||||
|
|
||||||
|
/*
|
||||||
|
The interrupt priority used by the kernel itself for the tick interrupt and
|
||||||
|
the pended interrupt is set by configKERNEL_INTERRUPT_PRIORITY. This would
|
||||||
|
normally be the lowest priority (1 in this case). The maximum interrupt
|
||||||
|
priority from which FreeRTOS API calls can be made is set by
|
||||||
|
configMAX_SYSCALL_INTERRUPT_PRIORITY. Interrupts that use a priority above this
|
||||||
|
will not be effected by anything the kernel is doing. Interrupts at or below
|
||||||
|
this priority can use FreeRTOS API functions - but *only* those that end in
|
||||||
|
"FromISR". Both these constants are defined in 'PriorityDefinitions.h' so they
|
||||||
|
can also be included in assembly source files.
|
||||||
|
*/
|
||||||
|
#include "PriorityDefinitions.h"
|
||||||
|
|
||||||
|
/* Set the following definitions to 1 to include the API function, or zero
|
||||||
|
to exclude the API function. */
|
||||||
|
|
||||||
|
#define INCLUDE_vTaskPrioritySet 1
|
||||||
|
#define INCLUDE_uxTaskPriorityGet 1
|
||||||
|
#define INCLUDE_vTaskDelete 1
|
||||||
|
#define INCLUDE_vTaskCleanUpResources 0
|
||||||
|
#define INCLUDE_vTaskSuspend 1
|
||||||
|
#define INCLUDE_vTaskDelayUntil 1
|
||||||
|
#define INCLUDE_vTaskDelay 1
|
||||||
|
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
||||||
|
#define INCLUDE_xTaskGetSchedulerState 1
|
||||||
|
|
||||||
|
extern void vAssertCalled( void );
|
||||||
|
#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled();
|
||||||
|
|
||||||
|
/* The configPRE_SLEEP_PROCESSING() and configPOST_SLEEP_PROCESSING() macros
|
||||||
|
allow the application writer to add additional code before and after the MCU is
|
||||||
|
placed into the low power state respectively. The implementations provided in
|
||||||
|
this demo can be extended to save even more power - for example the analog
|
||||||
|
input used by the low power demo could be switched off in the pre-sleep macro
|
||||||
|
and back on again in the post sleep macro. */
|
||||||
|
void vPreSleepProcessing( unsigned long xExpectedIdleTime );
|
||||||
|
void vPostSleepProcessing( unsigned long xExpectedIdleTime );
|
||||||
|
#define configPRE_SLEEP_PROCESSING( xExpectedIdleTime ) vPreSleepProcessing( xExpectedIdleTime );
|
||||||
|
#define configPOST_SLEEP_PROCESSING( xExpectedIdleTime ) vPostSleepProcessing( xExpectedIdleTime );
|
||||||
|
|
||||||
|
/* configTICK_VECTOR must be set to the interrupt vector used by the peripheral
|
||||||
|
that generates the tick interrupt. */
|
||||||
|
#define configTICK_VECTOR VECT_CMT0_CMI0
|
||||||
|
|
||||||
|
#endif /* FREERTOS_CONFIG_H */
|
200
FreeRTOS/Demo/RX100-RSK_IAR/ParTest.c
Normal file
200
FreeRTOS/Demo/RX100-RSK_IAR/ParTest.c
Normal file
|
@ -0,0 +1,200 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------
|
||||||
|
* Simple IO routines to control the LEDs.
|
||||||
|
*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Scheduler includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
|
/* Demo includes. */
|
||||||
|
#include "partest.h"
|
||||||
|
|
||||||
|
#define partestNUM_LEDS ( 4 )
|
||||||
|
|
||||||
|
long lParTestGetLEDState( unsigned long ulLED );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vParTestInitialise( void )
|
||||||
|
{
|
||||||
|
/* Port pin configuration is done by the low level set up prior to this
|
||||||
|
function being called. */
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vParTestSetLED( unsigned long ulLED, signed long xValue )
|
||||||
|
{
|
||||||
|
if( ulLED < partestNUM_LEDS )
|
||||||
|
{
|
||||||
|
if( xValue != 0 )
|
||||||
|
{
|
||||||
|
/* Turn the LED on. */
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
switch( ulLED )
|
||||||
|
{
|
||||||
|
case 0: LED0 = LED_ON;
|
||||||
|
break;
|
||||||
|
case 1: LED1 = LED_ON;
|
||||||
|
break;
|
||||||
|
case 2: LED2 = LED_ON;
|
||||||
|
break;
|
||||||
|
case 3: LED3 = LED_ON;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Turn the LED off. */
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
switch( ulLED )
|
||||||
|
{
|
||||||
|
case 0: LED0 = LED_OFF;
|
||||||
|
break;
|
||||||
|
case 1: LED1 = LED_OFF;
|
||||||
|
break;
|
||||||
|
case 2: LED2 = LED_OFF;
|
||||||
|
break;
|
||||||
|
case 3: LED3 = LED_OFF;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vParTestToggleLED( unsigned long ulLED )
|
||||||
|
{
|
||||||
|
if( ulLED < partestNUM_LEDS )
|
||||||
|
{
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
if( lParTestGetLEDState( ulLED ) != 0x00 )
|
||||||
|
{
|
||||||
|
vParTestSetLED( ulLED, 0 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vParTestSetLED( ulLED, 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
long lParTestGetLEDState( unsigned long ulLED )
|
||||||
|
{
|
||||||
|
long lReturn = pdTRUE;
|
||||||
|
|
||||||
|
if( ulLED < partestNUM_LEDS )
|
||||||
|
{
|
||||||
|
switch( ulLED )
|
||||||
|
{
|
||||||
|
case 0 : if( LED0 != 0 )
|
||||||
|
{
|
||||||
|
lReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1 : if( LED1 != 0 )
|
||||||
|
{
|
||||||
|
lReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2 : if( LED2 != 0 )
|
||||||
|
{
|
||||||
|
lReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3 : if( LED3 != 0 )
|
||||||
|
{
|
||||||
|
lReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return lReturn;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
91
FreeRTOS/Demo/RX100-RSK_IAR/PriorityDefinitions.h
Normal file
91
FreeRTOS/Demo/RX100-RSK_IAR/PriorityDefinitions.h
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef PRIORITY_DEFINITIONS_H
|
||||||
|
#define PRIORITY_DEFINITIONS_H
|
||||||
|
|
||||||
|
|
||||||
|
/* The interrupt priority used by the kernel itself for the tick interrupt and
|
||||||
|
the pended interrupt. This would normally be the lowest priority. */
|
||||||
|
#define configKERNEL_INTERRUPT_PRIORITY 1
|
||||||
|
|
||||||
|
/* The maximum interrupt priority from which FreeRTOS API calls can be made.
|
||||||
|
Interrupts that use a priority above this will not be effected by anything the
|
||||||
|
kernel is doing but must not make any use of FreeRTOS functionality.
|
||||||
|
interrupts that use a priority at or below configMAX_SYSCALL_INTERRUPT_PRIORITY
|
||||||
|
can make use of FreeRTOS API function but *only* functions that end in
|
||||||
|
"FromISR()". */
|
||||||
|
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4
|
||||||
|
|
||||||
|
#endif /* PRIORITY_DEFINITIONS_H */
|
398
FreeRTOS/Demo/RX100-RSK_IAR/RTOSDemo_IAR.dep
Normal file
398
FreeRTOS/Demo/RX100-RSK_IAR/RTOSDemo_IAR.dep
Normal file
|
@ -0,0 +1,398 @@
|
||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
|
||||||
|
<project>
|
||||||
|
<fileVersion>2</fileVersion>
|
||||||
|
<fileChecksum>1022944783</fileChecksum>
|
||||||
|
<configuration>
|
||||||
|
<name>Debug</name>
|
||||||
|
<outputs>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\reg_test.o</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\include\queue.h</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\include\FreeRTOS.h</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\include\projdefs.h</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\portable\IAR\RX100\port.c</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\port.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\heap_4.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\blocktim.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\queue.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\port_asm.o</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\ParTest.o</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\GenQTest.o</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\yvals.h</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\main.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\lcd.o</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\list.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\blocktim.o</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\death.o</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\hardware_setup.o</file>
|
||||||
|
<file>$PROJ_DIR$\FreeRTOSConfig.h</file>
|
||||||
|
<file>$PROJ_DIR$\main.c</file>
|
||||||
|
<file>$PROJ_DIR$\main_full.c</file>
|
||||||
|
<file>$PROJ_DIR$\main_low_power.c</file>
|
||||||
|
<file>$PROJ_DIR$\ParTest.c</file>
|
||||||
|
<file>$PROJ_DIR$\reg_test.s</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\main_low_power.o</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\timers.o</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\list.o</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\DLib_Defaults.h</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\DLib_Product.h</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\ycheck.h</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\xencoding_limits.h</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\DLib_Threads.h</file>
|
||||||
|
<file>$PROJ_DIR$\Renesas_Files\r_bsp\platform.h</file>
|
||||||
|
<file>$PROJ_DIR$\Renesas_Files\r_bsp\board\rskrx111\r_bsp.h</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\stddef.h</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\ysizet.h</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\stdint.h</file>
|
||||||
|
<file>$PROJ_DIR$\Renesas_Files\r_bsp\r_bsp_config.h</file>
|
||||||
|
<file>$PROJ_DIR$\Renesas_Files\r_bsp\mcu\rx111\mcu_info.h</file>
|
||||||
|
<file>$PROJ_DIR$\Renesas_Files\r_bsp\board\rskrx111\lcd.h</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\include\portable.h</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\tasks.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\timers.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\lcd.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\queue.o</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\main_full.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\main_low_power.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Exe\templproj.out</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\RTOSDemo_IAR.pbd</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\limits.h</file>
|
||||||
|
<file>$PROJ_DIR$\PriorityDefinitions.h</file>
|
||||||
|
<file>$PROJ_DIR$\Renesas_Files\r_bsp\board\rskrx111\rskrx111.h</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\heap_4.o</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\intrinsics.h</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\iorx111.h</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\port.o</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\hardware_setup.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\r_switches.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\death.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\GenQTest.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\recmutex.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\main_full.o</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\main.o</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\ParTest.pbi</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\tasks.o</file>
|
||||||
|
<file>$TOOLKIT_DIR$\lib\dlrxfllsn.h</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\include\mpu_wrappers.h</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\string.h</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\include\list.h</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\recmutex.o</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\stdlib.h</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\machine.h</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\include\task.h</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\include\timers.h</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\portable\IAR\RX100\port_asm.s</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\portable\IAR\RX100\portmacro.h</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\portable\MemMang\heap_4.c</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\list.c</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\queue.c</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\tasks.c</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\timers.c</file>
|
||||||
|
<file>$PROJ_DIR$\Renesas_Files\r_bsp\board\user\hardware_setup.c</file>
|
||||||
|
<file>$PROJ_DIR$\Renesas_Files\r_switches\src\r_switches.c</file>
|
||||||
|
<file>$PROJ_DIR$\Renesas_Files\r_bsp\board\rskrx111\lcd.c</file>
|
||||||
|
<file>$PROJ_DIR$\..\Common\Minimal\blocktim.c</file>
|
||||||
|
<file>$PROJ_DIR$\..\Common\Minimal\death.c</file>
|
||||||
|
<file>$PROJ_DIR$\..\Common\Minimal\GenQTest.c</file>
|
||||||
|
<file>$PROJ_DIR$\..\Common\Minimal\recmutex.c</file>
|
||||||
|
<file>$PROJ_DIR$\Debug\Obj\r_switches.o</file>
|
||||||
|
<file>$PROJ_DIR$\Renesas_Files\r_switches\r_switches_if.h</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\ystdio.h</file>
|
||||||
|
<file>$PROJ_DIR$\..\..\Source\include\StackMacros.h</file>
|
||||||
|
<file>$TOOLKIT_DIR$\inc\c\stdio.h</file>
|
||||||
|
<file>$PROJ_DIR$\Renesas_Files\r_switches\r_switches_config.h</file>
|
||||||
|
</outputs>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\..\Source\portable\IAR\RX100\port.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 56</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 5</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
<inputs>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 50 30 12 28 66 29 31 32 2 35 36 3 19 33 34 38 55 39 52 40 37 51 41 76 54 72 67 73 69 68</file>
|
||||||
|
</tool>
|
||||||
|
</inputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\main.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 63</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 13</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\main_full.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 62</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 46</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\main_low_power.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 25</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 47</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\ParTest.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 10</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 64</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\reg_test.s</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ARX</name>
|
||||||
|
<file> 0</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>[ROOT_NODE]</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ILINK</name>
|
||||||
|
<file> 48</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\..\Source\portable\IAR\RX100\port_asm.s</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ARX</name>
|
||||||
|
<file> 9</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\..\Source\portable\MemMang\heap_4.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 53</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 6</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
<inputs>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 71 30 12 28 66 29 31 32 36 2 35 3 19 33 34 38 55 39 52 40 37 51 41 76 54 72 67 73 69</file>
|
||||||
|
</tool>
|
||||||
|
</inputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\..\Source\list.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 27</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 15</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
<inputs>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 71 30 12 28 66 29 31 32 36 2 35 3 19 33 34 38 55 39 52 40 37 51 41 76 54 72 67 69</file>
|
||||||
|
</tool>
|
||||||
|
</inputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\..\Source\queue.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 45</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 8</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
<inputs>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 71 30 12 28 66 29 31 32 36 68 2 35 3 19 33 34 38 55 39 52 40 37 51 41 76 54 72 67 73 69 1</file>
|
||||||
|
</tool>
|
||||||
|
</inputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\..\Source\tasks.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 65</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 42</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
<inputs>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 93 30 12 28 66 29 31 32 36 91 71 68 2 35 3 19 33 34 38 55 39 52 40 37 51 41 76 54 72 67 73 69 74 92</file>
|
||||||
|
</tool>
|
||||||
|
</inputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\..\Source\timers.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 26</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 43</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
<inputs>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 2 35 30 12 28 66 29 31 32 36 3 19 33 34 38 55 39 52 40 37 51 41 76 54 72 67 73 69 1 74</file>
|
||||||
|
</tool>
|
||||||
|
</inputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\Renesas_Files\r_bsp\board\user\hardware_setup.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 18</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 57</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
<inputs>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 33 34 38 55 39 52 40 37 30 12 28 66 29 31 32 90 94</file>
|
||||||
|
</tool>
|
||||||
|
</inputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\Renesas_Files\r_switches\src\r_switches.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 89</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 58</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\Renesas_Files\r_bsp\board\rskrx111\lcd.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 14</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 44</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\Common\Minimal\blocktim.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 16</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 7</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\Common\Minimal\death.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 17</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 59</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\Common\Minimal\GenQTest.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 11</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 60</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\Common\Minimal\recmutex.c</name>
|
||||||
|
<outputs>
|
||||||
|
<tool>
|
||||||
|
<name>ICCRX</name>
|
||||||
|
<file> 70</file>
|
||||||
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>BICOMP</name>
|
||||||
|
<file> 61</file>
|
||||||
|
</tool>
|
||||||
|
</outputs>
|
||||||
|
</file>
|
||||||
|
</configuration>
|
||||||
|
</project>
|
||||||
|
|
||||||
|
|
312
FreeRTOS/Demo/RX100-RSK_IAR/RTOSDemo_IAR.ewd
Normal file
312
FreeRTOS/Demo/RX100-RSK_IAR/RTOSDemo_IAR.ewd
Normal file
|
@ -0,0 +1,312 @@
|
||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
|
||||||
|
<project>
|
||||||
|
<fileVersion>2</fileVersion>
|
||||||
|
<configuration>
|
||||||
|
<name>Debug</name>
|
||||||
|
<toolchain>
|
||||||
|
<name>RX</name>
|
||||||
|
</toolchain>
|
||||||
|
<debug>1</debug>
|
||||||
|
<settings>
|
||||||
|
<name>C-SPY</name>
|
||||||
|
<archiveVersion>2</archiveVersion>
|
||||||
|
<data>
|
||||||
|
<version>5</version>
|
||||||
|
<wantNonLocal>1</wantNonLocal>
|
||||||
|
<debug>1</debug>
|
||||||
|
<option>
|
||||||
|
<name>CMandatory</name>
|
||||||
|
<state>1</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>CInput</name>
|
||||||
|
<state>1</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>DebuggerProcessorVariant</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>CRunToEnable</name>
|
||||||
|
<state>1</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>CRunToName</name>
|
||||||
|
<state>main</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>CMacOverride</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>CMacFile</name>
|
||||||
|
<state></state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>DynDriver</name>
|
||||||
|
<state>RXEMUE20</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>DDFOverride</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>DDFFile</name>
|
||||||
|
<state>$TOOLKIT_DIR$\config\debugger\ior5f51115.ddf</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>DebuggerUseExtraOptions</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>DebuggerExtraOptions</name>
|
||||||
|
<state></state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>ODebuggerByteOrder</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>ODebuggerDoubleSize</name>
|
||||||
|
<state>1</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCImagesSuppressCheck1</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCImagesPath1</name>
|
||||||
|
<state></state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCImagesSuppressCheck2</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCImagesPath2</name>
|
||||||
|
<state></state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCImagesSuppressCheck3</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCImagesPath3</name>
|
||||||
|
<state></state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>ODebuggerCore</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>ODebuggerIntSize</name>
|
||||||
|
<state>1</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCImagesOffset1</name>
|
||||||
|
<state></state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCImagesOffset2</name>
|
||||||
|
<state></state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCImagesOffset3</name>
|
||||||
|
<state></state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCImagesUse1</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCImagesUse2</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCImagesUse3</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
</data>
|
||||||
|
</settings>
|
||||||
|
<settings>
|
||||||
|
<name>RXEMUE20</name>
|
||||||
|
<archiveVersion>3</archiveVersion>
|
||||||
|
<data>
|
||||||
|
<version>3</version>
|
||||||
|
<wantNonLocal>1</wantNonLocal>
|
||||||
|
<debug>1</debug>
|
||||||
|
<option>
|
||||||
|
<name>EmuMandatory</name>
|
||||||
|
<state>1</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCEmuUseUSBSerialNo</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCEmuUSBSerialNo</name>
|
||||||
|
<state></state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCDownloadSuppressDownload</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCDownloadVerifyAll</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCDownloadAttach</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCDebuggingMode</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCExcecuteAfterFlash</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCDownloadOnlyChangedBlocks</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
</data>
|
||||||
|
</settings>
|
||||||
|
<settings>
|
||||||
|
<name>RXJLINK</name>
|
||||||
|
<archiveVersion>3</archiveVersion>
|
||||||
|
<data>
|
||||||
|
<version>4</version>
|
||||||
|
<wantNonLocal>1</wantNonLocal>
|
||||||
|
<debug>1</debug>
|
||||||
|
<option>
|
||||||
|
<name>JlinkMandatory</name>
|
||||||
|
<state>1</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCJlinkDownloadSuppressDownload</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCJlinkDownloadVerifyAll</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCDownloadAttach</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCDebuggingMode</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCJlinkExcecuteAfterFlash</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCJlinkScanChainEnable</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCJlinkDevicePosition</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCJlinkOtherDeviceTypes</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCJlinkPreceedingIRBits</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCJlinkUseUSBSerialNo</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>OCJlinkUSBSerialNo</name>
|
||||||
|
<state></state>
|
||||||
|
</option>
|
||||||
|
</data>
|
||||||
|
</settings>
|
||||||
|
<settings>
|
||||||
|
<name>SIMRX</name>
|
||||||
|
<archiveVersion>1</archiveVersion>
|
||||||
|
<data>
|
||||||
|
<version>1</version>
|
||||||
|
<wantNonLocal>1</wantNonLocal>
|
||||||
|
<debug>1</debug>
|
||||||
|
<option>
|
||||||
|
<name>SimMandatory</name>
|
||||||
|
<state>1</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>SimEnablePSP</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>SimPspOverrideConfig</name>
|
||||||
|
<state>0</state>
|
||||||
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>SimPspConfigFile</name>
|
||||||
|
<state>$TOOLKIT_DIR$\CONFIG\iocf.psp.config</state>
|
||||||
|
</option>
|
||||||
|
</data>
|
||||||
|
</settings>
|
||||||
|
<debuggerPlugins>
|
||||||
|
<plugin>
|
||||||
|
<file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
|
||||||
|
<loadFlag>0</loadFlag>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
|
||||||
|
<loadFlag>0</loadFlag>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin</file>
|
||||||
|
<loadFlag>0</loadFlag>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
|
||||||
|
<loadFlag>0</loadFlag>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXRxPlugin.ENU.ewplugin</file>
|
||||||
|
<loadFlag>0</loadFlag>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
|
||||||
|
<loadFlag>0</loadFlag>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
|
||||||
|
<loadFlag>0</loadFlag>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
|
||||||
|
<loadFlag>0</loadFlag>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
|
||||||
|
<loadFlag>1</loadFlag>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
|
||||||
|
<loadFlag>0</loadFlag>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<file>$EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin</file>
|
||||||
|
<loadFlag>1</loadFlag>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<file>$EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin</file>
|
||||||
|
<loadFlag>0</loadFlag>
|
||||||
|
</plugin>
|
||||||
|
</debuggerPlugins>
|
||||||
|
</configuration>
|
||||||
|
</project>
|
||||||
|
|
||||||
|
|
1018
FreeRTOS/Demo/RX100-RSK_IAR/RTOSDemo_IAR.ewp
Normal file
1018
FreeRTOS/Demo/RX100-RSK_IAR/RTOSDemo_IAR.ewp
Normal file
File diff suppressed because it is too large
Load diff
10
FreeRTOS/Demo/RX100-RSK_IAR/RTOSDemo_IAR.eww
Normal file
10
FreeRTOS/Demo/RX100-RSK_IAR/RTOSDemo_IAR.eww
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
|
||||||
|
<workspace>
|
||||||
|
<project>
|
||||||
|
<path>$WS_DIR$\RTOSDemo_IAR.ewp</path>
|
||||||
|
</project>
|
||||||
|
<batchBuild/>
|
||||||
|
</workspace>
|
||||||
|
|
||||||
|
|
4
FreeRTOS/Demo/RX100-RSK_IAR/RTOSDemo_IARCustomSfr.sfr
Normal file
4
FreeRTOS/Demo/RX100-RSK_IAR/RTOSDemo_IARCustomSfr.sfr
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
[Sfr]
|
||||||
|
|
||||||
|
|
||||||
|
[SfrGroupInfo]
|
|
@ -0,0 +1,252 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : lcd.c
|
||||||
|
* Device(s) : RX
|
||||||
|
* H/W Platform : RSKRX111
|
||||||
|
* Description : Provides variable and function declarations for lcd.c file
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Standard string manipulation & formatting functions */
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
/* Defines standard variable types used in this function */
|
||||||
|
#include <stdint.h>
|
||||||
|
/* Bring in board includes. */
|
||||||
|
#include "platform.h"
|
||||||
|
/* Following header file provides function prototypes for LCD controlling functions & macro defines */
|
||||||
|
#include "lcd.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Private global variables and functions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void lcd_delay(volatile int32_t nsecs);
|
||||||
|
static void lcd_nibble_write(uint8_t data_or_ctrl, uint8_t value);
|
||||||
|
static void lcd_write(uint8_t data_or_ctrl, uint8_t value);
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_initialize
|
||||||
|
* Description : Initializes the LCD display.
|
||||||
|
* Arguments : none
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void lcd_initialize(void)
|
||||||
|
{
|
||||||
|
/* Set LCD data pins as outputs. */
|
||||||
|
PORT4.PDR.BYTE |= 0x0F;
|
||||||
|
|
||||||
|
/* Set LCD control pins as outputs. */
|
||||||
|
RS_PIN_DDR = 1;
|
||||||
|
E_PIN_DDR = 1;
|
||||||
|
|
||||||
|
/* Power Up Delay for the LCD Module */
|
||||||
|
lcd_delay(50000000);
|
||||||
|
|
||||||
|
/* Display initialises in 8 bit mode - so send one write (seen as 8 bit) to set to 4 bit mode. */
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x03);
|
||||||
|
lcd_delay(5000000);
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x03);
|
||||||
|
lcd_delay(5000000);
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x03);
|
||||||
|
lcd_delay(5000000);
|
||||||
|
|
||||||
|
/* Function Set */
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x02);
|
||||||
|
lcd_delay(39000);
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x02);
|
||||||
|
lcd_nibble_write(CTRL_WR, (LCD_DISPLAY_ON | LCD_TWO_LINE ));
|
||||||
|
lcd_delay(39000);
|
||||||
|
|
||||||
|
/* Display ON/OFF control */
|
||||||
|
lcd_write(CTRL_WR, LCD_CURSOR_OFF);
|
||||||
|
lcd_delay(39000);
|
||||||
|
|
||||||
|
/* Display Clear */
|
||||||
|
lcd_write(CTRL_WR, LCD_CLEAR);
|
||||||
|
lcd_delay(2000000);
|
||||||
|
|
||||||
|
/* Entry Mode Set */
|
||||||
|
lcd_write(CTRL_WR, 0x06);
|
||||||
|
lcd_delay(39000);
|
||||||
|
|
||||||
|
/* Home the cursor */
|
||||||
|
lcd_write(CTRL_WR, LCD_HOME_L1);
|
||||||
|
lcd_delay(5000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_clear
|
||||||
|
* Description : Clears the LCD
|
||||||
|
* Arguments : none
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void lcd_clear(void)
|
||||||
|
{
|
||||||
|
/* Display Clear */
|
||||||
|
lcd_write(CTRL_WR, LCD_CLEAR);
|
||||||
|
lcd_delay(2000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_display
|
||||||
|
* Description : This function controls LCD writes to line 1 or 2 of the LCD.
|
||||||
|
* You need to use the defines LCD_LINE1 and LCD_LINE2 in order to specify the starting position.
|
||||||
|
* For example, to start at the 2nd position on line 1...
|
||||||
|
* lcd_display(LCD_LINE1 + 1, "Hello")
|
||||||
|
* Arguments : position -
|
||||||
|
* Line number of display
|
||||||
|
* string -
|
||||||
|
* Pointer to null terminated string
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void lcd_display(uint8_t position, uint8_t const * string)
|
||||||
|
{
|
||||||
|
/* Declare next position variable */
|
||||||
|
static uint8_t next_pos = 0xFF;
|
||||||
|
|
||||||
|
/* Set line position if needed. We don't want to if we don't need to because LCD control operations take longer
|
||||||
|
than LCD data operations. */
|
||||||
|
if (next_pos != position)
|
||||||
|
{
|
||||||
|
if(position < LCD_LINE2)
|
||||||
|
{
|
||||||
|
/* Display on Line 1 */
|
||||||
|
lcd_write(CTRL_WR, ((uint8_t)(LCD_HOME_L1 + position)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Display on Line 2 */
|
||||||
|
lcd_write(CTRL_WR, ((uint8_t)((LCD_HOME_L2 + position) - LCD_LINE2)));
|
||||||
|
}
|
||||||
|
|
||||||
|
lcd_delay(39000);
|
||||||
|
|
||||||
|
/* set position index to known value */
|
||||||
|
next_pos = position;
|
||||||
|
}
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
/* Write character to LCD. */
|
||||||
|
lcd_write(DATA_WR,*string++);
|
||||||
|
|
||||||
|
lcd_delay(43000);
|
||||||
|
|
||||||
|
/* Increment position index */
|
||||||
|
next_pos++;
|
||||||
|
}
|
||||||
|
while(*string);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_delay
|
||||||
|
* Description : Implements LCD required delays.
|
||||||
|
* Arguments : nsecs -
|
||||||
|
* Number of nanoseconds to delay. RX111 has max clock of 32MHz which gives a cycle time of 31.3ns.
|
||||||
|
* This means that nothing under 313ns should be input. 313ns would be 10 cycles which is still
|
||||||
|
* being optimistic for getting in and out of this function.
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void lcd_delay(volatile int32_t nsecs)
|
||||||
|
{
|
||||||
|
while (0 < nsecs)
|
||||||
|
{
|
||||||
|
/* Subtract off 10 cycles per iteration. This number was obtained when using the Renesas toolchain at
|
||||||
|
optimization level 2. The number to nanoseconds to subtract off below is calculated off of the ICLK speed. */
|
||||||
|
nsecs -= (int32_t)((313.0)*(32000000.0/(float)ICLK_HZ));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_nibble_write
|
||||||
|
* Description : Writes data to display. Sends command to display.
|
||||||
|
* Arguments : value -
|
||||||
|
* The value to write
|
||||||
|
* data_or_ctrl -
|
||||||
|
* Whether to write data or control.
|
||||||
|
* 1 = DATA
|
||||||
|
* 0 = CONTROL
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void lcd_nibble_write(uint8_t data_or_ctrl, uint8_t value)
|
||||||
|
{
|
||||||
|
/* Set Register Select pin high for Data */
|
||||||
|
if (data_or_ctrl == DATA_WR)
|
||||||
|
{
|
||||||
|
/* Data write. */
|
||||||
|
RS_PIN = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Control write. */
|
||||||
|
RS_PIN = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* tsu1 delay */
|
||||||
|
lcd_delay(60);
|
||||||
|
|
||||||
|
/* EN enable chip (HIGH) */
|
||||||
|
E_PIN = 1;
|
||||||
|
|
||||||
|
/* Output the data */
|
||||||
|
PORT4.PODR.BYTE = (value & 0x0F);
|
||||||
|
|
||||||
|
/* tw delay */
|
||||||
|
lcd_delay(450);
|
||||||
|
|
||||||
|
/* Latch data by dropping E */
|
||||||
|
E_PIN = 0;
|
||||||
|
|
||||||
|
/* th2 delay */
|
||||||
|
lcd_delay(10);
|
||||||
|
|
||||||
|
/* tc delay */
|
||||||
|
lcd_delay(480);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_write
|
||||||
|
* Description : This function controls LCD writes to line 1 or 2 of the LCD. You need to use the defines LCD_LINE1 and
|
||||||
|
* LCD_LINE2 in order to specify the starting position.
|
||||||
|
* For example, to start at the 2nd position on line 1...
|
||||||
|
* lcd_display(LCD_LINE1 + 1, "Hello")
|
||||||
|
* Arguments : value -
|
||||||
|
* The value to write
|
||||||
|
* data_or_ctrl -
|
||||||
|
* Whether to write data or control.
|
||||||
|
* 1 = DATA
|
||||||
|
* 0 = CONTROL
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void lcd_write(uint8_t data_or_ctrl, uint8_t value)
|
||||||
|
{
|
||||||
|
/* Write upper nibble first */
|
||||||
|
lcd_nibble_write(data_or_ctrl, (uint8_t)((value & 0xF0) >> 4));
|
||||||
|
|
||||||
|
/* Write lower nibble second */
|
||||||
|
lcd_nibble_write(data_or_ctrl, (uint8_t)(value & 0x0F));
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : lcd.h
|
||||||
|
* Device(s) : RX
|
||||||
|
* H/W Platform : RSKRX111
|
||||||
|
* Description : Provides variable and function declarations for lcd.c file
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/* Multiple inclusion prevention macro */
|
||||||
|
#ifndef LCD_H
|
||||||
|
#define LCD_H
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Defines standard integer variable types used in this file */
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* RS register select pin */
|
||||||
|
#define RS_PIN PORTC.PODR.BIT.B5
|
||||||
|
#define RS_PIN_DDR PORTC.PDR.BIT.B5
|
||||||
|
/* Display enable pin */
|
||||||
|
#define E_PIN PORTB.PODR.BIT.B1
|
||||||
|
#define E_PIN_DDR PORTB.PDR.BIT.B1
|
||||||
|
/* Data write/read definition */
|
||||||
|
#define DATA_WR 1
|
||||||
|
/* Control write/read definition */
|
||||||
|
#define CTRL_WR 0
|
||||||
|
/* Maximum characters per line of LCD display. */
|
||||||
|
#define NUMB_CHARS_PER_LINE 8
|
||||||
|
/* Number of lines on the LCD display */
|
||||||
|
#define MAXIMUM_LINES 2
|
||||||
|
/* Character position of LCD line 1 */
|
||||||
|
#define LCD_LINE1 0
|
||||||
|
/* Character position of LCD line 2 */
|
||||||
|
#define LCD_LINE2 16
|
||||||
|
/* Clear LCD display and home cursor */
|
||||||
|
#define LCD_CLEAR 0x01
|
||||||
|
/* Move cursor to line 1 */
|
||||||
|
#define LCD_HOME_L1 0x80
|
||||||
|
/* Move cursor to line 2 */
|
||||||
|
#define LCD_HOME_L2 0xC0
|
||||||
|
/* Cursor auto decrement after R/W */
|
||||||
|
#define CURSOR_MODE_DEC 0x04
|
||||||
|
/* Cursor auto increment after R/W */
|
||||||
|
#define CURSOR_MODE_INC 0x06
|
||||||
|
/* Setup, 4 bits,2 lines, 5X7 */
|
||||||
|
#define FUNCTION_SET 0x28
|
||||||
|
/* Display ON with Cursor */
|
||||||
|
#define LCD_CURSOR_ON 0x0E
|
||||||
|
/* Display ON with Cursor off */
|
||||||
|
#define LCD_CURSOR_OFF 0x0C
|
||||||
|
/* Display on with blinking cursor */
|
||||||
|
#define LCD_CURSOR_BLINK 0x0D
|
||||||
|
/* Move Cursor Left One Position */
|
||||||
|
#define LCD_CURSOR_LEFT 0x10
|
||||||
|
/* Move Cursor Right One Position */
|
||||||
|
#define LCD_CURSOR_RIGHT 0x14
|
||||||
|
/* Enable LCD display */
|
||||||
|
#define LCD_DISPLAY_ON 0x04
|
||||||
|
/* Enable both LCD lines */
|
||||||
|
#define LCD_TWO_LINE 0x08
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Exported global functions (to be accessed by other files)
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* LCD initialisation function declaration */
|
||||||
|
void lcd_initialize (void);
|
||||||
|
|
||||||
|
/* Update display function declaration */
|
||||||
|
void lcd_display(uint8_t position, uint8_t const * string);
|
||||||
|
|
||||||
|
/* Clear LCD function delcaration */
|
||||||
|
void lcd_clear (void);
|
||||||
|
|
||||||
|
/* End of multiple inclusion prevention macro */
|
||||||
|
#endif
|
|
@ -0,0 +1,50 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_bsp.h
|
||||||
|
* H/W Platform : RSKRX111
|
||||||
|
* Description : Has the header files that should be included for this platform.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef PLATFORM_BOARD_RSKRX111
|
||||||
|
#define PLATFORM_BOARD_RSKRX111
|
||||||
|
|
||||||
|
/* Make sure that no other platforms have already been defined. Do not touch this! */
|
||||||
|
#ifdef PLATFORM_DEFINED
|
||||||
|
#error "Error - Multiple platforms defined in platform.h!"
|
||||||
|
#else
|
||||||
|
#define PLATFORM_DEFINED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
INCLUDE APPROPRIATE MCU AND BOARD FILES
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#include "r_bsp_config.h"
|
||||||
|
#include "iorx111.h"
|
||||||
|
#include ".\mcu\rx111\mcu_info.h"
|
||||||
|
#include ".\board\rskrx111\rskrx111.h"
|
||||||
|
#include ".\board\rskrx111\lcd.h"
|
||||||
|
|
||||||
|
#endif /* PLATFORM_BOARD_RSKRX111 */
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,250 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_bsp_config_reference.c
|
||||||
|
* Device(s) : RX111
|
||||||
|
* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included
|
||||||
|
* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h)
|
||||||
|
* is just a reference file that the user can use to make their own r_bsp_config.h file.
|
||||||
|
************************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 07.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#ifndef R_BSP_CONFIG_REF_HEADER_FILE
|
||||||
|
#define R_BSP_CONFIG_REF_HEADER_FILE
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Configuration Options
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Enter the product part number for your MCU. This information will be used to obtain information about your MCU such
|
||||||
|
as package and memory size.
|
||||||
|
To help parse this information, the part number will be defined using multiple macros.
|
||||||
|
R 5 F 51 11 5 A D FM
|
||||||
|
| | | | | | | | | Macro Name Description
|
||||||
|
| | | | | | | | |__MCU_PART_PACKAGE = Package type, number of pins, and pin pitch
|
||||||
|
| | | | | | | |____not used = Products with wide temperature range (D: -40 to 85C G: -40 to 105C)
|
||||||
|
| | | | | | |______not used = Blank
|
||||||
|
| | | | | |________MCU_PART_MEMORY_SIZE = ROM, RAM, and Data Flash Capacity
|
||||||
|
| | | | |___________MCU_PART_GROUP = Group name
|
||||||
|
| | | |______________MCU_PART_SERIES = Series name
|
||||||
|
| | |________________MCU_PART_MEMORY_TYPE = Type of memory (Flash)
|
||||||
|
| |__________________not used = Renesas MCU
|
||||||
|
|____________________not used = Renesas semiconductor product.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Package type. Set the macro definition based on values below:
|
||||||
|
Character(s) = Value for macro = Package Type/Number of Pins/Pin Pitch
|
||||||
|
FM = 0x0 = LFQFP/64/0.50
|
||||||
|
FK = 0x1 = LQFP/64/0.80
|
||||||
|
LF = 0x2 = TFLGA/64/0.50
|
||||||
|
FL = 0x3 = LFQFP/48/0.50
|
||||||
|
NE = 0x4 = VQFN/48/0.50
|
||||||
|
NC = 0x5 = HWQFN/36/0.50
|
||||||
|
LM = 0x6 = WFLGA/36/0.50
|
||||||
|
SB = 0x7 = SSOP/36/0.80
|
||||||
|
*/
|
||||||
|
#define MCU_PART_PACKAGE (0x0)
|
||||||
|
|
||||||
|
/* ROM, RAM, and Data Flash Capacity.
|
||||||
|
Character(s) = Value for macro = ROM Size/Ram Size/Data Flash Size
|
||||||
|
5 = 0x5 = 128KB/16KB/8KB
|
||||||
|
4 = 0x4 = 96KB/16KB/8KB
|
||||||
|
3 = 0x3 = 64KB/10KB/8KB
|
||||||
|
1 = 0x1 = 32KB/10KB/8KB
|
||||||
|
J = 0x0 = 16KB/8KB/8KB
|
||||||
|
*/
|
||||||
|
#define MCU_PART_MEMORY_SIZE (0x5)
|
||||||
|
|
||||||
|
/* Group name.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
10 = 0x0 = RX110 Group
|
||||||
|
11 = 0x1 = RX111 Group
|
||||||
|
*/
|
||||||
|
#define MCU_PART_GROUP (0x1)
|
||||||
|
|
||||||
|
/* Series name.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
51 = 0x0 = RX100 Series
|
||||||
|
*/
|
||||||
|
#define MCU_PART_SERIES (0x0)
|
||||||
|
|
||||||
|
/* Memory type.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
F = 0x0 = Flash memory version
|
||||||
|
*/
|
||||||
|
#define MCU_PART_MEMORY_TYPE (0x0)
|
||||||
|
|
||||||
|
/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a
|
||||||
|
'#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */
|
||||||
|
#if defined(BSP_DECLARE_STACK)
|
||||||
|
/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||||
|
#pragma stacksize su=0x400
|
||||||
|
/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||||
|
#pragma stacksize si=0x100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Heap size in bytes. */
|
||||||
|
#define HEAP_BYTES (0x400)
|
||||||
|
|
||||||
|
/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information
|
||||||
|
on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual.
|
||||||
|
0 = Stay in Supervisor mode.
|
||||||
|
1 = Switch to User mode.
|
||||||
|
*/
|
||||||
|
#define RUN_IN_USER_MODE (0)
|
||||||
|
|
||||||
|
|
||||||
|
/* This macro lets other modules no if a RTOS is being used.
|
||||||
|
0 = RTOS is not used.
|
||||||
|
1 = RTOS is used.
|
||||||
|
*/
|
||||||
|
#define RTOS_USED (0)
|
||||||
|
|
||||||
|
/* Clock source select (CKSEL).
|
||||||
|
0 = Low Speed On-Chip Oscillator (LOCO)
|
||||||
|
1 = High Speed On-Chip Oscillator (HOCO)
|
||||||
|
2 = Main Clock Oscillator
|
||||||
|
3 = Sub-Clock Oscillator
|
||||||
|
4 = PLL Circuit
|
||||||
|
*/
|
||||||
|
#define CLOCK_SOURCE (4)
|
||||||
|
|
||||||
|
/* Clock configuration options.
|
||||||
|
The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The
|
||||||
|
multiplier settings are used to set the clock registers in resetprg.c. If a 16MHz clock is used and the
|
||||||
|
ICLK is 24MHz, PCLKB is 24MHz, FCLK is 24MHz, PCLKD is 24MHz, and CKO is 1MHz then the
|
||||||
|
settings would be:
|
||||||
|
|
||||||
|
XTAL_HZ = 16000000
|
||||||
|
PLL_DIV = 2
|
||||||
|
PLL_MUL = 6 (16MHz x 3 = 48MHz)
|
||||||
|
ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 24MHz
|
||||||
|
PCKB_DIV = 2 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 24MHz
|
||||||
|
PCKD_DIV = 2 : Peripheral Clock D (PCLKD) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV) = 24MHz
|
||||||
|
FCK_DIV = 2 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 24MHz
|
||||||
|
*/
|
||||||
|
/* XTAL - Input clock frequency in Hz */
|
||||||
|
#define XTAL_HZ (16000000)
|
||||||
|
/* PLL Input Frequency Divider Select (PLIDIV).
|
||||||
|
Available divisors = /1 (no division), /2, /4
|
||||||
|
*/
|
||||||
|
#define PLL_DIV (2)
|
||||||
|
/* PLL Frequency Multiplication Factor Select (STC).
|
||||||
|
Available multipliers = x6, x8
|
||||||
|
*/
|
||||||
|
#define PLL_MUL (6)
|
||||||
|
/* System Clock Divider (ICK).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define ICK_DIV (2)
|
||||||
|
/* Peripheral Module Clock B Divider (PCKB).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define PCKB_DIV (2)
|
||||||
|
/* Peripheral Module Clock D Divider (PCKD).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define PCKD_DIV (2)
|
||||||
|
/* Flash IF Clock Divider (FCK).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define FCK_DIV (2)
|
||||||
|
|
||||||
|
/* Below are callback functions that can be used for detecting MCU exceptions, undefined interrupt sources, and
|
||||||
|
bus errors. If the user wishes to be alerted of these events then they will need to define the macro as a
|
||||||
|
function to be called when the event occurs. For example, if the user wanted the function
|
||||||
|
excep_undefined_instr_isr() to be called when an undefined interrupt source ISR is triggered then they would
|
||||||
|
do the following:
|
||||||
|
#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||||
|
If the user does not wish to be alerted of these events then they should comment out the macros.
|
||||||
|
|
||||||
|
NOTE: When a callback function is called it will be called from within a ISR. This means that the function
|
||||||
|
will essentially be an interrupt and will hold off other interrupts that occur in the system while it
|
||||||
|
is executing. For this reason, it is recommended to keep these callback functions short as to not
|
||||||
|
decrease the real-time response of your system.
|
||||||
|
*/
|
||||||
|
/* Callback for Supervisor Instruction Violation Exception. */
|
||||||
|
//#define EXCEP_SUPERVISOR_ISR_CALLBACK supervisor_instr_cb
|
||||||
|
|
||||||
|
/* Callback for Undefined Instruction Exception. */
|
||||||
|
//#define EXCEP_UNDEFINED_INSTR_ISR_CALLBACK undefined_instr_cb
|
||||||
|
|
||||||
|
/* Callback for Non-maskable Interrupt. */
|
||||||
|
//#define NMI_ISR_CALLBACK nmi_cb
|
||||||
|
|
||||||
|
/* Callback for all undefined interrupt vectors. User can set a breakpoint in this function to determine which source
|
||||||
|
is creating unwanted interrupts. */
|
||||||
|
//#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||||
|
|
||||||
|
/* Callback for Bus Error Interrupt. */
|
||||||
|
//#define BUS_ERROR_ISR_CALLBACK bus_error_cb
|
||||||
|
|
||||||
|
/* The user has the option of separately choosing little or big endian for the User Application Area */
|
||||||
|
|
||||||
|
/* Endian mode for User Application.
|
||||||
|
0 = Big Endian
|
||||||
|
Else = Little Endian (Default)
|
||||||
|
*/
|
||||||
|
#define USER_APP_ENDIAN (1)
|
||||||
|
|
||||||
|
|
||||||
|
/* Configure WDT and IWDT settings.
|
||||||
|
OFS0 - Option Function Select Register 0
|
||||||
|
OFS0 - Option Function Select Register 0
|
||||||
|
b31:b15 Reserved (set to 1)
|
||||||
|
b14 IWDTSLCSTP - IWDT Sleep Mode Count Stop Control - (0=can't stop count, 1=stop w/some low power modes)
|
||||||
|
b13 Reserved (set to 1)
|
||||||
|
b12 IWDTRSTIRQS - IWDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU)
|
||||||
|
b11:b10 IWDTRPSS - IWDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use)
|
||||||
|
b9:b8 IWDTRPES - IWDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use)
|
||||||
|
b7:b4 IWDTCKS - IWDT Clock Frequency Division Ratio - (0=none, 2=/16, 3 = /32, 4=/64, 0xF=/128, 5=/256)
|
||||||
|
b3:b2 IWDTTOPS - IWDT Timeout Period Select - (0=128 cycles, 1=512, 2=1024, 3=2048)
|
||||||
|
b1 IWDTSTRT - IWDT Start Mode Select - (0=auto-start after reset, 1=halt after reset)
|
||||||
|
b0 Reserved (set to 1) */
|
||||||
|
#define OFS0_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||||
|
|
||||||
|
/* Configure whether voltage detection 1 circuit and HOCO are enabled after reset.
|
||||||
|
OFS1 - Option Function Select Register 1
|
||||||
|
b31:b9 Reserved (set to 1)
|
||||||
|
b8 HOCOEN - Enable/disable HOCO oscillation after a reset (0=enable, 1=disable)
|
||||||
|
b7:b4 STUPLVD1LVL - Startup Voltage Monitoring 1 Reset Detection Level Select
|
||||||
|
0 1 0 0: 3.10 V
|
||||||
|
0 1 0 1: 3.00 V
|
||||||
|
0 1 1 0: 2.90 V
|
||||||
|
0 1 1 1: 2.79 V
|
||||||
|
1 0 0 0: 2.68 V
|
||||||
|
1 0 0 1: 2.58 V
|
||||||
|
1 0 1 0: 2.48 V
|
||||||
|
1 0 1 1: 2.06 V
|
||||||
|
1 1 0 0: 1.96 V
|
||||||
|
1 1 0 1: 1.86 V
|
||||||
|
b3:b2 Reserved (set to 1)
|
||||||
|
b2 STUPLVD1REN - Startup Voltage Monitoring 1 Reset Enable (1=monitoring disabled)
|
||||||
|
b0 FASTSTUP - Power-On Fast Startup Time (1=normal; read only) */
|
||||||
|
#define OFS1_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||||
|
|
||||||
|
/* Initializes C input & output library functions.
|
||||||
|
0 = Disable I/O library initialization in resetprg.c. If you are not using stdio then use this value.
|
||||||
|
1 = Enable I/O library initialization in resetprg.c. This is default and needed if you are using stdio. */
|
||||||
|
#define IO_LIB_ENABLE (1)
|
||||||
|
|
||||||
|
#endif /* R_BSP_CONFIG_REF_HEADER_FILE */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : rskrx111.h
|
||||||
|
* H/W Platform : RSKRX111
|
||||||
|
* Description : Board specific definitions for the RSKRX111.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef RSKRX111_H
|
||||||
|
#define RSKRX111_H
|
||||||
|
|
||||||
|
/* Local defines */
|
||||||
|
#define LED_ON (0)
|
||||||
|
#define LED_OFF (1)
|
||||||
|
#define SET_BIT_HIGH (1)
|
||||||
|
#define SET_BIT_LOW (0)
|
||||||
|
#define SET_BYTE_HIGH (0xFF)
|
||||||
|
#define SET_BYTE_LOW (0x00)
|
||||||
|
|
||||||
|
/* Switches */
|
||||||
|
#define SW_ACTIVE 0
|
||||||
|
#define SW1 PORT3.PIDR.BIT.B0
|
||||||
|
#define SW2 PORT3.PIDR.BIT.B1
|
||||||
|
#define SW3 PORTE.PIDR.BIT.B4
|
||||||
|
#define SW1_PDR PORT3.PDR.BIT.B0
|
||||||
|
#define SW2_PDR PORT3.PDR.BIT.B1
|
||||||
|
#define SW3_PDR PORTE.PDR.BIT.B4
|
||||||
|
#define SW1_PMR PORT3.PMR.BIT.B0
|
||||||
|
#define SW2_PMR PORT3.PMR.BIT.B1
|
||||||
|
#define SW3_PMR PORTE.PMR.BIT.B4
|
||||||
|
|
||||||
|
/* LEDs */
|
||||||
|
#define LED0 PORTB.PODR.BIT.B7
|
||||||
|
#define LED1 PORTA.PODR.BIT.B0
|
||||||
|
#define LED2 PORT5.PODR.BIT.B4
|
||||||
|
#define LED3 PORT1.PODR.BIT.B7
|
||||||
|
#define LED0_PDR PORTB.PDR.BIT.B7
|
||||||
|
#define LED1_PDR PORTA.PDR.BIT.B0
|
||||||
|
#define LED2_PDR PORT5.PDR.BIT.B4
|
||||||
|
#define LED3_PDR PORT1.PDR.BIT.B7
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* RSKRX111_H */
|
|
@ -0,0 +1,366 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : hwsetup.c
|
||||||
|
* Device(s) : RX
|
||||||
|
* H/W Platform : RSKRX210
|
||||||
|
* Description : Defines the initialization routines used each time the MCU is restarted.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* I/O Register and board definitions */
|
||||||
|
#include "platform.h"
|
||||||
|
#include "r_switches_if.h"
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Private global variables and functions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* MCU I/O port configuration function delcaration */
|
||||||
|
static void output_ports_configure(void);
|
||||||
|
|
||||||
|
/* Interrupt configuration function delcaration */
|
||||||
|
static void interrupts_configure(void);
|
||||||
|
|
||||||
|
/* MCU peripheral module configuration function declaration */
|
||||||
|
static void peripheral_modules_enable(void);
|
||||||
|
|
||||||
|
/* Configure MCU clocks. */
|
||||||
|
static void clock_source_select (void);
|
||||||
|
void operating_frequency_set(void);
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: hardware_setup
|
||||||
|
* Description : Contains setup functions called at device restart
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void vHardwareSetup(void)
|
||||||
|
{
|
||||||
|
operating_frequency_set();
|
||||||
|
output_ports_configure();
|
||||||
|
interrupts_configure();
|
||||||
|
peripheral_modules_enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: output_ports_configure
|
||||||
|
* Description : Configures the port and pin direction settings, and sets the pin outputs to a safe level.
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void output_ports_configure(void)
|
||||||
|
{
|
||||||
|
/* Enable LEDs. */
|
||||||
|
/* Start with LEDs off. */
|
||||||
|
LED0 = LED_OFF;
|
||||||
|
LED1 = LED_OFF;
|
||||||
|
LED2 = LED_OFF;
|
||||||
|
LED3 = LED_OFF;
|
||||||
|
|
||||||
|
/* Set LED pins as outputs. */
|
||||||
|
LED0_PDR = 1;
|
||||||
|
LED1_PDR = 1;
|
||||||
|
LED2_PDR = 1;
|
||||||
|
LED3_PDR = 1;
|
||||||
|
|
||||||
|
/* Enable switches. */
|
||||||
|
/* Set pins as inputs. */
|
||||||
|
SW1_PDR = 0;
|
||||||
|
SW2_PDR = 0;
|
||||||
|
SW3_PDR = 0;
|
||||||
|
|
||||||
|
/* Set port mode registers for switches. */
|
||||||
|
SW1_PMR = 0;
|
||||||
|
SW2_PMR = 0;
|
||||||
|
SW3_PMR = 0;
|
||||||
|
|
||||||
|
/* Unlock MPC registers to enable writing to them. */
|
||||||
|
MPC.PWPR.BIT.B0WI = 0 ; /* Unlock protection register */
|
||||||
|
MPC.PWPR.BIT.PFSWE = 1 ; /* Unlock MPC registers */
|
||||||
|
|
||||||
|
/* TXD1 is output. */
|
||||||
|
PORT1.PDR.BIT.B6 = 1;
|
||||||
|
PORT1.PMR.BIT.B6 = 1;
|
||||||
|
MPC.P16PFS.BYTE = 0x0A;
|
||||||
|
/* RXD1 is input. */
|
||||||
|
PORT1.PDR.BIT.B5 = 0;
|
||||||
|
PORT1.PMR.BIT.B5 = 1;
|
||||||
|
MPC.P15PFS.BYTE = 0x0A;
|
||||||
|
|
||||||
|
/* Configure the pin connected to the ADC Pot as an input */
|
||||||
|
PORT4.PDR.BIT.B4 = 0;
|
||||||
|
|
||||||
|
/* Protect off. */
|
||||||
|
SYSTEM.PRCR.WORD = 0xA50B;
|
||||||
|
|
||||||
|
/* Turn off module stop for the A2D converter. */
|
||||||
|
SYSTEM.MSTPCRA.BIT.MSTPA17 = 0;
|
||||||
|
|
||||||
|
/* Protect on. */
|
||||||
|
SYSTEM.PRCR.WORD = 0xA500;
|
||||||
|
|
||||||
|
/* Initialise the first button to generate an interrupt. */
|
||||||
|
R_SWITCHES_Init();
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: interrupts_configure
|
||||||
|
* Description : Configures interrupts used
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void interrupts_configure(void)
|
||||||
|
{
|
||||||
|
/* Add code here to setup additional interrupts */
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: peripheral_modules_enable
|
||||||
|
* Description : Enables and configures peripheral devices on the MCU
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void peripheral_modules_enable(void)
|
||||||
|
{
|
||||||
|
/* Enable triggers to start an ADC conversion. */
|
||||||
|
S12AD.ADCSR.BIT.TRGE = 1;
|
||||||
|
|
||||||
|
/* Only channel 4 is going to be used. */
|
||||||
|
S12AD.ADANSA.BIT.ANSA4 = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: operating_frequency_set
|
||||||
|
* Description : Configures the clock settings for each of the device clocks
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void operating_frequency_set(void)
|
||||||
|
{
|
||||||
|
/* Used for constructing value to write to SCKCR and CKOCR registers. */
|
||||||
|
uint32_t temp_clock = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Clock Description Frequency
|
||||||
|
----------------------------------------
|
||||||
|
Input Clock Frequency............ 16 MHz
|
||||||
|
PLL frequency (x3)............... 48 MHz
|
||||||
|
Internal Clock Frequency......... 24 MHz
|
||||||
|
Peripheral Clock Frequency....... 24 MHz
|
||||||
|
Clock Out Frequency.............. 1 MHz */
|
||||||
|
|
||||||
|
volatile unsigned int i;
|
||||||
|
|
||||||
|
/* Protect off. */
|
||||||
|
SYSTEM.PRCR.WORD = 0xA50B;
|
||||||
|
|
||||||
|
/* Select the clock based upon user's choice. */
|
||||||
|
clock_source_select();
|
||||||
|
|
||||||
|
|
||||||
|
/* Figure out setting for FCK bits. */
|
||||||
|
#if FCK_DIV == 1
|
||||||
|
/* Do nothing since FCK bits should be 0. */
|
||||||
|
#elif FCK_DIV == 2
|
||||||
|
temp_clock |= 0x10000000;
|
||||||
|
#elif FCK_DIV == 4
|
||||||
|
temp_clock |= 0x20000000;
|
||||||
|
#elif FCK_DIV == 8
|
||||||
|
temp_clock |= 0x30000000;
|
||||||
|
#elif FCK_DIV == 16
|
||||||
|
temp_clock |= 0x40000000;
|
||||||
|
#elif FCK_DIV == 32
|
||||||
|
temp_clock |= 0x50000000;
|
||||||
|
#elif FCK_DIV == 64
|
||||||
|
temp_clock |= 0x60000000;
|
||||||
|
#else
|
||||||
|
#error "Error! Invalid setting for FCK_DIV in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Figure out setting for ICK bits. */
|
||||||
|
#if ICK_DIV == 1
|
||||||
|
/* Do nothing since ICK bits should be 0. */
|
||||||
|
#elif ICK_DIV == 2
|
||||||
|
temp_clock |= 0x01000000;
|
||||||
|
#elif ICK_DIV == 4
|
||||||
|
temp_clock |= 0x02000000;
|
||||||
|
#elif ICK_DIV == 8
|
||||||
|
temp_clock |= 0x03000000;
|
||||||
|
#elif ICK_DIV == 16
|
||||||
|
temp_clock |= 0x04000000;
|
||||||
|
#elif ICK_DIV == 32
|
||||||
|
temp_clock |= 0x05000000;
|
||||||
|
#elif ICK_DIV == 64
|
||||||
|
temp_clock |= 0x06000000;
|
||||||
|
#else
|
||||||
|
#error "Error! Invalid setting for ICK_DIV in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Figure out setting for PCKB bits. */
|
||||||
|
#if PCKB_DIV == 1
|
||||||
|
/* Do nothing since PCKB bits should be 0. */
|
||||||
|
#elif PCKB_DIV == 2
|
||||||
|
temp_clock |= 0x00000100;
|
||||||
|
#elif PCKB_DIV == 4
|
||||||
|
temp_clock |= 0x00000200;
|
||||||
|
#elif PCKB_DIV == 8
|
||||||
|
temp_clock |= 0x00000300;
|
||||||
|
#elif PCKB_DIV == 16
|
||||||
|
temp_clock |= 0x00000400;
|
||||||
|
#elif PCKB_DIV == 32
|
||||||
|
temp_clock |= 0x00000500;
|
||||||
|
#elif PCKB_DIV == 64
|
||||||
|
temp_clock |= 0x00000600;
|
||||||
|
#else
|
||||||
|
#error "Error! Invalid setting for PCKB_DIV in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Figure out setting for PCKD bits. */
|
||||||
|
#if PCKD_DIV == 1
|
||||||
|
/* Do nothing since PCKD bits should be 0. */
|
||||||
|
#elif PCKD_DIV == 2
|
||||||
|
temp_clock |= 0x00000001;
|
||||||
|
#elif PCKD_DIV == 4
|
||||||
|
temp_clock |= 0x00000002;
|
||||||
|
#elif PCKD_DIV == 8
|
||||||
|
temp_clock |= 0x00000003;
|
||||||
|
#elif PCKD_DIV == 16
|
||||||
|
temp_clock |= 0x00000004;
|
||||||
|
#elif PCKD_DIV == 32
|
||||||
|
temp_clock |= 0x00000005;
|
||||||
|
#elif PCKD_DIV == 64
|
||||||
|
temp_clock |= 0x00000006;
|
||||||
|
#else
|
||||||
|
#error "Error! Invalid setting for PCKD_DIV in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Set SCKCR register. */
|
||||||
|
SYSTEM.SCKCR.LONG = temp_clock;
|
||||||
|
|
||||||
|
/* Choose clock source. Default for r_bsp_config.h is PLL. */
|
||||||
|
SYSTEM.SCKCR3.WORD = ((uint16_t)CLOCK_SOURCE) << 8;
|
||||||
|
|
||||||
|
/* Protect on. */
|
||||||
|
SYSTEM.PRCR.WORD = 0xA500;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: clock_source_select
|
||||||
|
* Description : Enables and disables clocks as chosen by the user. This function also implements the software delays
|
||||||
|
* needed for the clocks to stabilize.
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void clock_source_select (void)
|
||||||
|
{
|
||||||
|
/* Declared volatile for software delay purposes. */
|
||||||
|
volatile unsigned int i;
|
||||||
|
|
||||||
|
/* NOTE: AS OF VERSION 0.50 OF THE RX111 HARDWARE MANUAL, ALL OF THE CLOCK
|
||||||
|
* STABILIZATION TIMES ARE TBD. FOR NOW, WHERE EVER A WAIT COUNT REGISTER
|
||||||
|
* IS AVAILABLE, THE DELAY IS SET TO THE MAX NUMBER OF CYCLES. WHERE EVER
|
||||||
|
* DELAY LOOPS ARE PRESENT, THE VALUES FROM THE 63N ARE RE-USED. KEEP IN
|
||||||
|
* MIND THAT THE 63N RUNS ON A FASTER CRYSTAL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if (CLOCK_SOURCE == 1)
|
||||||
|
/* HOCO is chosen. Start it operating. */
|
||||||
|
SYSTEM.HOCOCR.BYTE = 0x00;
|
||||||
|
/* The delay period needed is to make sure that the HOCO has stabilized.*/
|
||||||
|
for(i = 0; i< 28; i++) // tHOCOWT2 is TBD
|
||||||
|
{
|
||||||
|
__asm volatile( "NOP" );
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
/* HOCO is not chosen. Stop the HOCO. */
|
||||||
|
SYSTEM.HOCOCR.BYTE = 0x01;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CLOCK_SOURCE == 2)
|
||||||
|
/* Main clock oscillator is chosen. Start it operating. */
|
||||||
|
SYSTEM.MOSCWTCR.BYTE = 0x07; // Wait 65,536 cycles
|
||||||
|
/* Set the main clock to operating. */
|
||||||
|
SYSTEM.MOSCCR.BYTE = 0x00;
|
||||||
|
/* The delay period needed is to make sure that the main clock has stabilized. */
|
||||||
|
for(i = 0; i< 140; i++) // tMAINOSCWT is TBD
|
||||||
|
{
|
||||||
|
__asm volatile( "NOT" );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CLOCK_SOURCE == 3)
|
||||||
|
/* Sub-clock oscillator is chosen. Start it operating. */
|
||||||
|
/* In section 9.8.4, there is a reference to a SOSCWTCR register, but there is no
|
||||||
|
* description for this register in the manual nor reference for it in iorx111.h. */
|
||||||
|
|
||||||
|
/* Set the sub-clock to operating. */
|
||||||
|
SYSTEM.SOSCCR.BYTE = 0x00;
|
||||||
|
/* The delay period needed is to make sure that the sub-clock has stabilized. */
|
||||||
|
for(i = 0; i< 30233; i++) // tSUBOSCWT0 is TBD
|
||||||
|
{
|
||||||
|
__asm volatile( "NOP" );
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
/* Set the sub-clock to stopped. */
|
||||||
|
SYSTEM.SOSCCR.BYTE = 0x01;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CLOCK_SOURCE == 4)
|
||||||
|
/* PLL is chosen. Start it operating. Must start main clock as well since PLL uses it. */
|
||||||
|
SYSTEM.MOSCWTCR.BYTE = 0x07; // Wait 65,536 cycles
|
||||||
|
/* Set the main clock to operating. */
|
||||||
|
SYSTEM.MOSCCR.BYTE = 0x00;
|
||||||
|
|
||||||
|
/* Set PLL Input Divisor. */
|
||||||
|
SYSTEM.PLLCR.BIT.PLIDIV = PLL_DIV >> 1;
|
||||||
|
|
||||||
|
/* Set PLL Multiplier. */
|
||||||
|
SYSTEM.PLLCR.BIT.STC = (PLL_MUL * 2) - 1;
|
||||||
|
|
||||||
|
/* Set the PLL to operating. */
|
||||||
|
SYSTEM.PLLCR2.BYTE = 0x00;
|
||||||
|
/* The delay period needed is to make sure that the main clock and PLL have stabilized. */
|
||||||
|
for(i = 0; i< 140; i++) // tPLLWT2 is TBD
|
||||||
|
{
|
||||||
|
__asm volatile( "NOP" );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* LOCO is saved for last since it is what is running by default out of reset. This means you do not want to turn
|
||||||
|
it off until another clock has been enabled and is ready to use. */
|
||||||
|
#if (CLOCK_SOURCE == 0)
|
||||||
|
/* LOCO is chosen. This is the default out of reset. */
|
||||||
|
SYSTEM.LOCOCR.BYTE = 0x00;
|
||||||
|
#else
|
||||||
|
/* LOCO is not chosen and another clock has already been setup. Turn off the LOCO. */
|
||||||
|
SYSTEM.LOCOCR.BYTE = 0x01;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Make sure a valid clock was chosen. */
|
||||||
|
#if (CLOCK_SOURCE > 4) || (CLOCK_SOURCE < 0)
|
||||||
|
#error "ERROR - Valid clock source must be chosen in r_bsp_config.h using CLOCK_SOURCE macro."
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_bsp.h
|
||||||
|
* Description : Has the header files that should be included for this platform.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 13.01.2012 1.00 First Release
|
||||||
|
* : 27.06.2012 1.10 Updated with new information to reflect udpated r_bsp structure.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef PLATFORM_BOARD_USER
|
||||||
|
#define PLATFORM_BOARD_USER
|
||||||
|
|
||||||
|
/* Make sure that no other platforms have already been defined. Do not touch this! */
|
||||||
|
#ifdef PLATFORM_DEFINED
|
||||||
|
#error "Error - Multiple platforms defined in platform.h!"
|
||||||
|
#else
|
||||||
|
#define PLATFORM_DEFINED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
INCLUDE APPROPRIATE MCU AND BOARD FILES
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* This is a user defined board. Start off by:
|
||||||
|
1)Copy and rename one of the 'board' folders that most closely matches your system (same MCU Series and Group).
|
||||||
|
2)Substitute in your MCU Group for the *MCU Group* option in the #include below for mcu_info.h.
|
||||||
|
3)Copy the other #includes from the r_bsp.h in the 'board' folder that you copied earlier.
|
||||||
|
4)Configure the BSP for your board by modifying the r_bsp_config_reference.h.
|
||||||
|
5)Copy r_bsp_config_reference.h to your project directory and rename it r_bsp_config.h.
|
||||||
|
You can also add your own include files here as well. */
|
||||||
|
#include "r_bsp_config.h"
|
||||||
|
#include ".\mcu\*MCU Group*\mcu_info.h"
|
||||||
|
|
||||||
|
#endif /* PLATFORM_BOARD_USER */
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,112 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : mcu_info.h
|
||||||
|
* Device(s) : RX111
|
||||||
|
* Description : Information about the MCU on this board (RSKRX111).
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _MCU_INFO
|
||||||
|
#define _MCU_INFO
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Gets MCU configuration information. */
|
||||||
|
#include "r_bsp_config.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* MCU Series. */
|
||||||
|
#if MCU_PART_SERIES == 0x0
|
||||||
|
#define MCU_SERIES_RX100 (1)
|
||||||
|
#else
|
||||||
|
#error "ERROR - MCU_PART_SERIES - Unknown MCU Series chosen in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* MCU Group name. */
|
||||||
|
#if MCU_PART_GROUP == 0x1
|
||||||
|
#define MCU_RX111 (1)
|
||||||
|
#define MCU_RX11x (1)
|
||||||
|
#else
|
||||||
|
#error "ERROR - MCU_PART_GROUP - Unknown MCU Group chosen in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Package. */
|
||||||
|
#if MCU_PART_PACKAGE == 0x0
|
||||||
|
#define PACKAGE_LFQFP64 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x1
|
||||||
|
#define PACKAGE_LQFP64 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x2
|
||||||
|
#define PACKAGE_TFLGA64 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x3
|
||||||
|
#define PACKAGE_LFQFP48 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x4
|
||||||
|
#define PACKAGE_VQFN48 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x5
|
||||||
|
#define PACKAGE_HWQFN36 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x6
|
||||||
|
#define PACKAGE_WFLGA36 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x7
|
||||||
|
#define PACKAGE_SSOP36 (1)
|
||||||
|
#else
|
||||||
|
#error "ERROR - MCU_PART_PACKAGE - Unknown package chosen in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Memory size of your MCU. */
|
||||||
|
#if MCU_PART_MEMORY_SIZE == 0x0 // "J" parts
|
||||||
|
#define ROM_SIZE_BYTES (16384)
|
||||||
|
#define RAM_SIZE_BYTES (8192)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#elif MCU_PART_MEMORY_SIZE == 0x1
|
||||||
|
#define ROM_SIZE_BYTES (32768)
|
||||||
|
#define RAM_SIZE_BYTES (10240)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#elif MCU_PART_MEMORY_SIZE == 0x3
|
||||||
|
#define ROM_SIZE_BYTES (65536)
|
||||||
|
#define RAM_SIZE_BYTES (10240)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#elif MCU_PART_MEMORY_SIZE == 0x4
|
||||||
|
#define ROM_SIZE_BYTES (98304)
|
||||||
|
#define RAM_SIZE_BYTES (16384)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#elif MCU_PART_MEMORY_SIZE == 0x5
|
||||||
|
#define ROM_SIZE_BYTES (131072)
|
||||||
|
#define RAM_SIZE_BYTES (16384)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#else
|
||||||
|
#error "ERROR - MCU_PART_MEMORY_SIZE - Unknown memory size chosen in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* System clock speed in Hz. */
|
||||||
|
#define ICLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV)
|
||||||
|
/* Peripheral Module Clock B speed in Hz. */
|
||||||
|
#define PCLKB_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV)
|
||||||
|
/* Peripheral Module Clock D speed in Hz. */
|
||||||
|
#define PCLKD_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV)
|
||||||
|
/* FlashIF clock speed in Hz. */
|
||||||
|
#define FCLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV)
|
||||||
|
|
||||||
|
#endif /* _MCU_INFO */
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
/***********************************************************************/
|
||||||
|
/* */
|
||||||
|
/* PROJECT NAME : RTOSDemo_GCC */
|
||||||
|
/* FILE : typedefine.h */
|
||||||
|
/* DESCRIPTION : Aliases of Integer Type */
|
||||||
|
/* CPU SERIES : RX100 */
|
||||||
|
/* CPU TYPE : RX111 */
|
||||||
|
/* */
|
||||||
|
/* This file is generated by e2studio. */
|
||||||
|
/* */
|
||||||
|
/***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef signed char _SBYTE;
|
||||||
|
typedef unsigned char _UBYTE;
|
||||||
|
typedef signed short _SWORD;
|
||||||
|
typedef unsigned short _UWORD;
|
||||||
|
typedef signed int _SINT;
|
||||||
|
typedef unsigned int _UINT;
|
||||||
|
typedef signed long _SDWORD;
|
||||||
|
typedef unsigned long _UDWORD;
|
||||||
|
typedef signed long long _SQWORD;
|
||||||
|
typedef unsigned long long _UQWORD;
|
88
FreeRTOS/Demo/RX100-RSK_IAR/Renesas_Files/r_bsp/platform.h
Normal file
88
FreeRTOS/Demo/RX100-RSK_IAR/Renesas_Files/r_bsp/platform.h
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : platform.h
|
||||||
|
* Description : The user chooses which MCU and board they are developing for in this file. If the board you are using
|
||||||
|
* is not listed below, please add your own or use the default 'User Board'.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 30.11.2011 1.00 First Release
|
||||||
|
* : 13.01.2012 1.10 Moved from having platform defined using macro defintion, to having platform defined
|
||||||
|
* by choosing an include path. This makes this file simpler and cleans up the issue
|
||||||
|
* where HEW shows all header files for all platforms under 'Dependencies'.
|
||||||
|
* : 14.02.2012 1.20 Added RX210 BSP.
|
||||||
|
* : 18.04.2012 1.30 Updated to v0.70 of FIT S/W Spec and v0.20 of FIT r_bsp Spec. This includes adding
|
||||||
|
* locking.c and locking.h in board folders. Also, r_bsp can now be configured through
|
||||||
|
* r_bsp_config.h.
|
||||||
|
* : 26.06.2012 1.40 Added new options such as exception callbacks and the ability to choose your MCU using
|
||||||
|
* its part number in r_bsp_config.h. Moved mcu_info.h to the 'mcu' folder. Made an effort
|
||||||
|
* to remove any extra files that the user would need to touch. Removed the flash_options.c
|
||||||
|
* file and put its contents in vecttbl.c.
|
||||||
|
* : 17.07.2012 1.50 Fixed bug with exception callback function names. Added BCLK_OUTPUT and SDCLK_OUTPUT
|
||||||
|
* macro options in r_bsp_config.h. Added some extra code to handle exceptions in
|
||||||
|
* vecttbl.c. Added vecttbl.h so that user has prototypes for exception callbacks.
|
||||||
|
* : 08.11.2012 1.60 Added RX111 BSP
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _PLATFORM_H_
|
||||||
|
#define _PLATFORM_H_
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
DEFINE YOUR SYSTEM - UNCOMMENT THE INCLUDE PATH FOR THE PLATFORM YOU ARE USING.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* RSKRX610 */
|
||||||
|
//#include "./board/rskrx610/r_bsp.h"
|
||||||
|
|
||||||
|
/* RSKRX62N */
|
||||||
|
//#include "./board/rskrx62n/r_bsp.h"
|
||||||
|
|
||||||
|
/* RSKRX62T */
|
||||||
|
//#include "./board/rskrx62t/r_bsp.h"
|
||||||
|
|
||||||
|
/* RDKRX62N */
|
||||||
|
//#include "./board/rdkrx62n/r_bsp.h"
|
||||||
|
|
||||||
|
/* RSKRX630 */
|
||||||
|
//#include "./board/rskrx630/r_bsp.h"
|
||||||
|
|
||||||
|
/* RSKRX63N */
|
||||||
|
//#include "./board/rskrx63n/r_bsp.h"
|
||||||
|
|
||||||
|
/* RDKRX63N */
|
||||||
|
//#include "./board/rdkrx63n/r_bsp.h"
|
||||||
|
|
||||||
|
/* RSKRX210 */
|
||||||
|
//#include "./board/rskrx210/r_bsp.h"
|
||||||
|
|
||||||
|
/* RSKRX111 */
|
||||||
|
#include "./board/rskrx111/r_bsp.h"
|
||||||
|
|
||||||
|
/* User Board - Define your own board here. */
|
||||||
|
//#include "./board/user/r_bsp.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
MAKE SURE AT LEAST ONE PLATFORM WAS DEFINED - DO NOT EDIT BELOW THIS POINT
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#ifndef PLATFORM_DEFINED
|
||||||
|
#error "Error - No platform defined in platform.h!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _PLATFORM_H_ */
|
||||||
|
|
250
FreeRTOS/Demo/RX100-RSK_IAR/Renesas_Files/r_bsp/r_bsp_config.h
Normal file
250
FreeRTOS/Demo/RX100-RSK_IAR/Renesas_Files/r_bsp/r_bsp_config.h
Normal file
|
@ -0,0 +1,250 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_bsp_config_reference.c
|
||||||
|
* Device(s) : RX111
|
||||||
|
* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included
|
||||||
|
* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h)
|
||||||
|
* is just a reference file that the user can use to make their own r_bsp_config.h file.
|
||||||
|
************************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 07.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#ifndef R_BSP_CONFIG_REF_HEADER_FILE
|
||||||
|
#define R_BSP_CONFIG_REF_HEADER_FILE
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Configuration Options
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Enter the product part number for your MCU. This information will be used to obtain information about your MCU such
|
||||||
|
as package and memory size.
|
||||||
|
To help parse this information, the part number will be defined using multiple macros.
|
||||||
|
R 5 F 51 11 5 A D FM
|
||||||
|
| | | | | | | | | Macro Name Description
|
||||||
|
| | | | | | | | |__MCU_PART_PACKAGE = Package type, number of pins, and pin pitch
|
||||||
|
| | | | | | | |____not used = Products with wide temperature range (D: -40 to 85C G: -40 to 105C)
|
||||||
|
| | | | | | |______not used = Blank
|
||||||
|
| | | | | |________MCU_PART_MEMORY_SIZE = ROM, RAM, and Data Flash Capacity
|
||||||
|
| | | | |___________MCU_PART_GROUP = Group name
|
||||||
|
| | | |______________MCU_PART_SERIES = Series name
|
||||||
|
| | |________________MCU_PART_MEMORY_TYPE = Type of memory (Flash)
|
||||||
|
| |__________________not used = Renesas MCU
|
||||||
|
|____________________not used = Renesas semiconductor product.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Package type. Set the macro definition based on values below:
|
||||||
|
Character(s) = Value for macro = Package Type/Number of Pins/Pin Pitch
|
||||||
|
FM = 0x0 = LFQFP/64/0.50
|
||||||
|
FK = 0x1 = LQFP/64/0.80
|
||||||
|
LF = 0x2 = TFLGA/64/0.50
|
||||||
|
FL = 0x3 = LFQFP/48/0.50
|
||||||
|
NE = 0x4 = VQFN/48/0.50
|
||||||
|
NC = 0x5 = HWQFN/36/0.50
|
||||||
|
LM = 0x6 = WFLGA/36/0.50
|
||||||
|
SB = 0x7 = SSOP/36/0.80
|
||||||
|
*/
|
||||||
|
#define MCU_PART_PACKAGE (0x0)
|
||||||
|
|
||||||
|
/* ROM, RAM, and Data Flash Capacity.
|
||||||
|
Character(s) = Value for macro = ROM Size/Ram Size/Data Flash Size
|
||||||
|
5 = 0x5 = 128KB/16KB/8KB
|
||||||
|
4 = 0x4 = 96KB/16KB/8KB
|
||||||
|
3 = 0x3 = 64KB/10KB/8KB
|
||||||
|
1 = 0x1 = 32KB/10KB/8KB
|
||||||
|
J = 0x0 = 16KB/8KB/8KB
|
||||||
|
*/
|
||||||
|
#define MCU_PART_MEMORY_SIZE (0x5)
|
||||||
|
|
||||||
|
/* Group name.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
10 = 0x0 = RX110 Group
|
||||||
|
11 = 0x1 = RX111 Group
|
||||||
|
*/
|
||||||
|
#define MCU_PART_GROUP (0x1)
|
||||||
|
|
||||||
|
/* Series name.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
51 = 0x0 = RX100 Series
|
||||||
|
*/
|
||||||
|
#define MCU_PART_SERIES (0x0)
|
||||||
|
|
||||||
|
/* Memory type.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
F = 0x0 = Flash memory version
|
||||||
|
*/
|
||||||
|
#define MCU_PART_MEMORY_TYPE (0x0)
|
||||||
|
|
||||||
|
/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a
|
||||||
|
'#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */
|
||||||
|
#if defined(BSP_DECLARE_STACK)
|
||||||
|
/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||||
|
#pragma stacksize su=0x400
|
||||||
|
/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||||
|
#pragma stacksize si=0x100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Heap size in bytes. */
|
||||||
|
#define HEAP_BYTES (0x001)
|
||||||
|
|
||||||
|
/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information
|
||||||
|
on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual.
|
||||||
|
0 = Stay in Supervisor mode.
|
||||||
|
1 = Switch to User mode.
|
||||||
|
*/
|
||||||
|
#define RUN_IN_USER_MODE (0)
|
||||||
|
|
||||||
|
|
||||||
|
/* This macro lets other modules no if a RTOS is being used.
|
||||||
|
0 = RTOS is not used.
|
||||||
|
1 = RTOS is used.
|
||||||
|
*/
|
||||||
|
#define RTOS_USED (0)
|
||||||
|
|
||||||
|
/* Clock source select (CKSEL).
|
||||||
|
0 = Low Speed On-Chip Oscillator (LOCO)
|
||||||
|
1 = High Speed On-Chip Oscillator (HOCO)
|
||||||
|
2 = Main Clock Oscillator
|
||||||
|
3 = Sub-Clock Oscillator
|
||||||
|
4 = PLL Circuit
|
||||||
|
*/
|
||||||
|
#define CLOCK_SOURCE (4) // GI org 4
|
||||||
|
|
||||||
|
/* Clock configuration options.
|
||||||
|
The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The
|
||||||
|
multiplier settings are used to set the clock registers in resetprg.c. If a 16MHz clock is used and the
|
||||||
|
ICLK is 24MHz, PCLKB is 24MHz, FCLK is 24MHz, PCLKD is 24MHz, and CKO is 1MHz then the
|
||||||
|
settings would be:
|
||||||
|
|
||||||
|
XTAL_HZ = 16000000
|
||||||
|
PLL_DIV = 2
|
||||||
|
PLL_MUL = 6 (16MHz x 3 = 48MHz)
|
||||||
|
ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 24MHz
|
||||||
|
PCKB_DIV = 2 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 24MHz
|
||||||
|
PCKD_DIV = 2 : Peripheral Clock D (PCLKD) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV) = 24MHz
|
||||||
|
FCK_DIV = 2 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 24MHz
|
||||||
|
*/
|
||||||
|
/* XTAL - Input clock frequency in Hz */
|
||||||
|
#define XTAL_HZ (16000000)
|
||||||
|
/* PLL Input Frequency Divider Select (PLIDIV).
|
||||||
|
Available divisors = /1 (no division), /2, /4
|
||||||
|
*/
|
||||||
|
#define PLL_DIV (2) // GI org 2
|
||||||
|
/* PLL Frequency Multiplication Factor Select (STC).
|
||||||
|
Available multipliers = x6, x8
|
||||||
|
*/
|
||||||
|
#define PLL_MUL (6) // GI org 6
|
||||||
|
/* System Clock Divider (ICK).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define ICK_DIV (2) // NOTE: ICLK CANNOT BE SLOWER THAN PCLK!
|
||||||
|
/* Peripheral Module Clock B Divider (PCKB).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define PCKB_DIV (2) // GI org 2
|
||||||
|
/* Peripheral Module Clock D Divider (PCKD).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define PCKD_DIV (2)
|
||||||
|
/* Flash IF Clock Divider (FCK).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define FCK_DIV (2)
|
||||||
|
|
||||||
|
/* Below are callback functions that can be used for detecting MCU exceptions, undefined interrupt sources, and
|
||||||
|
bus errors. If the user wishes to be alerted of these events then they will need to define the macro as a
|
||||||
|
function to be called when the event occurs. For example, if the user wanted the function
|
||||||
|
excep_undefined_instr_isr() to be called when an undefined interrupt source ISR is triggered then they would
|
||||||
|
do the following:
|
||||||
|
#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||||
|
If the user does not wish to be alerted of these events then they should comment out the macros.
|
||||||
|
|
||||||
|
NOTE: When a callback function is called it will be called from within a ISR. This means that the function
|
||||||
|
will essentially be an interrupt and will hold off other interrupts that occur in the system while it
|
||||||
|
is executing. For this reason, it is recommended to keep these callback functions short as to not
|
||||||
|
decrease the real-time response of your system.
|
||||||
|
*/
|
||||||
|
/* Callback for Supervisor Instruction Violation Exception. */
|
||||||
|
//#define EXCEP_SUPERVISOR_ISR_CALLBACK supervisor_instr_cb
|
||||||
|
|
||||||
|
/* Callback for Undefined Instruction Exception. */
|
||||||
|
//#define EXCEP_UNDEFINED_INSTR_ISR_CALLBACK undefined_instr_cb
|
||||||
|
|
||||||
|
/* Callback for Non-maskable Interrupt. */
|
||||||
|
//#define NMI_ISR_CALLBACK nmi_cb
|
||||||
|
|
||||||
|
/* Callback for all undefined interrupt vectors. User can set a breakpoint in this function to determine which source
|
||||||
|
is creating unwanted interrupts. */
|
||||||
|
//#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||||
|
|
||||||
|
/* Callback for Bus Error Interrupt. */
|
||||||
|
//#define BUS_ERROR_ISR_CALLBACK bus_error_cb
|
||||||
|
|
||||||
|
/* The user has the option of separately choosing little or big endian for the User Application Area */
|
||||||
|
|
||||||
|
/* Endian mode for User Application.
|
||||||
|
0 = Big Endian
|
||||||
|
Else = Little Endian (Default)
|
||||||
|
*/
|
||||||
|
#define USER_APP_ENDIAN (1)
|
||||||
|
|
||||||
|
|
||||||
|
/* Configure WDT and IWDT settings.
|
||||||
|
OFS0 - Option Function Select Register 0
|
||||||
|
OFS0 - Option Function Select Register 0
|
||||||
|
b31:b15 Reserved (set to 1)
|
||||||
|
b14 IWDTSLCSTP - IWDT Sleep Mode Count Stop Control - (0=can't stop count, 1=stop w/some low power modes)
|
||||||
|
b13 Reserved (set to 1)
|
||||||
|
b12 IWDTRSTIRQS - IWDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU)
|
||||||
|
b11:b10 IWDTRPSS - IWDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use)
|
||||||
|
b9:b8 IWDTRPES - IWDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use)
|
||||||
|
b7:b4 IWDTCKS - IWDT Clock Frequency Division Ratio - (0=none, 2=/16, 3 = /32, 4=/64, 0xF=/128, 5=/256)
|
||||||
|
b3:b2 IWDTTOPS - IWDT Timeout Period Select - (0=128 cycles, 1=512, 2=1024, 3=2048)
|
||||||
|
b1 IWDTSTRT - IWDT Start Mode Select - (0=auto-start after reset, 1=halt after reset)
|
||||||
|
b0 Reserved (set to 1) */
|
||||||
|
#define OFS0_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||||
|
|
||||||
|
/* Configure whether voltage detection 1 circuit and HOCO are enabled after reset.
|
||||||
|
OFS1 - Option Function Select Register 1
|
||||||
|
b31:b9 Reserved (set to 1)
|
||||||
|
b8 HOCOEN - Enable/disable HOCO oscillation after a reset (0=enable, 1=disable)
|
||||||
|
b7:b4 STUPLVD1LVL - Startup Voltage Monitoring 1 Reset Detection Level Select
|
||||||
|
0 1 0 0: 3.10 V
|
||||||
|
0 1 0 1: 3.00 V
|
||||||
|
0 1 1 0: 2.90 V
|
||||||
|
0 1 1 1: 2.79 V
|
||||||
|
1 0 0 0: 2.68 V
|
||||||
|
1 0 0 1: 2.58 V
|
||||||
|
1 0 1 0: 2.48 V
|
||||||
|
1 0 1 1: 2.06 V
|
||||||
|
1 1 0 0: 1.96 V
|
||||||
|
1 1 0 1: 1.86 V
|
||||||
|
b3:b2 Reserved (set to 1)
|
||||||
|
b2 STUPLVD1REN - Startup Voltage Monitoring 1 Reset Enable (1=monitoring disabled)
|
||||||
|
b0 FASTSTUP - Power-On Fast Startup Time (1=normal; read only) */
|
||||||
|
#define OFS1_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||||
|
|
||||||
|
/* Initializes C input & output library functions.
|
||||||
|
0 = Disable I/O library initialization in resetprg.c. If you are not using stdio then use this value.
|
||||||
|
1 = Enable I/O library initialization in resetprg.c. This is default and needed if you are using stdio. */
|
||||||
|
#define IO_LIB_ENABLE (0)
|
||||||
|
|
||||||
|
#endif /* R_BSP_CONFIG_REF_HEADER_FILE */
|
||||||
|
|
||||||
|
|
||||||
|
|
100
FreeRTOS/Demo/RX100-RSK_IAR/Renesas_Files/r_bsp/readme.txt
Normal file
100
FreeRTOS/Demo/RX100-RSK_IAR/Renesas_Files/r_bsp/readme.txt
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
r_bsp Package
|
||||||
|
=============
|
||||||
|
|
||||||
|
Document Number
|
||||||
|
---------------
|
||||||
|
N/A
|
||||||
|
|
||||||
|
Version
|
||||||
|
-------
|
||||||
|
v1.60
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
The r_bsp package provides a foundation for code to be built on top of. It provides startup code, iodefines, and MCU
|
||||||
|
information for different boards. There are 2 folders that make up the r_bsp package. The 'mcu' folder has iodefine
|
||||||
|
files and a file named 'mcu_info.h' for each MCU group. The 'mcu_info.h' file has information about the MCU on the board
|
||||||
|
and is configured based on the information given in r_bsp_config.h. The information in 'mcu_info.h' is used to help
|
||||||
|
configure Renesas middleware that uses the r_bsp package. The 'board' folder has a folder with startup code for each
|
||||||
|
supported board. Which MCU and board is chosen is decided by the settings in 'platform.h'. The user can choose which
|
||||||
|
board they are using by uncommenting the include path that applies to their board. For example, if you are using the
|
||||||
|
RSK+RX62N then you would uncomment the #include "./board/rskrx62n/r_bsp.h" include path. Users are encouraged to add
|
||||||
|
their own boards to the 'board' directory. BSPs are configured by using the r_bsp_config.h file. Each board will have a
|
||||||
|
reference configuration file named r_bsp_config_reference.h. The user should copy this file to their project, rename it
|
||||||
|
to r_bsp_config.h, and use the options inside the file to configure the BSP for their project.
|
||||||
|
|
||||||
|
Features
|
||||||
|
--------
|
||||||
|
* Provides foundation to build code on top of.
|
||||||
|
* Provides MCU startup code.
|
||||||
|
* Provides SFR access through iodefine.h
|
||||||
|
* Stores details of MCU in 'mcu_info.h' to help configure Renesas middleware.
|
||||||
|
* Easily configure BSP through r_bsp_config.h.
|
||||||
|
* Choose MCU easily by inputting part number details in r_bsp_config.h.
|
||||||
|
* Provides callbacks for MCU exceptions and the bus error interrupt.
|
||||||
|
|
||||||
|
Limitations
|
||||||
|
-----------
|
||||||
|
N/A
|
||||||
|
|
||||||
|
Peripherals Used Directly
|
||||||
|
-------------------------
|
||||||
|
N/A
|
||||||
|
|
||||||
|
Required Packages
|
||||||
|
-----------------
|
||||||
|
* r_glyph [required if you want to use LCD for RDK boards]
|
||||||
|
* r_rspi_rx [required if you want to use LCD for RDK boards]
|
||||||
|
|
||||||
|
How to add to your project
|
||||||
|
--------------------------
|
||||||
|
* Copy the r_bsp folder to your project.
|
||||||
|
* Add an include path to the 'r_bsp' directory.
|
||||||
|
* Add all of the source files for your board from the 'r_bsp\board\--YOUR_BOARD--' directory to your project.
|
||||||
|
* Uncomment the include path for your board in 'platform.h' which is located in the 'r_bsp' directory.
|
||||||
|
* Copy the file r_bsp_config_reference.h from the 'r_bsp\board\--YOUR_BOARD--' directory and copy it to your project's
|
||||||
|
source code directory. Rename the file r_bsp_config.h.
|
||||||
|
* Open r_bsp_config.h and use the macros to configure the BSP for your project.
|
||||||
|
|
||||||
|
File Structure
|
||||||
|
--------------
|
||||||
|
r_bsp
|
||||||
|
| platform.h (choose which board is being used)
|
||||||
|
| readme.txt
|
||||||
|
|
|
||||||
|
+---board (contains supported boards)
|
||||||
|
| +---rdkrx62n (contains BSP source and header files)
|
||||||
|
| |
|
||||||
|
| +---rdkrx63n
|
||||||
|
| |
|
||||||
|
| +---rskrx111
|
||||||
|
| |
|
||||||
|
| +---rskrx210
|
||||||
|
| |
|
||||||
|
| +---rskrx610
|
||||||
|
| |
|
||||||
|
| +---rskrx62n
|
||||||
|
| |
|
||||||
|
| +---rskrx62t
|
||||||
|
| |
|
||||||
|
| +---rskrx630
|
||||||
|
| |
|
||||||
|
| +---rskrx63n
|
||||||
|
| |
|
||||||
|
| \---user
|
||||||
|
|
|
||||||
|
\---mcu
|
||||||
|
+---rx111 (contains common files to this MCU group, e.g. iodefine.h)
|
||||||
|
|
|
||||||
|
+---rx210
|
||||||
|
|
|
||||||
|
+---rx610
|
||||||
|
|
|
||||||
|
+---rx62n
|
||||||
|
|
|
||||||
|
+---rx62t
|
||||||
|
|
|
||||||
|
+---rx630
|
||||||
|
|
|
||||||
|
\---rx63n
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,47 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_switches_config.c
|
||||||
|
* Description : Configures the switches code
|
||||||
|
************************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 17.01.2012 1.00 First Release
|
||||||
|
* : 17.02.2012 1.10 Added RSKRX210 support.
|
||||||
|
* : 08.03.2012 1.20 Added GetVersion() function (though it's really a macro).
|
||||||
|
* : 04.06.2012 1.30 Code can now be interrupt or poll driven.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#ifndef SWITCHES_CONFIG_HEADER_FILE
|
||||||
|
#define SWITCHES_CONFIG_HEADER_FILE
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Configuration Options
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* This macro sets whether interrupts or polling is used for detecting switch presses. The benefit of using interrupts
|
||||||
|
is that no extra processing is used for polling and the use of a system timer tick is not a requirement. The downside
|
||||||
|
of using interrupts is that callback functions are called from within an interrupt so if your ISR is long then it can
|
||||||
|
degrade the real-time response of your system. The benefit of polling is that functions are called at the application
|
||||||
|
level and debouncing is supported. The downside to polling is that your system must call the R_SWITCHES_Update() on a
|
||||||
|
regular basis which requires extra processing.
|
||||||
|
|
||||||
|
0 = Use interrupts
|
||||||
|
1 = Use polling
|
||||||
|
*/
|
||||||
|
#define SWITCHES_DETECTION_MODE (0)
|
||||||
|
|
||||||
|
#endif /* SWITCHES_CONFIG_HEADER_FILE */
|
|
@ -0,0 +1,72 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_switches_if.h
|
||||||
|
* Description : Functions for using switches with callback functions.
|
||||||
|
************************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 17.01.2012 1.00 First Release
|
||||||
|
* : 17.02.2012 1.10 Added RSKRX210 support.
|
||||||
|
* : 08.03.2012 1.20 Added GetVersion() function (though it's really a macro).
|
||||||
|
* : 04.06.2012 1.30 Code can now be interrupt or poll driven.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef SWITCHES_API_HEADER_FILE
|
||||||
|
#define SWITCHES_API_HEADER_FILE
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Fixed width integer support. */
|
||||||
|
#include <stdint.h>
|
||||||
|
/* Used for configuring the code */
|
||||||
|
#include "r_switches_config.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Version Number of API. */
|
||||||
|
#define SWITCHES_VERSION_MAJOR (1)
|
||||||
|
#define SWITCHES_VERSION_MINOR (0)
|
||||||
|
/* The process of getting the version number is done through the macro below. The version number is encoded where the
|
||||||
|
top 2 bytes are the major version number and the bottom 2 bytes are the minor version number. For example,
|
||||||
|
Version 4.25 would be returned as 0x00040019. */
|
||||||
|
#define R_SWITCHES_GetVersion() ((((uint32_t)SWITCHES_VERSION_MAJOR) << 16) | (uint32_t)SWITCHES_VERSION_MINOR)
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Public Functions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void R_SWITCHES_Init(void);
|
||||||
|
void R_SWITCHES_Update(void);
|
||||||
|
|
||||||
|
/* Callback prototypes. */
|
||||||
|
#if defined(SW1_CALLBACK_FUNCTION)
|
||||||
|
void SW1_CALLBACK_FUNCTION(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(SW2_CALLBACK_FUNCTION)
|
||||||
|
void SW2_CALLBACK_FUNCTION(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(SW3_CALLBACK_FUNCTION)
|
||||||
|
void SW3_CALLBACK_FUNCTION(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* SWITCHES_API_HEADER_FILE */
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
PLEASE REFER TO THE APPLICATION NOTE FOR THIS MIDDLEWARE FOR MORE INFORMATION
|
||||||
|
|
||||||
|
Switches
|
||||||
|
========
|
||||||
|
|
||||||
|
Document Number
|
||||||
|
---------------
|
||||||
|
N/A
|
||||||
|
|
||||||
|
Version
|
||||||
|
-------
|
||||||
|
v1.40
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
Configures port pins for switches and calls user defined function on switch press. Switch presses can be detected using
|
||||||
|
IRQ interrupts or by polling. The benefit of using interrupts is that no extra processing is used for polling and the
|
||||||
|
use of a system timer tick is not a requirement. The downside of using interrupts is that callback functions are called
|
||||||
|
from within an interrupt so if your ISR is long then it can degrade the real-time response of your system. The benefit
|
||||||
|
of polling is that functions are called at the application level and debouncing is supported. The downside to polling is
|
||||||
|
that your system must call the R_SWITCHES_Update() on a regular basis which requires extra processing.
|
||||||
|
|
||||||
|
Features
|
||||||
|
--------
|
||||||
|
* Call one function to setup switches.
|
||||||
|
* Define function to call when switch is pressed.
|
||||||
|
* Can be configured to be interrupt or poll driven.
|
||||||
|
|
||||||
|
Supported MCUs
|
||||||
|
--------------
|
||||||
|
* RX610 Group
|
||||||
|
* RX621, RX62N Group
|
||||||
|
* RX62T Group
|
||||||
|
* RX630 Group
|
||||||
|
* RX631, RX63N Group
|
||||||
|
* RX210 Group
|
||||||
|
* RX111 Group
|
||||||
|
|
||||||
|
Boards Tested On
|
||||||
|
----------------
|
||||||
|
* RSKRX610
|
||||||
|
* RSK+RX62N
|
||||||
|
* RSKRX62T
|
||||||
|
* RDKRX62N
|
||||||
|
* RSKRX630
|
||||||
|
* RSKRX63N
|
||||||
|
* RDKRX63N
|
||||||
|
* RSKRX111
|
||||||
|
|
||||||
|
Limitations
|
||||||
|
-----------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Peripherals Used Directly
|
||||||
|
-------------------------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Required Packages
|
||||||
|
-----------------
|
||||||
|
* None
|
||||||
|
|
||||||
|
How to add to your project
|
||||||
|
--------------------------
|
||||||
|
* Add src\r_switches.c to your project.
|
||||||
|
* Add an include path to the 'r_switches' directory.
|
||||||
|
* Add an include path to the 'r_switches\src' directory.
|
||||||
|
* Configure middleware through r_switches_config.h.
|
||||||
|
* Add a #include for r_switches_if.h to files that need to use this package.
|
||||||
|
|
||||||
|
Toolchain(s) Used
|
||||||
|
-----------------
|
||||||
|
* Renesas RX v1.02
|
||||||
|
|
||||||
|
File Structure
|
||||||
|
--------------
|
||||||
|
r_switches
|
||||||
|
| readme.txt
|
||||||
|
| r_switches_config.h
|
||||||
|
| r_switches_if.h
|
||||||
|
|
|
||||||
|
\---src
|
||||||
|
r_switches.c
|
||||||
|
|
|
@ -0,0 +1,232 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_switches.c
|
||||||
|
* Description : Functions for using switches with callback functions.
|
||||||
|
************************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 17.01.2012 1.00 First Release
|
||||||
|
* : 17.02.2012 1.10 Added RSKRX210 support.
|
||||||
|
* : 08.03.2012 1.20 Added GetVersion() function (though it's really a macro).
|
||||||
|
* : 04.06.2012 1.30 Code can now be interrupt or poll driven.
|
||||||
|
* : 07.11.2012 1.40 Added support for RSKRX111
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Board and MCU support. */
|
||||||
|
#include "platform.h"
|
||||||
|
/* Switches prototypes. */
|
||||||
|
#include "r_switches_if.h"
|
||||||
|
/* Scheduler includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
typedef int bool;
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* This helps reduce the amount of unique code for each supported board. */
|
||||||
|
#define X_IRQ( x ) XX_IRQ( x )
|
||||||
|
#define XX_IRQ( x ) _ICU_IRQ##x
|
||||||
|
|
||||||
|
/* These macros define which IRQ pins are used for the switches. Note that these defintions cannot have parentheses
|
||||||
|
around them. */
|
||||||
|
#if defined(PLATFORM_BOARD_RSKRX111)
|
||||||
|
#define SW1_IRQ_NUMBER 0
|
||||||
|
#define SW2_IRQ_NUMBER 1
|
||||||
|
#define SW3_IRQ_NUMBER 4
|
||||||
|
#else
|
||||||
|
#error This file is only for use on the RX100 RSK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Number of switches on this board. */
|
||||||
|
#define SWITCHES_NUM (3)
|
||||||
|
|
||||||
|
/* Register definitions not yet correct in iorx111.h. */
|
||||||
|
#define MPC_P30PFS_REG ( * ( unsigned char * ) 0x0008C158 )
|
||||||
|
#define MPC_P31PFS_REG ( * ( unsigned char * ) 0x0008C159 )
|
||||||
|
#define MPC_PE4PFS_REG ( * ( unsigned char * ) 0x0008C1B4 )
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Typedef definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
bool active;
|
||||||
|
int32_t debounce_cnt;
|
||||||
|
} switch_t;
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Private global variables and functions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#if SWITCHES_DETECTION_MODE == 1
|
||||||
|
/* Update Hz */
|
||||||
|
static uint32_t g_sw_debounce_cnts;
|
||||||
|
/* Used for debounce. */
|
||||||
|
switch_t g_switches[SWITCHES_NUM];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function Name: R_SWITCHES_Init
|
||||||
|
* Description : Initializes pins to be input and interrupt on switch presses.
|
||||||
|
* Arguments :
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
void R_SWITCHES_Init (void)
|
||||||
|
{
|
||||||
|
/* Unlock protection register */
|
||||||
|
MPC.PWPR.BYTE &= 0x7F;
|
||||||
|
/* Unlock MPC registers */
|
||||||
|
MPC.PWPR.BYTE |= 0x40;
|
||||||
|
|
||||||
|
/* Make switch pins inputs. */
|
||||||
|
PORT3.PDR.BYTE &= 0xFC;
|
||||||
|
PORTE.PDR.BYTE &= 0xEF;
|
||||||
|
|
||||||
|
/* Set port mode registers for switches. */
|
||||||
|
PORT3.PMR.BYTE &= 0xFC;
|
||||||
|
PORTE.PMR.BYTE &= 0xEF;
|
||||||
|
|
||||||
|
MPC_P30PFS_REG = 0x40; /* P30 is used as IRQ pin */
|
||||||
|
MPC_P31PFS_REG = 0x40; /* P31 is used as IRQ pin */
|
||||||
|
MPC_PE4PFS_REG = 0x40; /* PE4 is used as IRQ pin */
|
||||||
|
|
||||||
|
/* Set IRQ type (falling edge) */
|
||||||
|
ICU.IRQCR[ SW1_IRQ_NUMBER ].BYTE = 0x04;
|
||||||
|
ICU.IRQCR[ SW2_IRQ_NUMBER ].BYTE = 0x04;
|
||||||
|
ICU.IRQCR[ SW3_IRQ_NUMBER ].BYTE = 0x04;
|
||||||
|
|
||||||
|
/* Set interrupt priorities, which must be below
|
||||||
|
configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
||||||
|
_IPR( X_IRQ(SW1_IRQ_NUMBER) ) = configKERNEL_INTERRUPT_PRIORITY;
|
||||||
|
_IPR( X_IRQ(SW2_IRQ_NUMBER) ) = configKERNEL_INTERRUPT_PRIORITY;
|
||||||
|
_IPR( X_IRQ(SW3_IRQ_NUMBER) ) = configKERNEL_INTERRUPT_PRIORITY;
|
||||||
|
|
||||||
|
/* Clear any pending interrupts */
|
||||||
|
_IR( X_IRQ(SW1_IRQ_NUMBER) ) = 0;
|
||||||
|
_IR( X_IRQ(SW2_IRQ_NUMBER) ) = 0;
|
||||||
|
_IR( X_IRQ(SW3_IRQ_NUMBER) ) = 0;
|
||||||
|
|
||||||
|
/* Enable the interrupts */
|
||||||
|
_IEN( X_IRQ(SW1_IRQ_NUMBER) ) = 1;
|
||||||
|
_IEN( X_IRQ(SW2_IRQ_NUMBER) ) = 1;
|
||||||
|
_IEN( X_IRQ(SW3_IRQ_NUMBER) ) = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If using polling then the user must call the update function. */
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: R_SWITCHES_Update
|
||||||
|
* Description : Polls switches and calls callback functions as needed. If you are using IRQ mode then this function
|
||||||
|
* is not needed and can be removed if desired. It is left in so that code will not fail when switching
|
||||||
|
* between polling or IRQ mode.
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void R_SWITCHES_Update (void)
|
||||||
|
{
|
||||||
|
#if SWITCHES_DETECTION_MODE == 1
|
||||||
|
/* This code is only needed for polling mode. */
|
||||||
|
/* Check switch 1. */
|
||||||
|
if (SW1 == SW_ACTIVE)
|
||||||
|
{
|
||||||
|
if (g_switches[0].active != true)
|
||||||
|
{
|
||||||
|
if (++g_switches[0].debounce_cnt >= g_sw_debounce_cnts)
|
||||||
|
{
|
||||||
|
/* Set this to true so we only call the callback function once per press. */
|
||||||
|
g_switches[0].active = true;
|
||||||
|
|
||||||
|
/* Call callback function. */
|
||||||
|
SW1_CALLBACK_FUNCTION();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (0 == g_switches[0].debounce_cnt)
|
||||||
|
{
|
||||||
|
g_switches[0].active = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_switches[0].debounce_cnt--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check switch 2. */
|
||||||
|
if (SW2 == SW_ACTIVE)
|
||||||
|
{
|
||||||
|
if (g_switches[1].active != true)
|
||||||
|
{
|
||||||
|
if (++g_switches[1].debounce_cnt >= g_sw_debounce_cnts)
|
||||||
|
{
|
||||||
|
/* Set this to true so we only call the callback function once per press. */
|
||||||
|
g_switches[1].active = true;
|
||||||
|
|
||||||
|
/* Call callback function. */
|
||||||
|
SW2_CALLBACK_FUNCTION();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (0 == g_switches[1].debounce_cnt)
|
||||||
|
{
|
||||||
|
g_switches[1].active = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_switches[1].debounce_cnt--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check switch 3. */
|
||||||
|
if (SW3 == SW_ACTIVE)
|
||||||
|
{
|
||||||
|
if (g_switches[2].active != true)
|
||||||
|
{
|
||||||
|
if (++g_switches[2].debounce_cnt >= g_sw_debounce_cnts)
|
||||||
|
{
|
||||||
|
/* Set this to true so we only call the callback function once per press. */
|
||||||
|
g_switches[2].active = true;
|
||||||
|
|
||||||
|
/* Call callback function. */
|
||||||
|
SW3_CALLBACK_FUNCTION();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (0 == g_switches[2].debounce_cnt)
|
||||||
|
{
|
||||||
|
g_switches[2].active = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_switches[2].debounce_cnt--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* SWITCHES_DETECTION_MODE */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
211
FreeRTOS/Demo/RX100-RSK_IAR/main.c
Normal file
211
FreeRTOS/Demo/RX100-RSK_IAR/main.c
Normal file
|
@ -0,0 +1,211 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* This project provides two demo applications. A low power project that
|
||||||
|
* demonstrates the FreeRTOS tickless mode, and a more comprehensive test and
|
||||||
|
* demo application. The configCREATE_LOW_POWER_DEMO setting (defined at the
|
||||||
|
* top of FreeRTOSConfig.h) is used to select between the two. The low power
|
||||||
|
* demo is implemented and described in main_low_power.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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Kernel includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
|
/* Platform includes. */
|
||||||
|
#include "lcd.h"
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prepare the board of the demo.
|
||||||
|
*/
|
||||||
|
extern void vHardwareSetup( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* main_low_power() is used when configCREATE_LOW_POWER_DEMO is set to 1.
|
||||||
|
* main_full() is used when configCREATE_LOW_POWER_DEMO is set to 0.
|
||||||
|
*/
|
||||||
|
extern void main_low_power( void );
|
||||||
|
extern void main_full( void );
|
||||||
|
|
||||||
|
/* Prototypes for the standard FreeRTOS callback/hook functions implemented
|
||||||
|
within this file. */
|
||||||
|
void vApplicationMallocFailedHook( void );
|
||||||
|
void vApplicationIdleHook( void );
|
||||||
|
void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName );
|
||||||
|
void vApplicationTickHook( void );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* See the documentation page for this demo on the FreeRTOS.org web site for
|
||||||
|
full information - including hardware setup requirements. */
|
||||||
|
|
||||||
|
void main( void )
|
||||||
|
{
|
||||||
|
/* Call the Renesas provided setup. */
|
||||||
|
vHardwareSetup();
|
||||||
|
lcd_initialize();
|
||||||
|
lcd_display( LCD_LINE1, "FreeRTOS" );
|
||||||
|
|
||||||
|
/* The configCREATE_LOW_POWER_DEMO setting is described in FreeRTOSConfig.h. */
|
||||||
|
#if configCREATE_LOW_POWER_DEMO == 1
|
||||||
|
{
|
||||||
|
lcd_display( LCD_LINE2, "LP Demo" );
|
||||||
|
main_low_power();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
{
|
||||||
|
lcd_display( LCD_LINE2, "Ful Demo" );
|
||||||
|
main_full();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
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, heap_2.c or heap_4.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()). */
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vAssertCalled( void )
|
||||||
|
{
|
||||||
|
volatile unsigned long ul = 0;
|
||||||
|
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
/* Set ul to a non-zero value using the debugger to step out of this
|
||||||
|
function. */
|
||||||
|
while( ul == 0 )
|
||||||
|
{
|
||||||
|
__asm volatile( "NOP" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
346
FreeRTOS/Demo/RX100-RSK_IAR/main_full.c
Normal file
346
FreeRTOS/Demo/RX100-RSK_IAR/main_full.c
Normal file
|
@ -0,0 +1,346 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ****************************************************************************
|
||||||
|
* This project includes a lot of tasks and tests and is therefore complex.
|
||||||
|
* If you would prefer a much simpler project to get started with then select
|
||||||
|
* the 'low power' demo by setting configCREATE_LOW_POWER_DEMO to 1 in
|
||||||
|
* FreeRTOSConfig.h. When configCREATE_LOW_POWER_DEMO is set to 1 main() will
|
||||||
|
* call main_low_power() instead of main_full().
|
||||||
|
* ****************************************************************************
|
||||||
|
*
|
||||||
|
* Creates all the demo application tasks, 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:
|
||||||
|
*
|
||||||
|
* "Reg test" tasks - These fill the registers with known values, then
|
||||||
|
* repeatedly check that each register still contains its expected value for
|
||||||
|
* the lifetime of the tasks. Each task uses different values. The tasks run
|
||||||
|
* with very low priority so get preempted very frequently. A check variable
|
||||||
|
* is incremented on each iteration of the test loop. A register containing an
|
||||||
|
* unexpected value is indicative of an error in the context switching
|
||||||
|
* mechanism and will result in a branch to a null loop - which in turn will
|
||||||
|
* prevent the check variable from incrementing any further and allow the check
|
||||||
|
* timer (described below) to determine that an error has occurred. The nature
|
||||||
|
* of the reg test tasks necessitates that they are written in assembly code.
|
||||||
|
*
|
||||||
|
* "Check Timer" and Callback Function - The check timer period is initially
|
||||||
|
* set to three seconds. The check timer callback function checks that all the
|
||||||
|
* standard demo tasks are not only still executing, but are executing without
|
||||||
|
* reporting any errors. If the check timer discovers that a task has either
|
||||||
|
* stalled, or reported an error, then it changes its own period from the
|
||||||
|
* initial three seconds, to just 200ms. The check timer callback function
|
||||||
|
* also toggles LED 0 each time it is called. This provides a visual
|
||||||
|
* indication of the system status: If the LED toggles every three seconds,
|
||||||
|
* then no issues have been discovered. If the LED toggles every 200ms, then
|
||||||
|
* an issue has been discovered with at least one task.
|
||||||
|
*
|
||||||
|
* *NOTE 1* The CPU must be in Supervisor mode when the scheduler is started.
|
||||||
|
* The PowerON_Reset_PC() supplied in resetprg.c with this demo has
|
||||||
|
* Change_PSW_PM_to_UserMode() commented out to ensure this is the case.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Standard includes. */
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* Hardware specific includes. */
|
||||||
|
#include "iorx111.h"
|
||||||
|
|
||||||
|
/* Kernel includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
#include "timers.h"
|
||||||
|
#include "semphr.h"
|
||||||
|
|
||||||
|
/* Standard demo includes. */
|
||||||
|
#include "partest.h"
|
||||||
|
#include "death.h"
|
||||||
|
#include "blocktim.h"
|
||||||
|
#include "GenQTest.h"
|
||||||
|
#include "recmutex.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* Variables that are incremented on each iteration of the reg test tasks are
|
||||||
|
declared outside of the #if configCREATE_LOW_POWER_DEMO conditional compilation
|
||||||
|
to prevent linker issues when configCREATE_LOW_POWER_DEMO is set to 1. The
|
||||||
|
check timer 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. */
|
||||||
|
unsigned long volatile ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL;
|
||||||
|
|
||||||
|
|
||||||
|
/* The code in this file is only built when configCREATE_LOW_POWER_DEMO is set
|
||||||
|
to 0, otherwise the code in main_low_power.c is used. */
|
||||||
|
#if configCREATE_LOW_POWER_DEMO == 0
|
||||||
|
|
||||||
|
|
||||||
|
/* Values that are passed into the reg test tasks using the task parameter.
|
||||||
|
The tasks check that the values are passed in correctly. */
|
||||||
|
#define mainREG_TEST_1_PARAMETER ( 0x12121212UL )
|
||||||
|
#define mainREG_TEST_2_PARAMETER ( 0x12345678UL )
|
||||||
|
|
||||||
|
/* Priorities at which the standard demo tasks are created. */
|
||||||
|
#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||||
|
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
|
||||||
|
|
||||||
|
/* The LED toggled by the check timer. */
|
||||||
|
#define mainCHECK_LED ( 0 )
|
||||||
|
|
||||||
|
/* The period at which the check timer will expire, in ms, provided no errors
|
||||||
|
have been reported by any of the standard demo tasks. ms are converted to the
|
||||||
|
equivalent in ticks using the portTICK_RATE_MS constant. */
|
||||||
|
#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_RATE_MS )
|
||||||
|
|
||||||
|
/* The period at which the check timer will expire, in ms, if an error has been
|
||||||
|
reported in one of the standard demo tasks. ms are converted to the equivalent
|
||||||
|
in ticks using the portTICK_RATE_MS constant. */
|
||||||
|
#define mainERROR_CHECK_TIMER_PERIOD_MS ( 200UL / portTICK_RATE_MS )
|
||||||
|
|
||||||
|
/* A block time of zero simple means "Don't Block". */
|
||||||
|
#define mainDONT_BLOCK ( 0UL )
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The reg test tasks as described at the top of this file.
|
||||||
|
*/
|
||||||
|
static void prvRegTest1Task( void *pvParameters );
|
||||||
|
static void prvRegTest2Task( void *pvParameters );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The actual implementation of the reg test functionality, which, because of
|
||||||
|
* the direct register access, have to be in assembly.
|
||||||
|
*/
|
||||||
|
void vRegTest1Implementation( void );
|
||||||
|
void vRegTest2Implementation( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The check timer callback function, as described at the top of this file.
|
||||||
|
*/
|
||||||
|
static void prvCheckTimerCallback( xTimerHandle xTimer );
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* The check timer. This uses prvCheckTimerCallback() as its callback
|
||||||
|
function. */
|
||||||
|
static xTimerHandle xCheckTimer = NULL;
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void main_full( void )
|
||||||
|
{
|
||||||
|
/* Start the reg test tasks which test the context switching mechanism. */
|
||||||
|
xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL );
|
||||||
|
xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL );
|
||||||
|
|
||||||
|
/* Create the standard demo tasks. */
|
||||||
|
vCreateBlockTimeTasks();
|
||||||
|
vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );
|
||||||
|
vStartRecursiveMutexTasks();
|
||||||
|
|
||||||
|
/* The suicide tasks must be created last as they need to know how many
|
||||||
|
tasks were running prior to their creation in order to ascertain whether
|
||||||
|
or not the correct/expected number of tasks are running at any given time. */
|
||||||
|
vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );
|
||||||
|
|
||||||
|
/* Create the software timer that performs the 'check' functionality,
|
||||||
|
as described at the top of this file. */
|
||||||
|
xCheckTimer = xTimerCreate( ( const signed char * ) "CheckTimer",/* A text name, purely to help debugging. */
|
||||||
|
( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */
|
||||||
|
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. */
|
||||||
|
);
|
||||||
|
|
||||||
|
configASSERT( xCheckTimer );
|
||||||
|
|
||||||
|
/* Start the check timer. It will actually start when the scheduler is
|
||||||
|
started. */
|
||||||
|
xTimerStart( xCheckTimer, mainDONT_BLOCK );
|
||||||
|
|
||||||
|
/* Start the tasks running. */
|
||||||
|
vTaskStartScheduler();
|
||||||
|
|
||||||
|
/* If all is well execution will never reach here as the scheduler will be
|
||||||
|
running. If this null loop is reached then it is likely there was
|
||||||
|
insufficient FreeRTOS heap available for the idle task and/or timer task to
|
||||||
|
be created. See http://www.freertos.org/a00111.html. */
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvCheckTimerCallback( xTimerHandle xTimer )
|
||||||
|
{
|
||||||
|
static long lChangedTimerPeriodAlready = pdFALSE, lErrorStatus = pdPASS;
|
||||||
|
static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL;
|
||||||
|
|
||||||
|
/* Remove compiler warnings about unused parameters. */
|
||||||
|
( void ) xTimer;
|
||||||
|
|
||||||
|
/* Check the standard demo tasks are running without error. */
|
||||||
|
if( xAreGenericQueueTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
lErrorStatus = pdFAIL;
|
||||||
|
}
|
||||||
|
else if( xIsCreateTaskStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
lErrorStatus = pdFAIL;
|
||||||
|
}
|
||||||
|
else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
lErrorStatus = pdFAIL;
|
||||||
|
}
|
||||||
|
else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )
|
||||||
|
{
|
||||||
|
lErrorStatus = pdFAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check the reg test tasks are still cycling. They will stop incrementing
|
||||||
|
their loop counters if they encounter an error. */
|
||||||
|
if( ulRegTest1CycleCount == ulLastRegTest1CycleCount )
|
||||||
|
{
|
||||||
|
lErrorStatus = pdFAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ulRegTest2CycleCount == ulLastRegTest2CycleCount )
|
||||||
|
{
|
||||||
|
lErrorStatus = pdFAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remember the loop counter values this time around so they can be checked
|
||||||
|
again the next time this callback function executes. */
|
||||||
|
ulLastRegTest1CycleCount = ulRegTest1CycleCount;
|
||||||
|
ulLastRegTest2CycleCount = ulRegTest2CycleCount;
|
||||||
|
|
||||||
|
/* Toggle the check LED to give an indication of the system status. If
|
||||||
|
the LED toggles every three seconds then everything is ok. A faster toggle
|
||||||
|
indicates an error. */
|
||||||
|
vParTestToggleLED( mainCHECK_LED );
|
||||||
|
|
||||||
|
/* Was an error detected this time through the callback execution? */
|
||||||
|
if( lErrorStatus != pdPASS )
|
||||||
|
{
|
||||||
|
if( lChangedTimerPeriodAlready == pdFALSE )
|
||||||
|
{
|
||||||
|
lChangedTimerPeriodAlready = pdTRUE;
|
||||||
|
|
||||||
|
/* This call to xTimerChangePeriod() uses a zero block time.
|
||||||
|
Functions called from inside of a timer callback function must
|
||||||
|
*never* attempt to block. */
|
||||||
|
xTimerChangePeriod( xCheckTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* This function is explained in the comments at the top of this file. */
|
||||||
|
static void prvRegTest1Task( void *pvParameters )
|
||||||
|
{
|
||||||
|
if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER )
|
||||||
|
{
|
||||||
|
/* The parameter did not contain the expected value. */
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
/* Stop the tick interrupt so its obvious something has gone wrong. */
|
||||||
|
taskDISABLE_INTERRUPTS();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is an inline asm function that never returns. */
|
||||||
|
vRegTest1Implementation();
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* This function is explained in the comments at the top of this file. */
|
||||||
|
static void prvRegTest2Task( void *pvParameters )
|
||||||
|
{
|
||||||
|
if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER )
|
||||||
|
{
|
||||||
|
/* The parameter did not contain the expected value. */
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
/* Stop the tick interrupt so its obvious something has gone wrong. */
|
||||||
|
taskDISABLE_INTERRUPTS();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is an inline asm function that never returns. */
|
||||||
|
vRegTest2Implementation();
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#endif /* configCREATE_LOW_POWER_DEMO */
|
437
FreeRTOS/Demo/RX100-RSK_IAR/main_low_power.c
Normal file
437
FreeRTOS/Demo/RX100-RSK_IAR/main_low_power.c
Normal file
|
@ -0,0 +1,437 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ****************************************************************************
|
||||||
|
* When configCREATE_LOW_POWER_DEMO is set to 1 in FreeRTOSConfig.h main() will
|
||||||
|
* call main_low_power(), which is defined in this file. main_low_power()
|
||||||
|
* demonstrates FreeRTOS tick suppression being used to allow the MCU to be
|
||||||
|
* placed into both the low power deep sleep mode and the low power software
|
||||||
|
* standby mode. When configCREATE_LOW_POWER_DEMO is set to 0 main will
|
||||||
|
* instead call main_full(), which is a more comprehensive RTOS demonstration.
|
||||||
|
* ****************************************************************************
|
||||||
|
*
|
||||||
|
* This application demonstrates the FreeRTOS tickless idle mode (tick
|
||||||
|
* suppression). See http://www.freertos.org/low-power-tickless-rtos.html
|
||||||
|
* The demo is configured to execute on the Renesas RX100 RSK.
|
||||||
|
*
|
||||||
|
* Functionality:
|
||||||
|
*
|
||||||
|
* + Two tasks are created, an Rx task and a Tx task.
|
||||||
|
*
|
||||||
|
* + The Rx task repeatedly blocks on a queue to wait for data. The Rx task
|
||||||
|
* toggles LED 0 each time is receives a value from the queue.
|
||||||
|
*
|
||||||
|
* + The Tx task repeatedly enters the Blocked state for an amount of time
|
||||||
|
* that is set by the position of the potentiometer. On exiting the blocked
|
||||||
|
* state the Tx task sends a value through the queue to the Rx task (causing
|
||||||
|
* the Rx task to exit the blocked state and toggle LED 0).
|
||||||
|
*
|
||||||
|
* If the value read from the potentiometer is less than or equal to
|
||||||
|
* mainSOFTWARE_STANDBY_DELAY then the Tx task blocks for the equivalent
|
||||||
|
* number of milliseconds. For example, if the sampled analog value is
|
||||||
|
* 2000, then the Tx task blocks for 2000ms. Blocking for a finite period
|
||||||
|
* allows the kernel to stop the tick interrupt and place the RX100 into
|
||||||
|
* deep sleep mode.
|
||||||
|
*
|
||||||
|
* If the value read form the potentiometer is greater than
|
||||||
|
* mainSOFTWARE_STANDBY_DELAY then the Tx task blocks on a semaphore with
|
||||||
|
* an infinite timeout. Blocking with an infinite timeout allows the kernel
|
||||||
|
* to stop the tick interrupt and place the RX100 into software standby
|
||||||
|
* mode. Pressing a button will generate an interrupt that causes the RX100
|
||||||
|
* to exit software standby mode. The interrupt service routine 'gives' the
|
||||||
|
* semaphore to unblock the Tx task.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Using the Demo and Observed Behaviour:
|
||||||
|
*
|
||||||
|
* 1) Turn the potentiometer completely counter clockwise.
|
||||||
|
*
|
||||||
|
* 2) Program the RX100 with the application, then disconnect the programming/
|
||||||
|
* debugging hardware to ensure power readings are not effected by any
|
||||||
|
* connected interfaces.
|
||||||
|
*
|
||||||
|
* 3) Start the application running. LED 0 will toggle quickly because the
|
||||||
|
* potentiometer is turned to its lowest value. LED 1 will be illuminated
|
||||||
|
* when the RX100 is not in a power saving mode, but will appear to be off
|
||||||
|
* because most execution time is spent in a sleep mode. Led 2 will be
|
||||||
|
* illuminated when the RX100 is in deep sleep mode, and will appear to be
|
||||||
|
* always on, again because most execution time is spent in deep sleep mode.
|
||||||
|
* The LEDs are turned on and off by the application defined pre and post
|
||||||
|
* sleep macros (see the definitions of configPRE_SLEEP_PROCESSING() and
|
||||||
|
* configPOST_SLEEP_PROCESSING() in FreeRTOSConfig.h).
|
||||||
|
*
|
||||||
|
* 4) Slowly turn the potentiometer in the clockwise direction. This will
|
||||||
|
* increase the value read from the potentiometer, which will increase the
|
||||||
|
* time the Tx task spends in the Blocked state, which will therefore
|
||||||
|
* decrease the frequency at which the Tx task sends data to the queue (and
|
||||||
|
* the rate at which LED 0 is toggled).
|
||||||
|
*
|
||||||
|
* 5) Keep turning the potentiometer in the clockwise direction. Eventually
|
||||||
|
* the value read from the potentiometer will go above
|
||||||
|
* mainSOFTWARE_STANDBY_DELAY, causing the Tx task to block on the semaphore
|
||||||
|
* with an infinite timeout. LED 0 will stop toggling because the Tx task is
|
||||||
|
* no longer sending to the queue. LED 1 and LED 2 will both be off because
|
||||||
|
* the RX100 is neither running or in deep sleep mode (it is in software
|
||||||
|
* standby mode).
|
||||||
|
*
|
||||||
|
* 6) Turn the potentiometer counter clockwise again to ensure its value goes
|
||||||
|
* back below mainSOFTWARE_STANDBY_DELAY.
|
||||||
|
*
|
||||||
|
* 7) Press any of the three buttons to generate an interrupt. The interrupt
|
||||||
|
* will take the RX100 out of software standby mode, and the interrupt
|
||||||
|
* service routine will unblock the Tx task by 'giving' the semaphore. LED 0
|
||||||
|
* will then start to toggle again.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Hardware specific includes. */
|
||||||
|
#include "platform.h"
|
||||||
|
#include "r_switches_if.h"
|
||||||
|
|
||||||
|
/* Kernel includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
#include "queue.h"
|
||||||
|
#include "semphr.h"
|
||||||
|
|
||||||
|
/* Common demo includes. */
|
||||||
|
#include "partest.h"
|
||||||
|
|
||||||
|
/* Priorities at which the Rx and Tx tasks are created. */
|
||||||
|
#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||||
|
#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||||
|
|
||||||
|
/* The number of items the queue can hold. This is 1 as the Rx task will
|
||||||
|
remove items as they are added so the Tx task should always find the queue
|
||||||
|
empty. */
|
||||||
|
#define mainQUEUE_LENGTH ( 1 )
|
||||||
|
|
||||||
|
/* The LED used to indicate that a value has been received on the queue. */
|
||||||
|
#define mainQUEUE_LED ( 0 )
|
||||||
|
|
||||||
|
/* The LED used to indicate that full power is being used (the MCU is not in
|
||||||
|
deep sleep or software standby mode). */
|
||||||
|
#define mainFULL_POWER_LED ( 1 )
|
||||||
|
|
||||||
|
/* The LED used to indicate that deep sleep mode is being used. */
|
||||||
|
#define mainDEEP_SLEEP_LED ( 2 )
|
||||||
|
|
||||||
|
/* The Tx task sends to the queue with a frequency that is set by the value
|
||||||
|
read from the potentiometer until the value goes above that set by the
|
||||||
|
mainSOFTWARE_STANDBY_DELAY constant - at which time the Tx task instead blocks
|
||||||
|
indefinitely on a semaphore. */
|
||||||
|
#define mainSOFTWARE_STANDBY_DELAY ( 3000UL )
|
||||||
|
|
||||||
|
/* A block time of zero simply means "don't block". */
|
||||||
|
#define mainDONT_BLOCK ( 0 )
|
||||||
|
|
||||||
|
/* The value that is sent from the Tx task to the Rx task on the queue. */
|
||||||
|
#define mainQUEUED_VALUE ( 100UL )
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The Rx and Tx tasks as described at the top of this file.
|
||||||
|
*/
|
||||||
|
static void prvQueueReceiveTask( void *pvParameters );
|
||||||
|
static void prvQueueSendTask( void *pvParameters );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reads and returns the value of the ADC connected to the potentiometer built
|
||||||
|
* onto the RSK.
|
||||||
|
*/
|
||||||
|
static unsigned short prvReadPOT( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The handler for the interrupt generated when any of the buttons are pressed.
|
||||||
|
*/
|
||||||
|
__interrupt void vButtonInterrupt( void );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* The queue to pass data from the Tx task to the Rx task. */
|
||||||
|
static xQueueHandle xQueue = NULL;
|
||||||
|
|
||||||
|
/* The semaphore that is 'given' by interrupts generated from button pushes. */
|
||||||
|
static xSemaphoreHandle xSemaphore = NULL;
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void main_low_power( void )
|
||||||
|
{
|
||||||
|
/* Create the queue. */
|
||||||
|
xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) );
|
||||||
|
configASSERT( xQueue );
|
||||||
|
|
||||||
|
/* Create the semaphore that is 'given' by an interrupt generated from a
|
||||||
|
button push. */
|
||||||
|
vSemaphoreCreateBinary( xSemaphore );
|
||||||
|
configASSERT( xSemaphore );
|
||||||
|
|
||||||
|
/* Make sure the semaphore starts in the expected state - no button pushes
|
||||||
|
have yet occurred. A block time of zero can be used as it is guaranteed
|
||||||
|
that the semaphore will be available because it has just been created. */
|
||||||
|
xSemaphoreTake( xSemaphore, mainDONT_BLOCK );
|
||||||
|
|
||||||
|
/* Start the two tasks as described at the top of this file. */
|
||||||
|
xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL );
|
||||||
|
xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL );
|
||||||
|
|
||||||
|
/* The CPU is currently running, not sleeping, so turn on the LED that
|
||||||
|
shows the CPU is not in a sleep mode. */
|
||||||
|
vParTestSetLED( mainFULL_POWER_LED, pdTRUE );
|
||||||
|
|
||||||
|
/* Start the scheduler running running. */
|
||||||
|
vTaskStartScheduler();
|
||||||
|
|
||||||
|
/* If all is well the next line of code will not be reached as the
|
||||||
|
scheduler will be running. If the next line is reached then it is likely
|
||||||
|
there was insufficient FreeRTOS heap available for the idle task and/or
|
||||||
|
timer task to be created. See http://www.freertos.org/a00111.html. */
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvQueueSendTask( void *pvParameters )
|
||||||
|
{
|
||||||
|
portTickType xDelay;
|
||||||
|
const unsigned long ulValueToSend = mainQUEUED_VALUE;
|
||||||
|
|
||||||
|
/* Remove compiler warning about unused parameter. */
|
||||||
|
( void ) pvParameters;
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
/* The delay period between successive sends to the queue is set by
|
||||||
|
the potentiometer reading. */
|
||||||
|
xDelay = ( portTickType ) prvReadPOT();
|
||||||
|
|
||||||
|
/* If the block time is greater than 3000 milliseconds then block
|
||||||
|
indefinitely waiting for a button push. */
|
||||||
|
if( xDelay > mainSOFTWARE_STANDBY_DELAY )
|
||||||
|
{
|
||||||
|
/* As this is an indefinite delay the kernel will place the CPU
|
||||||
|
into software standby mode the next time the idle task runs. */
|
||||||
|
xSemaphoreTake( xSemaphore, portMAX_DELAY );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Convert a time in milliseconds to a time in ticks. */
|
||||||
|
xDelay /= portTICK_RATE_MS;
|
||||||
|
|
||||||
|
/* Place this task in the blocked state until it is time to run
|
||||||
|
again. As this is not an indefinite sleep the kernel will place
|
||||||
|
the CPU into the deep sleep state when the idle task next runs. */
|
||||||
|
vTaskDelay( xDelay );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Send to the queue - causing the queue receive task to flash its LED.
|
||||||
|
It should not be necessary to block on the queue send because the Rx
|
||||||
|
task will have removed the last queued item. */
|
||||||
|
xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvQueueReceiveTask( void *pvParameters )
|
||||||
|
{
|
||||||
|
unsigned long ulReceivedValue;
|
||||||
|
|
||||||
|
/* Remove compiler warning about unused parameter. */
|
||||||
|
( void ) pvParameters;
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
/* Wait until something arrives in the queue - this will block
|
||||||
|
indefinitely provided INCLUDE_vTaskSuspend is set to 1 in
|
||||||
|
FreeRTOSConfig.h. */
|
||||||
|
xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY );
|
||||||
|
|
||||||
|
/* To get here something must have arrived, but is it the expected
|
||||||
|
value? If it is, toggle the LED. */
|
||||||
|
if( ulReceivedValue == mainQUEUED_VALUE )
|
||||||
|
{
|
||||||
|
vParTestToggleLED( mainQUEUE_LED );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vPreSleepProcessing( unsigned long ulExpectedIdleTime )
|
||||||
|
{
|
||||||
|
/* Called by the kernel before it places the MCU into a sleep mode because
|
||||||
|
configPRE_SLEEP_PROCESSING() is #defined to vPreSleepProcessing().
|
||||||
|
|
||||||
|
NOTE: Additional actions can be taken here to get the power consumption
|
||||||
|
even lower. For example, the ADC input used by this demo could be turned
|
||||||
|
off here, and then back on again in the post sleep processing function.
|
||||||
|
For maximum power saving ensure all unused pins are in their lowest power
|
||||||
|
state. */
|
||||||
|
|
||||||
|
/* Avoid compiler warnings about the unused parameter. */
|
||||||
|
( void ) ulExpectedIdleTime;
|
||||||
|
|
||||||
|
/* Is the MCU about to enter deep sleep mode or software standby mode? */
|
||||||
|
if( SYSTEM.SBYCR.BIT.SSBY == 0 )
|
||||||
|
{
|
||||||
|
/* Turn on the LED that indicates deep sleep mode is being entered. */
|
||||||
|
vParTestSetLED( mainDEEP_SLEEP_LED, pdTRUE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Software standby mode is being used, so no LEDs are illuminated to
|
||||||
|
ensure minimum power readings are obtained. Ensure the Queue LED is
|
||||||
|
also off. */
|
||||||
|
vParTestSetLED( mainQUEUE_LED, pdFALSE );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Turn off the LED that indicates full power is being used. */
|
||||||
|
vParTestSetLED( mainFULL_POWER_LED, pdFALSE );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vPostSleepProcessing( unsigned long ulExpectedIdleTime )
|
||||||
|
{
|
||||||
|
/* Called by the kernel when the MCU exits a sleep mode because
|
||||||
|
configPOST_SLEEP_PROCESSING is #defined to vPostSleepProcessing(). */
|
||||||
|
|
||||||
|
/* Avoid compiler warnings about the unused parameter. */
|
||||||
|
( void ) ulExpectedIdleTime;
|
||||||
|
|
||||||
|
/* Turn off the LED that indicates deep sleep mode, and turn on the LED
|
||||||
|
that indicates full power is being used. */
|
||||||
|
vParTestSetLED( mainDEEP_SLEEP_LED, pdFALSE );
|
||||||
|
vParTestSetLED( mainFULL_POWER_LED, pdTRUE );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static unsigned short prvReadPOT( void )
|
||||||
|
{
|
||||||
|
unsigned short usADCValue;
|
||||||
|
const unsigned short usMinADCValue = 128;
|
||||||
|
|
||||||
|
/* Start an ADC scan. */
|
||||||
|
S12AD.ADCSR.BIT.ADST = 1;
|
||||||
|
while( S12AD.ADCSR.BIT.ADST == 1 )
|
||||||
|
{
|
||||||
|
/* Just waiting for the ADC scan to complete. Inefficient
|
||||||
|
polling! */
|
||||||
|
}
|
||||||
|
|
||||||
|
usADCValue = S12AD.ADDR4;
|
||||||
|
|
||||||
|
/* Don't let the ADC value get too small as the LED behaviour will look
|
||||||
|
erratic. */
|
||||||
|
if( usADCValue < usMinADCValue )
|
||||||
|
{
|
||||||
|
usADCValue = usMinADCValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return usADCValue;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#pragma vector = VECT_ICU_IRQ0, VECT_ICU_IRQ1, VECT_ICU_IRQ4
|
||||||
|
__interrupt void vButtonInterrupt1( void )
|
||||||
|
{
|
||||||
|
long lHigherPriorityTaskWoken = pdFALSE;
|
||||||
|
|
||||||
|
/* The semaphore is only created when the build is configured to create the
|
||||||
|
low power demo. */
|
||||||
|
if( xSemaphore != NULL )
|
||||||
|
{
|
||||||
|
/* This interrupt will bring the CPU out of deep sleep and software
|
||||||
|
standby modes. Give the semaphore that was used to place the Tx task
|
||||||
|
into an indefinite sleep. */
|
||||||
|
if( uxQueueMessagesWaitingFromISR( xSemaphore ) == 0 )
|
||||||
|
{
|
||||||
|
xSemaphoreGiveFromISR( xSemaphore, &lHigherPriorityTaskWoken );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* The semaphore was already available, so the task is not blocked
|
||||||
|
on it and there is no point giving it. */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If giving the semaphore caused a task to leave the Blocked state,
|
||||||
|
and the task that left the Blocked state has a priority equal to or
|
||||||
|
above the priority of the task that this interrupt interrupted, then
|
||||||
|
lHigherPriorityTaskWoken will have been set to pdTRUE inside the call
|
||||||
|
to xSemaphoreGiveFromISR(), and calling portYIELD_FROM_ISR() will cause
|
||||||
|
a context switch to the unblocked task. */
|
||||||
|
portYIELD_FROM_ISR( lHigherPriorityTaskWoken );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
274
FreeRTOS/Demo/RX100-RSK_IAR/reg_test.s
Normal file
274
FreeRTOS/Demo/RX100-RSK_IAR/reg_test.s
Normal file
|
@ -0,0 +1,274 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
PUBLIC _vRegTest1Implementation
|
||||||
|
PUBLIC _vRegTest2Implementation
|
||||||
|
|
||||||
|
EXTERN _ulRegTest1CycleCount
|
||||||
|
EXTERN _ulRegTest2CycleCount
|
||||||
|
|
||||||
|
RSEG CODE:CODE(4)
|
||||||
|
|
||||||
|
_vRegTest1Implementation:
|
||||||
|
|
||||||
|
/* Set each register to a known value. */
|
||||||
|
MOV.L #0x33333333, R15
|
||||||
|
MVTACHI R15
|
||||||
|
MOV.L #0x44444444, R15
|
||||||
|
MVTACLO R15
|
||||||
|
MOV.L #1, R1
|
||||||
|
MOV.L #2, R2
|
||||||
|
MOV.L #3, R3
|
||||||
|
MOV.L #4, R4
|
||||||
|
MOV.L #5, R5
|
||||||
|
MOV.L #6, R6
|
||||||
|
MOV.L #7, R7
|
||||||
|
MOV.L #8, R8
|
||||||
|
MOV.L #9, R9
|
||||||
|
MOV.L #10, R10
|
||||||
|
MOV.L #11, R11
|
||||||
|
MOV.L #12, R12
|
||||||
|
MOV.L #13, R13
|
||||||
|
MOV.L #14, R14
|
||||||
|
MOV.L #15, R15
|
||||||
|
|
||||||
|
/* Loop, checking each iteration that each register still contains the
|
||||||
|
expected value. */
|
||||||
|
TestLoop1:
|
||||||
|
|
||||||
|
/* Push the registers that are going to get clobbered. */
|
||||||
|
PUSHM R14-R15
|
||||||
|
|
||||||
|
/* Increment the loop counter to show this task is still getting CPU
|
||||||
|
time. */
|
||||||
|
MOV.L #_ulRegTest1CycleCount, R14
|
||||||
|
MOV.L [ R14 ], R15
|
||||||
|
ADD #1, R15
|
||||||
|
MOV.L R15, [ R14 ]
|
||||||
|
|
||||||
|
/* Yield to extend the text coverage. Set the bit in the ITU SWINTR
|
||||||
|
register. */
|
||||||
|
MOV.L #1, R14
|
||||||
|
MOV.L #0872E0H, R15
|
||||||
|
MOV.B R14, [R15]
|
||||||
|
NOP
|
||||||
|
NOP
|
||||||
|
|
||||||
|
/* Check the accumulator value. */
|
||||||
|
MVFACHI R15
|
||||||
|
CMP #0x33333333, R15
|
||||||
|
BNE RegTest2Error
|
||||||
|
MVFACMI R15
|
||||||
|
CMP #0x33334444, R15
|
||||||
|
BNE RegTest2Error
|
||||||
|
|
||||||
|
/* Restore the clobbered registers. */
|
||||||
|
POPM R14-R15
|
||||||
|
|
||||||
|
/* Now compare each register to ensure it still contains the value that
|
||||||
|
was set before this loop was entered. */
|
||||||
|
CMP #1, R1
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #2, R2
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #3, R3
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #4, R4
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #5, R5
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #6, R6
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #7, R7
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #8, R8
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #9, R9
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #10, R10
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #11, R11
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #12, R12
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #13, R13
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #14, R14
|
||||||
|
BNE RegTest1Error
|
||||||
|
CMP #15, R15
|
||||||
|
BNE RegTest1Error
|
||||||
|
|
||||||
|
/* All comparisons passed, start a new iteration of this loop. */
|
||||||
|
BRA TestLoop1
|
||||||
|
|
||||||
|
/* A compare failed, just loop here so the loop counter stops
|
||||||
|
incrementing causing the check timer to indicate the error. */
|
||||||
|
RegTest1Error:
|
||||||
|
BRA RegTest1Error
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
_vRegTest2Implementation:
|
||||||
|
|
||||||
|
/* Set each register to a known value. */
|
||||||
|
MOV.L #0x11111111, R15
|
||||||
|
MVTACHI R15
|
||||||
|
MOV.L #0x22222222, R15
|
||||||
|
MVTACLO R15
|
||||||
|
MOV.L #100, R1
|
||||||
|
MOV.L #200, R2
|
||||||
|
MOV.L #300, R3
|
||||||
|
MOV.L #400, R4
|
||||||
|
MOV.L #500, R5
|
||||||
|
MOV.L #600, R6
|
||||||
|
MOV.L #700, R7
|
||||||
|
MOV.L #800, R8
|
||||||
|
MOV.L #900, R9
|
||||||
|
MOV.L #1000, R10
|
||||||
|
MOV.L #1001, R11
|
||||||
|
MOV.L #1002, R12
|
||||||
|
MOV.L #1003, R13
|
||||||
|
MOV.L #1004, R14
|
||||||
|
MOV.L #1005, R15
|
||||||
|
|
||||||
|
/* Loop, checking each iteration that each register still contains the
|
||||||
|
expected value. */
|
||||||
|
TestLoop2:
|
||||||
|
|
||||||
|
/* Push the registers that are going to get clobbered. */
|
||||||
|
PUSHM R14-R15
|
||||||
|
|
||||||
|
/* Increment the loop counter to show this task is still getting CPU
|
||||||
|
time. */
|
||||||
|
MOV.L #_ulRegTest2CycleCount, R14
|
||||||
|
MOV.L [ R14 ], R15
|
||||||
|
ADD #1, R15
|
||||||
|
MOV.L R15, [ R14 ]
|
||||||
|
|
||||||
|
/* Check the accumulator value. */
|
||||||
|
MVFACHI R15
|
||||||
|
CMP #0x11111111, R15
|
||||||
|
BNE RegTest2Error
|
||||||
|
MVFACMI R15
|
||||||
|
CMP #0x11112222, R15
|
||||||
|
BNE RegTest2Error
|
||||||
|
|
||||||
|
/* Restore the clobbered registers. */
|
||||||
|
POPM R14-R15
|
||||||
|
|
||||||
|
/* Now compare each register to ensure it still contains the value that
|
||||||
|
was set before this loop was entered. */
|
||||||
|
CMP #100, R1
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #200, R2
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #300, R3
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #400, R4
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #500, R5
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #600, R6
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #700, R7
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #800, R8
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #900, R9
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #1000, R10
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #1001, R11
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #1002, R12
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #1003, R13
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #1004, R14
|
||||||
|
BNE RegTest2Error
|
||||||
|
CMP #1005, R15
|
||||||
|
BNE RegTest2Error
|
||||||
|
|
||||||
|
/* All comparisons passed, start a new iteration of this loop. */
|
||||||
|
BRA TestLoop2
|
||||||
|
|
||||||
|
/* A compare failed, just loop here so the loop counter stops
|
||||||
|
incrementing causing the check timer to indicate the error. */
|
||||||
|
RegTest2Error:
|
||||||
|
BRA RegTest2Error
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
END
|
||||||
|
|
24
FreeRTOS/Demo/RX100-RSK_IAR/settings/RTOSDemo_IAR.cspy.bat
Normal file
24
FreeRTOS/Demo/RX100-RSK_IAR/settings/RTOSDemo_IAR.cspy.bat
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
@REM This batch file has been generated by the IAR Embedded Workbench
|
||||||
|
@REM C-SPY Debugger, as an aid to preparing a command line for running
|
||||||
|
@REM the cspybat command line utility using the appropriate settings.
|
||||||
|
@REM
|
||||||
|
@REM Note that this file is generated every time a new debug session
|
||||||
|
@REM is initialized, so you may want to move or rename the file before
|
||||||
|
@REM making changes.
|
||||||
|
@REM
|
||||||
|
@REM You can launch cspybat by typing the name of this batch file followed
|
||||||
|
@REM by the name of the debug file (usually an ELF/DWARF or UBROF file).
|
||||||
|
@REM
|
||||||
|
@REM Read about available command line parameters in the C-SPY Debugging
|
||||||
|
@REM Guide. Hints about additional command line parameters that may be
|
||||||
|
@REM useful in specific cases:
|
||||||
|
@REM --download_only Downloads a code image without starting a debug
|
||||||
|
@REM session afterwards.
|
||||||
|
@REM --silent Omits the sign-on message.
|
||||||
|
@REM --timeout Limits the maximum allowed execution time.
|
||||||
|
@REM
|
||||||
|
|
||||||
|
|
||||||
|
"C:\devtools\IAR Systems\Embedded Workbench 6.5\common\bin\cspybat" "C:\devtools\IAR Systems\Embedded Workbench 6.5\rx\bin\rxproc.dll" "C:\devtools\IAR Systems\Embedded Workbench 6.5\rx\bin\rxemue20.dll" %1 --plugin "C:\devtools\IAR Systems\Embedded Workbench 6.5\rx\bin\rxbat.dll" --backend -B "-p" "C:\devtools\IAR Systems\Embedded Workbench 6.5\rx\config\debugger\ior5f51115.ddf" "--endian" "l" "--double" "32" "--core" "RX100" "--int" "32" "-d" "emue20" "--drv_mode" "debugging" "--drv_communication" "USB"
|
||||||
|
|
||||||
|
|
92
FreeRTOS/Demo/RX100-RSK_IAR/settings/RTOSDemo_IAR.dbgdt
Normal file
92
FreeRTOS/Demo/RX100-RSK_IAR/settings/RTOSDemo_IAR.dbgdt
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
|
||||||
|
<Project>
|
||||||
|
<Desktop>
|
||||||
|
<Static>
|
||||||
|
<Debug-Log>
|
||||||
|
|
||||||
|
|
||||||
|
<ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1622</ColumnWidth1></Debug-Log>
|
||||||
|
<Build>
|
||||||
|
<ColumnWidth0>20</ColumnWidth0>
|
||||||
|
<ColumnWidth1>1216</ColumnWidth1>
|
||||||
|
<ColumnWidth2>324</ColumnWidth2>
|
||||||
|
<ColumnWidth3>81</ColumnWidth3>
|
||||||
|
</Build>
|
||||||
|
<Workspace>
|
||||||
|
<ColumnWidths>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Column0>231</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
|
||||||
|
</Workspace>
|
||||||
|
<Disassembly>
|
||||||
|
<col-names>
|
||||||
|
|
||||||
|
|
||||||
|
<item>Disassembly</item><item>_I0</item></col-names>
|
||||||
|
<col-widths>
|
||||||
|
|
||||||
|
|
||||||
|
<item>599</item><item>20</item></col-widths>
|
||||||
|
<DisasmHistory/>
|
||||||
|
<PreferedWindows>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
|
||||||
|
|
||||||
|
|
||||||
|
<ShowCodeCoverage>1</ShowCodeCoverage><ShowInstrProfiling>1</ShowInstrProfiling></Disassembly>
|
||||||
|
<Register><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></Register><WATCH_1><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><expressions><item>lErrorStatus</item><item>lChangedTimerPeriodAlready</item><item/></expressions><col-names><item>Expression</item><item>Location</item><item>Type</item><item>Value</item></col-names><col-widths><item>200</item><item>150</item><item>100</item><item>62</item></col-widths></WATCH_1></Static>
|
||||||
|
<Windows>
|
||||||
|
|
||||||
|
|
||||||
|
<Wnd0>
|
||||||
|
<Tabs>
|
||||||
|
<Tab>
|
||||||
|
<Identity>TabID-27185-11031</Identity>
|
||||||
|
<TabName>Debug Log</TabName>
|
||||||
|
<Factory>Debug-Log</Factory>
|
||||||
|
<Session/>
|
||||||
|
</Tab>
|
||||||
|
<Tab>
|
||||||
|
<Identity>TabID-26662-11041</Identity>
|
||||||
|
<TabName>Build</TabName>
|
||||||
|
<Factory>Build</Factory>
|
||||||
|
<Session/>
|
||||||
|
</Tab>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
|
<SelectedTab>0</SelectedTab></Wnd0><Wnd1>
|
||||||
|
<Tabs>
|
||||||
|
<Tab>
|
||||||
|
<Identity>TabID-5165-11034</Identity>
|
||||||
|
<TabName>Workspace</TabName>
|
||||||
|
<Factory>Workspace</Factory>
|
||||||
|
<Session>
|
||||||
|
|
||||||
|
<NodeDict><ExpandedNode>RTOSDemo_IAR</ExpandedNode><ExpandedNode>RTOSDemo_IAR/FreeRTOS Source</ExpandedNode><ExpandedNode>RTOSDemo_IAR/FreeRTOS Source/portable</ExpandedNode><ExpandedNode>RTOSDemo_IAR/FreeRTOS Source/portable/IAR</ExpandedNode><ExpandedNode>RTOSDemo_IAR/FreeRTOS Source/portable/IAR/RX100</ExpandedNode></NodeDict></Session>
|
||||||
|
</Tab>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
|
<SelectedTab>0</SelectedTab></Wnd1></Windows>
|
||||||
|
<Editor>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>104</YPos2><SelStart2>6014</SelStart2><SelEnd2>6014</SelEnd2></Tab><ActiveTab>0</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>72</YPos2><SelStart2>5237</SelStart2><SelEnd2>5237</SelEnd2></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||||
|
<Positions>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Top><Row0><Sizes><Toolbar-01349150><key>iaridepm.enu1</key></Toolbar-01349150></Sizes></Row0><Row1><Sizes><Toolbar-05ac2708><key>debuggergui.enu1</key></Toolbar-05ac2708></Sizes></Row1></Top><Left><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>716</Bottom><Right>305</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>182738</sizeVertCX><sizeVertCY>731161</sizeVertCY></Rect></Wnd1></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>200</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203666</sizeVertCY></Rect></Wnd0></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||||
|
</Desktop>
|
||||||
|
</Project>
|
||||||
|
|
||||||
|
|
104
FreeRTOS/Demo/RX100-RSK_IAR/settings/RTOSDemo_IAR.dni
Normal file
104
FreeRTOS/Demo/RX100-RSK_IAR/settings/RTOSDemo_IAR.dni
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
[Stack]
|
||||||
|
FillEnabled=0
|
||||||
|
OverflowWarningsEnabled=1
|
||||||
|
WarningThreshold=90
|
||||||
|
SpWarningsEnabled=1
|
||||||
|
WarnLogOnly=1
|
||||||
|
UseTrigger=1
|
||||||
|
TriggerName=main
|
||||||
|
LimitSize=0
|
||||||
|
ByteLimit=50
|
||||||
|
[DebugChecksum]
|
||||||
|
Checksum=222757635
|
||||||
|
[CallStack]
|
||||||
|
ShowArgs=0
|
||||||
|
[Disassembly]
|
||||||
|
MixedMode=1
|
||||||
|
[InterruptLog]
|
||||||
|
LogEnabled=0
|
||||||
|
SumEnabled=0
|
||||||
|
GraphEnabled=0
|
||||||
|
ShowTimeLog=1
|
||||||
|
ShowTimeSum=1
|
||||||
|
SumSortOrder=0
|
||||||
|
[DataLog]
|
||||||
|
LogEnabled=0
|
||||||
|
SumEnabled=0
|
||||||
|
GraphEnabled=0
|
||||||
|
ShowTimeLog=1
|
||||||
|
ShowTimeSum=1
|
||||||
|
[Breakpoints2]
|
||||||
|
Count=0
|
||||||
|
[Interrupts]
|
||||||
|
Enabled=1
|
||||||
|
[MemoryMap]
|
||||||
|
Enabled=0
|
||||||
|
Base=0
|
||||||
|
UseAuto=0
|
||||||
|
TypeViolation=1
|
||||||
|
UnspecRange=1
|
||||||
|
ActionState=1
|
||||||
|
[E1/E20 Emulator]
|
||||||
|
BlockBits=15
|
||||||
|
B0=1,0
|
||||||
|
B1=1,1024
|
||||||
|
B2=1,2048
|
||||||
|
B3=1,3072
|
||||||
|
StartEnabled=0
|
||||||
|
StartSymbol=
|
||||||
|
StopEnabled=0
|
||||||
|
StopSymbol=
|
||||||
|
TraceMode=0
|
||||||
|
TraceOutput=2
|
||||||
|
TraceCapacity=0
|
||||||
|
TraceRestart=0
|
||||||
|
OperatingFrequency=22.000000
|
||||||
|
PerfEnabled=0
|
||||||
|
PerfCondition=0,0
|
||||||
|
PerfDisplayTime=0,0
|
||||||
|
PerfOnlyOnce=0,0
|
||||||
|
PerfUse64Bit=0
|
||||||
|
ChipName=R5F51115
|
||||||
|
PinMode=0
|
||||||
|
RegMode=0
|
||||||
|
Endian=0
|
||||||
|
ExtMemBlockNum=0
|
||||||
|
InputClock=22.000000
|
||||||
|
AllowClkSrcChange=0
|
||||||
|
WorkRamStart=4096
|
||||||
|
ComunicationSelect=1
|
||||||
|
JtagClock=0
|
||||||
|
FINE=2000000
|
||||||
|
FlashOvrNum=0
|
||||||
|
DebugFlags=0,0
|
||||||
|
EmulatorMode=0
|
||||||
|
PowerTargetFromEmulator=0
|
||||||
|
Voltage=0
|
||||||
|
NeedInit=0
|
||||||
|
[Log file]
|
||||||
|
LoggingEnabled=_ 0
|
||||||
|
LogFile=_ ""
|
||||||
|
Category=_ 0
|
||||||
|
[TermIOLog]
|
||||||
|
LoggingEnabled=_ 0
|
||||||
|
LogFile=_ ""
|
||||||
|
[CallStackLog]
|
||||||
|
Enabled=0
|
||||||
|
[DriverProfiling]
|
||||||
|
Enabled=0
|
||||||
|
Mode=1
|
||||||
|
Graph=0
|
||||||
|
Symbiont=0
|
||||||
|
Exclusions=
|
||||||
|
[Breakpoints]
|
||||||
|
Bp0=_ "STD_CODE" "{$PROJ_DIR$\Renesas_Files\r_bsp\board\user\hardware_setup.c}.60.2" 0 0 0 0 "" 0 ""
|
||||||
|
Count=1
|
||||||
|
[Monitor Execution]
|
||||||
|
Leave target running=0
|
||||||
|
Release target=0
|
||||||
|
[Aliases]
|
||||||
|
Count=0
|
||||||
|
SuppressDialog=0
|
||||||
|
[Trace1]
|
||||||
|
Enabled=0
|
||||||
|
ShowSource=1
|
49
FreeRTOS/Demo/RX100-RSK_IAR/settings/RTOSDemo_IAR.wsdt
Normal file
49
FreeRTOS/Demo/RX100-RSK_IAR/settings/RTOSDemo_IAR.wsdt
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
|
||||||
|
<Workspace>
|
||||||
|
<ConfigDictionary>
|
||||||
|
|
||||||
|
<CurrentConfigs><Project>RTOSDemo_IAR/Debug</Project></CurrentConfigs></ConfigDictionary>
|
||||||
|
<Desktop>
|
||||||
|
<Static>
|
||||||
|
<Workspace>
|
||||||
|
<ColumnWidths>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Column0>199</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
|
||||||
|
</Workspace>
|
||||||
|
<Build><ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1216</ColumnWidth1><ColumnWidth2>324</ColumnWidth2><ColumnWidth3>81</ColumnWidth3></Build><Select-Ambiguous-Definitions><ColumnWidth0>580</ColumnWidth0><ColumnWidth1>82</ColumnWidth1><ColumnWidth2>994</ColumnWidth2></Select-Ambiguous-Definitions><TerminalIO/><Find-in-Files><ColumnWidth0>695</ColumnWidth0><ColumnWidth1>82</ColumnWidth1><ColumnWidth2>994</ColumnWidth2></Find-in-Files></Static>
|
||||||
|
<Windows>
|
||||||
|
|
||||||
|
<Wnd0>
|
||||||
|
<Tabs>
|
||||||
|
<Tab>
|
||||||
|
<Identity>TabID-3933-19799</Identity>
|
||||||
|
<TabName>Workspace</TabName>
|
||||||
|
<Factory>Workspace</Factory>
|
||||||
|
<Session>
|
||||||
|
|
||||||
|
<NodeDict><ExpandedNode>RTOSDemo_IAR</ExpandedNode><ExpandedNode>RTOSDemo_IAR/Renesas Files</ExpandedNode></NodeDict></Session>
|
||||||
|
</Tab>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
|
<SelectedTab>0</SelectedTab></Wnd0><Wnd1><Tabs><Tab><Identity>TabID-4909-11467</Identity><TabName>Build</TabName><Factory>Build</Factory><Session/></Tab><Tab><Identity>TabID-18506-4030</Identity><TabName>Ambiguous Definitions</TabName><Factory>Select-Ambiguous-Definitions</Factory><Session/></Tab><Tab><Identity>TabID-16773-20028</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd1></Windows>
|
||||||
|
<Editor>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>74</YPos2><SelStart2>6014</SelStart2><SelEnd2>6014</SelEnd2></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||||
|
<Positions>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Top><Row0><Sizes><Toolbar-01349150><key>iaridepm.enu1</key></Toolbar-01349150></Sizes></Row0><Row1><Sizes/></Row1><Row2><Sizes/></Row2></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>648</Bottom><Right>273</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>163690</sizeVertCX><sizeVertCY>661914</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>290</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>292</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>297352</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203666</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||||
|
</Desktop>
|
||||||
|
</Workspace>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?xml version="1.0" encoding="ASCII"?>
|
||||||
|
<com.renesas.linkersection.model:SectionContainer xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:com.renesas.linkersection.model="http:///LinkerSection.ecore">
|
||||||
|
<sections name="SU">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress"/>
|
||||||
|
</sections>
|
||||||
|
<sections name="SI"/>
|
||||||
|
<sections name="B_1"/>
|
||||||
|
<sections name="R_1"/>
|
||||||
|
<sections name="B_2"/>
|
||||||
|
<sections name="R_2"/>
|
||||||
|
<sections name="B"/>
|
||||||
|
<sections name="R"/>
|
||||||
|
<sections name="PResetPRG">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294836224"/>
|
||||||
|
</sections>
|
||||||
|
<sections name="C_1">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294840320"/>
|
||||||
|
</sections>
|
||||||
|
<sections name="C_2"/>
|
||||||
|
<sections name="C"/>
|
||||||
|
<sections name="C$*"/>
|
||||||
|
<sections name="D*"/>
|
||||||
|
<sections name="W*"/>
|
||||||
|
<sections name="L"/>
|
||||||
|
<sections name="PIntPRG">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294860800"/>
|
||||||
|
</sections>
|
||||||
|
<sections name="P">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294868992"/>
|
||||||
|
</sections>
|
||||||
|
<sections name="FIXEDVECT">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294967248"/>
|
||||||
|
</sections>
|
||||||
|
</com.renesas.linkersection.model:SectionContainer>
|
34
FreeRTOS/Demo/RX100-RSK_Renesas_e2studio/.Releaselinker
Normal file
34
FreeRTOS/Demo/RX100-RSK_Renesas_e2studio/.Releaselinker
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
<?xml version="1.0" encoding="ASCII"?>
|
||||||
|
<com.renesas.linkersection.model:SectionContainer xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:com.renesas.linkersection.model="http:///LinkerSection.ecore">
|
||||||
|
<sections name="SU">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress"/>
|
||||||
|
</sections>
|
||||||
|
<sections name="SI"/>
|
||||||
|
<sections name="B_1"/>
|
||||||
|
<sections name="R_1"/>
|
||||||
|
<sections name="B_2"/>
|
||||||
|
<sections name="R_2"/>
|
||||||
|
<sections name="B"/>
|
||||||
|
<sections name="R"/>
|
||||||
|
<sections name="PResetPRG">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294836224"/>
|
||||||
|
</sections>
|
||||||
|
<sections name="C_1">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294840320"/>
|
||||||
|
</sections>
|
||||||
|
<sections name="C_2"/>
|
||||||
|
<sections name="C"/>
|
||||||
|
<sections name="C$*"/>
|
||||||
|
<sections name="D*"/>
|
||||||
|
<sections name="W*"/>
|
||||||
|
<sections name="L"/>
|
||||||
|
<sections name="PIntPRG">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294860800"/>
|
||||||
|
</sections>
|
||||||
|
<sections name="P">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294868992"/>
|
||||||
|
</sections>
|
||||||
|
<sections name="FIXEDVECT">
|
||||||
|
<sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="4294967248"/>
|
||||||
|
</sections>
|
||||||
|
</com.renesas.linkersection.model:SectionContainer>
|
236
FreeRTOS/Demo/RX100-RSK_Renesas_e2studio/.cproject
Normal file
236
FreeRTOS/Demo/RX100-RSK_Renesas_e2studio/.cproject
Normal file
|
@ -0,0 +1,236 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?>
|
||||||
|
|
||||||
|
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189" moduleId="org.eclipse.cdt.core.settings" name="HardwareDebug">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="com.renesas.cdt.core.KPITGCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="com.renesas.cdt.core.KPITVCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="com.renesas.cdt.core.KPITGASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="com.renesas.cdt.core.KPITMakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="com.renesas.cdt.core.KPITGLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactExtension="mot" artifactName="RTOSDemo_Renesas" buildArtefactType="com.renesas.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=com.renesas.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf *.lst *.lis *.lpp *.map *.x *.lbp src/*.src src/*.p src/*.pp *.bls *.libelf *.lbk *.abs" description="Debug on hardware" errorParsers="com.renesas.cdt.core.KPITMakeErrorParser;com.renesas.cdt.core.KPITGCCErrorParser;com.renesas.cdt.core.KPITGASErrorParser;com.renesas.cdt.core.KPITGLDErrorParser;com.renesas.cdt.core.KPITVCErrorParser" id="com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189" name="HardwareDebug" parent="com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id">
|
||||||
|
<folderInfo id="com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189." name="/" resourcePath="">
|
||||||
|
<toolChain id="com.renesas.cdt.rxc.hardwaredebug.win32.toolChain.Id.1936925667" name="Renesas RXC Toolchain" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.toolChain.Id" targetTool="com.renesas.cdt.rxc.debug.win32.tool.convertor.Id">
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.PE" id="com.renesas.cdt.rxc.hardwaredebug.win32.targetPlatform.Id.1377846111" isAbstract="false" osList="win32" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.targetPlatform.Id"/>
|
||||||
|
<builder buildPath="${workspace_loc:/BSP111/HardwareDebug}" id="com.renesas.cdt.rxc.hardwaredebug.win32.builder.Id.2044615069" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="SHC Make Builder" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.builder.Id"/>
|
||||||
|
<tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.compiler.Id.486948393" name="Compiler" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.compiler.Id">
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.cpuType.982467441" name="CPU type" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.cpuType" value="RX100" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.endian.1621733056" name="Data Endian" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.endian" value="Little-endian data" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.roundTo.915599060" name="Round to" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.roundTo" value="Nearest" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.precisionDouble.786447340" name="Precision of double" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.precisionDouble" value="Single precision" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.signChar.262626578" name="Sign of char" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.signChar" value="unsigned" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.signBitField.564578464" name="Sign of bit field" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.signBitField" value="unsigned" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.allocLowerBit.767627724" name="Allocate from lower bit" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.allocLowerBit" value="Lower bit" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.widthDivergence.1950840170" name="Width of divergence of function" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.widthDivergence" value="24 bit" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.patchCode.12062932" name="Patch code generation" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.patchCode" value="None" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.registerFastInterrupt.936233376" name="Fast interrupt register" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.registerFastInterrupt" value="None" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.ROM.695038388" name="ROM" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.ROM" value="None" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.RAM.1544552703" name="RAM" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.RAM" value="None" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.addressRegister.970641430" name="Address Register" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.addressRegister" value="None" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.renesas.Compiler.option.C.441900014" name="C :" superClass="com.renesas.cdt.renesas.Compiler.option.C" value="com.renesas.cdt.renesas.Compiler.option.C99" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.renesas.Compiler.option.incFileDirectories.1933791951" name="Include file directories" superClass="com.renesas.cdt.renesas.Compiler.option.incFileDirectories" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value=""${INC_RX}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/Common_Demo_Tasks/include}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/Renesas_Files/r_bsp/mcu/rx111}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/FreeRTOS_Source/include}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/FreeRTOS_Source/portable/Renesas/RX100}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/Renesas_Files/r_bsp}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/Renesas_Files/r_bsp/board/rskrx111}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/Renesas_Files/r_switches}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/RTOSDemo/Renesas_Files/r_switches/src}""/>
|
||||||
|
</option>
|
||||||
|
<option id="com.renesas.cdt.renesas.Compiler.option.CPUSeries.322057583" name="Cpu Series" superClass="com.renesas.cdt.renesas.Compiler.option.CPUSeries" value="RX111" valueType="string"/>
|
||||||
|
<option id="com.renesas.cdt.renesas.Compiler.option.UserDef.1497284878" name="User-defined options" superClass="com.renesas.cdt.renesas.Compiler.option.UserDef" valueType="stringList">
|
||||||
|
<listOptionValue builtIn="false" value="-nologo"/>
|
||||||
|
<listOptionValue builtIn="false" value="-change_message=warning"/>
|
||||||
|
</option>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.cpu.529811854" name="CPU" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.cpu" value="RX111" valueType="string"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.optimizeLevel.1070547061" name="Optimize level" superClass="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.optimizeLevel" value="com.renesas.cdt.rxc.HardwareDebug.Compiler.option.optimizeLevel.0" valueType="enumerated"/>
|
||||||
|
<inputType id="%Base.Compiler.Shc.C.Input.Id.1298690760" name="C Input" superClass="%Base.Compiler.Shc.C.Input.Id"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.assembler.Id.299640407" name="Assembler" outputFlag="-output=" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.assembler.Id">
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Assembler.option.cpu.371490144" name="CPU" superClass="com.renesas.cdt.rxc.HardwareDebug.Assembler.option.cpu" value="RX100" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Assembler.option.endian.660114428" name="Data Endian" superClass="com.renesas.cdt.rxc.HardwareDebug.Assembler.option.endian" value="Little-endian data" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.Assembler.option.address.869973823" name="Address" superClass="com.renesas.cdt.rxc.HardwareDebug.Assembler.option.address" value="00000000" valueType="string"/>
|
||||||
|
<option id="com.renesas.cdt.renesas.Assembler.option.userDefine.1248628654" name="User-defined options" superClass="com.renesas.cdt.renesas.Assembler.option.userDefine" valueType="stringList">
|
||||||
|
<listOptionValue builtIn="false" value="-nologo"/>
|
||||||
|
<listOptionValue builtIn="false" value=""/>
|
||||||
|
<listOptionValue builtIn="false" value=""/>
|
||||||
|
</option>
|
||||||
|
<inputType id="%Base.Assembler.shcInputType.Id.1801607357" name="Assembler InputType" superClass="%Base.Assembler.shcInputType.Id"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.linker.Id.1083452385" name="Linker" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.linker.Id">
|
||||||
|
<option id="com.renesas.cdt.renesas.Linker.option.userDefined.1041569977" name="User-defined options" superClass="com.renesas.cdt.renesas.Linker.option.userDefined" valueType="stringList">
|
||||||
|
<listOptionValue builtIn="false" value="-rom=D=R,D_1=R_1,D_2=R_2"/>
|
||||||
|
<listOptionValue builtIn="false" value="-nomessage"/>
|
||||||
|
<listOptionValue builtIn="false" value="-nologo"/>
|
||||||
|
</option>
|
||||||
|
<option id="com.renesas.cdt.renesas.Linker.option.showVector.1685941890" name="Show vector" superClass="com.renesas.cdt.renesas.Linker.option.showVector" value="true" valueType="boolean"/>
|
||||||
|
<option id="com.renesas.cdt.renesas.Linker.option.showTotalSectionSize.684296766" name="Show total section size" superClass="com.renesas.cdt.renesas.Linker.option.showTotalSectionSize" value="true" valueType="boolean"/>
|
||||||
|
<option id="com.renesas.cdt.renesas.Linker.option.showCrossReference.1722254828" name="Show cross-reference" superClass="com.renesas.cdt.renesas.Linker.option.showCrossReference" value="true" valueType="boolean"/>
|
||||||
|
<option id="com.renesas.cdt.renesas.Linker.option.showReference.912872658" name="Show reference" superClass="com.renesas.cdt.renesas.Linker.option.showReference" value="true" valueType="boolean"/>
|
||||||
|
<option id="com.renesas.cdt.renesas.Linker.option.showSymbol.382153207" name="Show symbol" superClass="com.renesas.cdt.renesas.Linker.option.showSymbol" value="true" valueType="boolean"/>
|
||||||
|
<option id="com.renesas.cdt.renesas.Linker.option.enableAll.1808678203" name="Enable all" superClass="com.renesas.cdt.renesas.Linker.option.enableAll" value="true" valueType="boolean"/>
|
||||||
|
</tool>
|
||||||
|
<tool command="lbgrx" id="%com.renesas.cdt.rxc.hardwaredebug.win32.tool.libgen.Id.1500253254" name="Standard Library" superClass="%com.renesas.cdt.rxc.hardwaredebug.win32.tool.libgen.Id">
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.StandardLibrary.option.cpu.1800175066" name="CPU" superClass="com.renesas.cdt.rxc.HardwareDebug.StandardLibrary.option.cpu" value="RX100" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.StandardLibrary.option.endian.392081833" name="Data Endian" superClass="com.renesas.cdt.rxc.HardwareDebug.StandardLibrary.option.endian" value="Little-endian data" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.rxc.HardwareDebug.StandardLibrary.option.address.1948593009" name="Address" superClass="com.renesas.cdt.rxc.HardwareDebug.StandardLibrary.option.address" value="00000000" valueType="string"/>
|
||||||
|
<option id="com.renesas.cdt.renesas.StandardLibrary.option.libConfiguration.1111135642" name="Library configuration" superClass="com.renesas.cdt.renesas.StandardLibrary.option.libConfiguration" value="C99" valueType="enumerated"/>
|
||||||
|
<option id="com.renesas.cdt.renesas.StandardLibrary.option.mathc89.624663395" name="math.h (C89/C99): Mathematical/trigonometric operations (double-precision)" superClass="com.renesas.cdt.renesas.StandardLibrary.option.mathc89" value="false" valueType="boolean"/>
|
||||||
|
</tool>
|
||||||
|
<tool command="optlnk" id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.convertor.Id.340881453" name="Converter" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.convertor.Id"/>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<folderInfo id="com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189.158419194" name="/" resourcePath="RTOSDemo/Renesas_Files/r_switches">
|
||||||
|
<toolChain id="com.renesas.cdt.rxc.hardwaredebug.win32.toolChain.Id.859624060" name="Renesas RXC Toolchain" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.toolChain.Id" unusedChildren="">
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.PE" id="com.renesas.cdt.rxc.hardwaredebug.win32.targetPlatform.Id" isAbstract="false" osList="win32" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.targetPlatform.Id"/>
|
||||||
|
<tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.compiler.Id.1029821514" name="Compiler" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.compiler.Id.486948393">
|
||||||
|
<inputType id="%Base.Compiler.Shc.C.Input.Id.43411981" name="C Input" superClass="%Base.Compiler.Shc.C.Input.Id"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.assembler.Id.1012693747" name="Assembler" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.assembler.Id.299640407">
|
||||||
|
<inputType id="%Base.Assembler.shcInputType.Id.314236670" name="Assembler InputType" superClass="%Base.Assembler.shcInputType.Id"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.linker.Id.1484775969" name="Linker" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.linker.Id.1083452385"/>
|
||||||
|
<tool id="%com.renesas.cdt.rxc.hardwaredebug.win32.tool.libgen.Id.1649982231" name="Standard Library" superClass="%com.renesas.cdt.rxc.hardwaredebug.win32.tool.libgen.Id.1500253254"/>
|
||||||
|
<tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.convertor.Id.357794366" name="Converter" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.convertor.Id.340881453"/>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry excluding="RTOSDemo/Renesas_Files/r_sci_multi_ch|RTOSDemo/Renesas_Files/r_delay|RTOSDemo/OriginalDemo.c|r_sci_multi_ch|r_switches|src|r_bsp" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<profile id="com.iar.cdt.v850.scanner.IAR_V850_PerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="false" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="com.iar.cdt.v850.toolchain.scannerInfoProvider1">
|
||||||
|
<runAction arguments="" command="" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="com.iar.cdt.rl78.scanner.IAR_RL78_PerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="false" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="com.iar.cdt.rl78.toolchain.scannerInfoProviderRL78">
|
||||||
|
<runAction arguments="" command="" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="com.iar.cdt.rx.scanner.IAR_RX_PerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="false" filePath=""/>
|
||||||
|
<parser enabled="false"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="com.iar.cdt.rx.toolchain.scannerInfoProviderRX">
|
||||||
|
<runAction arguments="" command="" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="makefileGenerator">
|
||||||
|
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="BSP111.com.renesas.cdt.rxc.projectType.win32.Id.1210290450" name="RenesasRXC" projectType="com.renesas.cdt.rxc.projectType.win32.Id"/>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
5
FreeRTOS/Demo/RX100-RSK_Renesas_e2studio/.info
Normal file
5
FreeRTOS/Demo/RX100-RSK_Renesas_e2studio/.info
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
TOOL_CHAIN=Renesas RXC Toolchain
|
||||||
|
VERSION=v1.02.01
|
||||||
|
TC_INSTALL=C:\Devtools\Renesas\Hew\Tools\Renesas\RX\1_2_1\
|
||||||
|
VERSION_IDE=3.06.02.080
|
||||||
|
E2STUDIO_VERSION=1.1.1.7
|
83
FreeRTOS/Demo/RX100-RSK_Renesas_e2studio/.project
Normal file
83
FreeRTOS/Demo/RX100-RSK_Renesas_e2studio/.project
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>RTOSDemo_Renesas</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.renesas.cdt.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></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>make</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildLocation</key>
|
||||||
|
<value>${workspace_loc:/BSP111/HardwareDebug}</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.configurationIds</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</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>true</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>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>com.renesas.cdt.core.kpitcnature</nature>
|
||||||
|
<nature>com.renesas.cdt.core.kpitccnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,69 @@
|
||||||
|
#Tue Nov 06 09:14:28 EST 2012
|
||||||
|
com.renesas.cdt.renesas.Assembler.option.userDefine=-nologo;;;
|
||||||
|
com.renesas.cdt.renesas.Compiler.option.C=com.renesas.cdt.renesas.Compiler.option.C99
|
||||||
|
com.renesas.cdt.renesas.Compiler.option.UserDef=-nologo;-change_message\=warning;
|
||||||
|
com.renesas.cdt.renesas.Compiler.option.incFileDirectories="C\:\\PROGRA~1\\Renesas\\Hew\\Tools\\Renesas\\RX\\1_2_0\\include";
|
||||||
|
com.renesas.cdt.renesas.Linker.option.userDefined=-rom\=D\=R,D_1\=R_1,D_2\=R_2;-nomessage;-nologo;
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.complexC99=false
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.ctypec89=false
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.fenvC99=false
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.inttypesC99=false
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.libConfiguration=C99
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.mathc89=false
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.mathfc89=false
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.runtime=true
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.rxccomplexCPP=false
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.rxciosCPP=false
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.rxcnewCPP=true
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.rxcstringCPP=false
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.stdargc89=false
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.stdioc89=true
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.stdlibc89=true
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.stringc89=true
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.wcharC99=false
|
||||||
|
com.renesas.cdt.renesas.StandardLibrary.option.wctypeC99=false
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Assembler.option.endian=Little-endian data
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.RAM=None
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.ROM=None
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.address=00000000
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.addressRegister=None
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.allocLowerBit=Lower bit
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.cpuType=RX100
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.denormalized=false
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.endian=Little-endian data
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.enumSize=false
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.packStructures=false
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.patchCode=None
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.precisionDouble=Single precision
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.registerFastInterrupt=None
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.replaceFromIntWithShort=false
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.roundTo=Nearest
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.signBitField=unsigned
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.signChar=unsigned
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.useDynamic=false
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.useTry=false
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.widthDivergence=24 bit
|
||||||
|
com.renesas.cdt.rxc.HardwareDebug.StandardLibrary.option.endian=Little-endian data
|
||||||
|
com.renesas.cdt.rxc.Release.Assembler.option.endian=Little-endian data
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.RAM=None
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.ROM=None
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.address=00000000
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.addressRegister=None
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.allocLowerBit=Lower bit
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.cpuType=RX100
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.denormalized=false
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.endian=Little-endian data
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.enumSize=false
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.packStructures=false
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.patchCode=None
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.precisionDouble=Single precision
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.registerFastInterrupt=None
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.replaceFromIntWithShort=false
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.roundTo=Nearest
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.signBitField=unsigned
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.signChar=unsigned
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.useDynamic=false
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.useTry=false
|
||||||
|
com.renesas.cdt.rxc.Release.Compiler.option.widthDivergence=24 bit
|
||||||
|
com.renesas.cdt.rxc.Release.StandardLibrary.option.endian=Little-endian data
|
||||||
|
eclipse.preferences.version=1
|
|
@ -0,0 +1,12 @@
|
||||||
|
#Fri Nov 09 15:36:42 EST 2012
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
environment/buildEnvironmentInclude/com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189/CPATH/delimiter=;
|
||||||
|
environment/buildEnvironmentInclude/com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189/CPATH/operation=remove
|
||||||
|
environment/buildEnvironmentInclude/com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189/C_INCLUDE_PATH/delimiter=;
|
||||||
|
environment/buildEnvironmentInclude/com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189/C_INCLUDE_PATH/operation=remove
|
||||||
|
environment/buildEnvironmentInclude/com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189/append=true
|
||||||
|
environment/buildEnvironmentInclude/com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189/appendContributed=true
|
||||||
|
environment/buildEnvironmentLibrary/com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189/LIBRARY_PATH/delimiter=;
|
||||||
|
environment/buildEnvironmentLibrary/com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189/LIBRARY_PATH/operation=remove
|
||||||
|
environment/buildEnvironmentLibrary/com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189/append=true
|
||||||
|
environment/buildEnvironmentLibrary/com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.287456189/appendContributed=true
|
77
FreeRTOS/Demo/RX100-RSK_Renesas_e2studio/BSP111.launch
Normal file
77
FreeRTOS/Demo/RX100-RSK_Renesas_e2studio/BSP111.launch
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="com.renesas.cdt.launch.dsf.gdbremote.launchConfigurationType">
|
||||||
|
<intAttribute key="com.renesas.cdt.core.admPortNumber" value="61236"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.initCommands" value=""/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.ipAddress" value="localhost"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.jtagDevice" value="E1"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.core.loadImage" value="true"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.optionInitCommands" value=""/>
|
||||||
|
<intAttribute key="com.renesas.cdt.core.portNumber" value="61234"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.runCommands" value=""/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.serverParam" value="-g E1 -l 0 -t R5F51115 -p 61234 -d 61236 -uClockSrcHoco= 0 -uInputClock= 16.0000 -uAllowClockSourceInternal= 1 -uUseFine= 1 -uFineBaudRate= 2.00 -w 0 -z 0 -uRegisterSetting= 0 -uModePin= 0 -uDebugMode= 1 -uExecuteProgram= 0 -uIdCode= FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -n 0 -uWorkRamAddress= 1000 -uProgReWriteIRom= 0 -uProgReWriteDFlash= 0"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.core.setResume" value="true"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.core.setStopAt" value="true"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.core.startServer" value="true"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.stopAt" value="main"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.core.targetDevice" value="R5F51115"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.core.useRemoteTarget" value="true"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.core.verboseMode" value="false"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.launch.dsf.IO_MAP" value="${eclipse_home}..\internal\IoFiles\RX\RX111.sfrx"/>
|
||||||
|
<booleanAttribute key="com.renesas.cdt.launch.dsf.USE_DEFAULT_IO_MAP" value="true"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.allow.clock.source.internal" value="true"/>
|
||||||
|
<intAttribute key="com.renesas.hardwaredebug.e1.clock_source" value="0"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.connection.mode" value="1"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.e1_pwr" value="false"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.execute.program" value="false"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.external_memory" value=""/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.fine.baud.rate" value="2.00"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.flash_overwrite_blocks" value=""/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.hw_break" value="false"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.id_code" value="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.inputclock" value="16.0000"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.jtag.clock.freq" value="16.5"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.jtag.or.fine" value="1"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.le" value="true"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.mode" value="0"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.mode_pin" value="0"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.prog_rewrite_dflash" value="false"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e1.prog_rewrite_irom" value="false"/>
|
||||||
|
<stringAttribute key="com.renesas.hardwaredebug.e1.supply.voltage" value="3.3V"/>
|
||||||
|
<intAttribute key="com.renesas.hardwaredebug.e1.work_ram_start" value="4096"/>
|
||||||
|
<booleanAttribute key="com.renesas.hardwaredebug.e20.le" value="true"/>
|
||||||
|
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.delay" value="3"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="false"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.runCommands" value=""/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${eclipse_home}../DebugComp/rx-elf-gdb"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="true"/>
|
||||||
|
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="HardwareDebug\BSP111.x"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="BSP111"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
|
<listEntry value="/BSP111"/>
|
||||||
|
</listAttribute>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
|
<listEntry value="4"/>
|
||||||
|
</listAttribute>
|
||||||
|
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="reserved-for-future-use"/> "/>
|
||||||
|
</launchConfiguration>
|
|
@ -0,0 +1,52 @@
|
||||||
|
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 RTOSDemo\FreeRTOS_Source Goto END
|
||||||
|
|
||||||
|
REM Create the required directory structure.
|
||||||
|
MD RTOSDemo\FreeRTOS_Source
|
||||||
|
MD RTOSDemo\FreeRTOS_Source\include
|
||||||
|
MD RTOSDemo\FreeRTOS_Source\portable
|
||||||
|
MD RTOSDemo\FreeRTOS_Source\portable\MemMang
|
||||||
|
MD RTOSDemo\FreeRTOS_Source\portable\Renesas
|
||||||
|
MD RTOSDemo\FreeRTOS_Source\portable\Renesas\RX100
|
||||||
|
MD RTOSDemo\Common_Demo_Tasks
|
||||||
|
MD RTOSDemo\Common_Demo_Tasks\include
|
||||||
|
|
||||||
|
REM Copy the core kernel files into the project directory
|
||||||
|
copy %FREERTOS_SOURCE%\tasks.c RTOSDemo\FreeRTOS_Source
|
||||||
|
copy %FREERTOS_SOURCE%\queue.c RTOSDemo\FreeRTOS_Source
|
||||||
|
copy %FREERTOS_SOURCE%\list.c RTOSDemo\FreeRTOS_Source
|
||||||
|
copy %FREERTOS_SOURCE%\timers.c RTOSDemo\FreeRTOS_Source
|
||||||
|
|
||||||
|
REM Copy the common header files into the project directory
|
||||||
|
copy %FREERTOS_SOURCE%\include\*.* RTOSDemo\FreeRTOS_Source\include
|
||||||
|
|
||||||
|
REM Copy the portable layer files into the project directory
|
||||||
|
copy %FREERTOS_SOURCE%\portable\Renesas\RX100\*.* RTOSDemo\FreeRTOS_Source\portable\Renesas\RX100
|
||||||
|
|
||||||
|
REM Copy the memory allocation files into the project directory
|
||||||
|
copy %FREERTOS_SOURCE%\portable\MemMang\heap_4.c RTOSDemo\FreeRTOS_Source\portable\MemMang
|
||||||
|
|
||||||
|
REM Copy the files that define the common demo tasks.
|
||||||
|
copy %COMMON_SOURCE%\death.c RTOSDemo\Common_Demo_Tasks
|
||||||
|
copy %COMMON_SOURCE%\blocktim.c RTOSDemo\Common_Demo_Tasks
|
||||||
|
copy %COMMON_SOURCE%\GenQTest.c RTOSDemo\Common_Demo_Tasks
|
||||||
|
copy %COMMON_SOURCE%\recmutex.c RTOSDemo\Common_Demo_Tasks
|
||||||
|
|
||||||
|
REM Copy the common demo file headers.
|
||||||
|
copy %COMMON_INCLUDE%\*.h RTOSDemo\Common_Demo_Tasks\include
|
||||||
|
|
||||||
|
: END
|
|
@ -0,0 +1,188 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following #error directive is to remind users that a batch file must be
|
||||||
|
* executed prior to this project being built. The batch file *cannot* be
|
||||||
|
* executed from within the IDE! Once it has been executed, re-open or refresh
|
||||||
|
* the Eclipse project and 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
|
||||||
|
|
||||||
|
/* Hardware specifics. */
|
||||||
|
#include "platform.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.
|
||||||
|
*----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* DEMO SPECIFIC SETTING:
|
||||||
|
* Set configCREATE_LOW_POWER_DEMO to one to run the low power demo with tick
|
||||||
|
* suppression, or 0 to run the more comprehensive test and demo application.
|
||||||
|
* If configCREATE_LOW_POWER_DEMO is set to 1 then main() calls main_low_power().
|
||||||
|
* If configCREATE_LOW_POWER_DEMO is set to 0 then main() calls main_full().
|
||||||
|
*/
|
||||||
|
#define configCREATE_LOW_POWER_DEMO 1
|
||||||
|
|
||||||
|
|
||||||
|
#define configUSE_PREEMPTION 1
|
||||||
|
#define configUSE_TICKLESS_IDLE configCREATE_LOW_POWER_DEMO
|
||||||
|
#define configUSE_IDLE_HOOK 0
|
||||||
|
#define configUSE_TICK_HOOK 0
|
||||||
|
#define configCPU_CLOCK_HZ ( ICLK_HZ ) /* Set in mcu_info.h. */
|
||||||
|
#define configPERIPHERAL_CLOCK_HZ ( PCLKB_HZ ) /* Set in muc_info.h. */
|
||||||
|
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||||
|
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 100 )
|
||||||
|
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 9 * 1024 ) )
|
||||||
|
#define configMAX_TASK_NAME_LEN ( 12 )
|
||||||
|
#define configUSE_TRACE_FACILITY 1
|
||||||
|
#define configUSE_16_BIT_TICKS 0
|
||||||
|
#define configIDLE_SHOULD_YIELD 1
|
||||||
|
#define configUSE_CO_ROUTINES 0
|
||||||
|
#define configUSE_MUTEXES 1
|
||||||
|
#define configGENERATE_RUN_TIME_STATS 0
|
||||||
|
#define configCHECK_FOR_STACK_OVERFLOW 2
|
||||||
|
#define configUSE_RECURSIVE_MUTEXES 1
|
||||||
|
#define configQUEUE_REGISTRY_SIZE 0
|
||||||
|
#define configUSE_MALLOC_FAILED_HOOK 0
|
||||||
|
#define configUSE_APPLICATION_TASK_TAG 0
|
||||||
|
|
||||||
|
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 7 )
|
||||||
|
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
|
||||||
|
|
||||||
|
/* Software timer definitions - only included when the demo is configured to
|
||||||
|
build the full demo (as opposed to the low power demo). */
|
||||||
|
#if configCREATE_LOW_POWER_DEMO == 1
|
||||||
|
#define configUSE_TIMERS 0
|
||||||
|
#else
|
||||||
|
#define configUSE_TIMERS 1
|
||||||
|
#define configTIMER_TASK_PRIORITY ( 3 )
|
||||||
|
#define configTIMER_QUEUE_LENGTH 5
|
||||||
|
#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE )
|
||||||
|
#endif /* configCREATE_LOW_POWER_DEMO */
|
||||||
|
|
||||||
|
/* The interrupt priority used by the kernel itself for the tick interrupt and
|
||||||
|
the pended interrupt. This would normally be the lowest priority. */
|
||||||
|
#define configKERNEL_INTERRUPT_PRIORITY 1
|
||||||
|
|
||||||
|
/* The maximum interrupt priority from which FreeRTOS API calls can be made.
|
||||||
|
Interrupts that use a priority above this will not be effected by anything the
|
||||||
|
kernel is doing. */
|
||||||
|
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4
|
||||||
|
|
||||||
|
/* Set the following definitions to 1 to include the API function, or zero
|
||||||
|
to exclude the API function. */
|
||||||
|
|
||||||
|
#define INCLUDE_vTaskPrioritySet 1
|
||||||
|
#define INCLUDE_uxTaskPriorityGet 1
|
||||||
|
#define INCLUDE_vTaskDelete 1
|
||||||
|
#define INCLUDE_vTaskCleanUpResources 0
|
||||||
|
#define INCLUDE_vTaskSuspend 1
|
||||||
|
#define INCLUDE_vTaskDelayUntil 1
|
||||||
|
#define INCLUDE_vTaskDelay 1
|
||||||
|
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
||||||
|
#define INCLUDE_xTaskGetSchedulerState 1
|
||||||
|
|
||||||
|
extern void vAssertCalled( void );
|
||||||
|
#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled();
|
||||||
|
|
||||||
|
/* The configPRE_SLEEP_PROCESSING() and configPOST_SLEEP_PROCESSING() macros
|
||||||
|
allow the application writer to add additional code before and after the MCU is
|
||||||
|
placed into the low power state respectively. The implementations provided in
|
||||||
|
this demo can be extended to save even more power - for example the analog
|
||||||
|
input used by the low power demo could be switched off in the pre-sleep macro
|
||||||
|
and back on again in the post sleep macro. */
|
||||||
|
void vPreSleepProcessing( unsigned long xExpectedIdleTime );
|
||||||
|
void vPostSleepProcessing( unsigned long xExpectedIdleTime );
|
||||||
|
#define configPRE_SLEEP_PROCESSING( xExpectedIdleTime ) vPreSleepProcessing( xExpectedIdleTime );
|
||||||
|
#define configPOST_SLEEP_PROCESSING( xExpectedIdleTime ) vPostSleepProcessing( xExpectedIdleTime );
|
||||||
|
|
||||||
|
/* configTICK_VECTOR must be set to the interrupt vector used by the peripheral
|
||||||
|
that generates the tick interrupt. */
|
||||||
|
#define configTICK_VECTOR VECT_CMT0_CMI0
|
||||||
|
|
||||||
|
#endif /* FREERTOS_CONFIG_H */
|
200
FreeRTOS/Demo/RX100-RSK_Renesas_e2studio/RTOSDemo/ParTest.c
Normal file
200
FreeRTOS/Demo/RX100-RSK_Renesas_e2studio/RTOSDemo/ParTest.c
Normal file
|
@ -0,0 +1,200 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.4.0 - Copyright (C) 2013 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 itcan be
|
||||||
|
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
||||||
|
writing to Real Time Engineers Ltd., 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, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
||||||
|
fully thread aware and reentrant UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - 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.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------
|
||||||
|
* Simple IO routines to control the LEDs.
|
||||||
|
*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Scheduler includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
|
/* Demo includes. */
|
||||||
|
#include "partest.h"
|
||||||
|
|
||||||
|
#define partestNUM_LEDS ( 4 )
|
||||||
|
|
||||||
|
long lParTestGetLEDState( unsigned long ulLED );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vParTestInitialise( void )
|
||||||
|
{
|
||||||
|
/* Port pin configuration is done by the low level set up prior to this
|
||||||
|
function being called. */
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vParTestSetLED( unsigned long ulLED, signed long xValue )
|
||||||
|
{
|
||||||
|
if( ulLED < partestNUM_LEDS )
|
||||||
|
{
|
||||||
|
if( xValue != 0 )
|
||||||
|
{
|
||||||
|
/* Turn the LED on. */
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
switch( ulLED )
|
||||||
|
{
|
||||||
|
case 0: LED0 = LED_ON;
|
||||||
|
break;
|
||||||
|
case 1: LED1 = LED_ON;
|
||||||
|
break;
|
||||||
|
case 2: LED2 = LED_ON;
|
||||||
|
break;
|
||||||
|
case 3: LED3 = LED_ON;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Turn the LED off. */
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
switch( ulLED )
|
||||||
|
{
|
||||||
|
case 0: LED0 = LED_OFF;
|
||||||
|
break;
|
||||||
|
case 1: LED1 = LED_OFF;
|
||||||
|
break;
|
||||||
|
case 2: LED2 = LED_OFF;
|
||||||
|
break;
|
||||||
|
case 3: LED3 = LED_OFF;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vParTestToggleLED( unsigned long ulLED )
|
||||||
|
{
|
||||||
|
if( ulLED < partestNUM_LEDS )
|
||||||
|
{
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
if( lParTestGetLEDState( ulLED ) != 0x00 )
|
||||||
|
{
|
||||||
|
vParTestSetLED( ulLED, 0 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vParTestSetLED( ulLED, 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
long lParTestGetLEDState( unsigned long ulLED )
|
||||||
|
{
|
||||||
|
long lReturn = pdTRUE;
|
||||||
|
|
||||||
|
if( ulLED < partestNUM_LEDS )
|
||||||
|
{
|
||||||
|
switch( ulLED )
|
||||||
|
{
|
||||||
|
case 0 : if( LED0 != 0 )
|
||||||
|
{
|
||||||
|
lReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1 : if( LED1 != 0 )
|
||||||
|
{
|
||||||
|
lReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2 : if( LED2 != 0 )
|
||||||
|
{
|
||||||
|
lReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3 : if( LED3 != 0 )
|
||||||
|
{
|
||||||
|
lReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return lReturn;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : dbsct.c
|
||||||
|
* Device(s) : RX
|
||||||
|
* Description : Defines the structure of the ROM and RAM areas.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 26.10.2011 1.00 First Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Defines type structures used in this file */
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/* Preprocessor directive */
|
||||||
|
#pragma unpack
|
||||||
|
|
||||||
|
/* Section start */
|
||||||
|
#pragma section C C$DSEC
|
||||||
|
|
||||||
|
/* MCU ROM and RAM structure definition */
|
||||||
|
extern const struct {
|
||||||
|
uint8_t *rom_s; /* Start address of the initialized data section in ROM */
|
||||||
|
uint8_t *rom_e; /* End address of the initialized data section in ROM */
|
||||||
|
uint8_t *ram_s; /* Start address of the initialized data section in RAM */
|
||||||
|
} _DTBL[] = {
|
||||||
|
{ __sectop("D"), __secend("D"), __sectop("R") },
|
||||||
|
{ __sectop("D_2"), __secend("D_2"), __sectop("R_2") },
|
||||||
|
{ __sectop("D_1"), __secend("D_1"), __sectop("R_1") }
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Section start */
|
||||||
|
#pragma section C C$BSEC
|
||||||
|
|
||||||
|
/* MCU ROM and RAM structure definition */
|
||||||
|
extern const struct {
|
||||||
|
uint8_t *b_s; /* Start address of non-initialized data section */
|
||||||
|
uint8_t *b_e; /* End address of non-initialized data section */
|
||||||
|
} _BTBL[] = {
|
||||||
|
{ __sectop("B"), __secend("B") },
|
||||||
|
{ __sectop("B_2"), __secend("B_2") },
|
||||||
|
{ __sectop("B_1"), __secend("B_1") }
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Section start */
|
||||||
|
#pragma section
|
||||||
|
|
||||||
|
/* CTBL prevents excessive output of L1100 messages when linking.
|
||||||
|
Even if CTBL is deleted, the operation of the program does not change. */
|
||||||
|
uint8_t * const _CTBL[] = {
|
||||||
|
__sectop("C_1"), __sectop("C_2"), __sectop("C"),
|
||||||
|
__sectop("W_1"), __sectop("W_2"), __sectop("W")
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Preprocessor directive */
|
||||||
|
#pragma packoption
|
||||||
|
|
||||||
|
/* This is to ensure compatibility with new L section in version 1.1 and up of the RXC compiler. Do not remove! */
|
||||||
|
#pragma section C L
|
||||||
|
const unsigned long deadSpace = 0xDEADDEAD;
|
||||||
|
#pragma section
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,149 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : hwsetup.c
|
||||||
|
* Device(s) : RX
|
||||||
|
* H/W Platform : RSKRX210
|
||||||
|
* Description : Defines the initialization routines used each time the MCU is restarted.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* I/O Register and board definitions */
|
||||||
|
#include "platform.h"
|
||||||
|
/* Contains delcarations for the functions defined in this file */
|
||||||
|
#include "hwsetup.h"
|
||||||
|
#include "r_switches_config.h"
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Private global variables and functions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* MCU I/O port configuration function delcaration */
|
||||||
|
static void output_ports_configure(void);
|
||||||
|
|
||||||
|
/* Interrupt configuration function delcaration */
|
||||||
|
static void interrupts_configure(void);
|
||||||
|
|
||||||
|
/* MCU peripheral module configuration function declaration */
|
||||||
|
static void peripheral_modules_enable(void);
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: hardware_setup
|
||||||
|
* Description : Contains setup functions called at device restart
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void hardware_setup(void)
|
||||||
|
{
|
||||||
|
output_ports_configure();
|
||||||
|
interrupts_configure();
|
||||||
|
peripheral_modules_enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: output_ports_configure
|
||||||
|
* Description : Configures the port and pin direction settings, and sets the pin outputs to a safe level.
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void output_ports_configure(void)
|
||||||
|
{
|
||||||
|
/* Enable LEDs. */
|
||||||
|
/* Start with LEDs off. */
|
||||||
|
LED0 = LED_OFF;
|
||||||
|
LED1 = LED_OFF;
|
||||||
|
LED2 = LED_OFF;
|
||||||
|
LED3 = LED_OFF;
|
||||||
|
|
||||||
|
/* Set LED pins as outputs. */
|
||||||
|
LED0_PDR = 1;
|
||||||
|
LED1_PDR = 1;
|
||||||
|
LED2_PDR = 1;
|
||||||
|
LED3_PDR = 1;
|
||||||
|
|
||||||
|
/* Enable switches. */
|
||||||
|
/* Set pins as inputs. */
|
||||||
|
SW1_PDR = 0;
|
||||||
|
SW2_PDR = 0;
|
||||||
|
SW3_PDR = 0;
|
||||||
|
|
||||||
|
/* Set port mode registers for switches. */
|
||||||
|
SW1_PMR = 0;
|
||||||
|
SW2_PMR = 0;
|
||||||
|
SW3_PMR = 0;
|
||||||
|
|
||||||
|
/* Unlock MPC registers to enable writing to them. */
|
||||||
|
MPC.PWPR.BIT.B0WI = 0 ; /* Unlock protection register */
|
||||||
|
MPC.PWPR.BIT.PFSWE = 1 ; /* Unlock MPC registers */
|
||||||
|
|
||||||
|
/* TXD1 is output. */
|
||||||
|
PORT1.PDR.BIT.B6 = 1;
|
||||||
|
PORT1.PMR.BIT.B6 = 1;
|
||||||
|
MPC.P16PFS.BYTE = 0x0A;
|
||||||
|
/* RXD1 is input. */
|
||||||
|
PORT1.PDR.BIT.B5 = 0;
|
||||||
|
PORT1.PMR.BIT.B5 = 1;
|
||||||
|
MPC.P15PFS.BYTE = 0x0A;
|
||||||
|
|
||||||
|
/* Configure the pin connected to the ADC Pot as an input */
|
||||||
|
PORT4.PDR.BIT.B4 = 0;
|
||||||
|
|
||||||
|
/* Protect off. */
|
||||||
|
SYSTEM.PRCR.WORD = 0xA50B;
|
||||||
|
|
||||||
|
/* Turn off module stop for the A2D converter. */
|
||||||
|
SYSTEM.MSTPCRA.BIT.MSTPA17 = 0;
|
||||||
|
|
||||||
|
/* Protect on. */
|
||||||
|
SYSTEM.PRCR.WORD = 0xA500;
|
||||||
|
|
||||||
|
/* Initialise the first button to generate an interrupt. */
|
||||||
|
R_SWITCHES_Init();
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: interrupts_configure
|
||||||
|
* Description : Configures interrupts used
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void interrupts_configure(void)
|
||||||
|
{
|
||||||
|
/* Add code here to setup additional interrupts */
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: peripheral_modules_enable
|
||||||
|
* Description : Enables and configures peripheral devices on the MCU
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void peripheral_modules_enable(void)
|
||||||
|
{
|
||||||
|
/* Enable triggers to start an ADC conversion. */
|
||||||
|
S12AD.ADCSR.BIT.TRGE = 1;
|
||||||
|
|
||||||
|
/* Only channel 4 is going to be used. */
|
||||||
|
S12AD.ADANSA.BIT.ANSA4 = 1;
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : hwsetup.h
|
||||||
|
* Description : Hardware setup header file.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 26.10.2011 1.00 First Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Multiple inclusion prevention macro */
|
||||||
|
#ifndef HWSETUP_H
|
||||||
|
#define HWSETUP_H
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Exported global functions (to be accessed by other files)
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Hardware setup funtion declaration */
|
||||||
|
void hardware_setup(void);
|
||||||
|
|
||||||
|
/* End of multiple inclusion prevention macro */
|
||||||
|
#endif
|
|
@ -0,0 +1,254 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : lcd.c
|
||||||
|
* Device(s) : RX
|
||||||
|
* H/W Platform : RSKRX111
|
||||||
|
* Description : Provides variable and function declarations for lcd.c file
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Processor-specific details */
|
||||||
|
#include <machine.h>
|
||||||
|
/* Standard string manipulation & formatting functions */
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
/* Defines standard variable types used in this function */
|
||||||
|
#include <stdint.h>
|
||||||
|
/* Bring in board includes. */
|
||||||
|
#include "platform.h"
|
||||||
|
/* Following header file provides function prototypes for LCD controlling functions & macro defines */
|
||||||
|
#include "lcd.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Private global variables and functions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void lcd_delay(volatile int32_t nsecs);
|
||||||
|
static void lcd_nibble_write(uint8_t data_or_ctrl, uint8_t value);
|
||||||
|
static void lcd_write(uint8_t data_or_ctrl, uint8_t value);
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_initialize
|
||||||
|
* Description : Initializes the LCD display.
|
||||||
|
* Arguments : none
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void lcd_initialize(void)
|
||||||
|
{
|
||||||
|
/* Set LCD data pins as outputs. */
|
||||||
|
PORT4.PDR.BYTE |= 0x0F;
|
||||||
|
|
||||||
|
/* Set LCD control pins as outputs. */
|
||||||
|
RS_PIN_DDR = 1;
|
||||||
|
E_PIN_DDR = 1;
|
||||||
|
|
||||||
|
/* Power Up Delay for the LCD Module */
|
||||||
|
lcd_delay(50000000);
|
||||||
|
|
||||||
|
/* Display initialises in 8 bit mode - so send one write (seen as 8 bit) to set to 4 bit mode. */
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x03);
|
||||||
|
lcd_delay(5000000);
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x03);
|
||||||
|
lcd_delay(5000000);
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x03);
|
||||||
|
lcd_delay(5000000);
|
||||||
|
|
||||||
|
/* Function Set */
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x02);
|
||||||
|
lcd_delay(39000);
|
||||||
|
lcd_nibble_write(CTRL_WR, 0x02);
|
||||||
|
lcd_nibble_write(CTRL_WR, (LCD_DISPLAY_ON | LCD_TWO_LINE ));
|
||||||
|
lcd_delay(39000);
|
||||||
|
|
||||||
|
/* Display ON/OFF control */
|
||||||
|
lcd_write(CTRL_WR, LCD_CURSOR_OFF);
|
||||||
|
lcd_delay(39000);
|
||||||
|
|
||||||
|
/* Display Clear */
|
||||||
|
lcd_write(CTRL_WR, LCD_CLEAR);
|
||||||
|
lcd_delay(2000000);
|
||||||
|
|
||||||
|
/* Entry Mode Set */
|
||||||
|
lcd_write(CTRL_WR, 0x06);
|
||||||
|
lcd_delay(39000);
|
||||||
|
|
||||||
|
/* Home the cursor */
|
||||||
|
lcd_write(CTRL_WR, LCD_HOME_L1);
|
||||||
|
lcd_delay(5000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_clear
|
||||||
|
* Description : Clears the LCD
|
||||||
|
* Arguments : none
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void lcd_clear(void)
|
||||||
|
{
|
||||||
|
/* Display Clear */
|
||||||
|
lcd_write(CTRL_WR, LCD_CLEAR);
|
||||||
|
lcd_delay(2000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_display
|
||||||
|
* Description : This function controls LCD writes to line 1 or 2 of the LCD.
|
||||||
|
* You need to use the defines LCD_LINE1 and LCD_LINE2 in order to specify the starting position.
|
||||||
|
* For example, to start at the 2nd position on line 1...
|
||||||
|
* lcd_display(LCD_LINE1 + 1, "Hello")
|
||||||
|
* Arguments : position -
|
||||||
|
* Line number of display
|
||||||
|
* string -
|
||||||
|
* Pointer to null terminated string
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void lcd_display(uint8_t position, uint8_t const * string)
|
||||||
|
{
|
||||||
|
/* Declare next position variable */
|
||||||
|
static uint8_t next_pos = 0xFF;
|
||||||
|
|
||||||
|
/* Set line position if needed. We don't want to if we don't need to because LCD control operations take longer
|
||||||
|
than LCD data operations. */
|
||||||
|
if (next_pos != position)
|
||||||
|
{
|
||||||
|
if(position < LCD_LINE2)
|
||||||
|
{
|
||||||
|
/* Display on Line 1 */
|
||||||
|
lcd_write(CTRL_WR, ((uint8_t)(LCD_HOME_L1 + position)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Display on Line 2 */
|
||||||
|
lcd_write(CTRL_WR, ((uint8_t)((LCD_HOME_L2 + position) - LCD_LINE2)));
|
||||||
|
}
|
||||||
|
|
||||||
|
lcd_delay(39000);
|
||||||
|
|
||||||
|
/* set position index to known value */
|
||||||
|
next_pos = position;
|
||||||
|
}
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
/* Write character to LCD. */
|
||||||
|
lcd_write(DATA_WR,*string++);
|
||||||
|
|
||||||
|
lcd_delay(43000);
|
||||||
|
|
||||||
|
/* Increment position index */
|
||||||
|
next_pos++;
|
||||||
|
}
|
||||||
|
while(*string);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_delay
|
||||||
|
* Description : Implements LCD required delays.
|
||||||
|
* Arguments : nsecs -
|
||||||
|
* Number of nanoseconds to delay. RX111 has max clock of 32MHz which gives a cycle time of 31.3ns.
|
||||||
|
* This means that nothing under 313ns should be input. 313ns would be 10 cycles which is still
|
||||||
|
* being optimistic for getting in and out of this function.
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void lcd_delay(volatile int32_t nsecs)
|
||||||
|
{
|
||||||
|
while (0 < nsecs)
|
||||||
|
{
|
||||||
|
/* Subtract off 10 cycles per iteration. This number was obtained when using the Renesas toolchain at
|
||||||
|
optimization level 2. The number to nanoseconds to subtract off below is calculated off of the ICLK speed. */
|
||||||
|
nsecs -= (int32_t)((313.0)*(32000000.0/(float)ICLK_HZ));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_nibble_write
|
||||||
|
* Description : Writes data to display. Sends command to display.
|
||||||
|
* Arguments : value -
|
||||||
|
* The value to write
|
||||||
|
* data_or_ctrl -
|
||||||
|
* Whether to write data or control.
|
||||||
|
* 1 = DATA
|
||||||
|
* 0 = CONTROL
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void lcd_nibble_write(uint8_t data_or_ctrl, uint8_t value)
|
||||||
|
{
|
||||||
|
/* Set Register Select pin high for Data */
|
||||||
|
if (data_or_ctrl == DATA_WR)
|
||||||
|
{
|
||||||
|
/* Data write. */
|
||||||
|
RS_PIN = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Control write. */
|
||||||
|
RS_PIN = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* tsu1 delay */
|
||||||
|
lcd_delay(60);
|
||||||
|
|
||||||
|
/* EN enable chip (HIGH) */
|
||||||
|
E_PIN = 1;
|
||||||
|
|
||||||
|
/* Output the data */
|
||||||
|
PORT4.PODR.BYTE = (value & 0x0F);
|
||||||
|
|
||||||
|
/* tw delay */
|
||||||
|
lcd_delay(450);
|
||||||
|
|
||||||
|
/* Latch data by dropping E */
|
||||||
|
E_PIN = 0;
|
||||||
|
|
||||||
|
/* th2 delay */
|
||||||
|
lcd_delay(10);
|
||||||
|
|
||||||
|
/* tc delay */
|
||||||
|
lcd_delay(480);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name : lcd_write
|
||||||
|
* Description : This function controls LCD writes to line 1 or 2 of the LCD. You need to use the defines LCD_LINE1 and
|
||||||
|
* LCD_LINE2 in order to specify the starting position.
|
||||||
|
* For example, to start at the 2nd position on line 1...
|
||||||
|
* lcd_display(LCD_LINE1 + 1, "Hello")
|
||||||
|
* Arguments : value -
|
||||||
|
* The value to write
|
||||||
|
* data_or_ctrl -
|
||||||
|
* Whether to write data or control.
|
||||||
|
* 1 = DATA
|
||||||
|
* 0 = CONTROL
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void lcd_write(uint8_t data_or_ctrl, uint8_t value)
|
||||||
|
{
|
||||||
|
/* Write upper nibble first */
|
||||||
|
lcd_nibble_write(data_or_ctrl, (uint8_t)((value & 0xF0) >> 4));
|
||||||
|
|
||||||
|
/* Write lower nibble second */
|
||||||
|
lcd_nibble_write(data_or_ctrl, (uint8_t)(value & 0x0F));
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : lcd.h
|
||||||
|
* Device(s) : RX
|
||||||
|
* H/W Platform : RSKRX111
|
||||||
|
* Description : Provides variable and function declarations for lcd.c file
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/* Multiple inclusion prevention macro */
|
||||||
|
#ifndef LCD_H
|
||||||
|
#define LCD_H
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Defines standard integer variable types used in this file */
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* RS register select pin */
|
||||||
|
#define RS_PIN PORTC.PODR.BIT.B5
|
||||||
|
#define RS_PIN_DDR PORTC.PDR.BIT.B5
|
||||||
|
/* Display enable pin */
|
||||||
|
#define E_PIN PORTB.PODR.BIT.B1
|
||||||
|
#define E_PIN_DDR PORTB.PDR.BIT.B1
|
||||||
|
/* Data write/read definition */
|
||||||
|
#define DATA_WR 1
|
||||||
|
/* Control write/read definition */
|
||||||
|
#define CTRL_WR 0
|
||||||
|
/* Maximum characters per line of LCD display. */
|
||||||
|
#define NUMB_CHARS_PER_LINE 8
|
||||||
|
/* Number of lines on the LCD display */
|
||||||
|
#define MAXIMUM_LINES 2
|
||||||
|
/* Character position of LCD line 1 */
|
||||||
|
#define LCD_LINE1 0
|
||||||
|
/* Character position of LCD line 2 */
|
||||||
|
#define LCD_LINE2 16
|
||||||
|
/* Clear LCD display and home cursor */
|
||||||
|
#define LCD_CLEAR 0x01
|
||||||
|
/* Move cursor to line 1 */
|
||||||
|
#define LCD_HOME_L1 0x80
|
||||||
|
/* Move cursor to line 2 */
|
||||||
|
#define LCD_HOME_L2 0xC0
|
||||||
|
/* Cursor auto decrement after R/W */
|
||||||
|
#define CURSOR_MODE_DEC 0x04
|
||||||
|
/* Cursor auto increment after R/W */
|
||||||
|
#define CURSOR_MODE_INC 0x06
|
||||||
|
/* Setup, 4 bits,2 lines, 5X7 */
|
||||||
|
#define FUNCTION_SET 0x28
|
||||||
|
/* Display ON with Cursor */
|
||||||
|
#define LCD_CURSOR_ON 0x0E
|
||||||
|
/* Display ON with Cursor off */
|
||||||
|
#define LCD_CURSOR_OFF 0x0C
|
||||||
|
/* Display on with blinking cursor */
|
||||||
|
#define LCD_CURSOR_BLINK 0x0D
|
||||||
|
/* Move Cursor Left One Position */
|
||||||
|
#define LCD_CURSOR_LEFT 0x10
|
||||||
|
/* Move Cursor Right One Position */
|
||||||
|
#define LCD_CURSOR_RIGHT 0x14
|
||||||
|
/* Enable LCD display */
|
||||||
|
#define LCD_DISPLAY_ON 0x04
|
||||||
|
/* Enable both LCD lines */
|
||||||
|
#define LCD_TWO_LINE 0x08
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Exported global functions (to be accessed by other files)
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* LCD initialisation function declaration */
|
||||||
|
void lcd_initialize (void);
|
||||||
|
|
||||||
|
/* Update display function declaration */
|
||||||
|
void lcd_display(uint8_t position, uint8_t const * string);
|
||||||
|
|
||||||
|
/* Clear LCD function delcaration */
|
||||||
|
void lcd_clear (void);
|
||||||
|
|
||||||
|
/* End of multiple inclusion prevention macro */
|
||||||
|
#endif
|
|
@ -0,0 +1,118 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : locking.c
|
||||||
|
* Description : This implements a locking mechanism that can be used by all code. The locking is done atomically so
|
||||||
|
* common resources can be accessed safely.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/**********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 07.03.2012 1.00 First Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Fixed-size integer typedefs. */
|
||||||
|
#include <stdint.h>
|
||||||
|
/* bool support. */
|
||||||
|
#include <stdbool.h>
|
||||||
|
/* Has intrinsic support. Includes xchg() which is used in this code. */
|
||||||
|
#include <machine.h>
|
||||||
|
/* Includes board and MCU related header files. */
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Typedef definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Exported global variables (to be accessed by other files)
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Private global variables and functions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function Name: R_BSP_Lock
|
||||||
|
* Description : Attempt to acquire the lock that has been sent in.
|
||||||
|
* Arguments : plock -
|
||||||
|
* Pointer to lock structure with lock to try and acquire.
|
||||||
|
* Return Value : true -
|
||||||
|
* Lock was acquired.
|
||||||
|
* false -
|
||||||
|
* Lock was not acquired.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
bool R_BSP_Lock(bsp_lock_t * plock)
|
||||||
|
{
|
||||||
|
bool ret = false;
|
||||||
|
|
||||||
|
/* Variable used in trying to acquire lock. Using the xchg instruction makes this atomic */
|
||||||
|
int32_t is_locked = true;
|
||||||
|
|
||||||
|
/* This example uses the RX MCU's atomic xchg() instruction. plock->lock is the lock we are trying to reserve.
|
||||||
|
The way this works is that 'is_locked' gets the value of the plock->lock and plock->lock gets the value of
|
||||||
|
'is_locked' which we just set to 'true'. Basically this is an atomic 'swap' command. If the lock had not yet been
|
||||||
|
reserved then its value would be 'false' and after the xchg() instruction finished 'is_locked' would have
|
||||||
|
'false'. If it had already been reserved then 'is_locked' would have 'true' after the xchg() instruction. Since
|
||||||
|
plock->lock was already 'true' and we just set it back to 'true' everything is ok. To see if we reserved the lock
|
||||||
|
we just need to check the value of 'is_locked' after this instruction finishes. */
|
||||||
|
|
||||||
|
/* Try to acquire semaphore to obtain lock */
|
||||||
|
xchg(&is_locked, &plock->lock);
|
||||||
|
|
||||||
|
/* Check to see if semaphore was successfully taken */
|
||||||
|
if (is_locked == false)
|
||||||
|
{
|
||||||
|
/* Lock obtained, return success. */
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Lock was not obtained, another task already has it. */
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
} /* End of function R_BSP_Lock() */
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function Name: R_BSP_Unlock
|
||||||
|
* Description : Release hold on lock.
|
||||||
|
* Arguments : plock -
|
||||||
|
* Pointer to lock structure with lock to release.
|
||||||
|
* Return Value : true -
|
||||||
|
* Lock was released.
|
||||||
|
* false -
|
||||||
|
* Lock was not released.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
bool R_BSP_Unlock(bsp_lock_t * plock)
|
||||||
|
{
|
||||||
|
/* Set lock back to unlocked. */
|
||||||
|
plock->lock = false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} /* End of function R_BSP_Unlock() */
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : locking.h
|
||||||
|
* Description : This implements a locking mechanism that can be used by all code. The locking is done atomically so
|
||||||
|
* common resources can be accessed safely.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/**********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 07.03.2012 1.00 First Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Fixed-size integer typedefs. */
|
||||||
|
#include <stdint.h>
|
||||||
|
/* bool support. */
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Typedef definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/* The actual lock. int32_t is used because this is what the xchg() instruction takes as parameters. */
|
||||||
|
int32_t lock;
|
||||||
|
/* Could add a ID for locking and unlocking. In this could protect against any function being able to unlock. */
|
||||||
|
} bsp_lock_t;
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Exported global variables
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Exported global functions (to be accessed by other files)
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
bool R_BSP_Lock(bsp_lock_t * plock);
|
||||||
|
bool R_BSP_Unlock(bsp_lock_t * plock);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
;
|
||||||
|
; FILE :lowlvl.src
|
||||||
|
; DATE :Wed, Jul 01, 2009
|
||||||
|
; DESCRIPTION :Program of Low level
|
||||||
|
; CPU TYPE :RX
|
||||||
|
;
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
.GLB _charput
|
||||||
|
.GLB _charget
|
||||||
|
|
||||||
|
FC2E0 .EQU 00084080h
|
||||||
|
FE2C0 .EQU 00084090h
|
||||||
|
DBGSTAT .EQU 000840C0h
|
||||||
|
RXFL0EN .EQU 00001000h
|
||||||
|
TXFL0EN .EQU 00000100h
|
||||||
|
|
||||||
|
.SECTION P,CODE
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
; _charput:
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
_charput:
|
||||||
|
.STACK _charput = 00000000h
|
||||||
|
__C2ESTART: MOV.L #TXFL0EN,R3
|
||||||
|
MOV.L #DBGSTAT,R4
|
||||||
|
__TXLOOP: MOV.L [R4],R5
|
||||||
|
AND R3,R5
|
||||||
|
BNZ __TXLOOP
|
||||||
|
__WRITEFC2E0: MOV.L #FC2E0,R2
|
||||||
|
MOV.L R1,[R2]
|
||||||
|
__CHARPUTEXIT: RTS
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
; _charget:
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
_charget:
|
||||||
|
.STACK _charget = 00000000h
|
||||||
|
__E2CSTART: MOV.L #RXFL0EN,R3
|
||||||
|
MOV.L #DBGSTAT,R4
|
||||||
|
__RXLOOP: MOV.L [R4],R5
|
||||||
|
AND R3,R5
|
||||||
|
BZ __RXLOOP
|
||||||
|
__READFE2C0: MOV.L #FE2C0,R2
|
||||||
|
MOV.L [R2],R1
|
||||||
|
__CHARGETEXIT: RTS
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
; End of conditional code
|
||||||
|
.END
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,332 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : lowsrc.c
|
||||||
|
* Description : Functions to support stream I/O
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 26.10.2011 1.00 First Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/*Number of I/O Stream*/
|
||||||
|
#define IOSTREAM 20
|
||||||
|
|
||||||
|
/* file number */
|
||||||
|
#define STDIN 0 /* Standard input (console) */
|
||||||
|
#define STDOUT 1 /* Standard output (console) */
|
||||||
|
#define STDERR 2 /* Standard error output (console) */
|
||||||
|
|
||||||
|
#define FLMIN 0 /* Minimum file number */
|
||||||
|
#define _MOPENR 0x1
|
||||||
|
#define _MOPENW 0x2
|
||||||
|
#define _MOPENA 0x4
|
||||||
|
#define _MTRUNC 0x8
|
||||||
|
#define _MCREAT 0x10
|
||||||
|
#define _MBIN 0x20
|
||||||
|
#define _MEXCL 0x40
|
||||||
|
#define _MALBUF 0x40
|
||||||
|
#define _MALFIL 0x80
|
||||||
|
#define _MEOF 0x100
|
||||||
|
#define _MERR 0x200
|
||||||
|
#define _MLBF 0x400
|
||||||
|
#define _MNBF 0x800
|
||||||
|
#define _MREAD 0x1000
|
||||||
|
#define _MWRITE 0x2000
|
||||||
|
#define _MBYTE 0x4000
|
||||||
|
#define _MWIDE 0x8000
|
||||||
|
/* File Flags */
|
||||||
|
#define O_RDONLY 0x0001 /* Read only */
|
||||||
|
#define O_WRONLY 0x0002 /* Write only */
|
||||||
|
#define O_RDWR 0x0004 /* Both read and Write */
|
||||||
|
#define O_CREAT 0x0008 /* A file is created if it is not existed */
|
||||||
|
#define O_TRUNC 0x0010 /* The file size is changed to 0 if it is existed. */
|
||||||
|
#define O_APPEND 0x0020 /* The position is set for next reading/writing */
|
||||||
|
/* 0: Top of the file 1: End of file */
|
||||||
|
|
||||||
|
/* Special character code */
|
||||||
|
#define CR 0x0d /* Carriage return */
|
||||||
|
#define LF 0x0a /* Line feed */
|
||||||
|
|
||||||
|
#if defined( __RX )
|
||||||
|
const long _nfiles = IOSTREAM; /* The number of files for input/output files */
|
||||||
|
#else
|
||||||
|
const int _nfiles = IOSTREAM; /* The number of files for input/output files */
|
||||||
|
#endif
|
||||||
|
char flmod[IOSTREAM]; /* The location for the mode of opened file. */
|
||||||
|
|
||||||
|
unsigned char sml_buf[IOSTREAM];
|
||||||
|
|
||||||
|
#define FPATH_STDIN "C:\\stdin"
|
||||||
|
#define FPATH_STDOUT "C:\\stdout"
|
||||||
|
#define FPATH_STDERR "C:\\stderr"
|
||||||
|
|
||||||
|
/* H8 Normal mode ,SH and RX */
|
||||||
|
#if defined( __2000N__ ) || defined( __2600N__ ) || defined( __300HN__ ) || defined( _SH )
|
||||||
|
/* Output one character to standard output */
|
||||||
|
extern void charput(char);
|
||||||
|
/* Input one character from standard input */
|
||||||
|
extern char charget(void);
|
||||||
|
/* Output one character to the file */
|
||||||
|
extern char fcharput(char, unsigned char);
|
||||||
|
/* Input one character from the file */
|
||||||
|
extern char fcharget(char*, unsigned char);
|
||||||
|
/* Open the file */
|
||||||
|
extern char fileopen(char*, unsigned char, unsigned char*);
|
||||||
|
/* Close the file */
|
||||||
|
extern char fileclose(unsigned char);
|
||||||
|
/* Move the file offset */
|
||||||
|
extern char fpseek(unsigned char, long, unsigned char);
|
||||||
|
/* Get the file offset */
|
||||||
|
extern char fptell(unsigned char, long*);
|
||||||
|
|
||||||
|
/* RX */
|
||||||
|
#elif defined( __RX )
|
||||||
|
/* Output one character to standard output */
|
||||||
|
extern void charput(unsigned char);
|
||||||
|
/* Input one character from standard input */
|
||||||
|
extern unsigned char charget(void);
|
||||||
|
|
||||||
|
/* H8 Advanced mode */
|
||||||
|
#elif defined( __2000A__ ) || defined( __2600A__ ) || defined( __300HA__ ) || defined( __H8SXN__ ) || defined( __H8SXA__ ) || defined( __H8SXM__ ) || defined( __H8SXX__ )
|
||||||
|
/* Output one character to standard output */
|
||||||
|
extern void charput(char);
|
||||||
|
/* Input one character from standard input */
|
||||||
|
extern char charget(void);
|
||||||
|
/* Output one character to the file */
|
||||||
|
extern char fcharput(char, unsigned char);
|
||||||
|
/* Input one character from the file */
|
||||||
|
extern char fcharget(char*, unsigned char);
|
||||||
|
/* Open the file */
|
||||||
|
/* Specified as the number of register which stored paramter is 3 */
|
||||||
|
extern char __regparam3 fileopen(char*, unsigned char, unsigned char*);
|
||||||
|
/* Close the file */
|
||||||
|
extern char fileclose(unsigned char);
|
||||||
|
/* Move the file offset */
|
||||||
|
extern char fpseek(unsigned char, long, unsigned char);
|
||||||
|
/* Get the file offset */
|
||||||
|
extern char fptell(unsigned char, long*);
|
||||||
|
|
||||||
|
/* H8300 and H8300L */
|
||||||
|
#elif defined( __300__ ) || defined( __300L__ )
|
||||||
|
/* Output one character to standard output */
|
||||||
|
extern void charput(char);
|
||||||
|
/* Input one character from standard input */
|
||||||
|
extern char charget(void);
|
||||||
|
/* Output one character to the file */
|
||||||
|
extern char fcharput(char, unsigned char);
|
||||||
|
/* Input one character from the file */
|
||||||
|
extern char fcharget(char*, unsigned char);
|
||||||
|
/* Open the file */
|
||||||
|
/* Specified as the number of register which stored paramter is 3 */
|
||||||
|
extern char __regparam3 fileopen(char*, unsigned char, unsigned char*);
|
||||||
|
/* Close the file */
|
||||||
|
extern char fileclose(unsigned char);
|
||||||
|
/* Move the file offset */
|
||||||
|
/* Move the file offset */
|
||||||
|
extern char __regparam3 fpseek(unsigned char, long, unsigned char);
|
||||||
|
/* Get the file offset */
|
||||||
|
extern char fptell(unsigned char, long*);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
FILE *_Files[IOSTREAM]; // structure for FILE
|
||||||
|
char *env_list[] = { // Array for environment variables(**environ)
|
||||||
|
"ENV1=temp01",
|
||||||
|
"ENV2=temp02",
|
||||||
|
"ENV9=end",
|
||||||
|
'\0' // Terminal for environment variables
|
||||||
|
};
|
||||||
|
|
||||||
|
char **environ = env_list;
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/* _INIT_IOLIB */
|
||||||
|
/* Initialize C library Functions, if necessary. */
|
||||||
|
/* Define USES_SIMIO on Assembler Option. */
|
||||||
|
/****************************************************************************/
|
||||||
|
void _INIT_IOLIB( void )
|
||||||
|
{
|
||||||
|
/* A file for standard input/output is opened or created. Each FILE */
|
||||||
|
/* structure members are initialized by the library. Each _Buf member */
|
||||||
|
/* in it is re-set the end of buffer pointer. */
|
||||||
|
|
||||||
|
/* Standard Input File */
|
||||||
|
if( freopen( FPATH_STDIN, "r", stdin ) == NULL )
|
||||||
|
stdin->_Mode = 0xffff; /* Not allow the access if it fails to open */
|
||||||
|
stdin->_Mode = _MOPENR; /* Read only attribute */
|
||||||
|
stdin->_Mode |= _MNBF; /* Non-buffering for data */
|
||||||
|
stdin->_Bend = stdin->_Buf + 1; /* Re-set pointer to the end of buffer */
|
||||||
|
|
||||||
|
/* Standard Output File */
|
||||||
|
if( freopen( FPATH_STDOUT, "w", stdout ) == NULL )
|
||||||
|
stdout->_Mode = 0xffff; /* Not allow the access if it fails to open */
|
||||||
|
stdout->_Mode |= _MNBF; /* Non-buffering for data */
|
||||||
|
stdout->_Bend = stdout->_Buf + 1;/* Re-set pointer to the end of buffer */
|
||||||
|
|
||||||
|
/* Standard Error File */
|
||||||
|
if( freopen( FPATH_STDERR, "w", stderr ) == NULL )
|
||||||
|
stderr->_Mode = 0xffff; /* Not allow the access if it fails to open */
|
||||||
|
stderr->_Mode |= _MNBF; /* Non-buffering for data */
|
||||||
|
stderr->_Bend = stderr->_Buf + 1;/* Re-set pointer to the end of buffer */
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/* _CLOSEALL */
|
||||||
|
/****************************************************************************/
|
||||||
|
void _CLOSEALL( void )
|
||||||
|
{
|
||||||
|
long i;
|
||||||
|
|
||||||
|
for( i=0; i < _nfiles; i++ )
|
||||||
|
{
|
||||||
|
/* Checks if the file is opened or not */
|
||||||
|
if( _Files[i]->_Mode & (_MOPENR | _MOPENW | _MOPENA ) )
|
||||||
|
fclose( _Files[i] ); /* Closes the file */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
/* open:file open */
|
||||||
|
/* Return value:File number (Pass) */
|
||||||
|
/* -1 (Failure) */
|
||||||
|
/**************************************************************************/
|
||||||
|
#if defined( __RX )
|
||||||
|
long open(const char *name, /* File name */
|
||||||
|
long mode, /* Open mode */
|
||||||
|
long flg) /* Open flag */
|
||||||
|
#else
|
||||||
|
int open(char *name, /* File name */
|
||||||
|
int mode, /* Open mode */
|
||||||
|
int flg) /* Open flag */
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
if( strcmp( name, FPATH_STDIN ) == 0 ) /* Standard Input file? */
|
||||||
|
{
|
||||||
|
if( ( mode & O_RDONLY ) == 0 ) return -1;
|
||||||
|
flmod[STDIN] = mode;
|
||||||
|
return STDIN;
|
||||||
|
}
|
||||||
|
else if( strcmp( name, FPATH_STDOUT ) == 0 )/* Standard Output file? */
|
||||||
|
{
|
||||||
|
if( ( mode & O_WRONLY ) == 0 ) return -1;
|
||||||
|
flmod[STDOUT] = mode;
|
||||||
|
return STDOUT;
|
||||||
|
}
|
||||||
|
else if(strcmp(name, FPATH_STDERR ) == 0 ) /* Standard Error file? */
|
||||||
|
{
|
||||||
|
if( ( mode & O_WRONLY ) == 0 ) return -1;
|
||||||
|
flmod[STDERR] = mode;
|
||||||
|
return STDERR;
|
||||||
|
}
|
||||||
|
else return -1; /*Others */
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined( __RX )
|
||||||
|
long close( long fileno )
|
||||||
|
#else
|
||||||
|
int close( int fileno )
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
/* write:Data write */
|
||||||
|
/* Return value:Number of write characters (Pass) */
|
||||||
|
/* -1 (Failure) */
|
||||||
|
/**************************************************************************/
|
||||||
|
#if defined( __RX )
|
||||||
|
long write(long fileno, /* File number */
|
||||||
|
const unsigned char *buf, /* The address of destination buffer */
|
||||||
|
long count) /* The number of chacter to write */
|
||||||
|
#else
|
||||||
|
int write(int fileno, /* File number */
|
||||||
|
char *buf, /* The address of destination buffer */
|
||||||
|
int count) /* The number of chacter to write */
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
long i; /* A variable for counter */
|
||||||
|
unsigned char c; /* An output character */
|
||||||
|
|
||||||
|
/* Checking the mode of file , output each character */
|
||||||
|
/* Checking the attribute for Write-Only, Read-Only or Read-Write */
|
||||||
|
if(flmod[fileno]&O_WRONLY || flmod[fileno]&O_RDWR)
|
||||||
|
{
|
||||||
|
if( fileno == STDIN ) return -1; /* Standard Input */
|
||||||
|
else if( (fileno == STDOUT) || (fileno == STDERR) )
|
||||||
|
/* Standard Error/output */
|
||||||
|
{
|
||||||
|
for( i = count; i > 0; --i )
|
||||||
|
{
|
||||||
|
c = *buf++;
|
||||||
|
charput(c);
|
||||||
|
}
|
||||||
|
return count; /*Return the number of written characters */
|
||||||
|
}
|
||||||
|
else return -1; /* Incorrect file number */
|
||||||
|
}
|
||||||
|
else return -1; /* An error */
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined( __RX )
|
||||||
|
long read( long fileno, unsigned char *buf, long count )
|
||||||
|
#else
|
||||||
|
int read( int fileno, char *buf, unsigned int count )
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
long i;
|
||||||
|
|
||||||
|
/* Checking the file mode with the file number, each character is input and stored the buffer */
|
||||||
|
|
||||||
|
if((flmod[fileno]&_MOPENR) || (flmod[fileno]&O_RDWR)){
|
||||||
|
for(i = count; i > 0; i--){
|
||||||
|
*buf = charget();
|
||||||
|
if(*buf==CR){ /* Replace the new line character */
|
||||||
|
*buf = LF;
|
||||||
|
}
|
||||||
|
buf++;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined( __RX )
|
||||||
|
long lseek( long fileno, long offset, long base )
|
||||||
|
#else
|
||||||
|
long lseek( int fileno, long offset, int base )
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
return -1L;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_bsp.h
|
||||||
|
* H/W Platform : RSKRX111
|
||||||
|
* Description : Has the header files that should be included for this platform.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef PLATFORM_BOARD_RSKRX111
|
||||||
|
#define PLATFORM_BOARD_RSKRX111
|
||||||
|
|
||||||
|
/* Make sure that no other platforms have already been defined. Do not touch this! */
|
||||||
|
#ifdef PLATFORM_DEFINED
|
||||||
|
#error "Error - Multiple platforms defined in platform.h!"
|
||||||
|
#else
|
||||||
|
#define PLATFORM_DEFINED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
INCLUDE APPROPRIATE MCU AND BOARD FILES
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#include "r_bsp_config.h"
|
||||||
|
#include ".\mcu\rx111\iodefine.h"
|
||||||
|
#include ".\mcu\rx111\mcu_info.h"
|
||||||
|
#include ".\board\rskrx111\rskrx111.h"
|
||||||
|
#include ".\board\rskrx111\hwsetup.h"
|
||||||
|
#include ".\board\rskrx111\lcd.h"
|
||||||
|
#include ".\board\rskrx111\locking.h"
|
||||||
|
#include ".\board\rskrx111\vecttbl.h"
|
||||||
|
|
||||||
|
#endif /* PLATFORM_BOARD_RSKRX111 */
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,250 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_bsp_config_reference.c
|
||||||
|
* Device(s) : RX111
|
||||||
|
* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included
|
||||||
|
* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h)
|
||||||
|
* is just a reference file that the user can use to make their own r_bsp_config.h file.
|
||||||
|
************************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 07.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#ifndef R_BSP_CONFIG_REF_HEADER_FILE
|
||||||
|
#define R_BSP_CONFIG_REF_HEADER_FILE
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Configuration Options
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Enter the product part number for your MCU. This information will be used to obtain information about your MCU such
|
||||||
|
as package and memory size.
|
||||||
|
To help parse this information, the part number will be defined using multiple macros.
|
||||||
|
R 5 F 51 11 5 A D FM
|
||||||
|
| | | | | | | | | Macro Name Description
|
||||||
|
| | | | | | | | |__MCU_PART_PACKAGE = Package type, number of pins, and pin pitch
|
||||||
|
| | | | | | | |____not used = Products with wide temperature range (D: -40 to 85C G: -40 to 105C)
|
||||||
|
| | | | | | |______not used = Blank
|
||||||
|
| | | | | |________MCU_PART_MEMORY_SIZE = ROM, RAM, and Data Flash Capacity
|
||||||
|
| | | | |___________MCU_PART_GROUP = Group name
|
||||||
|
| | | |______________MCU_PART_SERIES = Series name
|
||||||
|
| | |________________MCU_PART_MEMORY_TYPE = Type of memory (Flash)
|
||||||
|
| |__________________not used = Renesas MCU
|
||||||
|
|____________________not used = Renesas semiconductor product.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Package type. Set the macro definition based on values below:
|
||||||
|
Character(s) = Value for macro = Package Type/Number of Pins/Pin Pitch
|
||||||
|
FM = 0x0 = LFQFP/64/0.50
|
||||||
|
FK = 0x1 = LQFP/64/0.80
|
||||||
|
LF = 0x2 = TFLGA/64/0.50
|
||||||
|
FL = 0x3 = LFQFP/48/0.50
|
||||||
|
NE = 0x4 = VQFN/48/0.50
|
||||||
|
NC = 0x5 = HWQFN/36/0.50
|
||||||
|
LM = 0x6 = WFLGA/36/0.50
|
||||||
|
SB = 0x7 = SSOP/36/0.80
|
||||||
|
*/
|
||||||
|
#define MCU_PART_PACKAGE (0x0)
|
||||||
|
|
||||||
|
/* ROM, RAM, and Data Flash Capacity.
|
||||||
|
Character(s) = Value for macro = ROM Size/Ram Size/Data Flash Size
|
||||||
|
5 = 0x5 = 128KB/16KB/8KB
|
||||||
|
4 = 0x4 = 96KB/16KB/8KB
|
||||||
|
3 = 0x3 = 64KB/10KB/8KB
|
||||||
|
1 = 0x1 = 32KB/10KB/8KB
|
||||||
|
J = 0x0 = 16KB/8KB/8KB
|
||||||
|
*/
|
||||||
|
#define MCU_PART_MEMORY_SIZE (0x5)
|
||||||
|
|
||||||
|
/* Group name.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
10 = 0x0 = RX110 Group
|
||||||
|
11 = 0x1 = RX111 Group
|
||||||
|
*/
|
||||||
|
#define MCU_PART_GROUP (0x1)
|
||||||
|
|
||||||
|
/* Series name.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
51 = 0x0 = RX100 Series
|
||||||
|
*/
|
||||||
|
#define MCU_PART_SERIES (0x0)
|
||||||
|
|
||||||
|
/* Memory type.
|
||||||
|
Character(s) = Value for macro = Description
|
||||||
|
F = 0x0 = Flash memory version
|
||||||
|
*/
|
||||||
|
#define MCU_PART_MEMORY_TYPE (0x0)
|
||||||
|
|
||||||
|
/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a
|
||||||
|
'#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */
|
||||||
|
#if defined(BSP_DECLARE_STACK)
|
||||||
|
/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||||
|
#pragma stacksize su=0x400
|
||||||
|
/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||||
|
#pragma stacksize si=0x100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Heap size in bytes. */
|
||||||
|
#define HEAP_BYTES (0x400)
|
||||||
|
|
||||||
|
/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information
|
||||||
|
on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual.
|
||||||
|
0 = Stay in Supervisor mode.
|
||||||
|
1 = Switch to User mode.
|
||||||
|
*/
|
||||||
|
#define RUN_IN_USER_MODE (0)
|
||||||
|
|
||||||
|
|
||||||
|
/* This macro lets other modules no if a RTOS is being used.
|
||||||
|
0 = RTOS is not used.
|
||||||
|
1 = RTOS is used.
|
||||||
|
*/
|
||||||
|
#define RTOS_USED (0)
|
||||||
|
|
||||||
|
/* Clock source select (CKSEL).
|
||||||
|
0 = Low Speed On-Chip Oscillator (LOCO)
|
||||||
|
1 = High Speed On-Chip Oscillator (HOCO)
|
||||||
|
2 = Main Clock Oscillator
|
||||||
|
3 = Sub-Clock Oscillator
|
||||||
|
4 = PLL Circuit
|
||||||
|
*/
|
||||||
|
#define CLOCK_SOURCE (4)
|
||||||
|
|
||||||
|
/* Clock configuration options.
|
||||||
|
The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The
|
||||||
|
multiplier settings are used to set the clock registers in resetprg.c. If a 16MHz clock is used and the
|
||||||
|
ICLK is 24MHz, PCLKB is 24MHz, FCLK is 24MHz, PCLKD is 24MHz, and CKO is 1MHz then the
|
||||||
|
settings would be:
|
||||||
|
|
||||||
|
XTAL_HZ = 16000000
|
||||||
|
PLL_DIV = 2
|
||||||
|
PLL_MUL = 6 (16MHz x 3 = 48MHz)
|
||||||
|
ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 24MHz
|
||||||
|
PCKB_DIV = 2 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 24MHz
|
||||||
|
PCKD_DIV = 2 : Peripheral Clock D (PCLKD) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV) = 24MHz
|
||||||
|
FCK_DIV = 2 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 24MHz
|
||||||
|
*/
|
||||||
|
/* XTAL - Input clock frequency in Hz */
|
||||||
|
#define XTAL_HZ (16000000)
|
||||||
|
/* PLL Input Frequency Divider Select (PLIDIV).
|
||||||
|
Available divisors = /1 (no division), /2, /4
|
||||||
|
*/
|
||||||
|
#define PLL_DIV (2)
|
||||||
|
/* PLL Frequency Multiplication Factor Select (STC).
|
||||||
|
Available multipliers = x6, x8
|
||||||
|
*/
|
||||||
|
#define PLL_MUL (6)
|
||||||
|
/* System Clock Divider (ICK).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define ICK_DIV (2)
|
||||||
|
/* Peripheral Module Clock B Divider (PCKB).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define PCKB_DIV (2)
|
||||||
|
/* Peripheral Module Clock D Divider (PCKD).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define PCKD_DIV (2)
|
||||||
|
/* Flash IF Clock Divider (FCK).
|
||||||
|
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||||
|
*/
|
||||||
|
#define FCK_DIV (2)
|
||||||
|
|
||||||
|
/* Below are callback functions that can be used for detecting MCU exceptions, undefined interrupt sources, and
|
||||||
|
bus errors. If the user wishes to be alerted of these events then they will need to define the macro as a
|
||||||
|
function to be called when the event occurs. For example, if the user wanted the function
|
||||||
|
excep_undefined_instr_isr() to be called when an undefined interrupt source ISR is triggered then they would
|
||||||
|
do the following:
|
||||||
|
#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||||
|
If the user does not wish to be alerted of these events then they should comment out the macros.
|
||||||
|
|
||||||
|
NOTE: When a callback function is called it will be called from within a ISR. This means that the function
|
||||||
|
will essentially be an interrupt and will hold off other interrupts that occur in the system while it
|
||||||
|
is executing. For this reason, it is recommended to keep these callback functions short as to not
|
||||||
|
decrease the real-time response of your system.
|
||||||
|
*/
|
||||||
|
/* Callback for Supervisor Instruction Violation Exception. */
|
||||||
|
//#define EXCEP_SUPERVISOR_ISR_CALLBACK supervisor_instr_cb
|
||||||
|
|
||||||
|
/* Callback for Undefined Instruction Exception. */
|
||||||
|
//#define EXCEP_UNDEFINED_INSTR_ISR_CALLBACK undefined_instr_cb
|
||||||
|
|
||||||
|
/* Callback for Non-maskable Interrupt. */
|
||||||
|
//#define NMI_ISR_CALLBACK nmi_cb
|
||||||
|
|
||||||
|
/* Callback for all undefined interrupt vectors. User can set a breakpoint in this function to determine which source
|
||||||
|
is creating unwanted interrupts. */
|
||||||
|
//#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||||
|
|
||||||
|
/* Callback for Bus Error Interrupt. */
|
||||||
|
//#define BUS_ERROR_ISR_CALLBACK bus_error_cb
|
||||||
|
|
||||||
|
/* The user has the option of separately choosing little or big endian for the User Application Area */
|
||||||
|
|
||||||
|
/* Endian mode for User Application.
|
||||||
|
0 = Big Endian
|
||||||
|
Else = Little Endian (Default)
|
||||||
|
*/
|
||||||
|
#define USER_APP_ENDIAN (1)
|
||||||
|
|
||||||
|
|
||||||
|
/* Configure WDT and IWDT settings.
|
||||||
|
OFS0 - Option Function Select Register 0
|
||||||
|
OFS0 - Option Function Select Register 0
|
||||||
|
b31:b15 Reserved (set to 1)
|
||||||
|
b14 IWDTSLCSTP - IWDT Sleep Mode Count Stop Control - (0=can't stop count, 1=stop w/some low power modes)
|
||||||
|
b13 Reserved (set to 1)
|
||||||
|
b12 IWDTRSTIRQS - IWDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU)
|
||||||
|
b11:b10 IWDTRPSS - IWDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use)
|
||||||
|
b9:b8 IWDTRPES - IWDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use)
|
||||||
|
b7:b4 IWDTCKS - IWDT Clock Frequency Division Ratio - (0=none, 2=/16, 3 = /32, 4=/64, 0xF=/128, 5=/256)
|
||||||
|
b3:b2 IWDTTOPS - IWDT Timeout Period Select - (0=128 cycles, 1=512, 2=1024, 3=2048)
|
||||||
|
b1 IWDTSTRT - IWDT Start Mode Select - (0=auto-start after reset, 1=halt after reset)
|
||||||
|
b0 Reserved (set to 1) */
|
||||||
|
#define OFS0_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||||
|
|
||||||
|
/* Configure whether voltage detection 1 circuit and HOCO are enabled after reset.
|
||||||
|
OFS1 - Option Function Select Register 1
|
||||||
|
b31:b9 Reserved (set to 1)
|
||||||
|
b8 HOCOEN - Enable/disable HOCO oscillation after a reset (0=enable, 1=disable)
|
||||||
|
b7:b4 STUPLVD1LVL - Startup Voltage Monitoring 1 Reset Detection Level Select
|
||||||
|
0 1 0 0: 3.10 V
|
||||||
|
0 1 0 1: 3.00 V
|
||||||
|
0 1 1 0: 2.90 V
|
||||||
|
0 1 1 1: 2.79 V
|
||||||
|
1 0 0 0: 2.68 V
|
||||||
|
1 0 0 1: 2.58 V
|
||||||
|
1 0 1 0: 2.48 V
|
||||||
|
1 0 1 1: 2.06 V
|
||||||
|
1 1 0 0: 1.96 V
|
||||||
|
1 1 0 1: 1.86 V
|
||||||
|
b3:b2 Reserved (set to 1)
|
||||||
|
b2 STUPLVD1REN - Startup Voltage Monitoring 1 Reset Enable (1=monitoring disabled)
|
||||||
|
b0 FASTSTUP - Power-On Fast Startup Time (1=normal; read only) */
|
||||||
|
#define OFS1_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||||
|
|
||||||
|
/* Initializes C input & output library functions.
|
||||||
|
0 = Disable I/O library initialization in resetprg.c. If you are not using stdio then use this value.
|
||||||
|
1 = Enable I/O library initialization in resetprg.c. This is default and needed if you are using stdio. */
|
||||||
|
#define IO_LIB_ENABLE (1)
|
||||||
|
|
||||||
|
#endif /* R_BSP_CONFIG_REF_HEADER_FILE */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,416 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : resetprg.c
|
||||||
|
* Device(s) : RX111
|
||||||
|
* Description : Defines post-reset routines that are used to configure the MCU prior to the main program starting.
|
||||||
|
* This is were the program counter starts on power-up or reset.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Defines machine level functions used in this file */
|
||||||
|
#include <machine.h>
|
||||||
|
/* Defines MCU configuration functions used in this file */
|
||||||
|
#include <_h_c_lib.h>
|
||||||
|
/* Defines standard variable types used in this file */
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/* This macro is here so that the stack will be declared here. This is used to prevent multiplication of stack size. */
|
||||||
|
#define BSP_DECLARE_STACK
|
||||||
|
/* Define the target platform */
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#define PSW_init (0x00030000)
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Pre-processor Directives
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Declare the contents of the function 'Change_PSW_PM_to_UserMode' as assembler to the compiler */
|
||||||
|
#pragma inline_asm Change_PSW_PM_to_UserMode
|
||||||
|
|
||||||
|
/* Set this as the entry point from a power-on reset */
|
||||||
|
#pragma entry PowerON_Reset_PC
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
External function Prototypes
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Functions to setup I/O library */
|
||||||
|
extern void _INIT_IOLIB(void);
|
||||||
|
extern void _CLOSEALL(void);
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Private global variables and functions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Power-on reset function declaration */
|
||||||
|
void PowerON_Reset_PC(void);
|
||||||
|
|
||||||
|
#if RUN_IN_USER_MODE==1
|
||||||
|
#if __RENESAS_VERSION__ < 0x01010000
|
||||||
|
/* MCU usermode switcher function declaration */
|
||||||
|
static void Change_PSW_PM_to_UserMode(void);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Main program function delcaration */
|
||||||
|
void main(void);
|
||||||
|
static void operating_frequency_set(void);
|
||||||
|
static void clock_source_select(void);
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: PowerON_Reset_PC
|
||||||
|
* Description : This function is the MCU's entry point from a power-on reset.
|
||||||
|
* The following steps are taken in the startup code:
|
||||||
|
* 1. The User Stack Pointer (USP) and Interrupt Stack Pointer (ISP) are both set immediately after entry
|
||||||
|
* to this function. The USP and ISP stack sizes are set in the file stacksct.h.
|
||||||
|
* Default sizes are USP=4K and ISP=1K.
|
||||||
|
* 2. The interrupt vector base register is set to point to the beginning of the relocatable interrupt
|
||||||
|
* vector table.
|
||||||
|
* 3. The MCU is setup for floating point operations by setting the initial value of the Floating Point
|
||||||
|
* Status Word (FPSW).
|
||||||
|
* 4. The MCU operating frequency is set by configuring the Clock Generation Circuit (CGC) in
|
||||||
|
* operating_frequency_set.
|
||||||
|
* 5. Calls are made to functions to setup the C runtime environment which involves initializing all
|
||||||
|
* initialed data, zeroing all uninitialized variables, and configuring STDIO if used
|
||||||
|
* (calls to _INITSCT and _INIT_IOLIB).
|
||||||
|
* 6. Board-specific hardware setup, including configuring I/O pins on the MCU, in hardware_setup.
|
||||||
|
* 7. Global interrupts are enabled by setting the I bit in the Program Status Word (PSW), and the stack
|
||||||
|
* is switched from the ISP to the USP. The initial Interrupt Priority Level is set to zero, enabling
|
||||||
|
* any interrupts with a priority greater than zero to be serviced.
|
||||||
|
* 8. The processor is optionally switched to user mode. To run in user mode, set the macro
|
||||||
|
* RUN_IN_USER_MODE above to a 1.
|
||||||
|
* 9. The bus error interrupt is enabled to catch any accesses to invalid or reserved areas of memory.
|
||||||
|
*
|
||||||
|
* Once this initialization is complete, the user's main() function is called. It should not return.
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#pragma section ResetPRG // output PowerON_Reset to PResetPRG section
|
||||||
|
void PowerON_Reset_PC(void)
|
||||||
|
{
|
||||||
|
/* Stack pointers are setup prior to calling this function - see comments above */
|
||||||
|
|
||||||
|
/* Initialise the MCU processor word */
|
||||||
|
#if __RENESAS_VERSION__ >= 0x01010000
|
||||||
|
set_intb((void *)__sectop("C$VECT"));
|
||||||
|
#else
|
||||||
|
set_intb((unsigned long)__sectop("C$VECT"));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef NMI_ISR_CALLBACK
|
||||||
|
/* Enable NMI interrupt if callback is configured in r_bsp_config.h */
|
||||||
|
ICU.NMIER.BIT.NMIEN = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Switch to high-speed operation */
|
||||||
|
operating_frequency_set();
|
||||||
|
|
||||||
|
/* Initialize C runtime environment */
|
||||||
|
_INITSCT();
|
||||||
|
|
||||||
|
#if IO_LIB_ENABLE == 1
|
||||||
|
/* Comment this out if not using I/O lib */
|
||||||
|
_INIT_IOLIB();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Configure the MCU and YRDK hardware */
|
||||||
|
hardware_setup();
|
||||||
|
|
||||||
|
/* Change the MCU's usermode from supervisor to user */
|
||||||
|
nop();
|
||||||
|
set_psw(PSW_init);
|
||||||
|
#if RUN_IN_USER_MODE==1
|
||||||
|
/* Use chg_pmusr() intrinsic if possible. */
|
||||||
|
#if __RENESAS_VERSION__ >= 0x01010000
|
||||||
|
chg_pmusr() ;
|
||||||
|
#else
|
||||||
|
Change_PSW_PM_to_UserMode();
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Enable the bus error interrupt to catch accesses to illegal/reserved areas of memory */
|
||||||
|
/* The ISR for this interrupt can be found in vecttbl.c in the function "bus_error_isr" */
|
||||||
|
/* Clear any pending interrupts */
|
||||||
|
IR(BSC,BUSERR) = 0;
|
||||||
|
/* Make this the highest priority interrupt (adjust as necessary for your application */
|
||||||
|
IPR(BSC,BUSERR) = 0x0F;
|
||||||
|
/* Enable the interrupt in the ICU*/
|
||||||
|
IEN(BSC,BUSERR) = 1;
|
||||||
|
/* Enable illegal address interrupt in the BSC */
|
||||||
|
BSC.BEREN.BIT.IGAEN = 1;
|
||||||
|
|
||||||
|
/* Call the main program function (should not return) */
|
||||||
|
main();
|
||||||
|
|
||||||
|
#if IO_LIB_ENABLE == 1
|
||||||
|
/* Comment this out if not using I/O lib - cleans up open files */
|
||||||
|
_CLOSEALL();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
/* Infinite loop. Put a breakpoint here if you want to catch an exit of main(). */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: operating_frequency_set
|
||||||
|
* Description : Configures the clock settings for each of the device clocks
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
void operating_frequency_set(void)
|
||||||
|
{
|
||||||
|
/* Used for constructing value to write to SCKCR and CKOCR registers. */
|
||||||
|
uint32_t temp_clock = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Clock Description Frequency
|
||||||
|
----------------------------------------
|
||||||
|
Input Clock Frequency............ 16 MHz
|
||||||
|
PLL frequency (x3)............... 48 MHz
|
||||||
|
Internal Clock Frequency......... 24 MHz
|
||||||
|
Peripheral Clock Frequency....... 24 MHz
|
||||||
|
Clock Out Frequency.............. 1 MHz */
|
||||||
|
|
||||||
|
volatile unsigned int i;
|
||||||
|
|
||||||
|
/* Protect off. */
|
||||||
|
SYSTEM.PRCR.WORD = 0xA50B;
|
||||||
|
|
||||||
|
/* Select the clock based upon user's choice. */
|
||||||
|
clock_source_select();
|
||||||
|
|
||||||
|
|
||||||
|
/* Figure out setting for FCK bits. */
|
||||||
|
#if FCK_DIV == 1
|
||||||
|
/* Do nothing since FCK bits should be 0. */
|
||||||
|
#elif FCK_DIV == 2
|
||||||
|
temp_clock |= 0x10000000;
|
||||||
|
#elif FCK_DIV == 4
|
||||||
|
temp_clock |= 0x20000000;
|
||||||
|
#elif FCK_DIV == 8
|
||||||
|
temp_clock |= 0x30000000;
|
||||||
|
#elif FCK_DIV == 16
|
||||||
|
temp_clock |= 0x40000000;
|
||||||
|
#elif FCK_DIV == 32
|
||||||
|
temp_clock |= 0x50000000;
|
||||||
|
#elif FCK_DIV == 64
|
||||||
|
temp_clock |= 0x60000000;
|
||||||
|
#else
|
||||||
|
#error "Error! Invalid setting for FCK_DIV in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Figure out setting for ICK bits. */
|
||||||
|
#if ICK_DIV == 1
|
||||||
|
/* Do nothing since ICK bits should be 0. */
|
||||||
|
#elif ICK_DIV == 2
|
||||||
|
temp_clock |= 0x01000000;
|
||||||
|
#elif ICK_DIV == 4
|
||||||
|
temp_clock |= 0x02000000;
|
||||||
|
#elif ICK_DIV == 8
|
||||||
|
temp_clock |= 0x03000000;
|
||||||
|
#elif ICK_DIV == 16
|
||||||
|
temp_clock |= 0x04000000;
|
||||||
|
#elif ICK_DIV == 32
|
||||||
|
temp_clock |= 0x05000000;
|
||||||
|
#elif ICK_DIV == 64
|
||||||
|
temp_clock |= 0x06000000;
|
||||||
|
#else
|
||||||
|
#error "Error! Invalid setting for ICK_DIV in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Figure out setting for PCKB bits. */
|
||||||
|
#if PCKB_DIV == 1
|
||||||
|
/* Do nothing since PCKB bits should be 0. */
|
||||||
|
#elif PCKB_DIV == 2
|
||||||
|
temp_clock |= 0x00000100;
|
||||||
|
#elif PCKB_DIV == 4
|
||||||
|
temp_clock |= 0x00000200;
|
||||||
|
#elif PCKB_DIV == 8
|
||||||
|
temp_clock |= 0x00000300;
|
||||||
|
#elif PCKB_DIV == 16
|
||||||
|
temp_clock |= 0x00000400;
|
||||||
|
#elif PCKB_DIV == 32
|
||||||
|
temp_clock |= 0x00000500;
|
||||||
|
#elif PCKB_DIV == 64
|
||||||
|
temp_clock |= 0x00000600;
|
||||||
|
#else
|
||||||
|
#error "Error! Invalid setting for PCKB_DIV in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Figure out setting for PCKD bits. */
|
||||||
|
#if PCKD_DIV == 1
|
||||||
|
/* Do nothing since PCKD bits should be 0. */
|
||||||
|
#elif PCKD_DIV == 2
|
||||||
|
temp_clock |= 0x00000001;
|
||||||
|
#elif PCKD_DIV == 4
|
||||||
|
temp_clock |= 0x00000002;
|
||||||
|
#elif PCKD_DIV == 8
|
||||||
|
temp_clock |= 0x00000003;
|
||||||
|
#elif PCKD_DIV == 16
|
||||||
|
temp_clock |= 0x00000004;
|
||||||
|
#elif PCKD_DIV == 32
|
||||||
|
temp_clock |= 0x00000005;
|
||||||
|
#elif PCKD_DIV == 64
|
||||||
|
temp_clock |= 0x00000006;
|
||||||
|
#else
|
||||||
|
#error "Error! Invalid setting for PCKD_DIV in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Set SCKCR register. */
|
||||||
|
SYSTEM.SCKCR.LONG = temp_clock;
|
||||||
|
|
||||||
|
/* Choose clock source. Default for r_bsp_config.h is PLL. */
|
||||||
|
SYSTEM.SCKCR3.WORD = ((uint16_t)CLOCK_SOURCE) << 8;
|
||||||
|
|
||||||
|
/* Protect on. */
|
||||||
|
SYSTEM.PRCR.WORD = 0xA500;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: clock_source_select
|
||||||
|
* Description : Enables and disables clocks as chosen by the user. This function also implements the software delays
|
||||||
|
* needed for the clocks to stabilize.
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
static void clock_source_select (void)
|
||||||
|
{
|
||||||
|
/* Declared volatile for software delay purposes. */
|
||||||
|
volatile unsigned int i;
|
||||||
|
|
||||||
|
/* NOTE: AS OF VERSION 0.50 OF THE RX111 HARDWARE MANUAL, ALL OF THE CLOCK
|
||||||
|
* STABILIZATION TIMES ARE TBD. FOR NOW, WHERE EVER A WAIT COUNT REGISTER
|
||||||
|
* IS AVAILABLE, THE DELAY IS SET TO THE MAX NUMBER OF CYCLES. WHERE EVER
|
||||||
|
* DELAY LOOPS ARE PRESENT, THE VALUES FROM THE 63N ARE RE-USED. KEEP IN
|
||||||
|
* MIND THAT THE 63N RUNS ON A FASTER CRYSTAL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if (CLOCK_SOURCE == 1)
|
||||||
|
/* HOCO is chosen. Start it operating. */
|
||||||
|
SYSTEM.HOCOCR.BYTE = 0x00;
|
||||||
|
/* The delay period needed is to make sure that the HOCO has stabilized.*/
|
||||||
|
for(i = 0; i< 28; i++) // tHOCOWT2 is TBD
|
||||||
|
{
|
||||||
|
nop() ;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
/* HOCO is not chosen. Stop the HOCO. */
|
||||||
|
SYSTEM.HOCOCR.BYTE = 0x01;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CLOCK_SOURCE == 2)
|
||||||
|
/* Main clock oscillator is chosen. Start it operating. */
|
||||||
|
SYSTEM.MOSCWTCR.BYTE = 0x07; // Wait 65,536 cycles
|
||||||
|
/* Set the main clock to operating. */
|
||||||
|
SYSTEM.MOSCCR.BYTE = 0x00;
|
||||||
|
/* The delay period needed is to make sure that the main clock has stabilized. */
|
||||||
|
for(i = 0; i< 140; i++) // tMAINOSCWT is TBD
|
||||||
|
{
|
||||||
|
nop() ;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CLOCK_SOURCE == 3)
|
||||||
|
/* Sub-clock oscillator is chosen. Start it operating. */
|
||||||
|
/* In section 9.8.4, there is a reference to a SOSCWTCR register, but there is no
|
||||||
|
* description for this register in the manual nor reference for it in iodefine.h. */
|
||||||
|
|
||||||
|
/* Set the sub-clock to operating. */
|
||||||
|
SYSTEM.SOSCCR.BYTE = 0x00;
|
||||||
|
/* The delay period needed is to make sure that the sub-clock has stabilized. */
|
||||||
|
for(i = 0; i< 30233; i++) // tSUBOSCWT0 is TBD
|
||||||
|
{
|
||||||
|
nop() ;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
/* Set the sub-clock to stopped. */
|
||||||
|
SYSTEM.SOSCCR.BYTE = 0x01;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CLOCK_SOURCE == 4)
|
||||||
|
/* PLL is chosen. Start it operating. Must start main clock as well since PLL uses it. */
|
||||||
|
SYSTEM.MOSCWTCR.BYTE = 0x07; // Wait 65,536 cycles
|
||||||
|
/* Set the main clock to operating. */
|
||||||
|
SYSTEM.MOSCCR.BYTE = 0x00;
|
||||||
|
|
||||||
|
/* Set PLL Input Divisor. */
|
||||||
|
SYSTEM.PLLCR.BIT.PLIDIV = PLL_DIV >> 1;
|
||||||
|
|
||||||
|
/* Set PLL Multiplier. */
|
||||||
|
SYSTEM.PLLCR.BIT.STC = (PLL_MUL * 2) - 1;
|
||||||
|
|
||||||
|
/* Set the PLL to operating. */
|
||||||
|
SYSTEM.PLLCR2.BYTE = 0x00;
|
||||||
|
/* The delay period needed is to make sure that the main clock and PLL have stabilized. */
|
||||||
|
for(i = 0; i< 140; i++) // tPLLWT2 is TBD
|
||||||
|
{
|
||||||
|
nop() ;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* LOCO is saved for last since it is what is running by default out of reset. This means you do not want to turn
|
||||||
|
it off until another clock has been enabled and is ready to use. */
|
||||||
|
#if (CLOCK_SOURCE == 0)
|
||||||
|
/* LOCO is chosen. This is the default out of reset. */
|
||||||
|
SYSTEM.LOCOCR.BYTE = 0x00;
|
||||||
|
#else
|
||||||
|
/* LOCO is not chosen and another clock has already been setup. Turn off the LOCO. */
|
||||||
|
SYSTEM.LOCOCR.BYTE = 0x01;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Make sure a valid clock was chosen. */
|
||||||
|
#if (CLOCK_SOURCE > 4) || (CLOCK_SOURCE < 0)
|
||||||
|
#error "ERROR - Valid clock source must be chosen in r_bsp_config.h using CLOCK_SOURCE macro."
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: Change_PSW_PM_to_UserMode
|
||||||
|
* Description : Assembler function, used to change the MCU's usermode from supervisor to user.
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#if RUN_IN_USER_MODE==1
|
||||||
|
#if __RENESAS_VERSION__ < 0x01010000
|
||||||
|
static void Change_PSW_PM_to_UserMode(void)
|
||||||
|
{
|
||||||
|
MVFC PSW,R1
|
||||||
|
OR #00100000h,R1
|
||||||
|
PUSH.L R1
|
||||||
|
MVFC PC,R1
|
||||||
|
ADD #10,R1
|
||||||
|
PUSH.L R1
|
||||||
|
RTE
|
||||||
|
NOP
|
||||||
|
NOP
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
|
@ -0,0 +1,63 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : rskrx111.h
|
||||||
|
* H/W Platform : RSKRX111
|
||||||
|
* Description : Board specific definitions for the RSKRX111.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef RSKRX111_H
|
||||||
|
#define RSKRX111_H
|
||||||
|
|
||||||
|
/* Local defines */
|
||||||
|
#define LED_ON (0)
|
||||||
|
#define LED_OFF (1)
|
||||||
|
#define SET_BIT_HIGH (1)
|
||||||
|
#define SET_BIT_LOW (0)
|
||||||
|
#define SET_BYTE_HIGH (0xFF)
|
||||||
|
#define SET_BYTE_LOW (0x00)
|
||||||
|
|
||||||
|
/* Switches */
|
||||||
|
#define SW_ACTIVE 0
|
||||||
|
#define SW1 PORT3.PIDR.BIT.B0
|
||||||
|
#define SW2 PORT3.PIDR.BIT.B1
|
||||||
|
#define SW3 PORTE.PIDR.BIT.B4
|
||||||
|
#define SW1_PDR PORT3.PDR.BIT.B0
|
||||||
|
#define SW2_PDR PORT3.PDR.BIT.B1
|
||||||
|
#define SW3_PDR PORTE.PDR.BIT.B4
|
||||||
|
#define SW1_PMR PORT3.PMR.BIT.B0
|
||||||
|
#define SW2_PMR PORT3.PMR.BIT.B1
|
||||||
|
#define SW3_PMR PORTE.PMR.BIT.B4
|
||||||
|
|
||||||
|
/* LEDs */
|
||||||
|
#define LED0 PORTB.PODR.BIT.B7
|
||||||
|
#define LED1 PORTA.PODR.BIT.B0
|
||||||
|
#define LED2 PORT5.PODR.BIT.B4
|
||||||
|
#define LED3 PORT1.PODR.BIT.B7
|
||||||
|
#define LED0_PDR PORTB.PDR.BIT.B7
|
||||||
|
#define LED1_PDR PORTA.PDR.BIT.B0
|
||||||
|
#define LED2_PDR PORT5.PDR.BIT.B4
|
||||||
|
#define LED3_PDR PORT1.PDR.BIT.B7
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* RSKRX111_H */
|
|
@ -0,0 +1,96 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : sbrk.c
|
||||||
|
* Device(s) : RX
|
||||||
|
* Description : Configures the MCU heap memory. The size of the heap is defined by the macro HEAPSIZE below.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 26.10.2011 1.00 First Release
|
||||||
|
* : 12.03.2012 1.10 Heap size is now defined in r_bsp_config.h, not sbrk.h.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Provides standard definitions used in this file */
|
||||||
|
#include <stddef.h>
|
||||||
|
/* Defines standard input/output functions used in this file */
|
||||||
|
#include <stdio.h>
|
||||||
|
/* Defines standard variable types used in this file */
|
||||||
|
#include <stdint.h>
|
||||||
|
/* Used for getting HEAP_BYTES macro. */
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Function Prototypes
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Memory allocation function prototype declaration */
|
||||||
|
int8_t *sbrk(size_t size);
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Global Variables
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
//const size_t _sbrk_size= /* Specifies the minimum unit of */
|
||||||
|
/* the defined heap area */
|
||||||
|
extern int8_t *_s1ptr;
|
||||||
|
|
||||||
|
union HEAP_TYPE
|
||||||
|
{
|
||||||
|
int32_t dummy; /* Dummy for 4-byte boundary */
|
||||||
|
int8_t heap[HEAP_BYTES]; /* Declaration of the area managed by sbrk*/
|
||||||
|
};
|
||||||
|
/* Declare memory heap area */
|
||||||
|
static union HEAP_TYPE heap_area;
|
||||||
|
/* End address allocated by sbrk */
|
||||||
|
static int8_t *brk=(int8_t *)&heap_area;
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: sbrk
|
||||||
|
* Description : This function configures MCU memory area allocation.
|
||||||
|
* Arguments : size -
|
||||||
|
* assigned area size
|
||||||
|
* Return value : Start address of allocated area (pass)
|
||||||
|
* -1 (failure)
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
int8_t *sbrk(size_t size)
|
||||||
|
{
|
||||||
|
int8_t *p;
|
||||||
|
|
||||||
|
if (brk+size > heap_area.heap+HEAP_BYTES)
|
||||||
|
{
|
||||||
|
/* Empty area size */
|
||||||
|
p = (int8_t *)-1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Area assignment */
|
||||||
|
p = brk;
|
||||||
|
|
||||||
|
/* End address update */
|
||||||
|
brk += size;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return result */
|
||||||
|
return p;
|
||||||
|
}
|
|
@ -0,0 +1,206 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : vecttbl.c
|
||||||
|
* Device(s) : RX11x
|
||||||
|
* Description : Definition of the fixed vector table and option setting memory.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Fixed size integers. */
|
||||||
|
#include <stdint.h>
|
||||||
|
/* Used for nop(). */
|
||||||
|
#include <machine.h>
|
||||||
|
/* BSP configuration. */
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
|
#pragma section IntPRG
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: PowerON_Reset_PC
|
||||||
|
* Description : The reset vector points to this function. Code execution starts in this function after reset.
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
extern void PowerON_Reset_PC(void);
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: excep_supervisor_inst_isr
|
||||||
|
* Description : Supervisor Instruction Violation ISR
|
||||||
|
* Arguments : none
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#pragma interrupt (excep_supervisor_inst_isr)
|
||||||
|
void excep_supervisor_inst_isr(void)
|
||||||
|
{
|
||||||
|
/* If the user defined a callback function in r_bsp_config.h then it will be called here. */
|
||||||
|
#if defined(EXCEP_SUPERVISOR_ISR_CALLBACK)
|
||||||
|
EXCEP_SUPERVISOR_ISR_CALLBACK();
|
||||||
|
|
||||||
|
/* If you do not put the MCU in Supervisor mode before returning then it will just execute the same violating
|
||||||
|
instruction again and come back in here. Since the PSW is restored from the stack when returning from the
|
||||||
|
exception, you would need to alter the saved PSW on the stack to change to Supervisor mode. We do not do this
|
||||||
|
here because the only 'safe' way to do this would be to write this function in assembly. Even then most users
|
||||||
|
would probably want to handle this someway instead of just going back to the application. */
|
||||||
|
#else
|
||||||
|
brk();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: excep_undefined_inst_isr
|
||||||
|
* Description : Undefined instruction exception ISR
|
||||||
|
* Arguments : none
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#pragma interrupt (excep_undefined_inst_isr)
|
||||||
|
void excep_undefined_inst_isr(void)
|
||||||
|
{
|
||||||
|
/* If the user defined a callback function in r_bsp_config.h then it will be called here. */
|
||||||
|
#if defined(EXCEP_UNDEFINED_INSTR_ISR_CALLBACK)
|
||||||
|
EXCEP_UNDEFINED_INSTR_ISR_CALLBACK();
|
||||||
|
#else
|
||||||
|
brk();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: non_maskable_isr
|
||||||
|
* Description : Non-maskable interrupt ISR
|
||||||
|
* Arguments : none
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#pragma interrupt (non_maskable_isr)
|
||||||
|
void non_maskable_isr(void)
|
||||||
|
{
|
||||||
|
/* If the user defined a callback function in r_bsp_config.h then it will be called here. */
|
||||||
|
#if defined(NMI_ISR_CALLBACK)
|
||||||
|
NMI_ISR_CALLBACK();
|
||||||
|
|
||||||
|
/* Clear NMI flag. */
|
||||||
|
ICU.NMICLR.BIT.NMICLR = 1;
|
||||||
|
#else
|
||||||
|
brk();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: undefined_interrupt_source_isr
|
||||||
|
* Description : All undefined interrupt vectors point to this function.
|
||||||
|
* Set a breakpoint in this function to determine which source is creating unwanted interrupts.
|
||||||
|
* Arguments : none
|
||||||
|
* Return Value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#pragma interrupt (undefined_interrupt_source_isr)
|
||||||
|
void undefined_interrupt_source_isr(void)
|
||||||
|
{
|
||||||
|
/* If the user defined a callback function in r_bsp_config.h then it will be called here. */
|
||||||
|
#if defined(UNDEFINED_INT_ISR_CALLBACK)
|
||||||
|
UNDEFINED_INT_ISR_CALLBACK();
|
||||||
|
#else
|
||||||
|
brk();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* Function name: bus_error_isr
|
||||||
|
* Description : By default, this demo code enables the Bus Error Interrupt. This interrupt will fire if the user tries
|
||||||
|
* to access code or data from one of the reserved areas in the memory map, including the areas covered
|
||||||
|
* by disabled chip selects. A nop() statement is included here as a convenient place to set a breakpoint
|
||||||
|
* during debugging and development, and further handling should be added by the user for their
|
||||||
|
* application.
|
||||||
|
* Arguments : none
|
||||||
|
* Return value : none
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#pragma interrupt (bus_error_isr(vect=VECT(BSC,BUSERR)))
|
||||||
|
void bus_error_isr (void)
|
||||||
|
{
|
||||||
|
/* Clear the bus error */
|
||||||
|
BSC.BERCLR.BIT.STSCLR = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
To find the address that was accessed when the bus error occurred, read the register BSC.BERSR2.WORD. The upper
|
||||||
|
13 bits of this register contain the upper 13-bits of the offending address (in 512K byte units)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* If the user defined a callback function in r_bsp_config.h then it will be called here. */
|
||||||
|
#if defined(BUS_ERROR_ISR_CALLBACK)
|
||||||
|
BUS_ERROR_ISR_CALLBACK();
|
||||||
|
#else
|
||||||
|
nop();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dummy( void )
|
||||||
|
{
|
||||||
|
brk();
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* The following array fills in the endian and option function select registers, and the fixed vector table
|
||||||
|
* bytes.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#pragma section C FIXEDVECT
|
||||||
|
|
||||||
|
void (*const Fixed_Vectors[])(void) = {
|
||||||
|
//;0xffffffd0 Exception(Supervisor Instruction)
|
||||||
|
excep_supervisor_inst_isr,
|
||||||
|
//;0xffffffd4 Reserved
|
||||||
|
Dummy,
|
||||||
|
//;0xffffffd8 Reserved
|
||||||
|
Dummy,
|
||||||
|
//;0xffffffdc Exception(Undefined Instruction)
|
||||||
|
undefined_interrupt_source_isr,
|
||||||
|
//;0xffffffe0 Reserved
|
||||||
|
Dummy,
|
||||||
|
//;0xffffffe4 Reserved
|
||||||
|
Dummy,
|
||||||
|
//;0xffffffe8 Reserved
|
||||||
|
Dummy,
|
||||||
|
//;0xffffffec Reserved
|
||||||
|
Dummy,
|
||||||
|
//;0xfffffff0 Reserved
|
||||||
|
Dummy,
|
||||||
|
//;0xfffffff4 Reserved
|
||||||
|
Dummy,
|
||||||
|
//;0xfffffff8 NMI
|
||||||
|
non_maskable_isr,
|
||||||
|
//;0xfffffffc RESET
|
||||||
|
//;<<VECTOR DATA START (POWER ON RESET)>>
|
||||||
|
//;Power On Reset PC
|
||||||
|
PowerON_Reset_PC
|
||||||
|
//;<<VECTOR DATA END (POWER ON RESET)>>
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma address _MDEreg=0xffffff80 // MDE register (Single Chip Mode)
|
||||||
|
#ifdef __BIG
|
||||||
|
const unsigned long _MDEreg = 0xfffffff8; // big
|
||||||
|
#else
|
||||||
|
const unsigned long _MDEreg = 0xffffffff; // little
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : vecttbl.h
|
||||||
|
* Device(s) : RX111
|
||||||
|
* Description : Has function prototypes for exception callback functions.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 1.20 Beta Release.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef VECTTBL_HEADER_INC
|
||||||
|
#define VECTTBL_HEADER_INC
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Fixed size integers. */
|
||||||
|
#include <stdint.h>
|
||||||
|
/* Used for nop(). */
|
||||||
|
#include <machine.h>
|
||||||
|
/* BSP configuration. */
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Exported global functions (to be accessed by other files)
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
#if defined(EXCEP_SUPERVISOR_ISR_CALLBACK)
|
||||||
|
void EXCEP_SUPERVISOR_ISR_CALLBACK(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(EXCEP_UNDEFINED_INSTR_ISR_CALLBACK)
|
||||||
|
void EXCEP_UNDEFINED_INSTR_ISR_CALLBACK(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(NMI_ISR_CALLBACK)
|
||||||
|
void NMI_ISR_CALLBACK(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(UNDEFINED_INT_ISR_CALLBACK)
|
||||||
|
void UNDEFINED_INT_ISR_CALLBACK(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BUS_ERROR_ISR_CALLBACK)
|
||||||
|
void BUS_ERROR_ISR_CALLBACK(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* VECTTBL_HEADER_INC */
|
|
@ -0,0 +1,54 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : r_bsp.h
|
||||||
|
* Description : Has the header files that should be included for this platform.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 13.01.2012 1.00 First Release
|
||||||
|
* : 27.06.2012 1.10 Updated with new information to reflect udpated r_bsp structure.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef PLATFORM_BOARD_USER
|
||||||
|
#define PLATFORM_BOARD_USER
|
||||||
|
|
||||||
|
/* Make sure that no other platforms have already been defined. Do not touch this! */
|
||||||
|
#ifdef PLATFORM_DEFINED
|
||||||
|
#error "Error - Multiple platforms defined in platform.h!"
|
||||||
|
#else
|
||||||
|
#define PLATFORM_DEFINED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
INCLUDE APPROPRIATE MCU AND BOARD FILES
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* This is a user defined board. Start off by:
|
||||||
|
1)Copy and rename one of the 'board' folders that most closely matches your system (same MCU Series and Group).
|
||||||
|
2)Substitute in your MCU Group for the *MCU Group* option in the #include below for mcu_info.h.
|
||||||
|
3)Copy the other #includes from the r_bsp.h in the 'board' folder that you copied earlier.
|
||||||
|
4)Configure the BSP for your board by modifying the r_bsp_config_reference.h.
|
||||||
|
5)Copy r_bsp_config_reference.h to your project directory and rename it r_bsp_config.h.
|
||||||
|
You can also add your own include files here as well. */
|
||||||
|
#include "r_bsp_config.h"
|
||||||
|
#include ".\mcu\*MCU Group*\mcu_info.h"
|
||||||
|
|
||||||
|
#endif /* PLATFORM_BOARD_USER */
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,112 @@
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* DISCLAIMER
|
||||||
|
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||||
|
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||||
|
* applicable laws, including copyright laws.
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||||
|
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||||
|
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||||
|
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||||
|
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||||
|
* following link:
|
||||||
|
* http://www.renesas.com/disclaimer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* File Name : mcu_info.h
|
||||||
|
* Device(s) : RX111
|
||||||
|
* Description : Information about the MCU on this board (RSKRX111).
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* History : DD.MM.YYYY Version Description
|
||||||
|
* : 08.11.2012 0.01 Beta Release
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _MCU_INFO
|
||||||
|
#define _MCU_INFO
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Includes <System Includes> , "Project Includes"
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* Gets MCU configuration information. */
|
||||||
|
#include "r_bsp_config.h"
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
Macro definitions
|
||||||
|
***********************************************************************************************************************/
|
||||||
|
/* MCU Series. */
|
||||||
|
#if MCU_PART_SERIES == 0x0
|
||||||
|
#define MCU_SERIES_RX100 (1)
|
||||||
|
#else
|
||||||
|
#error "ERROR - MCU_PART_SERIES - Unknown MCU Series chosen in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* MCU Group name. */
|
||||||
|
#if MCU_PART_GROUP == 0x1
|
||||||
|
#define MCU_RX111 (1)
|
||||||
|
#define MCU_RX11x (1)
|
||||||
|
#else
|
||||||
|
#error "ERROR - MCU_PART_GROUP - Unknown MCU Group chosen in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Package. */
|
||||||
|
#if MCU_PART_PACKAGE == 0x0
|
||||||
|
#define PACKAGE_LFQFP64 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x1
|
||||||
|
#define PACKAGE_LQFP64 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x2
|
||||||
|
#define PACKAGE_TFLGA64 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x3
|
||||||
|
#define PACKAGE_LFQFP48 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x4
|
||||||
|
#define PACKAGE_VQFN48 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x5
|
||||||
|
#define PACKAGE_HWQFN36 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x6
|
||||||
|
#define PACKAGE_WFLGA36 (1)
|
||||||
|
#elif MCU_PART_PACKAGE == 0x7
|
||||||
|
#define PACKAGE_SSOP36 (1)
|
||||||
|
#else
|
||||||
|
#error "ERROR - MCU_PART_PACKAGE - Unknown package chosen in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Memory size of your MCU. */
|
||||||
|
#if MCU_PART_MEMORY_SIZE == 0x0 // "J" parts
|
||||||
|
#define ROM_SIZE_BYTES (16384)
|
||||||
|
#define RAM_SIZE_BYTES (8192)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#elif MCU_PART_MEMORY_SIZE == 0x1
|
||||||
|
#define ROM_SIZE_BYTES (32768)
|
||||||
|
#define RAM_SIZE_BYTES (10240)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#elif MCU_PART_MEMORY_SIZE == 0x3
|
||||||
|
#define ROM_SIZE_BYTES (65536)
|
||||||
|
#define RAM_SIZE_BYTES (10240)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#elif MCU_PART_MEMORY_SIZE == 0x4
|
||||||
|
#define ROM_SIZE_BYTES (98304)
|
||||||
|
#define RAM_SIZE_BYTES (16384)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#elif MCU_PART_MEMORY_SIZE == 0x5
|
||||||
|
#define ROM_SIZE_BYTES (131072)
|
||||||
|
#define RAM_SIZE_BYTES (16384)
|
||||||
|
#define DF_SIZE_BYTES (8192)
|
||||||
|
#else
|
||||||
|
#error "ERROR - MCU_PART_MEMORY_SIZE - Unknown memory size chosen in r_bsp_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* System clock speed in Hz. */
|
||||||
|
#define ICLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV)
|
||||||
|
/* Peripheral Module Clock B speed in Hz. */
|
||||||
|
#define PCLKB_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV)
|
||||||
|
/* Peripheral Module Clock D speed in Hz. */
|
||||||
|
#define PCLKD_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV)
|
||||||
|
/* FlashIF clock speed in Hz. */
|
||||||
|
#define FCLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV)
|
||||||
|
|
||||||
|
#endif /* _MCU_INFO */
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue