OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/rtos/freertos-6.1.1/Demo/CORTEX_EFMG890F128_IAR
    from Rev 594 to Rev 595
    Reverse comparison

Rev 594 → Rev 595

/startup_efm32.s
0,0 → 1,323
;/*************************************************************************//**
; * @file: startup_efm32.s
; * @purpose: CMSIS Cortex-M3 Core Device Startup File
; * for the Energy Micro 'EFM32G' Device Series
; * @version 1.0.2
; * @date: 10. September 2009
; *----------------------------------------------------------------------------
; *
; * Copyright (C) 2009 ARM Limited. All rights reserved.
; *
; * ARM Limited (ARM) is supplying this software for use with Cortex-Mx
; * processor based microcontrollers. This file can be freely distributed
; * within development tools that are supporting such ARM based processors.
; *
; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
; *
; ******************************************************************************/
 
 
;
; The modules in this file are included in the libraries, and may be replaced
; by any user-defined modules that define the PUBLIC symbol _program_start or
; a user defined start symbol.
; To override the cstartup defined in the library, simply add your modified
; version to the workbench project.
;
; The vector table is normally located at address 0.
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
; The name "__vector_table" has special meaning for C-SPY:
; it is where the SP start value is found, and the NVIC vector
; table register (VTOR) is initialized to this address if != 0.
;
; Cortex-M version
;
MODULE ?cstartup
 
;; Forward declaration of sections.
SECTION CSTACK:DATA:NOROOT(3)
 
SECTION .intvec:CODE:NOROOT(2)
EXTERN __iar_program_start
EXTERN SystemInit
PUBLIC __vector_table
PUBLIC __vector_table_0x1c
PUBLIC __Vectors
PUBLIC __Vectors_End
PUBLIC __Vectors_Size
 
DATA
 
__vector_table
DCD sfe(CSTACK)
DCD Reset_Handler
 
DCD NMI_Handler
DCD HardFault_Handler
DCD MemManage_Handler
DCD BusFault_Handler
DCD UsageFault_Handler
__vector_table_0x1c
DCD 0
DCD 0
DCD 0
DCD 0
DCD vPortSVCHandler
DCD DebugMon_Handler
DCD 0
DCD xPortPendSVHandler
DCD xPortSysTickHandler
 
; External Interrupts
DCD DMA_IRQHandler ; 0: DMA Interrupt
DCD GPIO_EVEN_IRQHandler ; 1: GPIO_EVEN Interrupt
DCD TIMER0_IRQHandler ; 2: TIMER0 Interrupt
DCD USART0_RX_IRQHandler ; 3: USART0_RX Interrupt
DCD USART0_TX_IRQHandler ; 4: USART0_TX Interrupt
DCD ACMP0_IRQHandler ; 5: ACMP0 Interrupt
DCD ADC0_IRQHandler ; 6: ADC0 Interrupt
DCD DAC0_IRQHandler ; 7: DAC0 Interrupt
DCD I2C0_IRQHandler ; 8: I2C0 Interrupt
DCD GPIO_ODD_IRQHandler ; 9: GPIO_ODD Interrupt
DCD TIMER1_IRQHandler ; 10: TIMER1 Interrupt
DCD TIMER2_IRQHandler ; 11: TIMER2 Interrupt
DCD USART1_RX_IRQHandler ; 12: USART1_RX Interrupt
DCD USART1_TX_IRQHandler ; 13: USART1_TX Interrupt
DCD USART2_RX_IRQHandler ; 14: USART2_RX Interrupt
DCD USART2_TX_IRQHandler ; 15: USART2_TX Interrupt
DCD UART0_RX_IRQHandler ; 16: UART0_RX Interrupt
DCD UART0_TX_IRQHandler ; 17: UART0_TX Interrupt
DCD LEUART0_IRQHandler ; 18: LEUART0 Interrupt
DCD LEUART1_IRQHandler ; 19: LEUART1 Interrupt
DCD LETIMER0_IRQHandler ; 20: LETIMER0 Interrupt
DCD PCNT0_IRQHandler ; 21: PCNT0 Interrupt
DCD PCNT1_IRQHandler ; 22: PCNT1 Interrupt
DCD PCNT2_IRQHandler ; 23: PCNT2 Interrupt
DCD SYSTICCK_IRQHandler;DCD RTC_IRQHandler ; 24: RTC Interrupt
DCD CMU_IRQHandler ; 25: CMU Interrupt
DCD VCMP_IRQHandler ; 26: VCMP Interrupt
DCD LCD_IRQHandler ; 27: LCD Interrupt
DCD MSC_IRQHandler ; 28: MSC Interrupt
DCD AES_IRQHandler ; 29: AES Interrupt
 
__Vectors_End
__Vectors EQU __vector_table
__Vectors_Size EQU __Vectors_End - __Vectors
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Default interrupt handlers.
;;
THUMB
 
PUBWEAK Reset_Handler
SECTION .text:CODE:REORDER(2)
Reset_Handler
LDR R0, =SystemInit
BLX R0
LDR R0, =__iar_program_start
BX R0
 
PUBWEAK NMI_Handler
SECTION .text:CODE:REORDER(1)
NMI_Handler
B NMI_Handler
 
PUBWEAK HardFault_Handler
SECTION .text:CODE:REORDER(1)
HardFault_Handler
B HardFault_Handler
 
PUBWEAK MemManage_Handler
SECTION .text:CODE:REORDER(1)
MemManage_Handler
B MemManage_Handler
 
PUBWEAK BusFault_Handler
SECTION .text:CODE:REORDER(1)
BusFault_Handler
B BusFault_Handler
 
PUBWEAK UsageFault_Handler
SECTION .text:CODE:REORDER(1)
UsageFault_Handler
B UsageFault_Handler
 
PUBWEAK vPortSVCHandler
SECTION .text:CODE:REORDER(1)
vPortSVCHandler
B vPortSVCHandler
 
PUBWEAK DebugMon_Handler
SECTION .text:CODE:REORDER(1)
DebugMon_Handler
B DebugMon_Handler
 
PUBWEAK xPortPendSVHandler
SECTION .text:CODE:REORDER(1)
xPortPendSVHandler
B xPortPendSVHandler
 
PUBWEAK SYSTICCK_IRQHandler
SECTION .text:CODE:REORDER(1)
SYSTICCK_IRQHandler
B SYSTICCK_IRQHandler
; EFM32G specific interrupt handlers
 
PUBWEAK DMA_IRQHandler
SECTION .text:CODE:REORDER(1)
DMA_IRQHandler
B DMA_IRQHandler
PUBWEAK GPIO_EVEN_IRQHandler
SECTION .text:CODE:REORDER(1)
GPIO_EVEN_IRQHandler
B GPIO_EVEN_IRQHandler
PUBWEAK TIMER0_IRQHandler
SECTION .text:CODE:REORDER(1)
TIMER0_IRQHandler
B TIMER0_IRQHandler
PUBWEAK USART0_RX_IRQHandler
SECTION .text:CODE:REORDER(1)
USART0_RX_IRQHandler
B USART0_RX_IRQHandler
PUBWEAK USART0_TX_IRQHandler
SECTION .text:CODE:REORDER(1)
USART0_TX_IRQHandler
B USART0_TX_IRQHandler
PUBWEAK ACMP0_IRQHandler
SECTION .text:CODE:REORDER(1)
ACMP0_IRQHandler
B ACMP0_IRQHandler
PUBWEAK ADC0_IRQHandler
SECTION .text:CODE:REORDER(1)
ADC0_IRQHandler
B ADC0_IRQHandler
PUBWEAK DAC0_IRQHandler
SECTION .text:CODE:REORDER(1)
DAC0_IRQHandler
B DAC0_IRQHandler
PUBWEAK I2C0_IRQHandler
SECTION .text:CODE:REORDER(1)
I2C0_IRQHandler
B I2C0_IRQHandler
PUBWEAK GPIO_ODD_IRQHandler
SECTION .text:CODE:REORDER(1)
GPIO_ODD_IRQHandler
B GPIO_ODD_IRQHandler
PUBWEAK TIMER1_IRQHandler
SECTION .text:CODE:REORDER(1)
TIMER1_IRQHandler
B TIMER1_IRQHandler
PUBWEAK TIMER2_IRQHandler
SECTION .text:CODE:REORDER(1)
TIMER2_IRQHandler
B TIMER2_IRQHandler
PUBWEAK USART1_RX_IRQHandler
SECTION .text:CODE:REORDER(1)
USART1_RX_IRQHandler
B USART1_RX_IRQHandler
PUBWEAK USART1_TX_IRQHandler
SECTION .text:CODE:REORDER(1)
USART1_TX_IRQHandler
B USART1_TX_IRQHandler
PUBWEAK USART2_RX_IRQHandler
SECTION .text:CODE:REORDER(1)
USART2_RX_IRQHandler
B USART2_RX_IRQHandler
PUBWEAK USART2_TX_IRQHandler
SECTION .text:CODE:REORDER(1)
USART2_TX_IRQHandler
B USART2_TX_IRQHandler
PUBWEAK UART0_RX_IRQHandler
SECTION .text:CODE:REORDER(1)
UART0_RX_IRQHandler
B UART0_RX_IRQHandler
PUBWEAK UART0_TX_IRQHandler
SECTION .text:CODE:REORDER(1)
UART0_TX_IRQHandler
B UART0_TX_IRQHandler
PUBWEAK LEUART0_IRQHandler
SECTION .text:CODE:REORDER(1)
LEUART0_IRQHandler
B LEUART0_IRQHandler
PUBWEAK LEUART1_IRQHandler
SECTION .text:CODE:REORDER(1)
LEUART1_IRQHandler
B LEUART1_IRQHandler
PUBWEAK LETIMER0_IRQHandler
SECTION .text:CODE:REORDER(1)
LETIMER0_IRQHandler
B LETIMER0_IRQHandler
PUBWEAK PCNT0_IRQHandler
SECTION .text:CODE:REORDER(1)
PCNT0_IRQHandler
B PCNT0_IRQHandler
PUBWEAK PCNT1_IRQHandler
SECTION .text:CODE:REORDER(1)
PCNT1_IRQHandler
B PCNT1_IRQHandler
PUBWEAK PCNT2_IRQHandler
SECTION .text:CODE:REORDER(1)
PCNT2_IRQHandler
B PCNT2_IRQHandler
PUBWEAK xPortSysTickHandler
SECTION .text:CODE:REORDER(1)
xPortSysTickHandler
B xPortSysTickHandler
PUBWEAK CMU_IRQHandler
SECTION .text:CODE:REORDER(1)
CMU_IRQHandler
B CMU_IRQHandler
PUBWEAK VCMP_IRQHandler
SECTION .text:CODE:REORDER(1)
VCMP_IRQHandler
B VCMP_IRQHandler
PUBWEAK LCD_IRQHandler
SECTION .text:CODE:REORDER(1)
LCD_IRQHandler
B LCD_IRQHandler
PUBWEAK MSC_IRQHandler
SECTION .text:CODE:REORDER(1)
MSC_IRQHandler
B MSC_IRQHandler
PUBWEAK AES_IRQHandler
SECTION .text:CODE:REORDER(1)
AES_IRQHandler
B AES_IRQHandler
END
/settings/RTOSDemo.dbgdt
0,0 → 1,79
<?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>
<PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><MixedMode>1</MixedMode><CodeCovShow>0</CodeCovShow><InstrProfShow>0</InstrProfShow></Disassembly>
<Watch><Format><struct_types/><watch_formats/></Format><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><Column0>100</Column0><Column1>100</Column1><Column2>100</Column2><Column3>100</Column3></Watch></Static>
<Windows>
<Wnd2>
<Tabs>
<Tab>
<Identity>TabID-7696-3812</Identity>
<TabName>Debug Log</TabName>
<Factory>Debug-Log</Factory>
<Session/>
</Tab>
<Tab>
<Identity>TabID-7174-3822</Identity>
<TabName>Build</TabName>
<Factory>Build</Factory>
<Session/>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd2><Wnd3>
<Tabs>
<Tab>
<Identity>TabID-18445-3816</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Energy Micro Code</ExpandedNode><ExpandedNode>RTOSDemo/Energy Micro Code/bsp</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS source</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd3></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>60</YPos><SelStart>4045</SelStart><SelEnd>4045</SelEnd></Tab><ActiveTab>0</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\portable\MemMang\heap_2.c</Filename><XPos>0</XPos><YPos>251</YPos><SelStart>10647</SelStart><SelEnd>10666</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\..\..\devtools\IAR Systems\Embedded Workbench 5.4\arm\INC\DLib_Product_string.h</Filename><XPos>0</XPos><YPos>36</YPos><SelStart>1408</SelStart><SelEnd>1408</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\GenQTest.c</Filename><XPos>0</XPos><YPos>321</YPos><SelStart>18528</SelStart><SelEnd>18528</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\ParTest.c</Filename><XPos>0</XPos><YPos>68</YPos><SelStart>4153</SelStart><SelEnd>4153</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\bsp\dvk_boardcontrol.c</Filename><XPos>0</XPos><YPos>163</YPos><SelStart>5883</SelStart><SelEnd>5883</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-00abb208><key>iaridepm.enu1</key></Toolbar-00abb208><Toolbar-02dfc390><key>debuggergui.enu1</key></Toolbar-02dfc390></Sizes></Row0></Top><Left><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>740</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>755601</sizeVertCY></Rect></Wnd3></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd2><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></Wnd2></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Project>
 
 
/settings/RTOSDemo.dni
0,0 → 1,90
[DebugChecksum]
Checksum=-346520476
[DisAssemblyWindow]
NumStates=_ 1
State 1=_ 1
[InstructionProfiling]
Enabled=_ 0
[CodeCoverage]
Enabled=_ 0
[Profiling]
Enabled=0
[StackPlugin]
Enabled=0
OverflowWarningsEnabled=1
WarningThreshold=90
SpWarningsEnabled=0
WarnHow=0
UseTrigger=1
TriggerName=main
LimitSize=0
ByteLimit=50
[Interrupts]
Enabled=1
[MemoryMap]
Enabled=0
Base=0
UseAuto=0
TypeViolation=1
UnspecRange=1
ActionState=1
[TraceHelper]
Enabled=0
ShowSource=1
[JLinkDriver]
SWOInfo_CpuClock=0x044AA200
SWOInfo_SWOClockAutoDetect=0
SWOInfo_JtagSpeed=0x001E8480
SWOInfo_SWOPrescaler=0x00000024
SWOInfo_SWOClockWanted=0x001E8480
SWOInfo_HWTraceEnabled=1
SWOInfo_TimestampsEnabled=1
SWOInfo_TimestampsPrescalerIndex=0x00000000
SWOInfo_TimestampsPrescalerData=0x00000000
SWOInfo_PCSamplingEnabled=0
SWOInfo_PCSamplingCYCTAP=0x00000001
SWOInfo_PCSamplingPOSTCNT=0x0000000F
SWOInfo_DataLogMode=0x00000000
SWOInfo_CPIEnabled=0
SWOInfo_EXCEnabled=0
SWOInfo_SLEEPEnabled=0
SWOInfo_LSUEnabled=0
SWOInfo_FOLDEnabled=0
SWOInfo_EXCTRCEnabled=1
SWOInfo_ITMPortsEnabled=0x00000000
SWOInfo_ITMPortsTermIO=0x00000000
SWOInfo_ITMPortsLogFile=0x00000000
SWOInfo_ITMLogFile=$PROJ_DIR$\ITM.log
[Log file]
LoggingEnabled=_ 0
LogFile=_ ""
Category=_ 0
[TermIOLog]
LoggingEnabled=_ 0
LogFile=_ ""
[DataLog]
LogEnabled=0
SumEnabled=0
ShowTimeLog=1
ShowTimeSum=1
[InterruptLog]
LogEnabled=1
SumEnabled=1
GraphEnabled=0
ShowTimeLog=1
ShowTimeSum=1
SumSortOrder=0
[TraceHelperExtra]
Enabled=0
ShowSource=1
[DriverProfiling]
Enabled=0
Source=4
Graph=0
[Disassemble mode]
mode=1
[Breakpoints]
Count=0
[Aliases]
Count=0
SuppressDialog=0
/settings/RTOSDemo_Debug.jlink
0,0 → 1,14
[FLASH]
SkipProgOnCRCMatch = 1
VerifyDownload = 1
AllowCaching = 1
EnableFlashDL = 2
Override = 0
Device="ADUC7020X62"
[BREAKPOINTS]
ShowInfoWin = 1
EnableFlashBP = 2
BPDuringExecution = 0
[CPU]
OverrideMemMap = 0
AllowSimulation = 1
/settings/RTOSDemo.wsdt
0,0 → 1,77
<?xml version="1.0" encoding="iso-8859-1"?>
 
