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> |
|
|