FreeRTOS Source files:

+ Updated all ARM Cortex-M0 ports to include an additional ISB instruction as the scheduler is started.

Demo app files:
+ Fixex build issues in XMC1000 demos.
This commit is contained in:
Richard Barry
2015-11-22 22:03:00 +00:00
parent fa86d4eece
commit 94dd3f871b
11 changed files with 742 additions and 176 deletions

View File

@ -0,0 +1,84 @@
/******************************************************************************
* @file system_XMC1100.h
* @brief Device specific initialization for the XMC1300-Series according
* to CMSIS
* @version V1.2
* @date 19 Jul 2013
*
* @note
* Copyright (C) 2012-2013 Infineon Technologies AG. All rights reserved.
*
* @par
* Infineon Technologies AG (Infineon) is supplying this software for use with
* Infineon<6F>s microcontrollers.
*
* This file can be freely distributed within development tools that are
* supporting such microcontrollers.
*
*
* @par
* 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.
* INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL,
* OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
*
******************************************************************************/
/*
* *************************** Change history *********************************
* V1.1, 13 Dec 2012, PKB, Created this table, added extern and stdint
* V1.2, 19 Jul 2013, PKB, Added header guard, BootROM header, C++ support
*/
#ifndef SYSTEM_XMC1100_H
#define SYSTEM_XMC1100_H
/*******************************************************************************
* HEADER FILES
*******************************************************************************/
#include <stdint.h>
/*******************************************************************************
* GLOBAL VARIABLES
*******************************************************************************/
extern uint32_t SystemCoreClock;
/*******************************************************************************
* API PROTOTYPES
*******************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Initialize the system
*
*/
void SystemInit(void);
/**
* @brief Initialize CPU settings
*
*/
void SystemCoreSetup(void);
/**
* @brief Initialize clock
*
*/
void SystemCoreClockSetup(void);
/**
* @brief Update SystemCoreClock variable
*
*/
void SystemCoreClockUpdate(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -0,0 +1,84 @@
/******************************************************************************
* @file system_XMC1200.h
* @brief Device specific initialization for the XMC1300-Series according
* to CMSIS
* @version V1.2
* @date 19 Jul 2013
*
* @note
* Copyright (C) 2012-2013 Infineon Technologies AG. All rights reserved.
*
* @par
* Infineon Technologies AG (Infineon) is supplying this software for use with
* Infineon<6F>s microcontrollers.
*
* This file can be freely distributed within development tools that are
* supporting such microcontrollers.
*
*
* @par
* 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.
* INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL,
* OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
*
******************************************************************************/
/*
* *************************** Change history *********************************
* V1.1, 13 Dec 2012, PKB, Created this table, added extern and stdint
* V1.2, 19 Jul 2013, PKB, Added header guard, BootROM header, C++ support
*/
#ifndef SYSTEM_XMC1200_H
#define SYSTEM_XMC1200_H
/*******************************************************************************
* HEADER FILES
*******************************************************************************/
#include <stdint.h>
/*******************************************************************************
* GLOBAL VARIABLES
*******************************************************************************/
extern uint32_t SystemCoreClock;
/*******************************************************************************
* API PROTOTYPES
*******************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Initialize the system
*
*/
void SystemInit(void);
/**
* @brief Initialize CPU settings
*
*/
void SystemCoreSetup(void);
/**
* @brief Initialize clock
*
*/
void SystemCoreClockSetup(void);
/**
* @brief Update SystemCoreClock variable
*
*/
void SystemCoreClockUpdate(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -0,0 +1,84 @@
/******************************************************************************
* @file system_XMC1300.h
* @brief Device specific initialization for the XMC1300-Series according
* to CMSIS
* @version V1.2
* @date 19 Jul 2013
*
* @note
* Copyright (C) 2012-2013 Infineon Technologies AG. All rights reserved.
*
* @par
* Infineon Technologies AG (Infineon) is supplying this software for use with
* Infineon<6F>s microcontrollers.
*
* This file can be freely distributed within development tools that are
* supporting such microcontrollers.
*
*
* @par
* 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.
* INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL,
* OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
*
******************************************************************************/
/*
* *************************** Change history *********************************
* V1.1, 13 Dec 2012, PKB, Created this table, added extern and stdint
* V1.2, 19 Jul 2013, PKB, Added header guard, BootROM header, C++ support
*/
#ifndef SYSTEM_XMC1300_H
#define SYSTEM_XMC1300_H
/*******************************************************************************
* HEADER FILES
*******************************************************************************/
#include <stdint.h>
/*******************************************************************************
* GLOBAL VARIABLES
*******************************************************************************/
extern uint32_t SystemCoreClock;
/*******************************************************************************
* API PROTOTYPES
*******************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Initialize the system
*
*/
void SystemInit(void);
/**
* @brief Initialize CPU settings
*
*/
void SystemCoreSetup(void);
/**
* @brief Initialize clock
*
*/
void SystemCoreClockSetup(void);
/**
* @brief Update SystemCoreClock variable
*
*/
void SystemCoreClockUpdate(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -29,7 +29,7 @@
</option>
<option>
<name>Variant</name>
<version>20</version>
<version>21</version>
<state>34</state>
</option>
<option>
@ -60,7 +60,7 @@
</option>
<option>
<name>FPU</name>
<version>2</version>
<version>4</version>
<state>0</state>
</option>
<option>
@ -87,7 +87,7 @@
</option>
<option>
<name>OGLastSavedByProductVersion</name>
<state>6.60.1.5099</state>
<state>7.40.1.8463</state>
</option>
<option>
<name>GeneralEnableMisra</name>
@ -99,7 +99,7 @@
</option>
<option>
<name>OGChipSelectEditMenu</name>
<state>xmc1200 Infineon xmc1200</state>
<state>XMC1200-T038x0200 Infineon XMC1200-T038x0200</state>
</option>
<option>
<name>GenLowLevelInterface</name>
@ -137,12 +137,12 @@
</option>
<option>
<name>GFPUCoreSlave</name>
<version>20</version>
<version>21</version>
<state>34</state>
</option>
<option>
<name>GBECoreSlave</name>
<version>20</version>
<version>21</version>
<state>34</state>
</option>
<option>
@ -163,7 +163,7 @@
<name>ICCARM</name>
<archiveVersion>2</archiveVersion>
<data>
<version>29</version>
<version>31</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -229,7 +229,7 @@
<option>
<name>CCAllowList</name>
<version>1</version>
<state>0000000</state>
<state>00000000</state>
</option>
<option>
<name>CCDebugInfo</name>
@ -403,6 +403,15 @@
<name>CCNoLiteralPool</name>
<state>0</state>
</option>
<option>
<name>CCOptStrategySlave</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CCGuardCalls</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
@ -607,6 +616,7 @@
<data>
<extensions></extensions>
<cmdline></cmdline>
<hasPrio>0</hasPrio>
</data>
</settings>
<settings>
@ -966,7 +976,7 @@
</option>
<option>
<name>Variant</name>
<version>20</version>
<version>21</version>
<state>34</state>
</option>
<option>
@ -997,7 +1007,7 @@
</option>
<option>
<name>FPU</name>
<version>2</version>
<version>4</version>
<state>0</state>
</option>
<option>
@ -1024,7 +1034,7 @@
</option>
<option>
<name>OGLastSavedByProductVersion</name>
<state>6.60.1.5099</state>
<state>7.40.1.8463</state>
</option>
<option>
<name>GeneralEnableMisra</name>
@ -1036,7 +1046,7 @@
</option>
<option>
<name>OGChipSelectEditMenu</name>
<state>xmc1100 Infineon xmc1100</state>
<state>XMC1100-T038x0064 Infineon XMC1100-T038x0064</state>
</option>
<option>
<name>GenLowLevelInterface</name>
@ -1074,12 +1084,12 @@
</option>
<option>
<name>GFPUCoreSlave</name>
<version>20</version>
<version>21</version>
<state>34</state>
</option>
<option>
<name>GBECoreSlave</name>
<version>20</version>
<version>21</version>
<state>34</state>
</option>
<option>
@ -1100,7 +1110,7 @@
<name>ICCARM</name>
<archiveVersion>2</archiveVersion>
<data>
<version>29</version>
<version>31</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -1166,7 +1176,7 @@
<option>
<name>CCAllowList</name>
<version>1</version>
<state>0000000</state>
<state>00000000</state>
</option>
<option>
<name>CCDebugInfo</name>
@ -1340,6 +1350,15 @@
<name>CCNoLiteralPool</name>
<state>0</state>
</option>
<option>
<name>CCOptStrategySlave</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CCGuardCalls</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
@ -1544,6 +1563,7 @@
<data>
<extensions></extensions>
<cmdline></cmdline>
<hasPrio>0</hasPrio>
</data>
</settings>
<settings>
@ -1903,7 +1923,7 @@
</option>
<option>
<name>Variant</name>
<version>20</version>
<version>21</version>
<state>34</state>
</option>
<option>
@ -1934,7 +1954,7 @@
</option>
<option>
<name>FPU</name>
<version>2</version>
<version>4</version>
<state>0</state>
</option>
<option>
@ -2011,12 +2031,12 @@
</option>
<option>
<name>GFPUCoreSlave</name>
<version>20</version>
<version>21</version>
<state>34</state>
</option>
<option>
<name>GBECoreSlave</name>
<version>20</version>
<version>21</version>
<state>34</state>
</option>
<option>
@ -2037,7 +2057,7 @@
<name>ICCARM</name>
<archiveVersion>2</archiveVersion>
<data>
<version>29</version>
<version>31</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -2103,7 +2123,7 @@
<option>
<name>CCAllowList</name>
<version>1</version>
<state>0000000</state>
<state>00000000</state>
</option>
<option>
<name>CCDebugInfo</name>
@ -2277,6 +2297,15 @@
<name>CCNoLiteralPool</name>
<state>0</state>
</option>
<option>
<name>CCOptStrategySlave</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CCGuardCalls</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
@ -2481,6 +2510,7 @@
<data>
<extensions></extensions>
<cmdline></cmdline>
<hasPrio>0</hasPrio>
</data>
</settings>
<settings>

View File

@ -3,7 +3,7 @@
<Workspace>
<ConfigDictionary>
<CurrentConfigs><Project>RTOSDemo/XMC1200 Boot Kit</Project></CurrentConfigs></ConfigDictionary>
<CurrentConfigs><Project>RTOSDemo/XMC1300 Boot Kit</Project></CurrentConfigs></ConfigDictionary>
<Desktop>
<Static>
<Workspace>
@ -25,7 +25,7 @@
<Windows>
<Wnd0>
<Wnd1>
<Tabs>
<Tab>
<Identity>TabID-23707-15152</Identity>
@ -33,11 +33,11 @@
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/System</ExpandedNode></NodeDict></Session>
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd0><Wnd1>
<SelectedTab>0</SelectedTab></Wnd1><Wnd4>
<Tabs>
<Tab>
<Identity>TabID-19002-15240</Identity>
@ -47,20 +47,20 @@
</Tab>
<Tab><Identity>TabID-13685-21727</Identity><TabName>Debug Log</TabName><Factory>Debug-Log</Factory><Session/></Tab></Tabs>
<SelectedTab>0</SelectedTab></Wnd1></Windows>
<SelectedTab>0</SelectedTab></Wnd4></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>56</YPos2><SelStart2>5553</SelStart2><SelEnd2>5553</SelEnd2></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>65</YPos2><SelStart2>5553</SelStart2><SelEnd2>5553</SelEnd2></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-01348f68><key>iaridepm.enu1</key></Toolbar-01348f68></Sizes></Row0></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>740</Bottom><Right>435</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>260119</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>
<Top><Row0><Sizes><Toolbar-0128A6F8><key>iaridepm.enu1</key></Toolbar-0128A6F8></Sizes></Row0></Top><Left><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>742</Bottom><Right>435</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>260119</sizeVertCX><sizeVertCY>756098</sizeVertCY></Rect></Wnd1></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd4><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>203252</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd4></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Workspace>

View File

@ -183,6 +183,7 @@ void vPortStartFirstTask( void )
" msr psp, r0 \n" /* This is now the new top of stack to use in the task. */
" movs r0, #2 \n" /* Switch to the psp stack. */
" msr CONTROL, r0 \n"
" isb \n"
" pop {r0-r5} \n" /* Pop the registers that are saved automatically. */
" mov lr, r5 \n" /* lr is now in r5. */
" cpsie i \n" /* The first task has its context and interrupts can be enabled. */

View File

@ -149,6 +149,7 @@ vPortStartFirstTask
msr psp, r0 /* This is now the new top of stack to use in the task. */
movs r0, #2 /* Switch to the psp stack. */
msr CONTROL, r0
isb
pop {r0-r5} /* Pop the registers that are saved automatically. */
mov lr, r5 /* lr is now in r5. */
cpsie i /* The first task has its context and interrupts can be enabled. */

View File

@ -181,6 +181,7 @@ __asm void prvPortStartFirstTask( void )
msr psp, r0 /* This is now the new top of stack to use in the task. */
movs r0, #2 /* Switch to the psp stack. */
msr CONTROL, r0
isb
pop {r0-r5} /* Pop the registers that are saved automatically. */
mov lr, r5 /* lr is now in r5. */
cpsie i /* The first task has its context and interrupts can be enabled. */