<Workspace>
<ConfigDictionary>
<CurrentConfigs><Project>RTOSDemo/Debug</Project></CurrentConfigs></ConfigDictionary>
<Desktop>
<Static>
<Workspace>
<ColumnWidths>
<Column0>228</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>
<TerminalIO/>
<Debug-Log>
<ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1622</ColumnWidth1></Debug-Log>
</Static>
<Windows>
<Wnd0>
<Tabs>
<Tab>
<Identity>TabID-28378-3630</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo</ExpandedNode><ExpandedNode>RTOSDemo/Output</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd0><Wnd1>
<Tabs>
<Tab>
<Identity>TabID-11879-3734</Identity>
<TabName>Build</TabName>
<Factory>Build</Factory>
<Session/>
</Tab>
<Tab>
<Identity>TabID-7638-1339</Identity>
<TabName>Debug Log</TabName>
<Factory>Debug-Log</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></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-00abb208><key>iaridepm.enu1</key></Toolbar-00abb208></Sizes></Row0><Row1><Sizes/></Row1></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>740</Bottom><Right>302</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>180952</sizeVertCX><sizeVertCY>755601</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><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></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Workspace>
 
 
/settings/RTOSDemo.cspy.bat
0,0 → 1,33
@REM This bat file has been generated by the IAR Embeddded Workbench
@REM C-SPY interactive debugger,as an aid to preparing a command
@REM line for running the cspybat command line utility with the
@REM appropriate settings.
@REM
@REM After making some adjustments to this file, you can launch cspybat
@REM by typing the name of this file followed by the name of the debug
@REM file (usually an ubrof file). Note that this file is generated
@REM every time a new debug session is initialized, so you may want to
@REM move or rename the file before making changes.
@REM
@REM Note: some command line arguments cannot be properly generated
@REM by this process. Specifically, the plugin which is responsible
@REM for the Terminal I/O window (and other C runtime functionality)
@REM comes in a special version for cspybat, and the name of that
@REM plugin dll is not known when generating this file. It resides in
@REM the $TOOLKIT_DIR$\bin folder and is usually called XXXbat.dll or
@REM XXXlibsupportbat.dll, where XXX is the name of the corresponding
@REM tool chain. Replace the '<libsupport_plugin>' parameter
@REM below with the appropriate file name. Other plugins loaded by
@REM C-SPY are usually not needed by, or will not work in, cspybat
@REM but they are listed at the end of this file for reference.
 
 
"C:\devtools\IAR Systems\Embedded Workbench 5.4\common\bin\cspybat" "C:\devtools\IAR Systems\Embedded Workbench 5.4\arm\bin\armproc.dll" "C:\devtools\IAR Systems\Embedded Workbench 5.4\arm\bin\armjlink.dll" %1 --plugin "C:\devtools\IAR Systems\Embedded Workbench 5.4\arm\bin\<libsupport_plugin>" --flash_loader "C:\devtools\IAR Systems\Embedded Workbench 5.4\arm\config\flashloader\EnergyMicro\FlashEFM32.board" --backend -B "--endian=little" "--cpu=Cortex-M3" "--fpu=None" "-p" "C:\devtools\IAR Systems\Embedded Workbench 5.4\arm\CONFIG\debugger\EnergyMicro\EFM32G890F128.ddf" "--semihosting" "--device=EFM32G890F128" "-d" "jlink" "--drv_communication=USB0" "--jlink_speed=auto" "--jlink_initial_speed=32" "--jlink_reset_strategy=0,0" "--jlink_interface=SWD"
 
 
@REM Loaded plugins:
@REM C:\devtools\IAR Systems\Embedded Workbench 5.4\arm\bin\armlibsupport.dll
@REM C:\devtools\IAR Systems\Embedded Workbench 5.4\common\plugins\CodeCoverage\CodeCoverage.dll
@REM C:\devtools\IAR Systems\Embedded Workbench 5.4\common\plugins\Profiling\Profiling.dll
@REM C:\devtools\IAR Systems\Embedded Workbench 5.4\common\plugins\stack\stack.dll
@REM C:\devtools\IAR Systems\Embedded Workbench 5.4\common\plugins\SymList\SymList.dll
/lcd/lcdcontroller.c
0,0 → 1,542
/**************************************************************************//**
* @file
* @brief LCD Controller driver
* @author Energy Micro AS
* @version 1.0.1
******************************************************************************
* @section License
* <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>
******************************************************************************
*
* This source code is the property of Energy Micro AS. The source and compiled
* code may only be used on Energy Micro "EFM32" microcontrollers.
*
* This copyright notice may not be removed from the source code nor changed.
*
* DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no
* obligation to support this Software. Energy Micro AS is providing the
* Software "AS IS", with no express or implied warranties of any kind,
* including, but not limited to, any implied warranties of merchantability
* or fitness for any particular purpose or warranties against infringement
* of any proprietary rights of a third party.
*
* Energy Micro AS will not be liable for any consequential, incidental, or
* special damages, or any other relief, or for any claim by any third party,
* arising from your use of this Software.
*
*****************************************************************************/
#include "FreeRTOS.h"
#include "task.h"
 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "efm32.h"
#include "lcdcontroller.h"
#include "lcddisplay.h"
 
/** Counts every n'th frame */
int frameCounter = 0;
 
/**************************************************************************//**
* @brief LCD Interrupt Handler, triggers on frame counter, every n'th frame
*****************************************************************************/
void LCD_IRQHandler(void)
{
LCD_TypeDef *lcd = LCD;
 
/* clear interrupt */
lcd->IFC = 0xFFFFFFFF;
frameCounter++;
}
 
/**************************************************************************//**
* @brief Enables a segment on the LCD display
* @param lcd Pointer to LCD register block
* @param com COM segment number
* @param bitvalue Bit value for segment
*****************************************************************************/
static void LCD_enableSegment(LCD_TypeDef * lcd, int com, int bitvalue)
{
switch (com)
{
case 0:
lcd->SEGD0L |= bitvalue;
break;
case 1:
lcd->SEGD1L |= bitvalue;
break;
case 2:
lcd->SEGD2L |= bitvalue;
break;
case 3:
lcd->SEGD3L |= bitvalue;
break;
case 4:
lcd->SEGD0H |= bitvalue;
break;
case 5:
lcd->SEGD1H |= bitvalue;
break;
case 6:
lcd->SEGD2H |= bitvalue;
break;
case 7:
lcd->SEGD3H |= bitvalue;
break;
}
}
 
/**************************************************************************//**
* @brief Disables a segment on the LCD Display
* @param lcd Pointer to LCD register structure
* @param com COM segment number
* @param bitvalue Bit value for segment
*****************************************************************************/
static void LCD_disableSegment(LCD_TypeDef * lcd, int com, int bitvalue)
{
switch (com)
{
case 0:
lcd->SEGD0L &= ~bitvalue;
break;
case 1:
lcd->SEGD1L &= ~bitvalue;
break;
case 2:
lcd->SEGD2L &= ~bitvalue;
break;
case 3:
lcd->SEGD3L &= ~bitvalue;
break;
case 4:
lcd->SEGD0H &= ~bitvalue;
break;
case 5:
lcd->SEGD1H &= ~bitvalue;
break;
case 6:
lcd->SEGD2H &= ~bitvalue;
break;
case 7:
lcd->SEGD3H &= ~bitvalue;
break;
}
}
 
/**************************************************************************//**
* @brief Write number on numeric part on LCD display
* @param lcd Pointer to LCD control block
* @param value Numeric value to put on display, in range -999 to +9999
*****************************************************************************/
void LCD_Number(LCD_TypeDef *lcd, int value)
{
int num, i, com, bit, digit, div, neg;
uint16_t bitpattern;
 
/* Parameter consistancy check */
if (value >= 9999)
{
value = 9999;
}
if (value <= -1000)
{
value = -999;
}
if (value < 0)
{
value = abs(value);
neg = 1;
}
else
{
neg = 0;
}
/* Extract useful digits */
div = 1;
for (digit = 0; digit < 4; digit++)
{
num = (value / div) % 10;
if ((neg == 1) && (digit == 3)) num = 10;
bitpattern = EM_Numbers[num];
for (i = 0; i < 7; i++)
{
bit = EFMDisplay.Number[digit].bit[i];
com = EFMDisplay.Number[digit].com[i];
if (bitpattern & (1 << i))
{
LCD_enableSegment(lcd, com, 1 << bit);
}
else
{
LCD_disableSegment(lcd, com, 1 << bit);
}
}
div = div * 10;
}
}
 
/**************************************************************************//**
* @brief Turn all segments on numeric display off
* @param lcd Pointer to LCD register structure
*****************************************************************************/
void LCD_NumberOff(LCD_TypeDef *lcd)
{
int digit, i, bit, com;
 
/* Turn off all segments */
for (digit = 0; digit < 4; digit++)
{
for (i = 0; i < 7; i++)
{
bit = EFMDisplay.Number[digit].bit[i];
com = EFMDisplay.Number[digit].com[i];
LCD_disableSegment(lcd, com, 1 << bit);
}
}
return;
}
 
 
/**************************************************************************//**
* @brief Write text on LCD display
* @param lcd Pointer to LCD register structure
* @param string Text string to show on display
*****************************************************************************/
void LCD_Write(LCD_TypeDef *lcd, char *string)
{
int data, length, index;
uint16_t bitfield;
uint32_t value;
uint32_t com, bit;
int i;
 
length = strlen(string);
index = 0;
/* fill out all characters on display */
for (index = 0; index < 7; index++)
{
if (index < length)
{
data = (int) *string;
}
else /* padding with space */
{
data = 0x20; /* SPACE */
}
/* defined letters currently starts at "SPACE" - 0x20; */
data = data - 0x20;
bitfield = EM_alphabet[data];
 
 
for (i = 0; i < 14; i++)
{
bit = EFMDisplay.Text[index].bit[i];
com = EFMDisplay.Text[index].com[i];
value = (1 << bit);
 
if (bitfield & (1 << i))
{
/* Turn on segment */
LCD_enableSegment(lcd, com, value);
}
else
{
/* Turn off segment */
LCD_disableSegment(lcd, com, value);
}
}
string++;
}
while (lcd->SYNCBUSY) ;
}
 
/**************************************************************************//**
* @brief LCD Disable all segments
* @param lcd Pointer to LCD register block
*****************************************************************************/
void LCD_AllOff(LCD_TypeDef *lcd)
{
lcd->SEGD0L = 0x00000000;
lcd->SEGD0H = 0x00000000;
lcd->SEGD1L = 0x00000000;
lcd->SEGD1H = 0x00000000;
lcd->SEGD2L = 0x00000000;
lcd->SEGD2H = 0x00000000;
lcd->SEGD3L = 0x00000000;
lcd->SEGD3H = 0x00000000;
while (lcd->SYNCBUSY) ;
}
 
/**************************************************************************//**
* @brief LCD Enable all segments
* @param lcd Pointer to LCD register block
*****************************************************************************/
void LCD_AllOn(LCD_TypeDef *lcd)
{
lcd->SEGD0L = 0xffffffff;
lcd->SEGD0H = 0xffffffff;
lcd->SEGD1L = 0xffffffff;
lcd->SEGD1H = 0xffffffff;
lcd->SEGD2L = 0xffffffff;
lcd->SEGD2H = 0xffffffff;
lcd->SEGD3L = 0xffffffff;
lcd->SEGD3H = 0xffffffff;
while (lcd->SYNCBUSY) ;
}
 
/**************************************************************************//**
* @brief LCD Light up or shut off Energy Mode indicator
* @param lcd Pointer to LCD register block
* @pararm em Energy Mode numer 0 to 4
* @param on Zero is off, non-zero is on
*****************************************************************************/
void LCD_EnergyMode(LCD_TypeDef *lcd, int em, int on)
{
uint32_t com, bitvalue;
 
com = EFMDisplay.EMode.com[em];
bitvalue = 1 << EFMDisplay.EMode.bit[em];
 
if (on)
{
LCD_enableSegment(lcd, com, bitvalue);
}
else
{
LCD_disableSegment(lcd, com, bitvalue);
}
}
 
/**************************************************************************//**
* @brief LCD Light up or shut off Ring of Indicators
* @param lcd Pointer to LCD register block
* @param anum "Segment number" on "Ring", range 0 - 7
* @param on Zero is off, non-zero is on
*****************************************************************************/
void LCD_ARing(LCD_TypeDef *lcd, int anum, int on)
{
uint32_t com, bitvalue;
 
com = EFMDisplay.ARing.com[anum];
bitvalue = 1 << EFMDisplay.ARing.bit[anum];
 
if (on)
{
LCD_enableSegment(lcd, com, bitvalue);
}
else
{
LCD_disableSegment(lcd, com, bitvalue);
}
}
 
/**************************************************************************//**
* @brief LCD Light up or shut off various symbols on LCD Display
* @param lcd Pointer to LCD register block
* @param s Which symbol to turn on or off
* @param on Zero is off, non-zero is on
*****************************************************************************/
void LCD_Symbol(LCD_TypeDef *lcd, lcdSymbol s, int on)
{
int com, bit;
 
switch (s)
{
case LCD_SYMBOL_GECKO:
com = 3; bit = 8;
break;
case LCD_SYMBOL_ANT:
com = 3; bit = 1;
break;
case LCD_SYMBOL_PAD0:
com = 1; bit = 8;
break;
case LCD_SYMBOL_PAD1:
com = 2; bit = 8;
break;
case LCD_SYMBOL_AM:
com = 4; bit = 0;
break;
case LCD_SYMBOL_PM:
com = 4; bit = 3;
break;
case LCD_SYMBOL_EFM32:
com = 0; bit = 8;
break;
case LCD_SYMBOL_MINUS:
com = 0; bit = 9;
break;
case LCD_SYMBOL_COL3:
com = 0; bit = 16;
break;
case LCD_SYMBOL_COL5:
com = 0; bit = 24;
break;
case LCD_SYMBOL_COL10:
com = 4; bit = 7;
break;
case LCD_SYMBOL_DP2:
com = 4; bit = 2;
break;
case LCD_SYMBOL_DP3:
com = 5; bit = 2;
break;
case LCD_SYMBOL_DP4:
com = 6; bit = 2;
break;
case LCD_SYMBOL_DP5:
com = 7; bit = 2;
break;
case LCD_SYMBOL_DP6:
com = 0; bit = 21;
break;
case LCD_SYMBOL_DP10:
com = 4; bit = 5;
break;
}
if (on)
{
LCD_enableSegment(lcd, com, 1 << bit);
}
else
{
LCD_disableSegment(lcd, com, 1 << bit);
}
}
 
/**************************************************************************//**
* @brief LCD Light up or shut off Battery Indicator
* @param lcd Pointer to LCD register block
* @param batteryLevel Battery Level, 0 to 4 (0 turns all off)
*****************************************************************************/
void LCD_Battery(LCD_TypeDef *lcd, int batteryLevel)
{
uint32_t com, bitvalue;
int i, on;
 
for (i = 0; i < 4; i++)
{
if (i < batteryLevel)
{
on = 1;
}
else
{
on = 0;
}
com = EFMDisplay.Battery.com[i];
bitvalue = 1 << EFMDisplay.Battery.bit[i];
 
if (on)
{
LCD_enableSegment(lcd, com, bitvalue);
}
else
{
LCD_disableSegment(lcd, com, bitvalue);
}
}
}
 
/**************************************************************************//**
* @brief LCD Initialization routine for EFM32 DVK display
* @param lcd Pointer to LCD register block
*****************************************************************************/
void LCD_Init(LCD_TypeDef *lcd)
{
CMU_TypeDef *cmu = CMU;
 
/* Enable LFXO oscillator */
cmu->OSCENCMD |= CMU_OSCENCMD_LFXOEN;
while (!(cmu->STATUS & CMU_STATUS_LFXORDY)) ;
 
/* Enable LCD clock in CMU */
cmu->LFACLKEN0 |= CMU_LFACLKEN0_LCD;
 
/* Select LFXO for LCD */
cmu->LFCLKSEL = CMU_LFCLKSEL_LFA_LFXO | CMU_LFCLKSEL_LFB_LFXO;
 
/* LCD Controller Prescaler (divide by 1) */
/* CLKlcd = 0.25 kHz */
cmu->LFAPRESC0 &= ~_CMU_LFAPRESC0_LCD_MASK;
cmu->LFAPRESC0 |= _CMU_LFAPRESC0_LCD_DIV128 << _CMU_LFAPRESC0_LCD_SHIFT;
 
/* Set up interrupt handler */
lcd->IEN = 0;
while (lcd->SYNCBUSY) ;
 
/* Clear pending interrupts */
lcd->IFC = ~0;
/* Enable interrupt */
NVIC_EnableIRQ(LCD_IRQn);
lcd->IEN = LCD_IEN_FC;
 
/* Frame rate is 32Hz, 0.25Khz LFCLK128, QUADRUPLEX mode, FDIV=0 */
lcd->DISPCTRL = LCD_DISPCTRL_MUX_QUADRUPLEX |
LCD_DISPCTRL_BIAS_ONETHIRD |
LCD_DISPCTRL_WAVE_LOWPOWER |
LCD_DISPCTRL_CONLEV_MAX |
LCD_DISPCTRL_VLCDSEL_VDD |
LCD_DISPCTRL_VBLEV_3V00;
 
/* No voltage boost, framerate 32Hz */
cmu->LCDCTRL = 0;
 
/* Turn all segments off */
LCD_AllOff(lcd);
 
/* Enable all segment registers */
lcd->SEGEN = 0x000003FF;
lcd->CTRL = LCD_CTRL_EN | LCD_CTRL_UDCTRL_FRAMESTART;
while (lcd->SYNCBUSY) ;
 
/* Configure LCD to give a frame counter interrupt every 8th frame. */
lcd->BACTRL = LCD_BACTRL_FCEN | (7 << _LCD_BACTRL_FCTOP_SHIFT) | (0 << _LCD_BACTRL_FCPRESC_SHIFT);
while (lcd->SYNCBUSY) ;
lcd->IFC = LCD_IFC_FC;
lcd->IEN = LCD_IEN_FC;
}
 
 
/**************************************************************************//**
* @brief Disables LCD controller
* @param lcd Pointer to LCD register block
*****************************************************************************/
void LCD_Disable(LCD_TypeDef *lcd)
{
CMU_TypeDef *cmu = CMU;
 
/* Turn off interrupts */
lcd->IEN = 0x00000000;
lcd->IFC = LCD_IFC_FC;
NVIC_DisableIRQ(LCD_IRQn);
/* Disable LCD */
lcd->CTRL = 0;
/* Turn off LCD clock */
cmu->LFACLKEN0 &= ~(CMU_LFACLKEN0_LCD);
/* Turn off voltage boost if enabled */
cmu->LCDCTRL = 0;
}
 
/**************************************************************************//**
* @brief LCD scrolls a text over the display, sort of "polled printf"
* @param lcd Pointer to LCD register block
*****************************************************************************/
void LCD_ScrollText(LCD_TypeDef *lcd, char *scrolltext)
{
int i, len;
char buffer[8];
 
buffer[7] = 0x00;
len = strlen(scrolltext);
if (len < 7) return;
for (i = 0; i < (len - 7); i++)
{
memcpy(buffer, scrolltext + i, 7);
LCD_Write(lcd, buffer);
vTaskDelay(100/portTICK_RATE_MS);
}
}
 
 
/lcd/lcdcontroller.h
0,0 → 1,73
/**************************************************************************//**
* @file
* @brief LCD Controller header file
* @author Energy Micro AS
* @version 1.0.1
******************************************************************************
* @section License
* <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>
******************************************************************************
*
* This source code is the property of Energy Micro AS. The source and compiled
* code may only be used on Energy Micro "EFM32" microcontrollers.
*
* This copyright notice may not be removed from the source code nor changed.
*
* DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no
* obligation to support this Software. Energy Micro AS is providing the
* Software "AS IS", with no express or implied warranties of any kind,
* including, but not limited to, any implied warranties of merchantability
* or fitness for any particular purpose or warranties against infringement
* of any proprietary rights of a third party.
*
* Energy Micro AS will not be liable for any consequential, incidental, or
* special damages, or any other relief, or for any claim by any third party,
* arising from your use of this Software.
*
*****************************************************************************/
 
#ifndef _LCDCONTROLLER_H
#define _LCDCONTROLLER_H
 
#include "efm32.h"
 
/* Range of symbols available on display */
typedef enum
{
LCD_SYMBOL_GECKO,
LCD_SYMBOL_ANT,
LCD_SYMBOL_PAD0,
LCD_SYMBOL_PAD1,
LCD_SYMBOL_AM,
LCD_SYMBOL_PM,
LCD_SYMBOL_EFM32,
LCD_SYMBOL_MINUS,
LCD_SYMBOL_COL3,
LCD_SYMBOL_COL5,
LCD_SYMBOL_COL10,
LCD_SYMBOL_DP2,
LCD_SYMBOL_DP3,
LCD_SYMBOL_DP4,
LCD_SYMBOL_DP5,
LCD_SYMBOL_DP6,
LCD_SYMBOL_DP10,
} lcdSymbol;
 
/* Regular functions */
void LCD_Init(LCD_TypeDef *lcd);
void LCD_IRQHandler(void);
void LCD_Disable(LCD_TypeDef *lcd);
 
