Update to V4.3.0 as described in http://www.FreeRTOS.org/History.txt

This commit is contained in:
Richard Barry 2007-06-05 09:56:16 +00:00
parent 017740b75a
commit 623aa3675f
110 changed files with 680 additions and 606 deletions

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
@ -184,19 +184,11 @@
typedef void ( __interrupt __far *pxISR )(); typedef void ( __interrupt __far *pxISR )();
#endif #endif
#if __GNUC__ && (__AVR32_UC3A0256__ || \ #ifdef GCC_AVR32_PORT
__AVR32_UC3A0512__ || \
__AVR32_UC3A1128__ || \
__AVR32_UC3A1256__ || \
__AVR32_UC3A1512__)
#include "portmacro.h" #include "portmacro.h"
#endif #endif
#if __ICCAVR32__ && (__AT32UC3A0256__ || \ #ifdef IAR_AVR32_PORT
__AT32UC3A0512__ || \
__AT32UC3A1128__ || \
__AT32UC3A1256__ || \
__AT32UC3A1512__)
#include "portmacro.h" #include "portmacro.h"
#endif #endif

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
@ -43,7 +43,7 @@
* MACROS AND DEFINITIONS * MACROS AND DEFINITIONS
*----------------------------------------------------------*/ *----------------------------------------------------------*/
#define tskKERNEL_VERSION_NUMBER "V4.2.1" #define tskKERNEL_VERSION_NUMBER "V4.3.0"
/** /**
* task. h * task. h

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -13,7 +13,7 @@
*****************************************************************************/ *****************************************************************************/
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -13,7 +13,7 @@
*****************************************************************************/ *****************************************************************************/
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,266 +1,266 @@
/* /*
FreeRTOS V4.1.1 - Copyright (C) 2003-2006 Richard Barry. FreeRTOS V4.1.1 - Copyright (C) 2003-2006 Richard Barry.
MCF5235 Port - Copyright (C) 2006 Christian Walter. MCF5235 Port - Copyright (C) 2006 Christian Walter.
This file is part of the FreeRTOS distribution. This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify FreeRTOS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. (at your option) any later version.
FreeRTOS is distributed in the hope that it will be useful, FreeRTOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with FreeRTOS; if not, write to the Free Software along with FreeRTOS; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS, without being obliged to provide a combined work that includes FreeRTOS, without being obliged to provide
the source code for any proprietary components. See the licensing section the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception of http://www.FreeRTOS.org for full details of how and when the exception
can be applied. can be applied.
*************************************************************************** ***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation. port sections of the online documentation.
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
with commercial development and support options. with commercial development and support options.
*************************************************************************** ***************************************************************************
*/ */
#include <stdlib.h> #include <stdlib.h>
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "FreeRTOSConfig.h" #include "FreeRTOSConfig.h"
#include "task.h" #include "task.h"
/* ------------------------ Types ----------------------------------------- */ /* ------------------------ Types ----------------------------------------- */
typedef volatile unsigned long vuint32; typedef volatile unsigned long vuint32;
typedef volatile unsigned short vuint16; typedef volatile unsigned short vuint16;
typedef volatile unsigned char vuint8; typedef volatile unsigned char vuint8;
/* ------------------------ Defines --------------------------------------- */ /* ------------------------ Defines --------------------------------------- */
#define portVECTOR_TABLE __RAMVEC #define portVECTOR_TABLE __RAMVEC
#define portVECTOR_SYSCALL ( 32 + portTRAP_YIELD ) #define portVECTOR_SYSCALL ( 32 + portTRAP_YIELD )
#define portVECTOR_TIMER ( 64 + 36 ) #define portVECTOR_TIMER ( 64 + 36 )
#define MCF_PIT_PRESCALER 512UL #define MCF_PIT_PRESCALER 512UL
#define MCF_PIT_TIMER_TICKS ( FSYS_2 / MCF_PIT_PRESCALER ) #define MCF_PIT_TIMER_TICKS ( FSYS_2 / MCF_PIT_PRESCALER )
#define MCF_PIT_MODULUS_REGISTER(freq) ( MCF_PIT_TIMER_TICKS / ( freq ) - 1UL) #define MCF_PIT_MODULUS_REGISTER(freq) ( MCF_PIT_TIMER_TICKS / ( freq ) - 1UL)
#define MCF_PIT_PMR0 ( *( vuint16 * )( void * )( &__IPSBAR[ 0x150002 ] ) ) #define MCF_PIT_PMR0 ( *( vuint16 * )( void * )( &__IPSBAR[ 0x150002 ] ) )
#define MCF_PIT_PCSR0 ( *( vuint16 * )( void * )( &__IPSBAR[ 0x150000 ] ) ) #define MCF_PIT_PCSR0 ( *( vuint16 * )( void * )( &__IPSBAR[ 0x150000 ] ) )
#define MCF_PIT_PCSR_PRE(x) ( ( ( x ) & 0x000F ) << 8 ) #define MCF_PIT_PCSR_PRE(x) ( ( ( x ) & 0x000F ) << 8 )
#define MCF_PIT_PCSR_EN ( 0x0001 ) #define MCF_PIT_PCSR_EN ( 0x0001 )
#define MCF_PIT_PCSR_RLD ( 0x0002 ) #define MCF_PIT_PCSR_RLD ( 0x0002 )
#define MCF_PIT_PCSR_PIF ( 0x0004 ) #define MCF_PIT_PCSR_PIF ( 0x0004 )
#define MCF_PIT_PCSR_PIE ( 0x0008 ) #define MCF_PIT_PCSR_PIE ( 0x0008 )
#define MCF_PIT_PCSR_OVW ( 0x0010 ) #define MCF_PIT_PCSR_OVW ( 0x0010 )
#define MCF_INTC0_ICR36 ( *( vuint8 * )( void * )( &__IPSBAR[ 0x000C64 ] ) ) #define MCF_INTC0_ICR36 ( *( vuint8 * )( void * )( &__IPSBAR[ 0x000C64 ] ) )
#define MCF_INTC0_IMRH ( *( vuint32 * )( void * )( &__IPSBAR[ 0x000C08 ] ) ) #define MCF_INTC0_IMRH ( *( vuint32 * )( void * )( &__IPSBAR[ 0x000C08 ] ) )
#define MCF_INTC0_IMRH_INT_MASK36 ( 0x00000010 ) #define MCF_INTC0_IMRH_INT_MASK36 ( 0x00000010 )
#define MCF_INTC0_IMRH_MASKALL ( 0x00000001 ) #define MCF_INTC0_IMRH_MASKALL ( 0x00000001 )
#define MCF_INTC0_ICRn_IP(x) ( ( ( x ) & 0x07 ) << 0 ) #define MCF_INTC0_ICRn_IP(x) ( ( ( x ) & 0x07 ) << 0 )
#define MCF_INTC0_ICRn_IL(x) ( ( ( x ) & 0x07 ) << 3 ) #define MCF_INTC0_ICRn_IL(x) ( ( ( x ) & 0x07 ) << 3 )
#define portNO_CRITICAL_NESTING ( ( unsigned portLONG ) 0 ) #define portNO_CRITICAL_NESTING ( ( unsigned portLONG ) 0 )
#define portINITIAL_CRITICAL_NESTING ( ( unsigned portLONG ) 10 ) #define portINITIAL_CRITICAL_NESTING ( ( unsigned portLONG ) 10 )
/* ------------------------ Static variables ------------------------------ */ /* ------------------------ Static variables ------------------------------ */
volatile unsigned portLONG ulCriticalNesting = portINITIAL_CRITICAL_NESTING; volatile unsigned portLONG ulCriticalNesting = portINITIAL_CRITICAL_NESTING;
/* ------------------------ Static functions ------------------------------ */ /* ------------------------ Static functions ------------------------------ */
#if configUSE_PREEMPTION == 0 #if configUSE_PREEMPTION == 0
static void prvPortPreemptiveTick ( void ) __attribute__ ((interrupt_handler)); static void prvPortPreemptiveTick ( void ) __attribute__ ((interrupt_handler));
#else #else
static void prvPortPreemptiveTick ( void ); static void prvPortPreemptiveTick ( void );
#endif #endif
/* ------------------------ Start implementation -------------------------- */ /* ------------------------ Start implementation -------------------------- */
portSTACK_TYPE * portSTACK_TYPE *
pxPortInitialiseStack( portSTACK_TYPE * pxTopOfStack, pdTASK_CODE pxCode, pxPortInitialiseStack( portSTACK_TYPE * pxTopOfStack, pdTASK_CODE pxCode,
void *pvParameters ) void *pvParameters )
{ {
/* Place the parameter on the stack in the expected location. */ /* Place the parameter on the stack in the expected location. */
*pxTopOfStack = ( portSTACK_TYPE ) pvParameters; *pxTopOfStack = ( portSTACK_TYPE ) pvParameters;
pxTopOfStack--; pxTopOfStack--;
/* Place dummy return address on stack. Tasks should never terminate so /* Place dummy return address on stack. Tasks should never terminate so
* we can set this to anything. */ * we can set this to anything. */
*pxTopOfStack = ( portSTACK_TYPE ) 0; *pxTopOfStack = ( portSTACK_TYPE ) 0;
pxTopOfStack--; pxTopOfStack--;
/* Create a Motorola Coldfire exception stack frame. First comes the return /* Create a Motorola Coldfire exception stack frame. First comes the return
* address. */ * address. */
*pxTopOfStack = ( portSTACK_TYPE ) pxCode; *pxTopOfStack = ( portSTACK_TYPE ) pxCode;
pxTopOfStack--; pxTopOfStack--;
/* Format, fault-status, vector number for exception stack frame. Task /* Format, fault-status, vector number for exception stack frame. Task
* run in supervisor mode. */ * run in supervisor mode. */
*pxTopOfStack = 0x40002000UL | ( portVECTOR_SYSCALL + 32 ) << 18; *pxTopOfStack = 0x40002000UL | ( portVECTOR_SYSCALL + 32 ) << 18;
pxTopOfStack--; pxTopOfStack--;
/* Set the initial critical section nesting counter to zero. This value /* Set the initial critical section nesting counter to zero. This value
* is used to restore the value of ulCriticalNesting. */ * is used to restore the value of ulCriticalNesting. */
*pxTopOfStack = 0; *pxTopOfStack = 0;
*pxTopOfStack--; *pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xA6; /* A6 / FP */ *pxTopOfStack = ( portSTACK_TYPE ) 0xA6; /* A6 / FP */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xA5; /* A5 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xA5; /* A5 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xA4; /* A4 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xA4; /* A4 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xA3; /* A3 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xA3; /* A3 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xA2; /* A2 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xA2; /* A2 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xA1; /* A1 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xA1; /* A1 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xA0; /* A0 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xA0; /* A0 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD7; /* D7 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xD7; /* D7 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD6; /* D6 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xD6; /* D6 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD5; /* D5 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xD5; /* D5 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD4; /* D4 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xD4; /* D4 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD3; /* D3 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xD3; /* D3 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD2; /* D2 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xD2; /* D2 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD1; /* D1 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xD1; /* D1 */
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD0; /* D0 */ *pxTopOfStack = ( portSTACK_TYPE ) 0xD0; /* D0 */
return pxTopOfStack; return pxTopOfStack;
} }
/* /*
* Called by portYIELD() or taskYIELD() to manually force a context switch. * Called by portYIELD() or taskYIELD() to manually force a context switch.
*/ */
static void static void
prvPortYield( void ) prvPortYield( void )
{ {
asm volatile ( "move.w #0x2700, %sr\n\t" ); asm volatile ( "move.w #0x2700, %sr\n\t" );
#if _GCC_USES_FP == 1 #if _GCC_USES_FP == 1
asm volatile ( "unlk %fp\n\t" ); asm volatile ( "unlk %fp\n\t" );
#endif #endif
/* Perform the context switch. First save the context of the current task. */ /* Perform the context switch. First save the context of the current task. */
portSAVE_CONTEXT( ); portSAVE_CONTEXT( );
/* Find the highest priority task that is ready to run. */ /* Find the highest priority task that is ready to run. */
vTaskSwitchContext( ); vTaskSwitchContext( );
/* Restore the context of the new task. */ /* Restore the context of the new task. */
portRESTORE_CONTEXT( ); portRESTORE_CONTEXT( );
} }
#if configUSE_PREEMPTION == 0 #if configUSE_PREEMPTION == 0
/* /*
* The ISR used for the scheduler tick depends on whether the cooperative or * The ISR used for the scheduler tick depends on whether the cooperative or
* the preemptive scheduler is being used. * the preemptive scheduler is being used.
*/ */
static void static void
prvPortPreemptiveTick ( void ) prvPortPreemptiveTick ( void )
{ {
/* The cooperative scheduler requires a normal IRQ service routine to /* The cooperative scheduler requires a normal IRQ service routine to
* simply increment the system tick. * simply increment the system tick.
*/ */
vTaskIncrementTick( ); vTaskIncrementTick( );
MCF_PIT_PCSR0 |= MCF_PIT_PCSR_PIF; MCF_PIT_PCSR0 |= MCF_PIT_PCSR_PIF;
} }
#else #else
static void static void
prvPortPreemptiveTick( void ) prvPortPreemptiveTick( void )
{ {
asm volatile ( "move.w #0x2700, %sr\n\t" ); asm volatile ( "move.w #0x2700, %sr\n\t" );
#if _GCC_USES_FP == 1 #if _GCC_USES_FP == 1
asm volatile ( "unlk %fp\n\t" ); asm volatile ( "unlk %fp\n\t" );
#endif #endif
portSAVE_CONTEXT( ); portSAVE_CONTEXT( );
MCF_PIT_PCSR0 |= MCF_PIT_PCSR_PIF; MCF_PIT_PCSR0 |= MCF_PIT_PCSR_PIF;
vTaskIncrementTick( ); vTaskIncrementTick( );
vTaskSwitchContext( ); vTaskSwitchContext( );
portRESTORE_CONTEXT( ); portRESTORE_CONTEXT( );
} }
#endif #endif
void void
vPortEnterCritical() vPortEnterCritical()
{ {
/* FIXME: We should store the old IPL here - How are we supposed to do /* FIXME: We should store the old IPL here - How are we supposed to do
* this. * this.
*/ */
( void )portSET_IPL( portIPL_MAX ); ( void )portSET_IPL( portIPL_MAX );
/* Now interrupts are disabled ulCriticalNesting can be accessed /* Now interrupts are disabled ulCriticalNesting can be accessed
* directly. Increment ulCriticalNesting to keep a count of how many times * directly. Increment ulCriticalNesting to keep a count of how many times
* portENTER_CRITICAL() has been called. */ * portENTER_CRITICAL() has been called. */
ulCriticalNesting++; ulCriticalNesting++;
} }
void void
vPortExitCritical() vPortExitCritical()
{ {
if( ulCriticalNesting > portNO_CRITICAL_NESTING ) if( ulCriticalNesting > portNO_CRITICAL_NESTING )
{ {
/* Decrement the nesting count as we are leaving a critical section. */ /* Decrement the nesting count as we are leaving a critical section. */
ulCriticalNesting--; ulCriticalNesting--;
/* If the nesting level has reached zero then interrupts should be /* If the nesting level has reached zero then interrupts should be
re-enabled. */ re-enabled. */
if( ulCriticalNesting == portNO_CRITICAL_NESTING ) if( ulCriticalNesting == portNO_CRITICAL_NESTING )
{ {
( void )portSET_IPL( 0 ); ( void )portSET_IPL( 0 );
} }
} }
} }
portBASE_TYPE portBASE_TYPE
xPortStartScheduler( void ) xPortStartScheduler( void )
{ {
extern void ( *portVECTOR_TABLE[ ] ) ( ); extern void ( *portVECTOR_TABLE[ ] ) ( );
/* Add entry in vector table for yield system call. */ /* Add entry in vector table for yield system call. */
portVECTOR_TABLE[ portVECTOR_SYSCALL ] = prvPortYield; portVECTOR_TABLE[ portVECTOR_SYSCALL ] = prvPortYield;
/* Add entry in vector table for periodic timer. */ /* Add entry in vector table for periodic timer. */
portVECTOR_TABLE[ portVECTOR_TIMER ] = prvPortPreemptiveTick; portVECTOR_TABLE[ portVECTOR_TIMER ] = prvPortPreemptiveTick;
/* Configure the timer for the system clock. */ /* Configure the timer for the system clock. */
if ( configTICK_RATE_HZ > 0) if ( configTICK_RATE_HZ > 0)
{ {
/* Configure prescaler */ /* Configure prescaler */
MCF_PIT_PCSR0 = MCF_PIT_PCSR_PRE( 0x9 ) | MCF_PIT_PCSR_RLD | MCF_PIT_PCSR_OVW; MCF_PIT_PCSR0 = MCF_PIT_PCSR_PRE( 0x9 ) | MCF_PIT_PCSR_RLD | MCF_PIT_PCSR_OVW;
/* Initialize the periodic timer interrupt. */ /* Initialize the periodic timer interrupt. */
MCF_PIT_PMR0 = MCF_PIT_MODULUS_REGISTER( configTICK_RATE_HZ ); MCF_PIT_PMR0 = MCF_PIT_MODULUS_REGISTER( configTICK_RATE_HZ );
/* Configure interrupt priority and level and unmask interrupt. */ /* Configure interrupt priority and level and unmask interrupt. */
MCF_INTC0_ICR36 = MCF_INTC0_ICRn_IL( 0x1 ) | MCF_INTC0_ICRn_IP( 0x1 ); MCF_INTC0_ICR36 = MCF_INTC0_ICRn_IL( 0x1 ) | MCF_INTC0_ICRn_IP( 0x1 );
MCF_INTC0_IMRH &= ~( MCF_INTC0_IMRH_INT_MASK36 | MCF_INTC0_IMRH_MASKALL ); MCF_INTC0_IMRH &= ~( MCF_INTC0_IMRH_INT_MASK36 | MCF_INTC0_IMRH_MASKALL );
/* Enable interrupts */ /* Enable interrupts */
MCF_PIT_PCSR0 |= MCF_PIT_PCSR_PIE | MCF_PIT_PCSR_EN | MCF_PIT_PCSR_PIF; MCF_PIT_PCSR0 |= MCF_PIT_PCSR_PIE | MCF_PIT_PCSR_EN | MCF_PIT_PCSR_PIF;
} }
/* Restore the context of the first task that is going to run. */ /* Restore the context of the first task that is going to run. */
portRESTORE_CONTEXT( ); portRESTORE_CONTEXT( );
/* Should not get here. */ /* Should not get here. */
return pdTRUE; return pdTRUE;
} }
void void
vPortEndScheduler( void ) vPortEndScheduler( void )
{ {
} }