void LCD_AllOff(LCD_TypeDef *lcd);
void LCD_AllOn(LCD_TypeDef *lcd);
 
void LCD_ARing(LCD_TypeDef *lcd, int anum, int on);
void LCD_Battery(LCD_TypeDef *lcd, int batteryLevel);
void LCD_EnergyMode(LCD_TypeDef *lcd, int em, int on);
void LCD_Number(LCD_TypeDef *lcd, int value);
void LCD_NumberOff(LCD_TypeDef *lcd);
void LCD_Symbol(LCD_TypeDef *lcd, lcdSymbol s, int on);
void LCD_Write(LCD_TypeDef *lcd, char *string);
void LCD_ScrollText(LCD_TypeDef *lcd, char *scrolltext);
 
#endif
/lcd/lcddisplay.h
0,0 → 1,391
/**************************************************************************//**
* @file
* @brief LCD Controller font and display layout for EFM32 development MCU
* module
* @author Energy Micro AS
* @version 1.0.1
******************************************************************************
* @section License
* <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>
******************************************************************************
*
* This source code is the property of Energy Micro AS. The source and compiled
* code may only be used on Energy Micro "EFM32" microcontrollers.
*
* This copyright notice may not be removed from the source code nor changed.
*
* DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no
* obligation to support this Software. Energy Micro AS is providing the
* Software "AS IS", with no express or implied warranties of any kind,
* including, but not limited to, any implied warranties of merchantability
* or fitness for any particular purpose or warranties against infringement
* of any proprietary rights of a third party.
*
* Energy Micro AS will not be liable for any consequential, incidental, or
* special damages, or any other relief, or for any claim by any third party,
* arising from your use of this Software.
*
****************************************************************************/
 
#ifndef _LCDDISPLAY_H
#define _LCDDISPLAY_H
 
#include <stdint.h>
/**************************************************************************//**
* @brief
* Defines each text symbol's segment in terms of COM and BIT numbers,
* in a way that we can enumerate each bit for each text segment in the
* following bit pattern:
* @verbatim
* -------0------
*
* | \7 |8 /9 |
* |5 \ | / |1
*
* --6--- ---10--
*
* | / | \11 |
* |4 /13 |12 \ |2
*
* -------3------
* @endverbatim
* E.g.: First text character bit pattern #3 (above) is
* Segment 1D for Display
* Location COM 3, BIT 0
*****************************************************************************/
typedef struct
{
uint32_t com[14]; /**< LCD COM line (for multiplexing) */
uint32_t bit[14]; /**< LCD bit number */
} CHAR_TypeDef;
 
 
/**************************************************************************//**
* @brief Defines segment COM and BIT fields numeric display
*****************************************************************************/
typedef struct
{
uint32_t com[7];
uint32_t bit[7];
} NUMBER_TypeDef;
 
/**************************************************************************//**
* @brief Defines segment COM and BIT fields for Energy Modes on display
*****************************************************************************/
typedef struct
{
uint32_t com[5]; /**< LCD COM line (for multiplexing) */
uint32_t bit[5]; /**< LCD bit number */
} EM_TypeDef;
 
/**************************************************************************//**
* @brief Defines segment COM and BIT fields for A-wheel (suited for Anim)
*****************************************************************************/
typedef struct
{
uint32_t com[8]; /**< LCD COM line (for multiplexing) */
uint32_t bit[8]; /**< LCD bit number */
} ARING_TypeDef;
 
/**************************************************************************//**
* @brief Defines segment COM and BIT fields for A-wheel (suited for Anim)
*****************************************************************************/
typedef struct
{
uint32_t com[4]; /**< LCD COM line (for multiplexing) */
uint32_t bit[4]; /**< LCD bit number */
} BATTERY_TypeDef;
 
/**************************************************************************//**
* @brief Defines prototype for all segments in display
*****************************************************************************/
typedef struct
{
CHAR_TypeDef Text[7];
NUMBER_TypeDef Number[4];
EM_TypeDef EMode;
ARING_TypeDef ARing;
BATTERY_TypeDef Battery;
} MCU_DISPLAY;
 
/**************************************************************************//**
* @brief Working instance of LCD display
*****************************************************************************/
MCU_DISPLAY EFMDisplay = {
.Text = {
{ /* 1 */
.com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
.bit[0] = 10, .bit[1] = 12, .bit[2] = 12, .bit[3] = 10,
 
.com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
.bit[4] = 9, .bit[5] = 9, .bit[6] = 9, .bit[7] = 10,
 
.com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
.bit[8] = 11, .bit[9] = 11, .bit[10] = 12, .bit[11] = 11,
 
.com[12] = 1, .com[13] = 1,
.bit[12] = 11, .bit[13] = 10
},
{ /* 2 */
.com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
.bit[0] = 14, .bit[1] = 16, .bit[2] = 16, .bit[3] = 14,
 
.com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
.bit[4] = 13, .bit[5] = 13, .bit[6] = 13, .bit[7] = 14,
 
.com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
.bit[8] = 15, .bit[9] = 15, .bit[10] = 16, .bit[11] = 15,
 
.com[12] = 1, .com[13] = 1,
.bit[12] = 15, .bit[13] = 14
},
{ /* 3 */
.com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
.bit[0] = 18, .bit[1] = 20, .bit[2] = 20, .bit[3] = 18,
 
.com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
.bit[4] = 17, .bit[5] = 17, .bit[6] = 17, .bit[7] = 18,
 
.com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
.bit[8] = 19, .bit[9] = 19, .bit[10] = 20, .bit[11] = 19,
 
.com[12] = 1, .com[13] = 1,
.bit[12] = 19, .bit[13] = 18
},
{ /* 4 */
.com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
.bit[0] = 22, .bit[1] = 24, .bit[2] = 24, .bit[3] = 22,
 
.com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
.bit[4] = 21, .bit[5] = 21, .bit[6] = 21, .bit[7] = 22,
 
.com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
.bit[8] = 23, .bit[9] = 23, .bit[10] = 24, .bit[11] = 23,
 
.com[12] = 1, .com[13] = 1,
.bit[12] = 23, .bit[13] = 22
},
{ /* 5 */
.com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
.bit[0] = 25, .bit[1] = 6, .bit[2] = 6, .bit[3] = 25,
 
.com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
.bit[4] = 7, .bit[5] = 7, .bit[6] = 7, .bit[7] = 25,
 
.com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
.bit[8] = 26, .bit[9] = 26, .bit[10] = 6, .bit[11] = 26,
 
.com[12] = 1, .com[13] = 1,
.bit[12] = 26, .bit[13] = 25
},
{ /* 6 */
.com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
.bit[0] = 27, .bit[1] = 04, .bit[2] = 04, .bit[3] = 27,
 
.com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
.bit[4] = 5, .bit[5] = 5, .bit[6] = 5, .bit[7] = 27,
 
.com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
.bit[8] = 28, .bit[9] = 28, .bit[10] = 4, .bit[11] = 28,
 
.com[12] = 1, .com[13] = 1,
.bit[12] = 28, .bit[13] = 27
},
{ /* 7 */
.com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
.bit[0] = 29, .bit[1] = 2, .bit[2] = 2, .bit[3] = 29,
 
.com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
.bit[4] = 03, .bit[5] = 3, .bit[6] = 3, .bit[7] = 29,
 
.com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
.bit[8] = 30, .bit[9] = 30, .bit[10] = 2, .bit[11] = 30,
 
.com[12] = 1, .com[13] = 1,
.bit[12] = 30, .bit[13] = 29
}
},
.Number = {
{
.com[0] = 3, .com[1] = 2, .com[2] = 1, .com[3] = 0,
.bit[0] = 31, .bit[1] = 31, .bit[2] = 31, .bit[3] = 31,
 
.com[4] = 5, .com[5] = 7, .com[6] = 6,
.bit[4] = 0, .bit[5] = 0, .bit[6] = 0,
},
{
.com[0] = 7, .com[1] = 6, .com[2] = 5, .com[3] = 4,
.bit[0] = 1, .bit[1] = 1, .bit[2] = 1, .bit[3] = 1,
 
.com[4] = 5, .com[5] = 7, .com[6] = 6,
.bit[4] = 3, .bit[5] = 3, .bit[6] = 3,
},
{
.com[0] = 7, .com[1] = 6, .com[2] = 5, .com[3] = 4,
.bit[0] = 4, .bit[1] = 4, .bit[2] = 4, .bit[3] = 4,
 
.com[4] = 5, .com[5] = 7, .com[6] = 6,
.bit[4] = 5, .bit[5] = 5, .bit[6] = 5,
},
{
.com[0] = 7, .com[1] = 6, .com[2] = 5, .com[3] = 4,
.bit[0] = 6, .bit[1] = 6, .bit[2] = 6, .bit[3] = 6,
 
.com[4] = 5, .com[5] = 7, .com[6] = 6,
.bit[4] = 7, .bit[5] = 7, .bit[6] = 7,
},
},
.EMode = {
.com[0] = 1, .bit[0] = 1,
.com[1] = 2, .bit[1] = 1,
.com[2] = 1, .bit[2] = 0,
.com[3] = 2, .bit[3] = 0,
.com[4] = 3, .bit[4] = 0,
},
.ARing = {
.com[0] = 0, .bit[0] = 0,
.com[1] = 0, .bit[1] = 1,
.com[2] = 0, .bit[2] = 2,
.com[3] = 0, .bit[3] = 3,
 
.com[4] = 0, .bit[4] = 4,
.com[5] = 0, .bit[5] = 5,
.com[6] = 0, .bit[6] = 6,
.com[7] = 0, .bit[7] = 7,
},
.Battery = {
.com[0] = 0, .bit[0] = 12,
.com[1] = 0, .bit[1] = 17,
.com[2] = 0, .bit[2] = 20,
.com[3] = 0, .bit[3] = 13,
}
};
 
/**************************************************************************//**
* @brief
* Defines higlighted segments for the alphabet, starting from "blank" (SPACE)
* Uses bit pattern as defined for text segments above.
* E.g. a capital O, would have bits 0 1 2 3 4 5 => 0x003f defined
*****************************************************************************/
uint16_t EM_alphabet[] = {
0x0000, /* space */
0x1100, /* ! */
0x0280, /* " */
0x0000, /* # */
0x0000, /* $ */
0x0000, /* % */
0x0000, /* & */
 
0x0039, /* ( */
0x000f, /* ) */
0x0000, /* * */
0x1540, /* + */
0x0000, /* , */
0x0440, /* - */
0x0000, /* . */
0x2200, /* / */
 
0x003f, /* 0 */
0x0006, /* 1 */
0x045b, /* 2 */
0x044f, /* 3 */
0x0466, /* 4 */
0x046d, /* 5 */
0x047d, /* 6 */
0x0007, /* 7 */
0x047f, /* 8 */
0x046f, /* 9 */
 
0x0000, /* : */
0x0000, /* ; */
0x0a00, /* < */
0x0000, /* = */
0x2080, /* > */
0x0000, /* ? */
0xffff, /* @ */
 
0x0477, /* A */
0x0a79, /* B */
0x0039, /* C */
0x20b0, /* D */
0x0079, /* E */
0x0071, /* F */
0x047d, /* G */
0x0476, /* H */
0x0006, /* I */
0x000e, /* J */
0x0a70, /* K */
0x0038, /* L */
0x02b6, /* M */
0x08b6, /* N */
0x003f, /* O */
0x0473, /* P */
0x083f, /* Q */
0x0c73, /* R */
0x046d, /* S */
0x1101, /* T */
0x003e, /* U */
0x2230, /* V */
0x2836, /* W */
0x2a80, /* X */
0x046e, /* Y */
0x2209, /* Z */
 
0x0039, /* [ */
0x0880, /* backslash */
0x000f, /* ] */
0x0001, /* ^ */
0x0008, /* _ */
0x0100, /* ` */
 
0x1058, /* a */
0x047c, /* b */
0x0058, /* c */
0x045e, /* d */
0x2058, /* e */
0x0471, /* f */
0x0c0c, /* g */
0x0474, /* h */
0x0004, /* i */
0x000e, /* j */
0x0c70, /* k */
0x0038, /* l */
0x1454, /* m */
0x0454, /* n */
0x045c, /* o */
0x0473, /* p */
0x0467, /* q */
0x0450, /* r */
0x0c08, /* s */
0x0078, /* t */
0x001c, /* u */
0x2010, /* v */
0x2814, /* w */
0x2a80, /* x */
0x080c, /* y */
0x2048, /* z */
 
0x0000,
};
 
/**************************************************************************//**
* @brief
* Defines higlighted segments for the numeric display
*****************************************************************************/
uint16_t EM_Numbers[] =
{
0x003f, /* 0 */
0x0006, /* 1 */
0x005b, /* 2 */
0x004f, /* 3 */
0x0066, /* 4 */
0x006d, /* 5 */
0x007d, /* 6 */
0x0007, /* 7 */
0x007f, /* 8 */
0x006f, /* 9 */
0x0040, /* - */
};
 
#endif
 
/lcdtest.c
0,0 → 1,125
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). 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 exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
/* Kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
 
/* Demo includes. */
#include "lcdtest.h"
 
#define lcdSHORT_DELAY ( 60 / portTICK_RATE_MS )
#define lcdQUARTER_SECOND ( 250 / portTICK_RATE_MS )
#define lcdONE_SECOND ( 1000 / portTICK_RATE_MS )
 
void vLCDTask( void *pvParameters )
{
long x;
LCD_TypeDef *xLCD = LCD;
char *pcScrollText = "FreeRTOS Energy Micro ";
 
/* Loop through various different displays. */
for( ;; )
{
/* Start by scrolling some text. */
LCD_ScrollText( xLCD, pcScrollText );
LCD_AllOff( xLCD );
 
/* Count down from 100 on the number section of the LCD display. */
for( x = 100; x > 0; x--)
{
LCD_Number( xLCD, x );
vTaskDelay( 10 );
}
LCD_NumberOff( xLCD );
 
/* Turn on gecko and EFM32 symbol. */
LCD_Symbol( xLCD, LCD_SYMBOL_GECKO, 1 );
LCD_Symbol( xLCD, LCD_SYMBOL_EFM32, 1 );
LCD_Write( xLCD, " Gecko " );
vTaskDelay( lcdONE_SECOND );
 
LCD_AllOn( xLCD);
vTaskDelay( lcdONE_SECOND );
 
LCD_AllOff( xLCD);
LCD_Write( xLCD, "OOOOOOO" );
vTaskDelay( lcdSHORT_DELAY );
LCD_Write( xLCD, "XXXXXXX" );
vTaskDelay( lcdSHORT_DELAY );
LCD_Write( xLCD, "+++++++" );
vTaskDelay( lcdSHORT_DELAY );
LCD_Write( xLCD, "@@@@@@@" );
vTaskDelay( lcdSHORT_DELAY );
LCD_Write( xLCD, "ENERGY " );
vTaskDelay( lcdQUARTER_SECOND );
LCD_Write( xLCD, "@@ERGY " );
vTaskDelay( lcdSHORT_DELAY );
LCD_Write( xLCD, " @@RGY " );
vTaskDelay( lcdSHORT_DELAY );
LCD_Write( xLCD, " M@@GY " );
vTaskDelay( lcdSHORT_DELAY );
LCD_Write( xLCD, " MI@@Y " );
vTaskDelay( lcdSHORT_DELAY );
LCD_Write( xLCD, " MIC@@ " );
vTaskDelay( lcdSHORT_DELAY );
LCD_Write( xLCD, " MICR@@" );
vTaskDelay( lcdSHORT_DELAY );
LCD_Write( xLCD, " MICRO@" );
vTaskDelay( lcdSHORT_DELAY );
LCD_Write( xLCD, " MICRO " );
vTaskDelay( lcdQUARTER_SECOND );
LCD_Write( xLCD, "-EFM32-" );
vTaskDelay( lcdQUARTER_SECOND );
}
}
/ParTest.c
0,0 → 1,109
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). 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 exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
 
/* Demo app includes. */
#include "partest.h"
 
/* Library includes. */
#include "dvk.h"
 
void vParTestInitialise( void )
{
DVK_init();
DVK_setLEDs( 0 );
}
/*-----------------------------------------------------------*/
 
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
unsigned long ulLEDs;
 
/* Suspend all other tasks, in order to make sure no other tasks excecutes
this code at the same time. */
vTaskSuspendAll();
{
ulLEDs = DVK_getLEDs();
if( xValue == pdTRUE )
{
/* Turn the LED on if xValue is true. */
ulLEDs = ulLEDs | ( 1 << uxLED );
}
else
{
/* Turn the LED off if xValue is not true. */
ulLEDs &= ~( 1 << uxLED );
}
DVK_setLEDs( ulLEDs );
}
xTaskResumeAll();
}
/*-----------------------------------------------------------*/
 
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
unsigned long ulLEDs;
 
vTaskSuspendAll();
{
ulLEDs = DVK_getLEDs();
ulLEDs = ulLEDs ^ ( 1 << uxLED );
DVK_setLEDs( ulLEDs );
}
xTaskResumeAll();
}
/bsp/dvk_spi.c
0,0 → 1,229
/**************************************************************************//**
* @file
* @brief SPI implementation of Board Control interface
* This implementation use the USART2 SPI interface to control board
* control registers. It works
* @author Energy Micro AS
* @version 1.0.1
******************************************************************************
* @section License
* <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>
******************************************************************************
*
* This source code is the property of Energy Micro AS. The source and compiled
* code may only be used on Energy Micro "EFM32" microcontrollers.
*
* This copyright notice may not be removed from the source code nor changed.
*
* DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no
* obligation to support this Software. Energy Micro AS is providing the
* Software "AS IS", with no express or implied warranties of any kind,
* including, but not limited to, any implied warranties of merchantability
* or fitness for any particular purpose or warranties against infringement
* of any proprietary rights of a third party.
*
* Energy Micro AS will not be liable for any consequential, incidental, or
* special damages, or any other relief, or for any claim by any third party,
* arising from your use of this Software.
*
*****************************************************************************/
 
#include "efm32.h"
#include "dvk.h"
#include "dvk_bcregisters.h"
 
#define clear_bit(reg, bit) (reg &= ~(1 << bit))
 
static volatile uint16_t *lastAddr = 0;
 
/**************************************************************************//**
* @brief Initializes USART2 SPI interface for access to FPGA registers
* for board control
*****************************************************************************/
static void spiInit(void)
{
USART_TypeDef *usart = USART2;
GPIO_TypeDef *gpio = GPIO;
uint32_t clk, spidiv;
const uint32_t baudrate = 7000000;
const uint32_t div = (2 * baudrate / 256);
 
/* Configure SPI bus connect pins */
gpio->P[2].MODEH &= ~(_GPIO_P_MODEH_MODE13_MASK);
gpio->P[2].MODEH |= (GPIO_P_MODEH_MODE13_PUSHPULL);
gpio->P[2].DOUT &= ~(1UL << 13);
 
/* Configure SPI pins */
gpio->P[2].MODEL &= ~(_GPIO_P_MODEL_MODE2_MASK |
_GPIO_P_MODEL_MODE3_MASK |
_GPIO_P_MODEL_MODE4_MASK |
_GPIO_P_MODEL_MODE5_MASK);
gpio->P[2].MODEL |= (GPIO_P_MODEL_MODE2_PUSHPULL |
GPIO_P_MODEL_MODE3_PUSHPULL |
GPIO_P_MODEL_MODE4_PUSHPULL |
GPIO_P_MODEL_MODE5_PUSHPULL);
gpio->P[2].DOUT |= (1UL << 5);
 
/* Configure USART2 as SPI master with manual CS */
/* Get peripheral clock - ensure updated SystemCoreClock */
SystemCoreClockUpdate();
clk = (SystemCoreClock >> ((CMU->HFPERCLKDIV & _CMU_HFPERCLKDIV_HFPERCLKDIV_MASK) >>
_CMU_HFPERCLKDIV_HFPERCLKDIV_SHIFT));
/* Drive spi at max 7Mhz or half clockrate if core freq < 14Mhz */
if (clk < 14000000)
{
spidiv = 0;
}
else
{
spidiv = (clk) / (div) - 256;
}
 
/* Never allow higher frequency than specified, round up 1/4 div */
if (spidiv & 0x3f) spidiv += 0x40;
 
usart->CLKDIV = spidiv;
usart->CTRL = USART_CTRL_SYNC;
usart->CMD = USART_CMD_CLEARRX | USART_CMD_CLEARTX;
usart->ROUTE = USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_CLKPEN;
usart->CMD = USART_CMD_MASTEREN | USART_CMD_TXEN | USART_CMD_RXEN;
}
 
/**************************************************************************//**
* @brief Disables GPIO pins and USART2 from FPGA register access
*****************************************************************************/
static void spiDisable(void)
{
USART_TypeDef *usart = USART2;
GPIO_TypeDef *gpio = GPIO;
 
/* Disable USART2 */
usart->CTRL = _USART_CTRL_RESETVALUE;
usart->ROUTE = _USART_ROUTE_RESETVALUE;
usart->CMD = USART_CMD_MASTERDIS | USART_CMD_TXDIS | USART_CMD_RXDIS;
 
/* Disable SPI pins */
gpio->P[2].MODEH &= ~(_GPIO_P_MODEH_MODE13_MASK);
gpio->P[2].MODEL &= ~(_GPIO_P_MODEL_MODE2_MASK |
_GPIO_P_MODEL_MODE3_MASK |
_GPIO_P_MODEL_MODE4_MASK |
_GPIO_P_MODEL_MODE5_MASK);
}
 
/**************************************************************************//**
* @brief Performs USART2 SPI Transfer
*****************************************************************************/
static uint16_t spiAccess(uint8_t spiadr, uint8_t rw, uint16_t spidata)
{
USART_TypeDef *usart = USART2;
GPIO_TypeDef *gpio = GPIO;
uint16_t tmp;
 
clear_bit(gpio->P[2].DOUT, 5);
 
/* SPI address */
usart->TXDATA = (spiadr & 0x3) | rw << 3;
while (!(usart->STATUS & USART_STATUS_TXC)) ;
tmp = (usart->RXDATA) << 0;
 
/* SPI data LSB */
usart->TXDATA = spidata & 0xFF;
while (!(usart->STATUS & USART_STATUS_TXC)) ;
tmp = (usart->RXDATA);
 
/* SPI data MSB */
usart->TXDATA = spidata >> 8;
while (!(usart->STATUS & USART_STATUS_TXC)) ;
tmp |= (usart->RXDATA) << 8;
 
gpio->P[2].DOUT |= (1 << 5);
 
return tmp;
}
 
/**************************************************************************//**
* @brief Performs USART2 SPI write to FPGA register
* @param spiadr Address of register
* @param spidata Data to write
*****************************************************************************/
static void spiWrite(uint8_t spiadr, uint16_t spidata)
{
spiAccess(spiadr, 0, spidata);
}
 
/**************************************************************************//**
* @brief Performs USART2 SPI read from FPGA register
* @param spiadr Address of register
* @param spidata Dummy data
*****************************************************************************/
static uint16_t spiRead(uint8_t spiadr, uint16_t spidata)
{
return spiAccess(spiadr, 1, spidata);
}
 
/**************************************************************************//**
* @brief Initializes DVK register access
*****************************************************************************/
void DVK_SPI_init(void)
{
uint16_t spiMagic;
 
spiInit();
/* Read "board control Magic" register to verify SPI is up and running */
/* if not FPGA is configured to be in EBI mode */
 
spiMagic = DVK_SPI_readRegister(BC_MAGIC);
if (spiMagic != BC_MAGIC_VALUE)
{
/* Development Kit is configured to use EBI mode, restart of kit required */
/* to use USART2-SPI for configuration */
spiDisable();
while (1) ;
}
}
 
/**************************************************************************//**
* @brief Disable and free up resources used by SPI board control access
*****************************************************************************/
void DVK_SPI_disable(void)
{
spiDisable();
}
 
/**************************************************************************//**
* @brief Perform read from DVK board control register
* @param addr Address of register to read from
*****************************************************************************/
uint16_t DVK_SPI_readRegister(volatile uint16_t *addr)
{
uint16_t data;
 
if (addr != lastAddr)
{
spiWrite(0x00, 0xFFFF & ((uint32_t) addr)); /*LSBs of address*/
spiWrite(0x01, 0xFF & ((uint32_t) addr >> 16)); /*MSBs of address*/
spiWrite(0x02, (0x0C000000 & (uint32_t) addr) >> 26); /*Chip select*/
}
/* Read twice */
data = spiRead(0x03, 0);
data = spiRead(0x03, 0);
lastAddr = addr;
return data;
}
 
/**************************************************************************//**
* @brief Perform write to DVK board control register
* @param addr Address of register to write to
* @param data 16-bit to write into register
*****************************************************************************/
void DVK_SPI_writeRegister(volatile uint16_t *addr, uint16_t data)
{
if (addr != lastAddr)
{
spiWrite(0x00, 0xFFFF & ((uint32_t) addr)); /*LSBs of address*/
spiWrite(0x01, 0xFF & ((uint32_t) addr >> 16)); /*MSBs of address*/
spiWrite(0x02, (0x0C000000 & (uint32_t) addr) >> 26); /*Chip select*/
}
spiWrite(0x03, data); /*Data*/
lastAddr = addr;
}
/bsp/dvk_boardcontrol.h
0,0 → 1,81
/**************************************************************************//**
* @file
* @brief DVK Peripheral Board Control, prototypes and definitions
* @author Energy Micro AS
* @version 1.0.1
******************************************************************************
* @section License
* <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>
******************************************************************************
*
* This source code is the property of Energy Micro AS. The source and compiled
* code may only be used on Energy Micro "EFM32" microcontrollers.
*
* This copyright notice may not be removed from the source code nor changed.
*
* DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no
* obligation to support this Software. Energy Micro AS is providing the
* Software "AS IS", with no express or implied warranties of any kind,
* including, but not limited to, any implied warranties of merchantability
* or fitness for any particular purpose or warranties against infringement
* of any proprietary rights of a third party.
*
* Energy Micro AS will not be liable for any consequential, incidental, or
* special damages, or any other relief, or for any claim by any third party,
* arising from your use of this Software.
*
*****************************************************************************/
 
#ifndef __DVK_BOARDCONTROL_H
#define __DVK_BOARDCONTROL_H
 
#include <stdint.h>
#include "dvk_bcregisters.h"
 
/** Periperhal access switches */
typedef enum
{
DVK_ACCEL = BC_PERCTRL_ACCEL,
DVK_AMBIENT = BC_PERCTRL_AMBIENT,
DVK_POTMETER = BC_PERCTRL_POTMETER,
DVK_RS232A = BC_PERCTRL_RS232A,
DVK_RS232B = BC_PERCTRL_RS232B,
DVK_SPI = BC_PERCTRL_SPI,
DVK_I2C = BC_PERCTRL_I2C,
DVK_IRDA = BC_PERCTRL_IRDA,
DVK_ANALOG_SE = BC_PERCTRL_ANALOG_SE,
DVK_ANALOG_DIFF = BC_PERCTRL_ANALOG_DIFF,
DVK_AUDIO_OUT = BC_PERCTRL_AUDIO_OUT,
DVK_AUDIO_IN = BC_PERCTRL_AUDIO_IN,
DVK_ACCEL_GSEL = BC_PERCTRL_ACCEL_GSEL,
DVK_ACCEL_SELFTEST = BC_PERCTRL_ACCEL_SELFTEST,
DVK_RS232_SHUTDOWN = BC_PERCTRL_RS232_SHUTDOWN,
DVK_IRDA_SHUTDOWN = BC_PERCTRL_IRDA_SHUTDOWN,
} DVKPeripheral;
 
/* Peripheral Control */
void DVK_enablePeripheral(DVKPeripheral peri);
void DVK_disablePeripheral(DVKPeripheral peri);
void DVK_enableBus(void);
void DVK_disableBus(void);
 
/* Read board controllers */
uint16_t DVK_getPushButtons(void);
uint16_t DVK_getJoystick(void);
uint16_t DVK_getDipSwitch(void);
 
/* Report AEM status */
void DVK_setEnergyMode(uint16_t energyMode);
 
/* User LEDs */
void DVK_setLEDs(uint16_t leds);
uint16_t DVK_getLEDs(void);
 
/* Interrupt callback */
void DVK_enableInterrupt(uint16_t flags);
void DVK_disableInterrupt(uint16_t flags);
 
uint16_t DVK_getInterruptFlags(void);
void DVK_clearInterruptFlags(uint16_t flags);
 
#endif
/bsp/dvk_ebi.c
0,0 → 1,248
/**************************************************************************//**
* @file
* @brief EBI implementation of Board Control interface
* This implementation works for devices w/o LCD display on the
* MCU module, specifically the EFM32_G2xx_DK development board
* @author Energy Micro AS
* @version 1.0.1
******************************************************************************
* @section License
* <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>
******************************************************************************
*
* This source code is the property of Energy Micro AS. The source and compiled
* code may only be used on Energy Micro "EFM32" microcontrollers.
*
* This copyright notice may not be removed from the source code nor changed.
*
* DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no
* obligation to support this Software. Energy Micro AS is providing the
* Software "AS IS", with no express or implied warranties of any kind,
* including, but not limited to, any implied warranties of merchantability
* or fitness for any particular purpose or warranties against infringement
* of any proprietary rights of a third party.
*
* Energy Micro AS will not be liable for any consequential, incidental, or
* special damages, or any other relief, or for any claim by any third party,
* arising from your use of this Software.
*
*****************************************************************************/
 
#include "efm32.h"
#include "dvk.h"
#include "dvk_bcregisters.h"
 
/**************************************************************************//**
* @brief Configure EBI (external bus interface) for Board Control register
* access
*****************************************************************************/
void DVK_EBI_configure(void)
{
GPIO_TypeDef *gpio = GPIO;
EBI_TypeDef *ebi = EBI;
CMU_TypeDef *cmu = CMU;
 
/* Run time check if we have EBI on-chip capability on this device */
switch ((DEVINFO->PART & _DEVINFO_PART_DEVICE_NUMBER_MASK) >>
_DEVINFO_PART_DEVICE_NUMBER_SHIFT)
{
/* Only device types EFM32G 280/290/880 and 890 have EBI capability */
case 280:
case 290:
case 880:
case 890:
break;
default:
/* This device do not have EBI capability - use SPI to interface DVK */
/* With high probability your project has been configured for an */
/* incorrect part number. */
while (1) ;
}
 
/* Enable clocks */
cmu->HFCORECLKEN0 |= CMU_HFCORECLKEN0_EBI;
cmu->HFPERCLKEN0 |= CMU_HFPERCLKEN0_GPIO;
 
/* Configure bus connect PC bit 12 active low */
gpio->P[2].MODEH |=
GPIO_P_MODEH_MODE12_PUSHPULL;
 
gpio->P[2].DOUT &= ~(1UL << 12);
 
/* Configure GPIO pins as push pull */
/* EBI AD9..15 */
gpio->P[0].MODEL |=
(GPIO_P_MODEL_MODE0_PUSHPULL |
GPIO_P_MODEL_MODE1_PUSHPULL |
GPIO_P_MODEL_MODE2_PUSHPULL |
GPIO_P_MODEL_MODE3_PUSHPULL |
GPIO_P_MODEL_MODE4_PUSHPULL |
GPIO_P_MODEL_MODE5_PUSHPULL |
GPIO_P_MODEL_MODE6_PUSHPULL);
/* EBI AD8 */
gpio->P[0].MODEH |=
GPIO_P_MODEH_MODE15_PUSHPULL;
/* EBI CS0-CS3 */
gpio->P[3].MODEH |=
(GPIO_P_MODEH_MODE9_PUSHPULL |
GPIO_P_MODEH_MODE10_PUSHPULL |
GPIO_P_MODEH_MODE11_PUSHPULL |
GPIO_P_MODEH_MODE12_PUSHPULL);
/* EBI AD0..7 */
gpio->P[4].MODEH |=
(GPIO_P_MODEH_MODE8_PUSHPULL |
GPIO_P_MODEH_MODE9_PUSHPULL |
GPIO_P_MODEH_MODE10_PUSHPULL |
GPIO_P_MODEH_MODE11_PUSHPULL |
GPIO_P_MODEH_MODE12_PUSHPULL |
GPIO_P_MODEH_MODE13_PUSHPULL |
GPIO_P_MODEH_MODE14_PUSHPULL |
GPIO_P_MODEH_MODE15_PUSHPULL);
/* EBI ARDY/ALEN/Wen/Ren */
gpio->P[5].MODEL |=
(GPIO_P_MODEL_MODE2_PUSHPULL |
GPIO_P_MODEL_MODE3_PUSHPULL |
GPIO_P_MODEL_MODE4_PUSHPULL |
GPIO_P_MODEL_MODE5_PUSHPULL);
 
/* Configure EBI controller */
/* 16 bit address, 16 bit data mode */
/* Enable bank 0 address map 0x80000000, FPGA Flash */
/* Enable bank 1 address map 0x84000000, FPGA SRAM */
/* Enable bank 2 address map 0x88000000, FPGA TFT Display (SSD2119) */
/* Enable bank 3 address map 0x8c000000, FPGA Board Control Registers */
ebi->CTRL =
EBI_CTRL_MODE_D16A16ALE |
EBI_CTRL_BANK0EN |
EBI_CTRL_BANK1EN |
EBI_CTRL_BANK2EN |
EBI_CTRL_BANK3EN;
 
/* Setup and hold time */
ebi->ADDRTIMING = 3 << _EBI_ADDRTIMING_ADDRHOLD_SHIFT | 3 << _EBI_ADDRTIMING_ADDRSET_SHIFT;
 
/* Default values for all write timing registers, read timing conservative */
ebi->RDTIMING = 7 << _EBI_RDTIMING_RDSTRB_SHIFT | 3 << _EBI_RDTIMING_RDHOLD_SHIFT | 3 << _EBI_RDTIMING_RDSETUP_SHIFT;
ebi->WRTIMING = 7 << _EBI_WRTIMING_WRSTRB_SHIFT | 3 << _EBI_WRTIMING_WRHOLD_SHIFT | 3 << _EBI_WRTIMING_WRSETUP_SHIFT;
ebi->POLARITY = _EBI_POLARITY_RESETVALUE;
 
/* Toggle on all chip selects for all banks */
ebi->ROUTE =
EBI_ROUTE_CS0PEN |
EBI_ROUTE_CS1PEN |
EBI_ROUTE_CS2PEN |
EBI_ROUTE_CS3PEN |
EBI_ROUTE_ALEPEN |
EBI_ROUTE_EBIPEN;
}
 
 
/**************************************************************************//**
* @brief Initialize EBI
* access
*****************************************************************************/
void DVK_EBI_init(void)
{
uint16_t ebiMagic;
int ctr;
volatile int i;
 
/* Configure EBI */
DVK_EBI_configure();
/* Verify that EBI access is working, if not kit is in SPI mode and needs to
* be configured for EBI access */
ebiMagic = DVK_EBI_readRegister(BC_MAGIC);
if (ebiMagic != BC_MAGIC_VALUE)
{
/* Disable EBI */
DVK_EBI_disable();
/* Enable SPI interface */
DVK_SPI_init();
/* Set EBI mode - after this SPI access will no longer be available */
DVK_SPI_writeRegister(BC_CFG, BC_CFG_EBI);
/* Disable SPI */
DVK_SPI_disable();
/* Now setup EBI again */
DVK_EBI_configure();
/* Wait until ready */
ctr = 0;
do {
/* Check if FPGA responds */
ebiMagic = DVK_EBI_readRegister(BC_MAGIC);
ctr++;
DVK_EBI_writeRegister(BC_LED, ctr);
} while (ebiMagic != BC_MAGIC_VALUE);
}
}
 
/**************************************************************************//**
* @brief Disable EBI interface, free all GPIO pins
*****************************************************************************/
void DVK_EBI_disable(void)
{
GPIO_TypeDef *gpio = GPIO;
EBI_TypeDef *ebi = EBI;
CMU_TypeDef *cmu = CMU;
 
/* Toggle off all chip selects for all banks */
ebi->ROUTE = _EBI_ROUTE_RESETVALUE;
 
/* Disable EBI controller */
ebi->CTRL = _EBI_CTRL_RESETVALUE;
 
/* Disable EBI clock */
cmu->HFCORECLKEN0 &= ~(CMU_HFCORECLKEN0_EBI);
 
/* Disable EBI _BC_BUS_CONNECT */
gpio->P[2].MODEH &= ~(_GPIO_P_MODEH_MODE12_MASK);
 
/* Configure GPIO pins as disabled */
gpio->P[0].MODEL &= ~(
_GPIO_P_MODEL_MODE0_MASK |
_GPIO_P_MODEL_MODE1_MASK |
_GPIO_P_MODEL_MODE2_MASK |
_GPIO_P_MODEL_MODE3_MASK |
_GPIO_P_MODEL_MODE4_MASK |
_GPIO_P_MODEL_MODE5_MASK |
_GPIO_P_MODEL_MODE6_MASK);
gpio->P[0].MODEH &= ~(_GPIO_P_MODEH_MODE15_MASK);
gpio->P[3].MODEH &= ~(
_GPIO_P_MODEH_MODE9_MASK|
_GPIO_P_MODEH_MODE10_MASK|
_GPIO_P_MODEH_MODE11_MASK|
_GPIO_P_MODEH_MODE12_MASK
);
gpio->P[4].MODEH &= ~(
_GPIO_P_MODEH_MODE8_MASK |
_GPIO_P_MODEH_MODE9_MASK |
_GPIO_P_MODEH_MODE10_MASK |
_GPIO_P_MODEH_MODE11_MASK |
_GPIO_P_MODEH_MODE12_MASK |
_GPIO_P_MODEH_MODE13_MASK |
_GPIO_P_MODEH_MODE14_MASK |
_GPIO_P_MODEH_MODE15_MASK);
gpio->P[5].MODEL &= ~(
_GPIO_P_MODEL_MODE2_MASK |
_GPIO_P_MODEL_MODE3_MASK |
_GPIO_P_MODEL_MODE4_MASK |
_GPIO_P_MODEL_MODE5_MASK);
}
 