View File

@ -1,151 +1,151 @@
/* /*
FreeRTOS V4.1.1 - Copyright (C) 2003-2006 Richard Barry. FreeRTOS V4.1.1 - Copyright (C) 2003-2006 Richard Barry.
MCF5235 Port - Copyright (C) 2006 Christian Walter. MCF5235 Port - Copyright (C) 2006 Christian Walter.
This file is part of the FreeRTOS distribution. This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify FreeRTOS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. (at your option) any later version.
FreeRTOS is distributed in the hope that it will be useful, FreeRTOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with FreeRTOS; if not, write to the Free Software along with FreeRTOS; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS, without being obliged to provide a combined work that includes FreeRTOS, without being obliged to provide
the source code for any proprietary components. See the licensing section the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception of http://www.FreeRTOS.org for full details of how and when the exception
can be applied. can be applied.
*************************************************************************** ***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation. port sections of the online documentation.
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
with commercial development and support options. with commercial development and support options.
*************************************************************************** ***************************************************************************
*/ */
#ifndef PORTMACRO_H #ifndef PORTMACRO_H
#define PORTMACRO_H #define PORTMACRO_H
/* ------------------------ Data types for Coldfire ----------------------- */ /* ------------------------ Data types for Coldfire ----------------------- */
#define portCHAR char #define portCHAR char
#define portFLOAT float #define portFLOAT float
#define portDOUBLE double #define portDOUBLE double
#define portLONG long #define portLONG long
#define portSHORT short #define portSHORT short
#define portSTACK_TYPE unsigned int #define portSTACK_TYPE unsigned int
#define portBASE_TYPE int #define portBASE_TYPE int
#if( USE_16_BIT_TICKS == 1 ) #if( USE_16_BIT_TICKS == 1 )
typedef unsigned portSHORT portTickType; typedef unsigned portSHORT portTickType;
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffff
#endif #endif
/* ------------------------ Architecture specifics ------------------------ */ /* ------------------------ Architecture specifics ------------------------ */
#define portSTACK_GROWTH ( -1 ) #define portSTACK_GROWTH ( -1 )
#define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ ) #define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ )
#define portBYTE_ALIGNMENT 4 #define portBYTE_ALIGNMENT 4
#define portTRAP_YIELD 0 /* Trap 0 */ #define portTRAP_YIELD 0 /* Trap 0 */
#define portIPL_MAX 7 /* Only NMI interrupt 7 allowed. */ #define portIPL_MAX 7 /* Only NMI interrupt 7 allowed. */
/* ------------------------ FreeRTOS macros for port ---------------------- */ /* ------------------------ FreeRTOS macros for port ---------------------- */
/* /*
* This function must be called when the current state of the active task * This function must be called when the current state of the active task
* should be stored. It must be called immediately after exception * should be stored. It must be called immediately after exception
* processing from the CPU, i.e. there exists a Coldfire exception frame at * processing from the CPU, i.e. there exists a Coldfire exception frame at
* the current position in the stack. The function reserves space on * the current position in the stack. The function reserves space on
* the stack for the CPU registers and other task dependent values (e.g * the stack for the CPU registers and other task dependent values (e.g
* ulCriticalNesting) and updates the top of the stack in the TCB. * ulCriticalNesting) and updates the top of the stack in the TCB.
*/ */
#define portSAVE_CONTEXT() \ #define portSAVE_CONTEXT() \
asm volatile ( /* reserve space for task state. */ \ asm volatile ( /* reserve space for task state. */ \
"lea.l (-64, %sp), %sp\n\t" \ "lea.l (-64, %sp), %sp\n\t" \
/* push data register %d0-%d7/%a0-%a6 on stack. */ \ /* push data register %d0-%d7/%a0-%a6 on stack. */ \
"movem.l %d0-%d7/%a0-%a6, (%sp)\n\t" \ "movem.l %d0-%d7/%a0-%a6, (%sp)\n\t" \
/* push ulCriticalNesting counter on stack. */ \ /* push ulCriticalNesting counter on stack. */ \
"lea.l (60, %sp), %a0\n\t" \ "lea.l (60, %sp), %a0\n\t" \
"move.l ulCriticalNesting, (%a0)\n\t" \ "move.l ulCriticalNesting, (%a0)\n\t" \
/* set the new top of the stack in the TCB. */ \ /* set the new top of the stack in the TCB. */ \
"move.l pxCurrentTCB, %a0\n\t" \ "move.l pxCurrentTCB, %a0\n\t" \
"move.l %sp, (%a0)"); "move.l %sp, (%a0)");
/*. /*.
* This function restores the current active and continues its execution. * This function restores the current active and continues its execution.
* It loads the current TCB and restores the processor registers, the * It loads the current TCB and restores the processor registers, the
* task dependent values (e.g ulCriticalNesting). Finally execution * task dependent values (e.g ulCriticalNesting). Finally execution
* is continued by executing an rte instruction. * is continued by executing an rte instruction.
*/ */
#define portRESTORE_CONTEXT() \ #define portRESTORE_CONTEXT() \
asm volatile ( "move.l pxCurrentTCB, %sp\n\t" \ asm volatile ( "move.l pxCurrentTCB, %sp\n\t" \
"move.l (%sp), %sp\n\t" \ "move.l (%sp), %sp\n\t" \
/* stack pointer now points to the saved registers. */ \ /* stack pointer now points to the saved registers. */ \
"movem.l (%sp), %d0-%d7/%a0-%a6\n\t" \ "movem.l (%sp), %d0-%d7/%a0-%a6\n\t" \
/* restore ulCriticalNesting counter from stack. */ \ /* restore ulCriticalNesting counter from stack. */ \
"lea.l (%sp, 60), %sp\n\t" \ "lea.l (%sp, 60), %sp\n\t" \
"move.l (%sp)+, ulCriticalNesting\n\t" \ "move.l (%sp)+, ulCriticalNesting\n\t" \
/* stack pointer now points to exception frame. */ \ /* stack pointer now points to exception frame. */ \
"rte\n\t" ); "rte\n\t" );
#define portENTER_CRITICAL() \ #define portENTER_CRITICAL() \
vPortEnterCritical(); vPortEnterCritical();
#define portEXIT_CRITICAL() \ #define portEXIT_CRITICAL() \
vPortExitCritical(); vPortExitCritical();
#define portSET_IPL( xIPL ) \ #define portSET_IPL( xIPL ) \
asm_set_ipl( xIPL ) asm_set_ipl( xIPL )
#define portDISABLE_INTERRUPTS() \ #define portDISABLE_INTERRUPTS() \
do { ( void )portSET_IPL( portIPL_MAX ); } while( 0 ) do { ( void )portSET_IPL( portIPL_MAX ); } while( 0 )
#define portENABLE_INTERRUPTS() \ #define portENABLE_INTERRUPTS() \
do { ( void )portSET_IPL( 0 ); } while( 0 ) do { ( void )portSET_IPL( 0 ); } while( 0 )
#define portYIELD() \ #define portYIELD() \
asm volatile ( " trap %0\n\t" : : "i"(portTRAP_YIELD) ) asm volatile ( " trap %0\n\t" : : "i"(portTRAP_YIELD) )
#define portNOP() \ #define portNOP() \
asm volatile ( "nop\n\t" ) asm volatile ( "nop\n\t" )
#define portENTER_SWITCHING_ISR() \ #define portENTER_SWITCHING_ISR() \
asm volatile ( "move.w #0x2700, %sr" ); \ asm volatile ( "move.w #0x2700, %sr" ); \
/* Save the context of the interrupted task. */ \ /* Save the context of the interrupted task. */ \
portSAVE_CONTEXT( ); \ portSAVE_CONTEXT( ); \
{ {
#define portEXIT_SWITCHING_ISR( SwitchRequired ) \ #define portEXIT_SWITCHING_ISR( SwitchRequired ) \
/* If a switch is required we call vTaskSwitchContext(). */ \ /* If a switch is required we call vTaskSwitchContext(). */ \
if( SwitchRequired ) \ if( SwitchRequired ) \
{ \ { \
vTaskSwitchContext( ); \ vTaskSwitchContext( ); \
} \ } \
} \ } \
portRESTORE_CONTEXT( ); portRESTORE_CONTEXT( );
/* ------------------------ Function prototypes --------------------------- */ /* ------------------------ Function prototypes --------------------------- */
void vPortEnterCritical( void ); void vPortEnterCritical( void );
void vPortExitCritical( void ); void vPortExitCritical( void );
int asm_set_ipl( unsigned long int uiNewIPL ); int asm_set_ipl( unsigned long int uiNewIPL );
/* ------------------------ Compiler specifics ---------------------------- */ /* ------------------------ Compiler specifics ---------------------------- */
#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) \ #define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) \
void vFunction( void *pvParameters ) void vFunction( void *pvParameters )
#define portTASK_FUNCTION( vFunction, pvParameters ) \ #define portTASK_FUNCTION( vFunction, pvParameters ) \
void vFunction( void *pvParameters ) void vFunction( void *pvParameters )
#endif #endif

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
@ -191,10 +191,10 @@ extern void ( vStartFirstTask )( void );
/* Setup the FreeRTOS interrupt handler. Code copied from crt0.s. */ /* Setup the FreeRTOS interrupt handler. Code copied from crt0.s. */
asm volatile ( "la r6, r0, __FreeRTOS_interrupt_handler \n\t" \ asm volatile ( "la r6, r0, __FreeRTOS_interrupt_handler \n\t" \
"sw r6, r1, r0 \n\t" \ "sw r6, r1, r0 \n\t" \
"lhu r7, r1, r0 \n\t" \ "lhu r7, r1, r0 \n\t" \
"shi r7, r0, 0x12 \n\t" \ "shi r7, r0, 0x12 \n\t" \
"shi r6, r0, 0x16 " ); "shi r6, r0, 0x16 " );
/* Setup the hardware to generate the tick. Interrupts are disabled when /* Setup the hardware to generate the tick. Interrupts are disabled when
@ -281,10 +281,10 @@ unsigned portBASE_TYPE uxMask;
*/ */
void vTaskISRHandler( void ) void vTaskISRHandler( void )
{ {
static unsigned portLONG ulPending; static unsigned portLONG ulPending;
/* Which interrupts are pending? */ /* Which interrupts are pending? */
ulPending = XIntc_In32( ( XPAR_INTC_SINGLE_BASEADDR + XIN_IVR_OFFSET ) ); ulPending = XIntc_In32( ( XPAR_INTC_SINGLE_BASEADDR + XIN_IVR_OFFSET ) );
if( ulPending < XPAR_INTC_MAX_NUM_INTR_INPUTS ) if( ulPending < XPAR_INTC_MAX_NUM_INTR_INPUTS )
{ {
@ -294,19 +294,19 @@ static unsigned portLONG ulPending;
ulInterruptMask = ( unsigned portLONG ) 1 << ulPending; ulInterruptMask = ( unsigned portLONG ) 1 << ulPending;
/* Get the configuration data using the device ID */ /* Get the configuration data using the device ID */
pxConfig = &XIntc_ConfigTable[ ( unsigned portLONG ) XPAR_INTC_SINGLE_DEVICE_ID ]; pxConfig = &XIntc_ConfigTable[ ( unsigned portLONG ) XPAR_INTC_SINGLE_DEVICE_ID ];
pxTablePtr = &( pxConfig->HandlerTable[ ulPending ] ); pxTablePtr = &( pxConfig->HandlerTable[ ulPending ] );
if( pxConfig->AckBeforeService & ( ulInterruptMask ) ) if( pxConfig->AckBeforeService & ( ulInterruptMask ) )
{
XIntc_mAckIntr( pxConfig->BaseAddress, ulInterruptMask );
pxTablePtr->Handler( pxTablePtr->CallBackRef );
}
else
{ {
pxTablePtr->Handler( pxTablePtr->CallBackRef ); XIntc_mAckIntr( pxConfig->BaseAddress, ulInterruptMask );
XIntc_mAckIntr( pxConfig->BaseAddress, ulInterruptMask ); pxTablePtr->Handler( pxTablePtr->CallBackRef );
}
else
{
pxTablePtr->Handler( pxTablePtr->CallBackRef );
XIntc_mAckIntr( pxConfig->BaseAddress, ulInterruptMask );
} }
} }
} }

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
@ -19,13 +19,13 @@
A special exception to the GPL can be applied should you wish to distribute A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception of http://www.FreeRTOS.org for full details of how and when the exception
can be applied. can be applied.
*************************************************************************** ***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation. port sections of the online documentation.
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
@ -33,6 +33,12 @@
*************************************************************************** ***************************************************************************
*/ */
/*
Change from V4.2.1:
+ Introduced usage of configKERNEL_INTERRUPT_PRIORITY macro to set the
interrupt priority used by the kernel.
*/
/*----------------------------------------------------------- /*-----------------------------------------------------------
* Implementation of functions defined in portable.h for the ARM CM3 port. * Implementation of functions defined in portable.h for the ARM CM3 port.
@ -52,18 +58,24 @@
#define portNVIC_SYSTICK_INT 0x00000002 #define portNVIC_SYSTICK_INT 0x00000002
#define portNVIC_SYSTICK_ENABLE 0x00000001 #define portNVIC_SYSTICK_ENABLE 0x00000001
#define portNVIC_PENDSVSET 0x10000000 #define portNVIC_PENDSVSET 0x10000000
#define portNVIC_PENDSV_PRI 0x00ff0000 #define portNVIC_PENDSV_PRI ( ( ( unsigned portLONG ) configKERNEL_INTERRUPT_PRIORITY ) << 16 )
#define portNVIC_SVCALL_PRI 0xff000000 #define portNVIC_SYSTICK_PRI ( ( ( unsigned portLONG ) configKERNEL_INTERRUPT_PRIORITY ) << 24 )
#define portNVIC_SYSTICK_PRI 0xff000000
/* Constants required to set up the initial stack. */ /* Constants required to set up the initial stack. */
#define portINITIAL_XPSR ( 0x01000000 ) #define portINITIAL_XPSR ( 0x01000000 )
/* For backward compatibility, ensure configKERNEL_INTERRUPT_PRIORITY is
defined. The value zero should also ensure backward compatibility.
FreeRTOS.org versions prior to V4.3.0 did not include this definition. */
#ifndef configKERNEL_INTERRUPT_PRIORITY
#define configKERNEL_INTERRUPT_PRIORITY 255
#endif
/* Each task maintains its own interrupt status in the critical nesting /* Each task maintains its own interrupt status in the critical nesting
variable. */ variable. */
unsigned portBASE_TYPE uxCriticalNesting = 0xaaaaaaaa; unsigned portBASE_TYPE uxCriticalNesting = 0xaaaaaaaa;
/* /*
* Setup the timer to generate the tick interrupts. * Setup the timer to generate the tick interrupts.
*/ */
static void prvSetupTimerInterrupt( void ); static void prvSetupTimerInterrupt( void );
@ -76,8 +88,8 @@ extern void vSetPSP( unsigned long ulValue );
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* /*
* See header file for description. * See header file for description.
*/ */
portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters ) portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters )
{ {
@ -97,12 +109,12 @@ portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* /*
* See header file for description. * See header file for description.
*/ */
portBASE_TYPE xPortStartScheduler( void ) portBASE_TYPE xPortStartScheduler( void )
{ {
/* Make PendSV, CallSV and SysTick the lowest priority interrupts. */ /* Make PendSV and SysTick the lowest priority interrupts. */
*(portNVIC_SYSPRI2) |= portNVIC_PENDSV_PRI; *(portNVIC_SYSPRI2) |= portNVIC_PENDSV_PRI;
*(portNVIC_SYSPRI2) |= portNVIC_SYSTICK_PRI; *(portNVIC_SYSPRI2) |= portNVIC_SYSTICK_PRI;
@ -169,5 +181,21 @@ void prvSetupTimerInterrupt( void )
*(portNVIC_SYSTICK_LOAD) = configCPU_CLOCK_HZ / configTICK_RATE_HZ; *(portNVIC_SYSTICK_LOAD) = configCPU_CLOCK_HZ / configTICK_RATE_HZ;
*(portNVIC_SYSTICK_CTRL) = portNVIC_SYSTICK_CLK | portNVIC_SYSTICK_INT | portNVIC_SYSTICK_ENABLE; *(portNVIC_SYSTICK_CTRL) = portNVIC_SYSTICK_CLK | portNVIC_SYSTICK_INT | portNVIC_SYSTICK_ENABLE;
} }
/*-----------------------------------------------------------*/
void vPortSwitchContext( void )
{
vPortSetInterruptMask();
vTaskSwitchContext();
vPortClearInterruptMask();
}
/*-----------------------------------------------------------*/
void vPortIncrementTick( void )
{
vPortSetInterruptMask();
vTaskIncrementTick();
vPortClearInterruptMask();
}

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
@ -19,26 +19,42 @@
A special exception to the GPL can be applied should you wish to distribute A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception of http://www.FreeRTOS.org for full details of how and when the exception
can be applied. can be applied.
*************************************************************************** ***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation. port sections of the online documentation.
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
with commercial development and support options. with commercial development and support options.
*************************************************************************** ***************************************************************************
*/ */
/*
Change from V4.2.1:
+ Introduced usage of configKERNEL_INTERRUPT_PRIORITY macro to set the
interrupt priority used by the kernel.
*/
#include <FreeRTOSConfig.h> #include <FreeRTOSConfig.h>
/* For backward compatibility, ensure configKERNEL_INTERRUPT_PRIORITY is
defined. The value zero should also ensure backward compatibility.
FreeRTOS.org versions prior to V4.3.0 did not include this definition. */
#ifndef configKERNEL_INTERRUPT_PRIORITY
#define configKERNEL_INTERRUPT_PRIORITY 0
#endif
RSEG ICODE:CODE RSEG ICODE:CODE
EXTERN vPortYieldFromISR EXTERN vPortYieldFromISR
EXTERN vTaskSwitchContext EXTERN vPortSwitchContext
EXTERN vTaskIncrementTick EXTERN vPortIncrementTick
EXTERN uxCriticalNesting EXTERN uxCriticalNesting
EXTERN pxCurrentTCB EXTERN pxCurrentTCB
@ -46,16 +62,20 @@
PUBLIC vSetMSP PUBLIC vSetMSP
PUBLIC xPortPendSVHandler PUBLIC xPortPendSVHandler
PUBLIC xPortSysTickHandler PUBLIC xPortSysTickHandler
PUBLIC vPortSetInterruptMask
PUBLIC vPortClearInterruptMask
vSetPSP: vSetPSP:
msr psp, r0 msr psp, r0
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
vSetMSP vSetMSP
msr msp, r0 msr msp, r0
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
xPortPendSVHandler: xPortPendSVHandler:
@ -73,11 +93,9 @@ xPortPendSVHandler:
ldr r1, [r1] ldr r1, [r1]
str r0, [r1] str r0, [r1]
no_save: no_save:
ldr r0, =vTaskSwitchContext ldr r0, =vPortSwitchContext
push {r14} push {r14}
cpsid i
blx r0 blx r0
cpsie i
pop {r14} pop {r14}
/* Restore the context. */ /* Restore the context. */
@ -96,37 +114,61 @@ no_save:
bx r14 bx r14
sv_disable_interrupts: sv_disable_interrupts:
cpsid i mov r1, #configKERNEL_INTERRUPT_PRIORITY
msr basepri, R1
bx r14 bx r14
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
xPortSysTickHandler: xPortSysTickHandler:
/* Call the scheduler tick function. */ /* Call the scheduler tick function. */
ldr r0, =vTaskIncrementTick ldr r0, =vPortIncrementTick
push {r14} push {r14}
cpsid i
blx r0 blx r0
cpsie i pop {r14}
pop {r14}
/* If using preemption, also force a context switch. */ /* If using preemption, also force a context switch. */
#if configUSE_PREEMPTION == 1 #if configUSE_PREEMPTION == 1
push {r14} push {r14}
ldr r0, =vPortYieldFromISR ldr r0, =vPortYieldFromISR
blx r0 blx r0
pop {r14} pop {r14}
#endif #endif
/* Exit with interrupts in the correct state. */ /* Exit with interrupts in the correct state. */
ldr r2, =uxCriticalNesting ldr r2, =uxCriticalNesting
ldr r2, [r2] ldr r2, [r2]
cbnz r2, tick_disable_interrupts cbnz r2, tick_disable_interrupts
bx r14
tick_disable_interrupts:
cpsid i
bx r14 bx r14
END tick_disable_interrupts:
mov r1, #configKERNEL_INTERRUPT_PRIORITY
msr basepri, R1
bx r14
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
vPortSetInterruptMask:
push { r0 }
mov R0, #configKERNEL_INTERRUPT_PRIORITY
msr BASEPRI, R0
pop { R0 }
bx r14
/*-----------------------------------------------------------*/
vPortClearInterruptMask:
PUSH { r0 }
MOV R0, #0
MSR BASEPRI, R0
POP { R0 }
bx r14
/*-----------------------------------------------------------*/
END

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
@ -19,13 +19,13 @@
A special exception to the GPL can be applied should you wish to distribute A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception of http://www.FreeRTOS.org for full details of how and when the exception
can be applied. can be applied.
*************************************************************************** ***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation. port sections of the online documentation.
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
@ -33,12 +33,19 @@
*************************************************************************** ***************************************************************************
*/ */
/*
Change from V4.2.1:
+ Introduced usage of configKERNEL_INTERRUPT_PRIORITY macro to set the
interrupt priority used by the kernel.
*/
#ifndef PORTMACRO_H #ifndef PORTMACRO_H
#define PORTMACRO_H #define PORTMACRO_H
/*----------------------------------------------------------- /*-----------------------------------------------------------
* Port specific definitions. * Port specific definitions.
* *
* The settings in this file configure FreeRTOS correctly for the * The settings in this file configure FreeRTOS correctly for the
* given hardware and compiler. * given hardware and compiler.
@ -86,9 +93,11 @@ extern void vPortYieldFromISR( void );
extern void vPortEnableInterrupts( void ); extern void vPortEnableInterrupts( void );
extern void vPortEnterCritical( void ); extern void vPortEnterCritical( void );
extern void vPortExitCritical( void ); extern void vPortExitCritical( void );
extern void vPortSetInterruptMask( void );
extern void vPortClearInterruptMask( void );
#define portDISABLE_INTERRUPTS() __asm ( "cpsid i" ) #define portDISABLE_INTERRUPTS() vPortSetInterruptMask();
#define portENABLE_INTERRUPTS() __asm ( "cpsie i" ) #define portENABLE_INTERRUPTS() vPortClearInterruptMask();
#define portENTER_CRITICAL() vPortEnterCritical() #define portENTER_CRITICAL() vPortEnterCritical()
#define portEXIT_CRITICAL() vPortExitCritical() #define portEXIT_CRITICAL() vPortExitCritical()
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -100,5 +109,6 @@ extern void vPortExitCritical( void );
#define inline #define inline
#define portNOP() #define portNOP()
#endif /* PORTMACRO_H */ #endif /* PORTMACRO_H */

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,4 +1,4 @@
; FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. ; FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
; ;
; This file is part of the FreeRTOS.org distribution. ; This file is part of the FreeRTOS.org distribution.
; ;

View File

@ -13,7 +13,7 @@
*****************************************************************************/ *****************************************************************************/
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -13,7 +13,7 @@
*****************************************************************************/ *****************************************************************************/
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,4 +1,4 @@
; FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. ; FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
; ;
; This file is part of the FreeRTOS.org distribution. ; This file is part of the FreeRTOS.org distribution.
; ;

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,4 +1,4 @@
; FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. ; FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
; ;
; This file is part of the FreeRTOS.org distribution. ; This file is part of the FreeRTOS.org distribution.
; ;

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS distribution. This file is part of the FreeRTOS distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS distribution. This file is part of the FreeRTOS distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS distribution. This file is part of the FreeRTOS distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS distribution. This file is part of the FreeRTOS distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
@ -573,7 +573,7 @@ static void prvTickISR( void )
save the context with interrupts enabled. */ save the context with interrupts enabled. */
portSAVE_CONTEXT( portGLOBAL_INTERRUPT_FLAG ); portSAVE_CONTEXT( portGLOBAL_INTERRUPT_FLAG );
PIR1bits.CCP1IF = 0; PIR1bits.CCP1IF = 0;
/* Maintain the tick count. */ /* Maintain the tick count. */
vTaskIncrementTick(); vTaskIncrementTick();

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
@ -33,6 +33,12 @@
*************************************************************************** ***************************************************************************
*/ */
/*
Changes from V4.2.1
+ Introduced the configKERNEL_INTERRUPT_PRIORITY definition.
*/
/*----------------------------------------------------------- /*-----------------------------------------------------------
* Implementation of functions defined in portable.h for the PIC24 port. * Implementation of functions defined in portable.h for the PIC24 port.
*----------------------------------------------------------*/ *----------------------------------------------------------*/
@ -46,12 +52,22 @@
#define portTIMER_PRESCALE 8 #define portTIMER_PRESCALE 8
#define portINITIAL_SR 0 #define portINITIAL_SR 0
/* Defined for backward compatability with project created prior to
FreeRTOS.org V4.3.0. */
#ifndef configKERNEL_INTERRUPT_PRIORITY
#define configKERNEL_INTERRUPT_PRIORITY 1
#endif
/* The program counter is only 23 bits. */ /* The program counter is only 23 bits. */
#define portUNUSED_PR_BITS 0x7f #define portUNUSED_PR_BITS 0x7f
/* Records the nesting depth of calls to portENTER_CRITICAL(). */ /* Records the nesting depth of calls to portENTER_CRITICAL(). */
unsigned portBASE_TYPE uxCriticalNesting = 0xef; unsigned portBASE_TYPE uxCriticalNesting = 0xef;
#if configKERNEL_INTERRUPT_PRIORITY != 1
#error If configKERNEL_INTERRUPT_PRIORITY is not 1 then the #32 in the following macros needs changing to equal the portINTERRUPT_BITS value, which is ( configKERNEL_INTERRUPT_PRIORITY << 5 )
#endif
#ifdef MPLAB_PIC24_PORT #ifdef MPLAB_PIC24_PORT
#define portRESTORE_CONTEXT() \ #define portRESTORE_CONTEXT() \
@ -77,7 +93,7 @@ unsigned portBASE_TYPE uxCriticalNesting = 0xef;
#define portSAVE_CONTEXT() \ #define portSAVE_CONTEXT() \
asm volatile( "PUSH SR \n" /* Save the SR used by the task.... */ \ asm volatile( "PUSH SR \n" /* Save the SR used by the task.... */ \
"PUSH W0 \n" /* ....then disable interrupts. */ \ "PUSH W0 \n" /* ....then disable interrupts. */ \
"MOV #224, W0 \n" \ "MOV #32, W0 \n" \
"MOV W0, SR \n" \ "MOV W0, SR \n" \
"PUSH W1 \n" /* Save registers to the stack. */ \ "PUSH W1 \n" /* Save registers to the stack. */ \
"PUSH.D W2 \n" \ "PUSH.D W2 \n" \
@ -134,7 +150,7 @@ unsigned portBASE_TYPE uxCriticalNesting = 0xef;
#define portSAVE_CONTEXT() \ #define portSAVE_CONTEXT() \
asm volatile( "PUSH SR \n" /* Save the SR used by the task.... */ \ asm volatile( "PUSH SR \n" /* Save the SR used by the task.... */ \
"PUSH W0 \n" /* ....then disable interrupts. */ \ "PUSH W0 \n" /* ....then disable interrupts. */ \
"MOV #224, W0 \n" \ "MOV #32, W0 \n" \
"MOV W0, SR \n" \ "MOV W0, SR \n" \
"PUSH W1 \n" /* Save registers to the stack. */ \ "PUSH W1 \n" /* Save registers to the stack. */ \
"PUSH.D W2 \n" \ "PUSH.D W2 \n" \
@ -305,7 +321,7 @@ const unsigned portLONG ulCompareMatch = ( configCPU_CLOCK_HZ / portTIMER_PRESCA
PR1 = ( unsigned portSHORT ) ulCompareMatch; PR1 = ( unsigned portSHORT ) ulCompareMatch;
/* Setup timer 1 interrupt priority. */ /* Setup timer 1 interrupt priority. */
IPC0bits.T1IP = portKERNEL_INTERRUPT_PRIORITY; IPC0bits.T1IP = configKERNEL_INTERRUPT_PRIORITY;
/* Clear the interrupt as a starting condition. */ /* Clear the interrupt as a starting condition. */
IFS0bits.T1IF = 0; IFS0bits.T1IF = 0;
@ -339,7 +355,7 @@ void vPortExitCritical( void )
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
void __attribute__((__interrupt__)) _T1Interrupt( void ) void __attribute__((__interrupt__, auto_psv)) _T1Interrupt( void )
{ {
vTaskIncrementTick(); vTaskIncrementTick();

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
@ -68,12 +68,12 @@
#define portBYTE_ALIGNMENT 2 #define portBYTE_ALIGNMENT 2
#define portSTACK_GROWTH 1 #define portSTACK_GROWTH 1
#define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ ) #define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ )
#define portKERNEL_INTERRUPT_PRIORITY 0x01
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* Critical section management. */ /* Critical section management. */
#define portINTERRUPT_BITS ( 0x00e0 ) #define portINTERRUPT_BITS ( ( unsigned portSHORT ) configKERNEL_INTERRUPT_PRIORITY << ( unsigned portSHORT ) 5 )
#define portDISABLE_INTERRUPTS() SR |= portINTERRUPT_BITS
#define portDISABLE_INTERRUPTS() SR |= portINTERRUPT_BITS
#define portENABLE_INTERRUPTS() SR &= ~portINTERRUPT_BITS #define portENABLE_INTERRUPTS() SR &= ~portINTERRUPT_BITS
/* Note that exiting a critical sectino will set the IPL bits to 0, nomatter /* Note that exiting a critical sectino will set the IPL bits to 0, nomatter

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

View File

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V4.2.1 - Copyright (C) 2003-2007 Richard Barry. FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

Some files were not shown because too many files have changed in this diff Show More