/**************************************************************************//**
* @brief Write data into 16-bit board control register
* @param addr Address to board control register
* @param data Data to write into register
*****************************************************************************/
void DVK_EBI_writeRegister(volatile uint16_t *addr, uint16_t data)
{
*addr = data;
}
 
/**************************************************************************//**
* @brief Write data into 16-bit board control register
* @param addr Register to read from
*****************************************************************************/
uint16_t DVK_EBI_readRegister(volatile uint16_t *addr)
{
return *addr;
}
/bsp/dvk.c
0,0 → 1,62
/**************************************************************************//**
* @file
* @brief DVK board support package, initialization
* @author Energy Micro AS
* @version 1.0.1
******************************************************************************
* @section License
* <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>
******************************************************************************
*
* This source code is the property of Energy Micro AS. The source and compiled
* code may only be used on Energy Micro "EFM32" microcontrollers.
*
* This copyright notice may not be removed from the source code nor changed.
*
* DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no
* obligation to support this Software. Energy Micro AS is providing the
* Software "AS IS", with no express or implied warranties of any kind,
* including, but not limited to, any implied warranties of merchantability
* or fitness for any particular purpose or warranties against infringement
* of any proprietary rights of a third party.
*
* Energy Micro AS will not be liable for any consequential, incidental, or
* special damages, or any other relief, or for any claim by any third party,
* arising from your use of this Software.
*
*****************************************************************************/
 
#include "efm32.h"
#include "dvk.h"
 
/**************************************************************************//**
* @brief Initializes DVK, configures board control access
*****************************************************************************/
void DVK_init(void)
{
#ifdef DVK_EBI_CONTROL
DVK_EBI_init();
#endif
#ifdef DVK_SPI_CONTROL
DVK_SPI_init();
#endif
/* Inform AEM application that we are in Energy Mode 0 by default */
DVK_setEnergyMode(0);
}
 
/**************************************************************************//**
* @brief Disables DVK, free up resources
*****************************************************************************/
void DVK_disable(void)
{
#ifdef DVK_EBI_CONTROL
/* Handover bus control */
DVK_disableBus();
/* Disable EBI interface */
DVK_EBI_disable();
#endif
 
#ifdef DVK_SPI_CONTROL
DVK_SPI_disable();
#endif
}
/bsp/dvk_bcregisters.h
0,0 → 1,103
/**************************************************************************//**
* @file
* @brief Board Control register definitions
* @author Energy Micro AS
* @version 1.0.1
******************************************************************************
* @section License
* <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>
******************************************************************************
*
* This source code is the property of Energy Micro AS. The source and compiled
* code may only be used on Energy Micro "EFM32" microcontrollers.
*
* This copyright notice may not be removed from the source code nor changed.
*
* DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no
* obligation to support this Software. Energy Micro AS is providing the
* Software "AS IS", with no express or implied warranties of any kind,
* including, but not limited to, any implied warranties of merchantability
* or fitness for any particular purpose or warranties against infringement
* of any proprietary rights of a third party.
*
* Energy Micro AS will not be liable for any consequential, incidental, or
* special damages, or any other relief, or for any claim by any third party,
* arising from your use of this Software.
*
*****************************************************************************/
 
#ifndef __DVK_BCREGISTERS_H
#define __DVK_BCREGISTERS_H
 
#include <stdint.h>
 
/**************************************************************************//**
* Defines FPGA register bank for Energy Micro Development Kit (DVK) board,
* i.e. board control registers
*****************************************************************************/
#define BC_REGISTER_BASE 0x8c000000
 
#define BC_CFG ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x00))
#define BC_EM ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x01))
#define BC_MAGIC ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x02))
#define BC_LED ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x03))
#define BC_PUSHBUTTON ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x04))
#define BC_DIPSWITCH ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x05))
#define BC_JOYSTICK ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x06))
#define BC_AEM ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x07))
#define BC_DISPLAY_CTRL ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x08))
#define BC_EBI_CFG ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x09))
#define BC_BUS_CFG ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x0a))
#define BC_PERCTRL ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x0c))
#define BC_AEMSTATE ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x0d))
#define BC_SPI_CFG ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x0e))
#define BC_RESET ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x0f))
#define BC_ADC_START ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x10))
#define BC_ADC_STATUS ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x11))
#define BC_ADC_DATA ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x12))
#define BC_HW_VERSION ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x14))
#define BC_FW_BUILDNO ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x15))
#define BC_FW_VERSION ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x16))
#define BC_SCRATCH_COMMON ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x17))
#define BC_SCRATCH_EFM0 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x18))
#define BC_SCRATCH_EFM1 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x19))
#define BC_SCRATCH_EFM2 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x1A))
#define BC_SCRATCH_EFM3 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x1B))
#define BC_SCRATCH_BC0 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x1C))
#define BC_SCRATCH_BC1 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x1D))
#define BC_SCRATCH_BC2 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x1E))
#define BC_SCRATCH_BC3 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x1f))
#define BC_INTFLAG ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x20))
#define BC_INTEN ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x21))
 
/**************************************************************************//**
* Defines bit fields for board control registers
*****************************************************************************/
#define BC_PERCTRL_ACCEL (1 << 0)
#define BC_PERCTRL_AMBIENT (1 << 1)
#define BC_PERCTRL_POTMETER (1 << 2)
#define BC_PERCTRL_RS232A (1 << 3)
#define BC_PERCTRL_RS232B (1 << 4)
#define BC_PERCTRL_SPI (1 << 5)
#define BC_PERCTRL_I2C (1 << 6)
#define BC_PERCTRL_IRDA (1 << 7)
#define BC_PERCTRL_ANALOG_SE (1 << 8)
#define BC_PERCTRL_ANALOG_DIFF (1 << 9)
#define BC_PERCTRL_AUDIO_OUT (1 << 10)
#define BC_PERCTRL_AUDIO_IN (1 << 11)
#define BC_PERCTRL_ACCEL_GSEL (1 << 12)
#define BC_PERCTRL_ACCEL_SELFTEST (1 << 13)
#define BC_PERCTRL_RS232_SHUTDOWN (1 << 14)
#define BC_PERCTRL_IRDA_SHUTDOWN (1 << 15)
 
#define BC_INTEN_PB (1 << 0)
#define BC_INTEN_DIP (1 << 1)
#define BC_INTEN_JOYSTICK (1 << 2)
#define BC_INTEN_AEM (1 << 3)
 
#define BC_CFG_SPI (0)
#define BC_CFG_EBI (1)
 
#define BC_MAGIC_VALUE (0xef32)
 
#endif
/bsp/chip.h
0,0 → 1,72
/**************************************************************************//**
* @file
* @brief Chip initialization, SW workarounds for chip errata issues
* @author Energy Micro AS
* @version 1.1.1
******************************************************************************
* @section License
* <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>
******************************************************************************
*
* This source code is the property of Energy Micro AS. The source and compiled
* code may only be used on Energy Micro "EFM32" microcontrollers.
*
* This copyright notice may not be removed from the source code nor changed.
*
* DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no
* obligation to support this Software. Energy Micro AS is providing the
* Software "AS IS", with no express or implied warranties of any kind,
* including, but not limited to, any implied warranties of merchantability
* or fitness for any particular purpose or warranties against infringement
* of any proprietary rights of a third party.
*
* Energy Micro AS will not be liable for any consequential, incidental, or
* special damages, or any other relief, or for any claim by any third party,
* arising from your use of this Software.
*
*****************************************************************************/
 
#ifndef __CHIP_H
#define __CHIP_H
 
#include <stdint.h>
 
/**************************************************************************//**
* @brief Chip errata workarounds
*****************************************************************************/
static inline void CHIP_init(void)
{
uint32_t rev;
volatile uint32_t *reg;
 
rev = *(volatile uint32_t *)(0x0FE081FC);
/* Engineering Sample calibration setup */
if ((rev >> 24) == 0)
{
reg = (volatile uint32_t *) 0x400CA00C;
*reg &= ~(0x70UL);
/* DREG */
reg = (volatile uint32_t *) 0x400C6020;
*reg &= ~(0xE0000000UL);
*reg |= ~(7 << 25);
}
if ((rev >> 24) <= 1)
{
/* DREG */
reg = (volatile uint32_t *) 0x400C6020;
*reg &= ~(0x00001F80UL);
/* Update CMU reset values */
reg = (volatile uint32_t *) 0x400C8040;
*reg = 0;
reg = (volatile uint32_t *) 0x400C8044;
*reg = 0;
reg = (volatile uint32_t *) 0x400C8058;
*reg = 0;
reg = (volatile uint32_t *) 0x400C8060;
*reg = 0;
reg = (volatile uint32_t *) 0x400C8078;
*reg = 0;
}
}
 
#endif
/bsp/dvk.h
0,0 → 1,122
/**************************************************************************//**
* @file
* @brief DVK Board Support, master header file
* @author Energy Micro AS
* @version 1.0.1
******************************************************************************
* @section License
* <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>
******************************************************************************
*
* This source code is the property of Energy Micro AS. The source and compiled
* code may only be used on Energy Micro "EFM32" microcontrollers.
*
* This copyright notice may not be removed from the source code nor changed.
*
* DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no
* obligation to support this Software. Energy Micro AS is providing the
* Software "AS IS", with no express or implied warranties of any kind,
* including, but not limited to, any implied warranties of merchantability
* or fitness for any particular purpose or warranties against infringement
* of any proprietary rights of a third party.
*
* Energy Micro AS will not be liable for any consequential, incidental, or
* special damages, or any other relief, or for any claim by any third party,
* arising from your use of this Software.
*
*****************************************************************************/
 
#ifndef __DVK_H
#define __DVK_H
 
#include <stdint.h>
#include "dvk_boardcontrol.h"
#include "dvk_bcregisters.h"
 
/* IF not user overrides default, try to decide DVK access interface based on
* part number */
#ifndef DVK_SPI_CONTROL
#ifndef DVK_EBI_CONTROL
 
#if defined(EFM32G200F16)
#define DVK_SPI_CONTROL
#elif defined(EFM32G200F32)
#define DVK_SPI_CONTROL
#elif defined(EFM32G200F64)
#define DVK_SPI_CONTROL
#elif defined(EFM32G210F128)
#define DVK_SPI_CONTROL
#elif defined(EFM32G230F128)
#define DVK_SPI_CONTROL
#elif defined(EFM32G230F32)
#define DVK_SPI_CONTROL
#elif defined(EFM32G230F64)
#define DVK_SPI_CONTROL
#elif defined(EFM32G280F128)
#define DVK_EBI_CONTROL
#elif defined(EFM32G280F32)
#define DVK_EBI_CONTROL
#elif defined(EFM32G280F64)
#define DVK_EBI_CONTROL
#elif defined(EFM32G290F128)
#define DVK_EBI_CONTROL
#elif defined(EFM32G290F32)
#define DVK_EBI_CONTROL
#elif defined(EFM32G290F64)
#define DVK_EBI_CONTROL
#elif defined(EFM32G840F128)
#define DVK_SPI_CONTROL
#elif defined(EFM32G840F32)
#define DVK_SPI_CONTROL
#elif defined(EFM32G840F64)
#define DVK_SPI_CONTROL
#elif defined(EFM32G880F128)
#define DVK_SPI_CONTROL
#elif defined(EFM32G880F32)
#define DVK_SPI_CONTROL
#elif defined(EFM32G880F64)
#define DVK_SPI_CONTROL
#elif defined(EFM32G890F128)
#define DVK_SPI_CONTROL
#elif defined(EFM32G890F32)
#define DVK_SPI_CONTROL
#elif defined(EFM32G890F64)
#define DVK_SPI_CONTROL
#else
#define DVK_SPI_CONTROL
#endif
 
#endif
#endif
 
/* EBI access */
void DVK_EBI_init(void);
void DVK_EBI_disable(void);
 
void DVK_EBI_writeRegister(volatile uint16_t *addr, uint16_t data);
uint16_t DVK_EBI_readRegister(volatile uint16_t *addr);
 
/* SPI access */
void DVK_SPI_init(void);
void DVK_SPI_disable(void);
 
void DVK_SPI_writeRegister(volatile uint16_t *addr, uint16_t data);
uint16_t DVK_SPI_readRegister(volatile uint16_t *addr);
 
 
/* Accodring to configuration, use either SPI or EBI */
#ifdef DVK_EBI_CONTROL
#define DVK_writeRegister(A, B) DVK_EBI_writeRegister(A, B)
#define DVK_readRegister(A) DVK_EBI_readRegister(A)
#endif
 
#ifdef DVK_SPI_CONTROL
#define DVK_writeRegister(A, B) DVK_SPI_writeRegister(A, B)
#define DVK_readRegister(A) DVK_SPI_readRegister(A)
#endif
 
/* General initialization routines */
void DVK_init(void);
void DVK_disable(void);
 
#endif
/bsp/dvk_boardcontrol.c
0,0 → 1,235
/**************************************************************************//**
* @file
* @brief DVK Peripheral Board Control API implementation
* @author Energy Micro AS
* @version 1.0.1
******************************************************************************
* @section License
* <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>
******************************************************************************
*
* This source code is the property of Energy Micro AS. The source and compiled
* code may only be used on Energy Micro "EFM32" microcontrollers.
*
* This copyright notice may not be removed from the source code nor changed.
*
* DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no
* obligation to support this Software. Energy Micro AS is providing the
* Software "AS IS", with no express or implied warranties of any kind,
* including, but not limited to, any implied warranties of merchantability
* or fitness for any particular purpose or warranties against infringement
* of any proprietary rights of a third party.
*
* Energy Micro AS will not be liable for any consequential, incidental, or
* special damages, or any other relief, or for any claim by any third party,
* arising from your use of this Software.
*
*****************************************************************************/
 
#include "efm32.h"
#include "dvk.h"
#include "dvk_boardcontrol.h"
#include "dvk_bcregisters.h"
 
/**************************************************************************//**
* @brief Enable EFM32 access to periheral on DVK board
* @param peri Peripheral to enable
*****************************************************************************/
void DVK_enablePeripheral(DVKPeripheral peri)
{
uint16_t bit;
uint16_t tmp;
 
/* Calculate which bit to set */
bit = (uint16_t) peri;
 
/* Read peripheral control register */
tmp = DVK_readRegister(BC_PERCTRL);
 
/* Enable peripheral */
tmp |= bit;
 
/* Special case for RS232, if enabled disable shutdown */
if ((peri == DVK_RS232A) || (peri == DVK_RS232B))
{
/* clear shutdown bit */
tmp &= ~(BC_PERCTRL_RS232_SHUTDOWN);
}
 
/* Special case for IRDA if enabled disable shutdown */
if (peri == DVK_IRDA)
{
/* clear shutdown bit */
tmp &= ~(BC_PERCTRL_IRDA_SHUTDOWN);
}
 
DVK_writeRegister(BC_PERCTRL, tmp);
}
 
/**************************************************************************//**
* @brief Disable EFM32 access to peripheral on DVK board
* @param peri Peripheral to disable
*****************************************************************************/
void DVK_disablePeripheral(DVKPeripheral peri)
{
uint16_t bit;
uint16_t tmp;
 
/* Calculate which bit to set */
bit = (uint16_t) peri;
 
/* Read peripheral control register */
tmp = DVK_readRegister(BC_PERCTRL);
 
/* Disable peripheral */
tmp &= ~(bit);
 
/* Special case for RS232, if enabled disable shutdown */
if ((peri == DVK_RS232A) || (peri == DVK_RS232B))
{
/* Set shutdown bit */
tmp |= (BC_PERCTRL_RS232_SHUTDOWN);
}
 
/* Special case for IRDA */
if (peri == DVK_IRDA)
{
/* Set shutdown bit */
tmp |= (BC_PERCTRL_IRDA_SHUTDOWN);
}
 
 
DVK_writeRegister(BC_PERCTRL, tmp);
}
 
 
/**************************************************************************//**
* @brief Enable BUS access
*****************************************************************************/
void DVK_enableBus(void)
{
/* Enable bus access */
DVK_writeRegister(BC_BUS_CFG, 1);
}
 
 
/**************************************************************************//**
* @brief Disable BUS access
*****************************************************************************/
void DVK_disableBus(void)
{
DVK_writeRegister(BC_BUS_CFG, 0);
}
 
 
/**************************************************************************//**
* @brief Inform AEM about current energy mode
* @param energyMode What energy mode we are going to use next
*****************************************************************************/
void DVK_setEnergyMode(uint16_t energyMode)
{
DVK_writeRegister(BC_EM, energyMode);
}
 
 
/**************************************************************************//**
* @brief Get status of bush buttons
* @return Status of push buttons
*****************************************************************************/
uint16_t DVK_getPushButtons(void)
{
uint16_t tmp;
 
tmp = (~(DVK_readRegister(BC_PUSHBUTTON))) & 0x000f;
return tmp;
}
 
/**************************************************************************//**
* @brief Get joystick button status
* @return Joystick controller status
*****************************************************************************/
uint16_t DVK_getJoystick(void)
{
uint16_t tmp;
 
tmp = (~(DVK_readRegister(BC_JOYSTICK))) & 0x001f;
return tmp;
}
 
/**************************************************************************//**
* @brief Get dipswitch status
* The DIP switches are free for user programmable purposes
* @return Joystick controller status
*****************************************************************************/
uint16_t DVK_getDipSwitch(void)
{
uint16_t tmp;
 
tmp = (~(DVK_readRegister(BC_DIPSWITCH))) & 0x00ff;
return tmp;
}
 
/**************************************************************************//**
* @brief Sets user leds
* @param leds 16-bits which enables or disables the board "User leds"
*****************************************************************************/
void DVK_setLEDs(uint16_t leds)
{
DVK_writeRegister(BC_LED, leds);
}
 
/**************************************************************************//**
* @brief Get status of user LEDs
* @return Status of 16 user leds, bit 1 = on, bit 0 = off
*****************************************************************************/
uint16_t DVK_getLEDs(void)
{
return DVK_readRegister(BC_LED);
}
 
/**************************************************************************//**
* @brief Enable "Control" buttons/joystick/dip switch interrupts
* @param flags Board control interrupt flags, BC_INTEN_<something>
*****************************************************************************/
void DVK_enableInterrupt(uint16_t flags)
{
uint16_t tmp;
 
/* Add flags to interrupt enable register */
tmp = DVK_readRegister(BC_INTEN);
tmp |= flags;
DVK_writeRegister(BC_INTEN, tmp);
}
 
/**************************************************************************//**
* @brief Disable "Control" buttons/joystick/dip switch interrupts
* @param flags Board control interrupt flags, BC_INTEN_<something>
*****************************************************************************/
void DVK_disableInterrupt(uint16_t flags)
{
uint16_t tmp;
 
/* Clear flags from interrupt enable register */
tmp = DVK_readRegister(BC_INTEN);
flags = ~(flags);
tmp &= flags;
DVK_writeRegister(BC_INTEN, tmp);
}
 
/**************************************************************************//**
* @brief Clear interrupts
* @param flags Board control interrupt flags, BC_INTEN_<something>
*****************************************************************************/
void DVK_clearInterruptFlags(uint16_t flags)
{
DVK_writeRegister(BC_INTFLAG, flags);
}
 
/**************************************************************************//**
* @brief Read interrupt flags
* @return Returns currently triggered interrupts
*****************************************************************************/
uint16_t DVK_getInterruptFlags(void)
{
return DVK_readRegister(BC_INTFLAG);
}
/ledtest.c
0,0 → 1,83
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). 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 exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
 
/* Demo app includes. */
#include "ledtest.h"
 
#define lLEDOnE_SECOND ( 1000UL / portTICK_RATE_MS )
 
void vLEDTask( void *pvParameters )
{
long lLEDOn = pdTRUE, x;
 
for( ;; )
{
for( x = 8; x < 16; x++ )
{
/*Depending on if lLEDOn is true or false, turn on or off led number i*/
vParTestSetLED( x,lLEDOn );
 
/*Delay for 1000 ms*/
vTaskDelay( lLEDOnE_SECOND );
}
 
/*After the for loop, we flip lLEDOn. On the next run through the
for loop above, the leds will be flipped.*/
lLEDOn = ~lLEDOn;
}
}
 
/FreeRTOSConfig.h
0,0 → 1,108
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). 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 exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
 
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*
* See http://www.freertos.org/a00110.html.
*----------------------------------------------------------*/
 
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 1
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( 14000000UL )
#define configTICK_RATE_HZ ( ( portTickType ) 100 )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 70 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 10 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 10 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 0
#define configUSE_CO_ROUTINES 1
#define configUSE_MUTEXES 1
 
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 4 )
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
 
#define configUSE_COUNTING_SEMAPHORES 0
#define configUSE_ALTERNATIVE_API 0
#define configCHECK_FOR_STACK_OVERFLOW 2
#define configUSE_RECURSIVE_MUTEXES 1
#define configQUEUE_REGISTRY_SIZE 0
#define configGENERATE_RUN_TIME_STATS 0
 
/* 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 0
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
 
 
#define configKERNEL_INTERRUPT_PRIORITY 255
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 191 /* equivalent to 0xa0, or priority 5. */
 
 
#endif /* FREERTOS_CONFIG_H */
/main.c
0,0 → 1,271
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). 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 exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
 
/*
* Creates all the demo application tasks, then starts the scheduler. The WEB
* documentation provides more details of the standard demo application tasks.
* In addition to the standard demo tasks, the following tasks and tests are
* defined and/or created within this file:
*
* "LCD test" task - the LCD task writes a continually repeating series of patterns
* to the LCD display.
*
* "LED test" task - This is a very simple task that just turns on user LEDs
* 8 to 15 in turn, before turning them off again.
*
* "Check task" - The check task only runs every five seconds but has the highest
* priority so is guaranteed to get processing time. Its main job is to inspect
* all the other standard demo tasks to ensure they are executing without error.
* The Check task will toggle LED 0 every five seconds while no errors exist,
* with the toggle frequency increasing to 200ms should an error be detected in
* any other task.
*
* Both the check task and the idle task place the processor into energy saving
* mode 1, which will be exited following each tick interrupt. The check task
* is the highest priority task in the system, so while it is executing no other
* task will execute. If the check task places the processor into a low power
* mode without blocking then the energy consumption as viewed on the Energy
* Micro Gecko board will go down noticeably as in effect no tasks will be running.
* The check task places the processor into low power mode for two out of every
* five seconds. The current use of low power modes is very basic. Future
* FreeRTOS releases will aim to make significant improvements.
*
*/
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "croutine.h"
#include "task.h"
#include "queue.h"
#include "semphr.h"
 
/* Common demo application includes. */
#include "partest.h"
#include "GenQTest.h"
#include "QPeek.h"
#include "recmutex.h"
#include "semtest.h"
 
/* Demo application includes. */
#include "lcdcontroller.h"
#include "ledtest.h"
#include "lcdtest.h"
#include "chip.h"
 
/* Task priorities. */
#define mainLCD_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainGEN_Q_TASK_PRIORITY ( tskIDLE_PRIORITY )
#define mainSEMAPHORE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
 
/* A period of two seconds, adjusted to use the tick frequency. */
#define mainTWO_SECONDS ( 2000 / portTICK_RATE_MS )
 
/* The length of the delay between each cycle of the check task when an error
has / has not been detected. */
#define mainNO_ERROR_CHECK_FREQUENCY ( 5000 / portTICK_RATE_MS )
#define mainERROR_CHECK_FREQUENCY ( 200 / portTICK_RATE_MS )
 
/* The LED that is toggled by the check task. The rate of the toggle indicates
whether or not an error has been found, as defined by the
mainNO_ERROR_CHECK_FREQUENCY and mainERROR_CHECK_FREQUENCY definitions above. */
#define mainCHECK_LED ( 0 )
 
/*-----------------------------------------------------------*/
 
/*
* Configure the hardware as required by the demo.
*/
static void prvSetupHardware( void );
 
/*
* The check task as described at the top of this file.
*/
static void prvCheckTask( void *pvParameters );
 
/*
* Put the CPU into the least low power low power mode.
*/
static void prvLowPowerMode1( void );
 
/*-----------------------------------------------------------*/
 
int main( void )
{
/* Perform the necessary hardware configuration. */
prvSetupHardware();
 
/* Create the task that writes various text and patterns to the LCD. */
xTaskCreate( vLCDTask, "LCD", configMINIMAL_STACK_SIZE, NULL, mainLCD_TASK_PRIORITY, NULL );
 
/* Create a task that writes to LEDs 8 to 15. */
xTaskCreate( vLEDTask, "LCDTask", configMINIMAL_STACK_SIZE, NULL, mainLED_TASK_PRIORITY, NULL );
 
/* Create some of the standard demo tasks. These just test the port and
demonstrate how the FreeRTOS API can be used. They do not provide any
specific functionality. */
vStartGenericQueueTasks( mainGEN_Q_TASK_PRIORITY );
vStartQueuePeekTasks();
vStartRecursiveMutexTasks();
vStartSemaphoreTasks( mainSEMAPHORE_TASK_PRIORITY );
/* Create the check task as described at the top of this file. */
xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
/* Start the scheduler. */
vTaskStartScheduler();
/* The scheduler should now be running the tasks so the following code should
never be reached. If it is reached then there was insufficient heap space
for the idle task to be created. In this case the heap size is set by
configTOTAL_HEAP_SIZE in FreeRTOSConfig.h. */
for( ;; );
}
/*-----------------------------------------------------------*/
 
void vApplicationIdleHook( void )
{
/* Use the idle task to place the CPU into a low power mode. Greater power
saving could be achieved by not including any demo tasks that never block. */
prvLowPowerMode1();
}
/*-----------------------------------------------------------*/
 
void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName )
{
/* This function will be called if a task overflows its stack, if
configCHECK_FOR_STACK_OVERFLOW != 0. It might be that the function
parameters have been corrupted, depending on the severity of the stack
overflow. When this is the case pxCurrentTCB can be inspected in the
debugger to find the offending task. */
for( ;; );
}
/*-----------------------------------------------------------*/
 
static void prvCheckTask( void *pvParameters )
{
portTickType xLastExecutionTime, xFrequency = mainNO_ERROR_CHECK_FREQUENCY;
long lCount;
 
/* Initialise xLastExecutionTime so the first call to vTaskDelayUntil()
works correctly. */
xLastExecutionTime = xTaskGetTickCount();
 
for( ;; )
{
/* Perform this check at a frequency that indicates whether or not an
error has been found. */
vTaskDelayUntil( &xLastExecutionTime, xFrequency );
/* Check all the other tasks are running without error. */
if( xAreGenericQueueTasksStillRunning() != pdPASS )
{
xFrequency = mainERROR_CHECK_FREQUENCY;
}
if( xAreQueuePeekTasksStillRunning() != pdPASS )
{
xFrequency = mainERROR_CHECK_FREQUENCY;
}
if( xAreRecursiveMutexTasksStillRunning() != pdPASS )
{
xFrequency = mainERROR_CHECK_FREQUENCY;
}
 
if( xAreSemaphoreTasksStillRunning() != pdPASS )
{
xFrequency = mainERROR_CHECK_FREQUENCY;
}
/* Toggle the LED to show that the check hook function is running.
The toggle freequency will increase if an error has been found in any
task. */
vParTestToggleLED( mainCHECK_LED );
/* Just loop around putting the processor into low power mode 1 for
a while. This is the highest priority task, and this loop does not
cause it to block, so it will remain as the running task. Each time it
runs for the next two seconds it will simply put the processor to sleep.
No other task will run so nothing else will happen. This periodic two
seconds of lower power should be viewable using the Advanced Energy
Monitor on the Energy Micro Gecko board. */
for( lCount = 0; lCount < mainTWO_SECONDS; lCount++ )
{
prvLowPowerMode1();
}
}
}
/*-----------------------------------------------------------*/
 
static void prvSetupHardware( void )
{
/* Initialise the LEDs. */
vParTestInitialise();
 
/* Configure the LCD. */
LCD_Init( LCD );
}
/*-----------------------------------------------------------*/
 
static void prvLowPowerMode1( void )
{
/* Clear SLEEPDEEP for EM1 */
SCB->SCR &= ~( 1 << SCB_SCR_SLEEPDEEP_Pos );
/* Power down. */
__WFI();
}
 
 
/RTOSDemo.ewp
0,0 → 1,1677
<?xml version="1.0" encoding="iso-8859-1"?>
 
<project>
<fileVersion>2</fileVersion>
<configuration>
<name>Debug</name>
<toolchain>
<name>ARM</name>
</toolchain>
<debug>1</debug>
<settings>
<name>General</name>
<archiveVersion>3</archiveVersion>
<data>
<version>17</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>ExePath</name>
<state>Debug\Exe</state>
</option>
<option>
<name>ObjPath</name>
<state>Debug\Obj</state>
</option>
<option>
<name>ListPath</name>
<state>Debug\List</state>
</option>
<option>
<name>Variant</name>
<version>13</version>
<state>36</state>
</option>
<option>
<name>GEndianMode</name>
<state>0</state>
</option>
<option>
<name>Input variant</name>
<version>1</version>
<state>0</state>
</option>
<option>
<name>Input description</name>
<state>Full formatting.</state>
</option>
<option>
<name>Output variant</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>Output description</name>
<state>Full formatting.</state>
</option>
<option>
<name>GOutputBinary</name>
<state>0</state>
</option>
<option>
<name>FPU</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>OGCoreOrChip</name>
<state>1</state>
</option>
<option>
<name>GRuntimeLibSelect</name>
<version>0</version>
<state>1</state>
</option>
<option>
<name>GRuntimeLibSelectSlave</name>
<version>0</version>
<state>1</state>
</option>
<option>
<name>RTDescription</name>
<state>Use the normal configuration of the C/C++ runtime library. No locale interface, C locale, no file descriptor support, no multibytes in printf and scanf, and no hex floats in strtod.</state>
</option>
<option>
<name>RTConfigPath</name>
<state>$TOOLKIT_DIR$\INC\DLib_Config_Normal.h</state>
</option>
<option>
<name>OGProductVersion</name>
<state>5.41.0.51757</state>
</option>
<option>
<name>OGLastSavedByProductVersion</name>
<state>5.41.2.51798</state>
</option>
<option>
<name>GeneralEnableMisra</name>
<state>0</state>
</option>
<option>
<name>GeneralMisraVerbose</name>
<state>0</state>
</option>
<option>
<name>OGChipSelectEditMenu</name>
<state>EFM32G890F128 EnergyMicro EFM32G890F128</state>
</option>
<option>
<name>GenLowLevelInterface</name>
<state>1</state>
</option>
<option>
<name>GEndianModeBE</name>
<state>1</state>
</option>
<option>
<name>OGBufferedTerminalOutput</name>
<state>0</state>
</option>
<option>
<name>GenStdoutInterface</name>
<state>0</state>
</option>
<option>
<name>GeneralMisraRules98</name>
<version>0</version>
<state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
</option>
<option>
<name>GeneralMisraVer</name>
<state>0</state>
</option>
<option>
<name>GeneralMisraRules04</name>
<version>0</version>
<state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
</option>
</data>
</settings>
<settings>
<name>ICCARM</name>
<archiveVersion>2</archiveVersion>
<data>
<version>21</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CCDefines</name>
<state>EFM32G890F128</state>
<state>IAR_ARM_CM3</state>
</option>
<option>
<name>CCPreprocFile</name>
<state>0</state>
</option>
<option>
<name>CCPreprocComments</name>
<state>0</state>
</option>
<option>
<name>CCPreprocLine</name>
<state>0</state>
</option>
<option>
<name>CCListCFile</name>
<state>0</state>
</option>
<option>
<name>CCListCMnemonics</name>
<state>0</state>
</option>
<option>
<name>CCListCMessages</name>
<state>0</state>
</option>
<option>
<name>CCListAssFile</name>
<state>0</state>
</option>
<option>
<name>CCListAssSource</name>
<state>0</state>
</option>
<option>
<name>CCEnableRemarks</name>
<state>0</state>
</option>
<option>
<name>CCDiagSuppress</name>
<state>Pa082</state>
</option>
<option>
<name>CCDiagRemark</name>
<state></state>
</option>
<option>
<name>CCDiagWarning</name>
<state></state>
</option>
<option>
<name>CCDiagError</name>
<state></state>
</option>
<option>
<name>CCObjPrefix</name>
<state>1</state>
</option>
<option>
<name>CCAllowList</name>
<version>1</version>
<state>0000000</state>
</option>
<option>
<name>CCDebugInfo</name>
<state>1</state>
</option>
<option>
<name>IEndianMode</name>
<state>1</state>
</option>
<option>
<name>IProcessor</name>
<state>1</state>
</option>
<option>
<name>IExtraOptionsCheck</name>
<state>0</state>
</option>
<option>
<name>IExtraOptions</name>
<state></state>
</option>
<option>
<name>CCLangConformance</name>
<state>0</state>
</option>
<option>
<name>CCSignedPlainChar</name>
<state>1</state>
</option>
<option>
<name>CCRequirePrototypes</name>
<state>0</state>
</option>
<option>
<name>CCMultibyteSupport</name>
<state>0</state>
</option>
<option>
<name>CCDiagWarnAreErr</name>
<state>0</state>
</option>
<option>
<name>CCCompilerRuntimeInfo</name>
<state>0</state>
</option>
<option>
<name>IFpuProcessor</name>
<state>1</state>
</option>
<option>
<name>OutputFile</name>
<state>$FILE_BNAME$.o</state>
</option>
<option>
<name>CCLangSelect</name>
<state>0</state>
</option>
<option>
<name>CCLibConfigHeader</name>
<state>1</state>
</option>
<option>
<name>PreInclude</name>
<state></state>
</option>
<option>
<name>CompilerMisraOverride</name>
<state>0</state>
</option>
<option>
<name>CCIncludePath2</name>
<state>$PROJ_DIR$\</state>
<state>$PROJ_DIR$\..\common\include</state>
<state>$PROJ_DIR$\..\..\Source\include</state>
<state>$PROJ_DIR$\lcd</state>
<state>$PROJ_DIR$\CMSIS\CM3\CoreSupport</state>
<state>$PROJ_DIR$\CMSIS\CM3\DeviceSupport\EnergyMicro\EFM32</state>
<state>$PROJ_DIR$\bsp</state>
</option>
<option>
<name>CCStdIncCheck</name>
<state>0</state>
</option>
<option>
<name>CCStdIncludePath</name>
<state>$TOOLKIT_DIR$\INC\</state>
</option>
<option>
<name>CCCodeSection</name>
<state>.text</state>
</option>
<option>
<name>IInterwork2</name>
<state>0</state>
</option>
<option>
<name>IProcessorMode2</name>
<state>1</state>
</option>
<option>
<name>CCOptLevel</name>
<state>0</state>
</option>
<option>
<name>CCOptStrategy</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CCOptLevelSlave</name>
<state>0</state>
</option>
<option>
<name>CompilerMisraRules98</name>
<version>0</version>
<state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
</option>
<option>
<name>CompilerMisraRules04</name>
<version>0</version>
<state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
</option>
</data>
</settings>
<settings>
<name>AARM</name>
<archiveVersion>2</archiveVersion>
<data>
<version>7</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>AObjPrefix</name>
<state>1</state>
</option>
<option>
<name>AEndian</name>
<state>1</state>
</option>
<option>
<name>ACaseSensitivity</name>
<state>1</state>
</option>
<option>
<name>MacroChars</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>AWarnEnable</name>
<state>0</state>
</option>
<option>
<name>AWarnWhat</name>
<state>0</state>
</option>
<option>
<name>AWarnOne</name>
<state></state>
</option>
<option>
<name>AWarnRange1</name>
<state></state>
</option>
<option>
<name>AWarnRange2</name>
<state></state>
</option>
<option>
<name>ADebug</name>
<state>1</state>
</option>
<option>
<name>AltRegisterNames</name>
<state>0</state>
</option>
<option>
<name>ADefines</name>
<state></state>
</option>
<option>
<name>AList</name>
<state>0</state>
</option>
<option>
<name>AListHeader</name>
<state>1</state>
</option>
<option>
<name>AListing</name>
<state>1</state>
</option>
<option>
<name>Includes</name>
<state>0</state>
</option>
<option>
<name>MacDefs</name>
<state>0</state>
</option>
<option>
<name>MacExps</name>
<state>1</state>
</option>
<option>
<name>MacExec</name>
<state>0</state>
</option>
<option>
<name>OnlyAssed</name>
<state>0</state>
</option>
<option>
<name>MultiLine</name>
<state>0</state>
</option>
<option>
<name>PageLengthCheck</name>
<state>0</state>
</option>
<option>
<name>PageLength</name>
<state>80</state>
</option>
<option>
<name>TabSpacing</name>
<state>8</state>
</option>
<option>
<name>AXRef</name>
<state>0</state>
</option>
<option>
<name>AXRefDefines</name>
<state>0</state>
</option>
<option>
<name>AXRefInternal</name>
<state>0</state>
</option>
<option>
<name>AXRefDual</name>
<state>0</state>
</option>
<option>
<name>AProcessor</name>
<state>1</state>
</option>
<option>
<name>AFpuProcessor</name>
<state>1</state>
</option>
<option>
<name>AOutputFile</name>
<state>$FILE_BNAME$.o</state>
</option>
<option>
<name>AMultibyteSupport</name>
<state>0</state>
</option>
<option>
<name>ALimitErrorsCheck</name>
<state>0</state>
</option>
<option>
<name>ALimitErrorsEdit</name>
<state>100</state>
</option>
<option>
<name>AIgnoreStdInclude</name>
<state>0</state>
</option>
<option>
<name>AStdIncludes</name>
<state>$TOOLKIT_DIR$\INC\</state>
</option>
<option>
<name>AUserIncludes</name>
<state>$PROJ_DIR$\</state>
</option>
<option>
<name>AExtraOptionsCheckV2</name>
<state>0</state>
</option>
<option>
<name>AExtraOptionsV2</name>
<state></state>
</option>
</data>
</settings>
<settings>
<name>OBJCOPY</name>
<archiveVersion>0</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>OOCOutputFormat</name>
<version>2</version>
<state>0</state>
</option>
<option>
<name>OCOutputOverride</name>
<state>0</state>
</option>
<option>
<name>OOCOutputFile</name>
<state>RTOSDemo.srec</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
<state>1</state>
</option>
<option>
<name>OOCObjCopyEnable</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>CUSTOM</name>
<archiveVersion>3</archiveVersion>
<data>
<extensions></extensions>
<cmdline></cmdline>
</data>
</settings>
<settings>
<name>BICOMP</name>
<archiveVersion>0</archiveVersion>
<data/>
</settings>
<settings>
<name>BUILDACTION</name>
<archiveVersion>1</archiveVersion>
<data>
<prebuild></prebuild>
<postbuild></postbuild>
</data>
</settings>
<settings>
<name>ILINK</name>
<archiveVersion>0</archiveVersion>
<data>
<version>8</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>IlinkLibIOConfig</name>
<state>1</state>
</option>
<option>
<name>XLinkMisraHandler</name>
<state>0</state>
</option>
<option>
<name>IlinkInputFileSlave</name>
<state>0</state>
</option>
<option>
<name>IlinkOutputFile</name>
<state>RTOSDemo.out</state>
</option>
<option>
<name>IlinkDebugInfoEnable</name>
<state>1</state>
</option>
<option>
<name>IlinkKeepSymbols</name>
<state></state>
</option>
<option>
<name>IlinkRawBinaryFile</name>
<state></state>
</option>
<option>
<name>IlinkRawBinarySymbol</name>
<state></state>
</option>
<option>
<name>IlinkRawBinarySegment</name>
<state></state>
</option>
<option>
<name>IlinkRawBinaryAlign</name>
<state></state>
</option>
<option>
<name>IlinkDefines</name>
<state></state>
</option>
<option>
<name>IlinkConfigDefines</name>
<state></state>
</option>
<option>
<name>IlinkMapFile</name>
<state>1</state>
</option>
<option>
<name>IlinkLogFile</name>
<state>0</state>
</option>
<option>
<name>IlinkLogInitialization</name>
<state>0</state>
</option>
<option>
<name>IlinkLogModule</name>
<state>0</state>
</option>
<option>
<name>IlinkLogSection</name>
<state>0</state>
</option>
<option>
<name>IlinkLogVeneer</name>
<state>0</state>
</option>
<option>
<name>IlinkIcfOverride</name>
<state>1</state>
</option>
<option>
<name>IlinkIcfFile</name>
<state>$TOOLKIT_DIR$\config\linker\EnergyMicro\EFM32G290F128.icf</state>
</option>
<option>
<name>IlinkIcfFileSlave</name>
<state></state>
</option>
<option>
<name>IlinkEnableRemarks</name>
<state>0</state>
</option>
<option>
<name>IlinkSuppressDiags</name>
<state></state>
</option>
<option>
<name>IlinkTreatAsRem</name>
<state></state>
</option>
<option>
<name>IlinkTreatAsWarn</name>
<state></state>
</option>
<option>
<name>IlinkTreatAsErr</name>
<state></state>
</option>
<option>
<name>IlinkWarningsAreErrors</name>
<state>0</state>
</option>
<option>
<name>IlinkUseExtraOptions</name>
<state>0</state>
</option>
<option>
<name>IlinkExtraOptions</name>
<state></state>
</option>
<option>
<name>IlinkLowLevelInterfaceSlave</name>
<state>1</state>
</option>
<option>
<name>IlinkAutoLibEnable</name>
<state>1</state>
</option>
<option>
<name>IlinkAdditionalLibs</name>
<state></state>
</option>
<option>
<name>IlinkOverrideProgramEntryLabel</name>
<state>0</state>
</option>
<option>
<name>IlinkProgramEntryLabelSelect</name>
<state>0</state>
</option>
<option>
<name>IlinkProgramEntryLabel</name>
<state>__iar_program_start</state>
</option>
<option>
<name>DoFill</name>
<state>0</state>
</option>
<option>
<name>FillerByte</name>
<state>0xFF</state>
</option>
<option>
<name>FillerStart</name>
<state>0x0</state>
</option>
<option>
<name>FillerEnd</name>
<state>0x0</state>
</option>
<option>
<name>CrcSize</name>
<version>0</version>
<state>1</state>
</option>
<option>
<name>CrcAlign</name>
<state>1</state>
</option>
<option>
<name>CrcAlgo</name>
<state>1</state>
</option>
<option>
<name>CrcPoly</name>
<state>0x11021</state>
</option>
<option>
<name>CrcCompl</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CrcBitOrder</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CrcInitialValue</name>
<state>0x0</state>
</option>
<option>
<name>DoCrc</name>
<state>0</state>
</option>
<option>
<name>IlinkBE8Slave</name>
<state>1</state>
</option>
<option>
<name>IlinkBufferedTerminalOutput</name>
<state>1</state>
</option>
<option>
<name>IlinkStdoutInterfaceSlave</name>
<state>1</state>
</option>
<option>
<name>CrcFullSize</name>
<state>0</state>
</option>
<option>
<name>IlinkIElfToolPostProcess</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>IARCHIVE</name>
<archiveVersion>0</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>IarchiveInputs</name>
<state></state>
</option>
<option>
<name>IarchiveOverride</name>
<state>0</state>
</option>
<option>
<name>IarchiveOutput</name>
<state>###Unitialized###</state>
</option>
</data>
</settings>
<settings>
<name>BILINK</name>
<archiveVersion>0</archiveVersion>
<data/>
</settings>
</configuration>
<configuration>
<name>Release</name>
<toolchain>
<name>ARM</name>
</toolchain>
<debug>0</debug>
<settings>
<name>General</name>
<archiveVersion>3</archiveVersion>
<data>
<version>17</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>ExePath</name>
<state>Release\Exe</state>
</option>
<option>
<name>ObjPath</name>
<state>Release\Obj</state>
</option>
<option>
<name>ListPath</name>
<state>Release\List</state>
</option>
<option>
<name>Variant</name>
<version>13</version>
<state>0</state>
</option>
<option>
<name>GEndianMode</name>
<state>0</state>
</option>
<option>
<name>Input variant</name>
<version>1</version>
<state>0</state>
</option>
<option>
<name>Input description</name>
<state></state>
</option>
<option>
<name>Output variant</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>Output description</name>
<state></state>
</option>
<option>
<name>GOutputBinary</name>
<state>0</state>
</option>
<option>
<name>FPU</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>OGCoreOrChip</name>
<state>0</state>
</option>
<option>
<name>GRuntimeLibSelect</name>
<version>0</version>
<state>1</state>
</option>
<option>
<name>GRuntimeLibSelectSlave</name>
<version>0</version>
<state>1</state>
</option>
<option>
<name>RTDescription</name>
<state></state>
</option>
<option>
<name>RTConfigPath</name>
<state>dl-stnl0.a</state>
</option>
<option>
<name>OGProductVersion</name>
<state>5.41.0.51757</state>
</option>
<option>
<name>OGLastSavedByProductVersion</name>
<state></state>
</option>
<option>
<name>GeneralEnableMisra</name>
<state>0</state>
</option>
<option>
<name>GeneralMisraVerbose</name>
<state>0</state>
</option>
<option>
<name>OGChipSelectEditMenu</name>
<state></state>
</option>
<option>
<name>GenLowLevelInterface</name>
<state>0</state>
</option>
<option>
<name>GEndianModeBE</name>
<state>0</state>
</option>
<option>
<name>OGBufferedTerminalOutput</name>
<state>0</state>
</option>
<option>
<name>GenStdoutInterface</name>
<state>0</state>
</option>
<option>
<name>GeneralMisraRules98</name>
<version>0</version>
<state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
</option>
<option>
<name>GeneralMisraVer</name>
<state>0</state>
</option>
<option>
<name>GeneralMisraRules04</name>
<version>0</version>
<state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
</option>
</data>
</settings>
<settings>
<name>ICCARM</name>
<archiveVersion>2</archiveVersion>
<data>
<version>21</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CCDefines</name>
<state>NDEBUG</state>
</option>
<option>
<name>CCPreprocFile</name>
<state>0</state>
</option>
<option>
<name>CCPreprocComments</name>
<state>0</state>
</option>
<option>
<name>CCPreprocLine</name>
<state>0</state>
</option>
<option>
<name>CCListCFile</name>
<state>0</state>
</option>
<option>
<name>CCListCMnemonics</name>
<state>0</state>
</option>
<option>
<name>CCListCMessages</name>
<state>0</state>
</option>
<option>
<name>CCListAssFile</name>
<state>0</state>
</option>
<option>
<name>CCListAssSource</name>
<state>0</state>
</option>
<option>
<name>CCEnableRemarks</name>
<state>0</state>
</option>
<option>
<name>CCDiagSuppress</name>
<state></state>
</option>
<option>
<name>CCDiagRemark</name>
<state></state>
</option>
<option>
<name>CCDiagWarning</name>
<state></state>
</option>
<option>
<name>CCDiagError</name>
<state></state>
</option>
<option>
<name>CCObjPrefix</name>
<state>1</state>
</option>
<option>
<name>CCAllowList</name>
<version>1</version>
<state>1111111</state>
</option>
<option>
<name>CCDebugInfo</name>
<state>0</state>
</option>
<option>
<name>IEndianMode</name>
<state>1</state>
</option>
<option>
<name>IProcessor</name>
<state>1</state>
</option>
<option>
<name>IExtraOptionsCheck</name>
<state>0</state>
</option>
<option>
<name>IExtraOptions</name>
<state></state>
</option>
<option>
<name>CCLangConformance</name>
<state>0</state>
</option>
<option>
<name>CCSignedPlainChar</name>
<state>1</state>
</option>
<option>
<name>CCRequirePrototypes</name>
<state>0</state>
</option>
<option>
<name>CCMultibyteSupport</name>
<state>0</state>
</option>
<option>
<name>CCDiagWarnAreErr</name>
<state>0</state>
</option>
<option>
<name>CCCompilerRuntimeInfo</name>
<state>0</state>
</option>
<option>
<name>IFpuProcessor</name>
<state>1</state>
</option>
<option>
<name>OutputFile</name>
<state></state>
</option>
<option>
<name>CCLangSelect</name>
<state>0</state>
</option>
<option>
<name>CCLibConfigHeader</name>
<state>1</state>
</option>
<option>
<name>PreInclude</name>
<state></state>
</option>
<option>
<name>CompilerMisraOverride</name>
<state>0</state>
</option>
<option>
<name>CCIncludePath2</name>
<state></state>
</option>
<option>
<name>CCStdIncCheck</name>
<state>0</state>
</option>
<option>
<name>CCStdIncludePath</name>
<state>###Uninitialized###</state>
</option>
<option>
<name>CCCodeSection</name>
<state>.text</state>
</option>
<option>
<name>IInterwork2</name>
<state>0</state>
</option>
<option>
<name>IProcessorMode2</name>
<state>1</state>
</option>
<option>
<name>CCOptLevel</name>
<state>3</state>
</option>
<option>
<name>CCOptStrategy</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CCOptLevelSlave</name>
<state>1</state>
</option>
<option>
<name>CompilerMisraRules98</name>
<version>0</version>
<state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
</option>
<option>
<name>CompilerMisraRules04</name>
<version>0</version>
<state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
</option>
</data>
</settings>
<settings>
<name>AARM</name>
<archiveVersion>2</archiveVersion>
<data>
<version>7</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>AObjPrefix</name>
<state>1</state>
</option>
<option>
<name>AEndian</name>
<state>1</state>
</option>
<option>
<name>ACaseSensitivity</name>
<state>1</state>
</option>
<option>
<name>MacroChars</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>AWarnEnable</name>
<state>0</state>
</option>
<option>
<name>AWarnWhat</name>
<state>0</state>
</option>
<option>
<name>AWarnOne</name>
<state></state>
</option>
<option>
<name>AWarnRange1</name>
<state></state>
</option>
<option>
<name>AWarnRange2</name>
<state></state>
</option>
<option>
<name>ADebug</name>
<state>0</state>
</option>
<option>
<name>AltRegisterNames</name>
<state>0</state>
</option>
<option>
<name>ADefines</name>
<state></state>
</option>
<option>
<name>AList</name>
<state>0</state>
</option>
<option>
<name>AListHeader</name>
<state>1</state>
</option>
<option>
<name>AListing</name>
<state>1</state>
</option>
<option>
<name>Includes</name>
<state>0</state>
</option>
<option>
<name>MacDefs</name>
<state>0</state>
</option>
<option>
<name>MacExps</name>
<state>1</state>
</option>
<option>
<name>MacExec</name>
<state>0</state>
</option>
<option>
<name>OnlyAssed</name>
<state>0</state>
</option>
<option>
<name>MultiLine</name>
<state>0</state>
</option>
<option>
<name>PageLengthCheck</name>
<state>0</state>
</option>
<option>
<name>PageLength</name>
<state>80</state>
</option>
<option>
<name>TabSpacing</name>
<state>8</state>
</option>
<option>
<name>AXRef</name>
<state>0</state>
</option>
<option>
<name>AXRefDefines</name>
<state>0</state>
</option>
<option>
<name>AXRefInternal</name>
<state>0</state>
</option>
<option>
<name>AXRefDual</name>
<state>0</state>
</option>
<option>
<name>AProcessor</name>
<state>1</state>
</option>
<option>
<name>AFpuProcessor</name>
<state>1</state>
</option>
<option>
<name>AOutputFile</name>
<state></state>
</option>
<option>
<name>AMultibyteSupport</name>
<state>0</state>
</option>
<option>
<name>ALimitErrorsCheck</name>
<state>0</state>
</option>
<option>
<name>ALimitErrorsEdit</name>
<state>100</state>
</option>
<option>
<name>AIgnoreStdInclude</name>
<state>0</state>
</option>
<option>
<name>AStdIncludes</name>
<state>$TOOLKIT_DIR$\INC\</state>
</option>
<option>
<name>AUserIncludes</name>
<state></state>
</option>
<option>
<name>AExtraOptionsCheckV2</name>
<state>0</state>
</option>
<option>
<name>AExtraOptionsV2</name>
<state></state>
</option>
</data>
</settings>
<settings>
<name>OBJCOPY</name>
<archiveVersion>0</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>OOCOutputFormat</name>
<version>2</version>
<state>0</state>
</option>
<option>
<name>OCOutputOverride</name>
<state>0</state>
</option>
<option>
<name>OOCOutputFile</name>
<state></state>
</option>
<option>
<name>OOCCommandLineProducer</name>
<state>1</state>
</option>
<option>
<name>OOCObjCopyEnable</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>CUSTOM</name>
<archiveVersion>3</archiveVersion>
<data>
<extensions></extensions>
<cmdline></cmdline>
</data>
</settings>
<settings>
<name>BICOMP</name>
<archiveVersion>0</archiveVersion>
<data/>
</settings>
<settings>
<name>BUILDACTION</name>
<archiveVersion>1</archiveVersion>
<data>
<prebuild></prebuild>
<postbuild></postbuild>
</data>
</settings>
<settings>
<name>ILINK</name>
<archiveVersion>0</archiveVersion>
<data>
<version>8</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>IlinkLibIOConfig</name>
<state>1</state>
</option>
<option>
<name>XLinkMisraHandler</name>
<state>0</state>
</option>
<option>
<name>IlinkInputFileSlave</name>
<state>0</state>
</option>
<option>
<name>IlinkOutputFile</name>
<state>###Unitialized###</state>
</option>
<option>
<name>IlinkDebugInfoEnable</name>
<state>1</state>
</option>
<option>
<name>IlinkKeepSymbols</name>
<state></state>
</option>
<option>
<name>IlinkRawBinaryFile</name>
<state></state>
</option>
<option>
<name>IlinkRawBinarySymbol</name>
<state></state>
</option>
<option>
<name>IlinkRawBinarySegment</name>
<state></state>
</option>
<option>
<name>IlinkRawBinaryAlign</name>
<state></state>
</option>
<option>
<name>IlinkDefines</name>
<state></state>
</option>
<option>
<name>IlinkConfigDefines</name>
<state></state>
</option>
<option>
<name>IlinkMapFile</name>
<state>0</state>
</option>
<option>
<name>IlinkLogFile</name>
<state>0</state>
</option>
<option>
<name>IlinkLogInitialization</name>
<state>0</state>
</option>
<option>
<name>IlinkLogModule</name>
<state>0</state>
</option>
<option>
<name>IlinkLogSection</name>
<state>0</state>
</option>
<option>
<name>IlinkLogVeneer</name>
<state>0</state>
</option>
<option>
<name>IlinkIcfOverride</name>
<state>0</state>
</option>
<option>
<name>IlinkIcfFile</name>
<state>lnk0t.icf</state>
</option>
<option>
<name>IlinkIcfFileSlave</name>
<state></state>
</option>
<option>
<name>IlinkEnableRemarks</name>
<state>0</state>
</option>
<option>
<name>IlinkSuppressDiags</name>
<state></state>
</option>
<option>
<name>IlinkTreatAsRem</name>
<state></state>
</option>
<option>
<name>IlinkTreatAsWarn</name>
<state></state>
</option>
<option>
<name>IlinkTreatAsErr</name>
<state></state>
</option>
<option>
<name>IlinkWarningsAreErrors</name>
<state>0</state>
</option>
<option>
<name>IlinkUseExtraOptions</name>
<state>0</state>
</option>
<option>
<name>IlinkExtraOptions</name>
<state></state>
</option>
<option>
<name>IlinkLowLevelInterfaceSlave</name>
<state>1</state>
</option>
<option>
<name>IlinkAutoLibEnable</name>
<state>1</state>
</option>
<option>
<name>IlinkAdditionalLibs</name>
<state></state>
</option>
<option>
<name>IlinkOverrideProgramEntryLabel</name>
<state>0</state>
</option>
<option>
<name>IlinkProgramEntryLabelSelect</name>
<state>0</state>
</option>
<option>
<name>IlinkProgramEntryLabel</name>
<state></state>
</option>
<option>
<name>DoFill</name>
<state>0</state>
</option>
<option>
<name>FillerByte</name>
<state>0xFF</state>
</option>
<option>
<name>FillerStart</name>
<state>0x0</state>
</option>
<option>
<name>FillerEnd</name>
<state>0x0</state>
</option>
<option>
<name>CrcSize</name>
<version>0</version>
<state>1</state>
</option>
<option>
<name>CrcAlign</name>
<state>1</state>
</option>
<option>
<name>CrcAlgo</name>
<state>1</state>
</option>
<option>
<name>CrcPoly</name>
<state>0x11021</state>
</option>
<option>
<name>CrcCompl</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CrcBitOrder</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CrcInitialValue</name>
<state>0x0</state>
</option>
<option>
<name>DoCrc</name>
<state>0</state>
</option>
<option>
<name>IlinkBE8Slave</name>
<state>1</state>
</option>
<option>
<name>IlinkBufferedTerminalOutput</name>
<state>1</state>
</option>
<option>
<name>IlinkStdoutInterfaceSlave</name>
<state>1</state>
</option>
<option>
<name>CrcFullSize</name>
<state>0</state>
</option>
<option>
<name>IlinkIElfToolPostProcess</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>IARCHIVE</name>
<archiveVersion>0</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>IarchiveInputs</name>
<state></state>
</option>
<option>
<name>IarchiveOverride</name>
<state>0</state>
</option>
<option>
<name>IarchiveOutput</name>
<state>###Unitialized###</state>
</option>
</data>
</settings>
<settings>
<name>BILINK</name>
<archiveVersion>0</archiveVersion>
<data/>
</settings>
</configuration>
<group>
<name>Demo</name>
<group>
<name>Common demo tasks</name>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\GenQTest.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\QPeek.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\recmutex.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\semtest.c</name>
</file>
</group>
<file>
<name>$PROJ_DIR$\lcdtest.c</name>
</file>
<file>
<name>$PROJ_DIR$\ledtest.c</name>
</file>
<file>
<name>$PROJ_DIR$\main.c</name>
</file>
<file>
<name>$PROJ_DIR$\ParTest.c</name>
</file>
</group>
<group>
<name>Energy Micro Code</name>
<group>
<name>bsp</name>
<file>
<name>$PROJ_DIR$\bsp\dvk.c</name>
</file>
<file>
<name>$PROJ_DIR$\bsp\dvk_boardcontrol.c</name>
</file>
<file>
<name>$PROJ_DIR$\bsp\dvk_ebi.c</name>
</file>
<file>
<name>$PROJ_DIR$\bsp\dvk_spi.c</name>
</file>
</group>
<group>
<name>CMSIS</name>
<file>
<name>$PROJ_DIR$\CMSIS\CM3\CoreSupport\core_cm3.c</name>
</file>
<file>
<name>$PROJ_DIR$\CMSIS\CM3\DeviceSupport\EnergyMicro\EFM32\system_efm32.c</name>
</file>
</group>
<file>
<name>$PROJ_DIR$\lcd\lcdcontroller.c</name>
</file>
</group>
<group>
<name>FreeRTOS source</name>
<group>
<name>Port layer</name>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\port.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\portasm.s</name>
</file>
</group>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\list.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\queue.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\tasks.c</name>
</file>
</group>
<file>
<name>$PROJ_DIR$\startup_efm32.s</name>
</file>
</project>
 
 
/lcdtest.h
0,0 → 1,14
#ifndef _LCDTEST_H
#define _LCDTEST_H
 
#include "FreeRTOS.h"
#include "task.h"
 
#include "lcdcontroller.h"
 
/*
* The task that writes to the LCD.
*/
void vLCDTask( void *pvParameters );
 
#endif
/ledtest.h
0,0 → 1,66
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). 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 exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
#ifndef LEDTEST_H
#define LEDTEST_H
 
#include "FreeRTOS.h"
#include "task.h"
#include "partest.h"
 
/*
* A task that writes to the LEDs.
*/
void vLEDTask( void *pvParamters );
 
#endif /* LEDTEST_H */
/RTOSDemo.ewd
0,0 → 1,1411
<?xml version="1.0" encoding="iso-8859-1"?>
 
<project>
<fileVersion>2</fileVersion>
<configuration>
<name>Debug</name>
<toolchain>
<name>ARM</name>
</toolchain>
<debug>1</debug>
<settings>
<name>C-SPY</name>
<archiveVersion>2</archiveVersion>
<data>
<version>21</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CInput</name>
<state>1</state>
</option>
<option>
<name>CEndian</name>
<state>1</state>
</option>
<option>
<name>CProcessor</name>
<state>1</state>
</option>
<option>
<name>OCVariant</name>
<state>0</state>
</option>
<option>
<name>MacOverride</name>
<state>0</state>
</option>
<option>
<name>MacFile</name>
<state></state>
</option>
<option>
<name>MemOverride</name>
<state>0</state>
</option>
<option>
<name>MemFile</name>
<state>$TOOLKIT_DIR$\CONFIG\debugger\EnergyMicro\EFM32G890F128.ddf</state>
</option>
<option>
<name>RunToEnable</name>
<state>1</state>
</option>
<option>
<name>RunToName</name>
<state>main</state>
</option>
<option>
<name>CExtraOptionsCheck</name>
<state>0</state>
</option>
<option>
<name>CExtraOptions</name>
<state></state>
</option>
<option>
<name>CFpuProcessor</name>
<state>1</state>
</option>
<option>
<name>OCDDFArgumentProducer</name>
<state></state>
</option>
<option>
<name>OCDownloadSuppressDownload</name>
<state>0</state>
</option>
<option>
<name>OCDownloadVerifyAll</name>
<state>0</state>
</option>
<option>
<name>OCProductVersion</name>
<state>5.41.2.51798</state>
</option>
<option>
<name>OCDynDriverList</name>
<state>JLINK_ID</state>
</option>
<option>
<name>OCLastSavedByProductVersion</name>
<state>5.41.2.51798</state>
</option>
<option>
<name>OCDownloadAttachToProgram</name>
<state>0</state>
</option>
<option>
<name>UseFlashLoader</name>
<state>1</state>
</option>
<option>
<name>CLowLevel</name>
<state>1</state>
</option>
<option>
<name>OCBE8Slave</name>
<state>1</state>
</option>
<option>
<name>MacFile2</name>
<state></state>
</option>
<option>
<name>CDevice</name>
<state>1</state>
</option>
<option>
<name>FlashLoadersV3</name>
<state>$TOOLKIT_DIR$\config\flashloader\EnergyMicro\FlashEFM32.board</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>OverrideDefFlashBoard</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>ARMSIM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>OCSimDriverInfo</name>
<state>1</state>
</option>
<option>
<name>OCSimEnablePSP</name>
<state>0</state>
</option>
<option>
<name>OCSimPspOverrideConfig</name>
<state>0</state>
</option>
<option>
<name>OCSimPspConfigFile</name>
<state></state>
</option>
</data>
</settings>
<settings>
<name>ANGEL_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CCAngelHeartbeat</name>
<state>1</state>
</option>
<option>
<name>CAngelCommunication</name>
<state>1</state>
</option>
<option>
<name>CAngelCommBaud</name>
<version>0</version>
<state>3</state>
</option>
<option>
<name>CAngelCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>ANGELTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoAngelLogfile</name>
<state>0</state>
</option>
<option>
<name>AngelLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>GDBSERVER_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>TCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoLogfile</name>
<state>0</state>
</option>
<option>
<name>LogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCJTagBreakpointRadio</name>
<state>0</state>
</option>
<option>
<name>CCJTagDoUpdateBreakpoints</name>
<state>0</state>
</option>
<option>
<name>CCJTagUpdateBreakpoints</name>
<state>main</state>
</option>
</data>
</settings>
<settings>
<name>IARROM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CRomLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRomLogFileEditB</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>CRomCommunication</name>
<state>0</state>
</option>
<option>
<name>CRomCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CRomCommBaud</name>
<version>0</version>
<state>7</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>JLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>10</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>JLinkSpeed</name>
<state>32</state>
</option>
<option>
<name>CCJLinkDoLogfile</name>
<state>0</state>
</option>
<option>
<name>CCJLinkLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCJLinkHWResetDelay</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>JLinkInitialSpeed</name>
<state>32</state>
</option>
<option>
<name>CCDoJlinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCScanChainNonARMDevices</name>
<state>0</state>
</option>
<option>
<name>CCJLinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCJLinkIRLength</name>
<state>0</state>
</option>
<option>
<name>CCJLinkCommRadio</name>
<state>0</state>
</option>
<option>
<name>CCJLinkTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>CCJLinkSpeedRadioV2</name>
<state>0</state>
</option>
<option>
<name>CCUSBDevice</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CCRDICatchReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchUndef</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchSWI</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchData</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchPrefetch</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchIRQ</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchFIQ</name>
<state>0</state>
</option>
<option>
<name>CCJLinkBreakpointRadio</name>
<state>0</state>
</option>
<option>
<name>CCJLinkDoUpdateBreakpoints</name>
<state>0</state>
</option>
<option>
<name>CCJLinkUpdateBreakpoints</name>
<state>main</state>
</option>
<option>
<name>CCJLinkInterfaceRadio</name>
<state>1</state>
</option>
<option>
<name>OCJLinkAttachSlave</name>
<state>1</state>
</option>
<option>
<name>CCJLinkResetList</name>
<version>2</version>
<state>7</state>
</option>
<option>
<name>CCJLinkInterfaceCmdLine</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>LMIFTDI_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>2</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>LmiftdiSpeed</name>
<state>500</state>
</option>
<option>
<name>CCLmiftdiDoLogfile</name>
<state>0</state>
</option>
<option>
<name>CCLmiftdiLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCLmiFtdiInterfaceRadio</name>
<state>0</state>
</option>
<option>
<name>CCLmiFtdiInterfaceCmdLine</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>MACRAIGOR_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>3</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>jtag</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>EmuSpeed</name>
<state>1</state>
</option>
<option>
<name>TCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoLogfile</name>
<state>0</state>
</option>
<option>
<name>LogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>DoEmuMultiTarget</name>
<state>0</state>
</option>
<option>
<name>EmuMultiTarget</name>
<state>0@ARM7TDMI</state>
</option>
<option>
<name>EmuHWReset</name>
<state>0</state>
</option>
<option>
<name>CEmuCommBaud</name>
<version>0</version>
<state>4</state>
</option>
<option>
<name>CEmuCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>jtago</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>UnusedAddr</name>
<state>0x00800000</state>
</option>
<option>
<name>CCMacraigorHWResetDelay</name>
<state></state>
</option>
<option>
<name>CCJTagBreakpointRadio</name>
<state>0</state>
</option>
<option>
<name>CCJTagDoUpdateBreakpoints</name>
<state>0</state>
</option>
<option>
<name>CCJTagUpdateBreakpoints</name>
<state>main</state>
</option>
<option>
<name>CCMacraigorInterfaceRadio</name>
<state>0</state>
</option>
<option>
<name>CCMacraigorInterfaceCmdLine</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>RDI_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CRDIDriverDll</name>
<state>###Uninitialized###</state>
</option>
<option>
<name>CRDILogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRDILogFileEdit</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCRDIHWReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchUndef</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchSWI</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchData</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchPrefetch</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchIRQ</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchFIQ</name>
<state>0</state>
</option>
<option>
<name>CCRDIUseETM</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>STLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>CCSTLinkInterfaceRadio</name>
<state>0</state>
</option>
<option>
<name>CCSTLinkInterfaceCmdLine</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>THIRDPARTY_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CThirdPartyDriverDll</name>
<state>###Uninitialized###</state>
</option>
<option>
<name>CThirdPartyLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CThirdPartyLogFileEditB</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<debuggerPlugins>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB5_Plugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.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>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
</debuggerPlugins>
</configuration>
<configuration>
<name>Release</name>
<toolchain>
<name>ARM</name>
</toolchain>
<debug>0</debug>
<settings>
<name>C-SPY</name>
<archiveVersion>2</archiveVersion>
<data>
<version>21</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CInput</name>
<state>1</state>
</option>
<option>
<name>CEndian</name>
<state>1</state>
</option>
<option>
<name>CProcessor</name>
<state>1</state>
</option>
<option>
<name>OCVariant</name>
<state>0</state>
</option>
<option>
<name>MacOverride</name>
<state>0</state>
</option>
<option>
<name>MacFile</name>
<state></state>
</option>
<option>
<name>MemOverride</name>
<state>0</state>
</option>
<option>
<name>MemFile</name>
<state></state>
</option>
<option>
<name>RunToEnable</name>
<state>1</state>
</option>
<option>
<name>RunToName</name>
<state>main</state>
</option>
<option>
<name>CExtraOptionsCheck</name>
<state>0</state>
</option>
<option>
<name>CExtraOptions</name>
<state></state>
</option>
<option>
<name>CFpuProcessor</name>
<state>1</state>
</option>
<option>
<name>OCDDFArgumentProducer</name>
<state></state>
</option>
<option>
<name>OCDownloadSuppressDownload</name>
<state>0</state>
</option>
<option>
<name>OCDownloadVerifyAll</name>
<state>0</state>
</option>
<option>
<name>OCProductVersion</name>
<state>5.41.2.51798</state>
</option>
<option>
<name>OCDynDriverList</name>
<state>ARMSIM_ID</state>
</option>
<option>
<name>OCLastSavedByProductVersion</name>
<state></state>
</option>
<option>
<name>OCDownloadAttachToProgram</name>
<state>0</state>
</option>
<option>
<name>UseFlashLoader</name>
<state>0</state>
</option>
<option>
<name>CLowLevel</name>
<state>1</state>
</option>
<option>
<name>OCBE8Slave</name>
<state>1</state>
</option>
<option>
<name>MacFile2</name>
<state></state>
</option>
<option>
<name>CDevice</name>
<state>1</state>
</option>
<option>
<name>FlashLoadersV3</name>
<state></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>OverrideDefFlashBoard</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>ARMSIM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>OCSimDriverInfo</name>
<state>1</state>
</option>
<option>
<name>OCSimEnablePSP</name>
<state>0</state>
</option>
<option>
<name>OCSimPspOverrideConfig</name>
<state>0</state>
</option>
<option>
<name>OCSimPspConfigFile</name>
<state></state>
</option>
</data>
</settings>
<settings>
<name>ANGEL_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CCAngelHeartbeat</name>
<state>1</state>
</option>
<option>
<name>CAngelCommunication</name>
<state>1</state>
</option>
<option>
<name>CAngelCommBaud</name>
<version>0</version>
<state>3</state>
</option>
<option>
<name>CAngelCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>ANGELTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoAngelLogfile</name>
<state>0</state>
</option>
<option>
<name>AngelLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>GDBSERVER_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>TCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoLogfile</name>
<state>0</state>
</option>
<option>
<name>LogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCJTagBreakpointRadio</name>
<state>0</state>
</option>
<option>
<name>CCJTagDoUpdateBreakpoints</name>
<state>0</state>
</option>
<option>
<name>CCJTagUpdateBreakpoints</name>
<state>main</state>
</option>
</data>
</settings>
<settings>
<name>IARROM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CRomLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRomLogFileEditB</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>CRomCommunication</name>
<state>0</state>
</option>
<option>
<name>CRomCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CRomCommBaud</name>
<version>0</version>
<state>7</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>JLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>10</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>JLinkSpeed</name>
<state>32</state>
</option>
<option>
<name>CCJLinkDoLogfile</name>
<state>0</state>
</option>
<option>
<name>CCJLinkLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCJLinkHWResetDelay</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>JLinkInitialSpeed</name>
<state>32</state>
</option>
<option>
<name>CCDoJlinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCScanChainNonARMDevices</name>
<state>0</state>
</option>
<option>
<name>CCJLinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCJLinkIRLength</name>
<state>0</state>
</option>
<option>
<name>CCJLinkCommRadio</name>
<state>0</state>
</option>
<option>
<name>CCJLinkTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>CCJLinkSpeedRadioV2</name>
<state>0</state>
</option>
<option>
<name>CCUSBDevice</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CCRDICatchReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchUndef</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchSWI</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchData</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchPrefetch</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchIRQ</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchFIQ</name>
<state>0</state>
</option>
<option>
<name>CCJLinkBreakpointRadio</name>
<state>0</state>
</option>
<option>
<name>CCJLinkDoUpdateBreakpoints</name>
<state>0</state>
</option>
<option>
<name>CCJLinkUpdateBreakpoints</name>
<state>main</state>
</option>
<option>
<name>CCJLinkInterfaceRadio</name>
<state>0</state>
</option>
<option>
<name>OCJLinkAttachSlave</name>
<state>1</state>
</option>
<option>
<name>CCJLinkResetList</name>
<version>2</version>
<state>5</state>
</option>
<option>
<name>CCJLinkInterfaceCmdLine</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>LMIFTDI_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>2</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>LmiftdiSpeed</name>
<state>500</state>
</option>
<option>
<name>CCLmiftdiDoLogfile</name>
<state>0</state>
</option>
<option>
<name>CCLmiftdiLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCLmiFtdiInterfaceRadio</name>
<state>0</state>
</option>
<option>
<name>CCLmiFtdiInterfaceCmdLine</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>MACRAIGOR_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>3</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>jtag</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>EmuSpeed</name>
<state>1</state>
</option>
<option>
<name>TCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoLogfile</name>
<state>0</state>
</option>
<option>
<name>LogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>DoEmuMultiTarget</name>
<state>0</state>
</option>
<option>
<name>EmuMultiTarget</name>
<state>0@ARM7TDMI</state>
</option>
<option>
<name>EmuHWReset</name>
<state>0</state>
</option>
<option>
<name>CEmuCommBaud</name>
<version>0</version>
<state>4</state>
</option>
<option>
<name>CEmuCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>jtago</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>UnusedAddr</name>
<state>0x00800000</state>
</option>
<option>
<name>CCMacraigorHWResetDelay</name>
<state></state>
</option>
<option>
<name>CCJTagBreakpointRadio</name>
<state>0</state>
</option>
<option>
<name>CCJTagDoUpdateBreakpoints</name>
<state>0</state>
</option>
<option>
<name>CCJTagUpdateBreakpoints</name>
<state>main</state>
</option>
<option>
<name>CCMacraigorInterfaceRadio</name>
<state>0</state>
</option>
<option>
<name>CCMacraigorInterfaceCmdLine</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>RDI_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CRDIDriverDll</name>
<state>###Uninitialized###</state>
</option>
<option>
<name>CRDILogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRDILogFileEdit</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCRDIHWReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchUndef</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchSWI</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchData</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchPrefetch</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchIRQ</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchFIQ</name>
<state>0</state>
</option>
<option>
<name>CCRDIUseETM</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>STLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>CCSTLinkInterfaceRadio</name>
<state>0</state>
</option>
<option>
<name>CCSTLinkInterfaceCmdLine</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>THIRDPARTY_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CThirdPartyDriverDll</name>
<state>###Uninitialized###</state>
</option>
<option>
<name>CThirdPartyLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CThirdPartyLogFileEditB</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<debuggerPlugins>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB5_Plugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.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>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
</debuggerPlugins>
</configuration>
</project>
 
 
/RTOSDemo.eww
0,0 → 1,10
<?xml version="1.0" encoding="iso-8859-1"?>
 
<workspace>
<project>
<path>$WS_DIR$\RTOSDemo.ewp</path>
</project>
<batchBuild/>
</workspace>
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.