portmacro.h File Reference


Detailed Description

FreeRTOS port header for AVR32 UC3.

Author:
Atmel Corporation: http://www.atmel.com
Support and FAQ: http://support.atmel.no/

Definition in file GCC/AVR32_UC3/portmacro.h.

#include <avr32/io.h>
#include "intc.h"
#include "compiler.h"

Go to the source code of this file.

Defines

#define configTICK_TC_IRQ   ATPASTE2(AVR32_TC_IRQ, configTICK_TC_CHANNEL)
#define DISABLE_ALL_EXCEPTIONS()   Disable_global_exception()
#define DISABLE_ALL_INTERRUPTS()   Disable_global_interrupt()
#define DISABLE_INT_LEVEL(int_level)   Disable_interrupt_level(int_level)
#define ENABLE_ALL_EXCEPTIONS()   Enable_global_exception()
#define ENABLE_ALL_INTERRUPTS()   Enable_global_interrupt()
#define ENABLE_INT_LEVEL(int_level)   Enable_interrupt_level(int_level)
#define portBASE_TYPE   portLONG
#define portBYTE_ALIGNMENT   4
#define portCHAR   char
#define portDBG_TRACE(...)
#define portDISABLE_INTERRUPTS()   DISABLE_ALL_INTERRUPTS()
#define portDOUBLE   double
#define portENABLE_INTERRUPTS()   ENABLE_ALL_INTERRUPTS()
#define portENTER_CRITICAL()   vPortEnterCritical();
#define portENTER_SWITCHING_ISR()
#define portEXIT_CRITICAL()   vPortExitCritical();
#define portEXIT_SWITCHING_ISR()
#define portFLOAT   float
#define portLONG   long
#define portMAX_DELAY   ( portTickType ) 0xffffffff
#define portNOP()   {__asm__ __volatile__ ("nop");}
#define portRESTORE_CONTEXT()
#define portRESTORE_CONTEXT_OS_INT()
#define portRESTORE_CONTEXT_SCALL()
#define portSAVE_CONTEXT_OS_INT()
#define portSAVE_CONTEXT_SCALL()
#define portSHORT   short
#define portSTACK_GROWTH   ( -1 )
#define portSTACK_TYPE   unsigned portLONG
#define portTASK_FUNCTION(vFunction, pvParameters)   void vFunction( void *pvParameters )
#define portTASK_FUNCTION_PROTO(vFunction, pvParameters)   void vFunction( void *pvParameters )
#define portTICK_RATE_MS   ( ( portTickType ) 1000 / configTICK_RATE_HZ )
#define portYIELD()   {__asm__ __volatile__ ("scall");}
#define TASK_DELAY_MIN(x)   ( (x)*60*1000/portTICK_RATE_MS )
#define TASK_DELAY_MS(x)   ( (x) /portTICK_RATE_MS )
#define TASK_DELAY_S(x)   ( (x)*1000 /portTICK_RATE_MS )

Typedefs

typedef unsigned portLONG portTickType

Functions

mov HI (%[ulCriticalNesting])\n\t" "st.w r8[0]
mov LO (%[ulCriticalNesting])\n\t" "orh r8
void * pvPortRealloc (void *pv, size_t xSize)
void vPortEnterCritical (void)
void vPortExitCritical (void)

Variables

mov r0 n t sub *n t ldm r8 lr
n t ld w 
r0
mov r0 n t sub *n t ldm r8 r12
mov r0 n t sub r7
mov r8
mov r0 n t sub *n t ldm r8 lr
n t ld w r7[-8 *4] n t st w r0
n t ld w r7[-7 *4] n t st w r0
n t ldm r0 r7 n t sub *n t 
rets
mov r0 n t sub sp


Define Documentation

#define configTICK_TC_IRQ   ATPASTE2(AVR32_TC_IRQ, configTICK_TC_CHANNEL)

Definition at line 103 of file GCC/AVR32_UC3/portmacro.h.

Referenced by prvSetupTimerInterrupt().

 
#define DISABLE_ALL_EXCEPTIONS (  )     Disable_global_exception()

Definition at line 125 of file GCC/AVR32_UC3/portmacro.h.

 
#define DISABLE_ALL_INTERRUPTS (  )     Disable_global_interrupt()

Definition at line 128 of file GCC/AVR32_UC3/portmacro.h.

#define DISABLE_INT_LEVEL ( int_level   )     Disable_interrupt_level(int_level)

Definition at line 131 of file GCC/AVR32_UC3/portmacro.h.

 
#define ENABLE_ALL_EXCEPTIONS (  )     Enable_global_exception()

Definition at line 126 of file GCC/AVR32_UC3/portmacro.h.

Referenced by __low_level_init(), and _init_startup().

 
#define ENABLE_ALL_INTERRUPTS (  )     Enable_global_interrupt()

Definition at line 129 of file GCC/AVR32_UC3/portmacro.h.

#define ENABLE_INT_LEVEL ( int_level   )     Enable_interrupt_level(int_level)

Definition at line 132 of file GCC/AVR32_UC3/portmacro.h.

#define portBASE_TYPE   portLONG

Definition at line 97 of file GCC/AVR32_UC3/portmacro.h.

Referenced by __low_level_init(), _init_startup(), portTASK_FUNCTION(), prv1stHigherPriorityNormallyFullTask(), prv2ndHigherPriorityNormallyFullTask(), prvCheckOtherTasksAreStillRunning(), prvDecrementSemaphoreCount(), prvFixedDelayCoRoutine(), prvFlashCoRoutine(), prvHigherPriorityNormallyEmptyTask(), prvHookCoRoutine(), prvIncrementSemaphoreCount(), prvInitialiseCoRoutineLists(), prvInitialiseTaskLists(), prvLowerPriorityNormallyEmptyTask(), prvLowerPriorityNormallyFullTask(), prvRecursiveMutexControllingTask(), prvUSART_ISR_NonNakedBehaviour(), pvPortMalloc(), vApplicationTickHook(), vCreateAltBlockTimeTasks(), vCreateBlockTimeTasks(), vCreateSuicidalTasks(), vErrorChecks(), vPrimaryBlockTimeTestTask(), vprvSerialCreateQueues(), vSecondaryBlockTimeTestTask(), vStartAltBlockingQueueTasks(), vStartAltPolledQueueTasks(), vStartBlockingQueueTasks(), vStartFlashCoRoutines(), vStartHookCoRoutines(), vStartInterruptQueueTasks(), vStartLEDFlashTasks(), vStartPolledQueueTasks(), xAreAltBlockingQueuesStillRunning(), xAreAltBlockTimeTestTasksStillRunning(), xAreAltPollingQueuesStillRunning(), xAreBlockingQueuesStillRunning(), xAreBlockTimeTestTasksStillRunning(), xAreComTestTasksStillRunning(), xAreCountingSemaphoreTasksStillRunning(), xAreDynamicPriorityTasksStillRunning(), xAreIntegerMathsTaskStillRunning(), xAreIntQueueTasksStillRunning(), xAreMathsTaskStillRunning(), xArePollingQueuesStillRunning(), xAreRecursiveMutexTasksStillRunning(), xAreSemaphoreTasksStillRunning(), xCoRoutineCreate(), xCoRoutineRemoveFromEventList(), xFirstTimerHandler(), xIsCreateTaskStillRunning(), and xSecondTimerHandler().

#define portBYTE_ALIGNMENT   4

Definition at line 117 of file GCC/AVR32_UC3/portmacro.h.

Referenced by pvPortMalloc().

#define portCHAR   char

#define portDBG_TRACE ( ...   ) 

Definition at line 156 of file GCC/AVR32_UC3/portmacro.h.

Referenced by main().

 
#define portDISABLE_INTERRUPTS (  )     DISABLE_ALL_INTERRUPTS()

#define portDOUBLE   double

Definition at line 93 of file GCC/AVR32_UC3/portmacro.h.

Referenced by portTASK_FUNCTION().

 
#define portENABLE_INTERRUPTS (  )     ENABLE_ALL_INTERRUPTS()

 
#define portENTER_CRITICAL (  )     vPortEnterCritical();

 
#define portENTER_SWITCHING_ISR (  ) 

Value:

{                                                                                            \
  /* Save R0..R7 */                                                                          \
  __asm__ __volatile__ ("stm     --sp, r0-r7");                                              \
                                                                                             \
  /* With the cooperative scheduler, as there is no context switch by interrupt, */          \
  /* there is also no context save. */                                                       \
}

Definition at line 536 of file GCC/AVR32_UC3/portmacro.h.

Referenced by vUSART_ISR().

 
#define portEXIT_CRITICAL (  )     vPortExitCritical();

 
#define portEXIT_SWITCHING_ISR (  ) 

Value:

{                                                                                            \
  __asm__ __volatile__ (                                                                     \
    /* Restore R0..R7 */                                                                     \
    "ldm     sp++, r0-r7\n\t"                                                                \
                                                                                             \
    /* With the cooperative scheduler, as there is no context switch by interrupt, */        \
    /* there is also no context restore. */                                                  \
    "rete"                                                                                   \
  );                                                                                         \
}

Definition at line 548 of file GCC/AVR32_UC3/portmacro.h.

Referenced by vUSART_ISR().

#define portFLOAT   float

Definition at line 92 of file GCC/AVR32_UC3/portmacro.h.

#define portLONG   long

#define portMAX_DELAY   ( portTickType ) 0xffffffff

 
#define portNOP (  )     {__asm__ __volatile__ ("nop");}

Definition at line 118 of file GCC/AVR32_UC3/portmacro.h.

 
#define portRESTORE_CONTEXT (  ) 

Definition at line 182 of file GCC/AVR32_UC3/portmacro.h.

Referenced by xPortStartScheduler().

 
#define portRESTORE_CONTEXT_OS_INT (  ) 

Value:

{                                                                                       \
  __asm__ __volatile__ (                                                                \
    /* Restore R0..R7 */                                                                \
    "ldm     sp++, r0-r7\n\t"                                                           \
                                                                                        \
    /* With the cooperative scheduler, as there is no context switch by interrupt, */   \
    /* there is also no context restore. */                                             \
    "rete"                                                                              \
  );                                                                                    \
}

Definition at line 271 of file GCC/AVR32_UC3/portmacro.h.

Referenced by vTick().

 
#define portRESTORE_CONTEXT_SCALL (  ) 

Value:

{                                                                                            \
  extern volatile unsigned portLONG ulCriticalNesting;                                       \
  extern volatile void *volatile pxCurrentTCB;                                               \
                                                                                             \
  /* Restore all registers */                                                                \
                                                                                             \
  /* Set SP to point to new stack */                                                         \
  __asm__ __volatile__ (                                                                     \
    "mov     r8, LO(%[pxCurrentTCB])\n\t"                                                    \
    "orh     r8, HI(%[pxCurrentTCB])\n\t"                                                    \
    "ld.w    r0, r8[0]\n\t"                                                                  \
    "ld.w    sp, r0[0]"                                                                      \
    :                                                                                        \
    : [pxCurrentTCB] "i" (&pxCurrentTCB)                                                     \
  );                                                                                         \
                                                                                             \
  /* Leave pxCurrentTCB variable access critical section */                                  \
  portEXIT_CRITICAL();                                                                       \
                                                                                             \
  __asm__ __volatile__ (                                                                     \
    /* Restore ulCriticalNesting variable */                                                 \
    "ld.w    r0, sp++\n\t"                                                                   \

Definition at line 473 of file GCC/AVR32_UC3/portmacro.h.

Referenced by SCALLYield().

 
#define portSAVE_CONTEXT_OS_INT (  ) 

Value:

{                                                                                       \
  /* Save R0..R7 */                                                                     \
  __asm__ __volatile__ ("stm     --sp, r0-r7");                                         \
                                                                                        \
  /* With the cooperative scheduler, as there is no context switch by interrupt, */     \
  /* there is also no context save. */                                                  \
}

Definition at line 259 of file GCC/AVR32_UC3/portmacro.h.

Referenced by vTick().

 
#define portSAVE_CONTEXT_SCALL (  ) 

Definition at line 406 of file GCC/AVR32_UC3/portmacro.h.

Referenced by SCALLYield().

#define portSHORT   short

Definition at line 95 of file GCC/AVR32_UC3/portmacro.h.

Referenced by portTASK_FUNCTION(), and vStartAltPolledQueueTasks().

#define portSTACK_GROWTH   ( -1 )

Definition at line 115 of file GCC/AVR32_UC3/portmacro.h.

#define portSTACK_TYPE   unsigned portLONG

#define portTASK_FUNCTION ( vFunction,
pvParameters   )     void vFunction( void *pvParameters )

Definition at line 684 of file GCC/AVR32_UC3/portmacro.h.

#define portTASK_FUNCTION_PROTO ( vFunction,
pvParameters   )     void vFunction( void *pvParameters )

Definition at line 683 of file GCC/AVR32_UC3/portmacro.h.

#define portTICK_RATE_MS   ( ( portTickType ) 1000 / configTICK_RATE_HZ )

 
#define portYIELD (  )     {__asm__ __volatile__ ("scall");}

Definition at line 680 of file GCC/AVR32_UC3/portmacro.h.

#define TASK_DELAY_MIN (  )     ( (x)*60*1000/portTICK_RATE_MS )

Definition at line 101 of file GCC/AVR32_UC3/portmacro.h.

#define TASK_DELAY_MS (  )     ( (x) /portTICK_RATE_MS )

Definition at line 99 of file GCC/AVR32_UC3/portmacro.h.

#define TASK_DELAY_S (  )     ( (x)*1000 /portTICK_RATE_MS )

Definition at line 100 of file GCC/AVR32_UC3/portmacro.h.


Typedef Documentation

typedef unsigned portLONG portTickType

Definition at line 109 of file GCC/AVR32_UC3/portmacro.h.


Function Documentation

mov HI ( [ulCriticalNesting]  ) 

mov LO ( [ulCriticalNesting]  ) 

Type Constraints

void* pvPortRealloc ( void *  pv,
size_t  xSize 
)

Definition at line 207 of file GCC/AVR32_UC3/port.c.

00208 {
00209 void *pvReturn;
00210 
00211     vTaskSuspendAll();
00212     {
00213         pvReturn = realloc( pv, xWantedSize );
00214     }
00215     xTaskResumeAll();
00216 
00217     return pvReturn;
00218 }

void vPortEnterCritical ( void   ) 

Definition at line 262 of file GCC/AVR32_UC3/port.c.

00263 {
00264     /* Disable interrupts */
00265     portDISABLE_INTERRUPTS();
00266 
00267     /* Now interrupts are disabled ulCriticalNesting can be accessed
00268      directly.  Increment ulCriticalNesting to keep a count of how many times
00269      portENTER_CRITICAL() has been called. */
00270     ulCriticalNesting++;
00271 }

void vPortExitCritical ( void   ) 

Definition at line 274 of file GCC/AVR32_UC3/port.c.

00275 {
00276     if(ulCriticalNesting > portNO_CRITICAL_NESTING)
00277     {
00278         ulCriticalNesting--;
00279         if( ulCriticalNesting == portNO_CRITICAL_NESTING )
00280         {
00281             /* Enable all interrupt/exception. */
00282             portENABLE_INTERRUPTS();
00283         }
00284     }
00285 }


Variable Documentation

mov r0 n t sub * n t ldm r8 lr n t ld w r7 [-8*4] n t st w r0 n t ld w r0

Definition at line 503 of file GCC/AVR32_UC3/portmacro.h.

mov r0 n t sub * n t ldm r8 r12

Definition at line 503 of file GCC/AVR32_UC3/portmacro.h.

mov r0 n t sub *n t ldm r8 lr n t ld w r7

Definition at line 503 of file GCC/AVR32_UC3/portmacro.h.

mov r8

Definition at line 497 of file GCC/AVR32_UC3/portmacro.h.

mov r0 n t sub * n t ldm r8 lr n t ld w r7 [-8*4] n t st w r0 n t ld w r7 [-7*4] n t st w r0 n t ldm r0 r7 n t sub * n t rets

Definition at line 503 of file GCC/AVR32_UC3/portmacro.h.

mov r0 n t sub * n t ldm r8 lr n t ld w r7 [-8*4] n t st w r0 n t ld w r7 [-7*4] n t st w r0 n t ldm r0 r7 n t sub sp

Definition at line 503 of file GCC/AVR32_UC3/portmacro.h.


Generated on Thu Dec 17 20:02:01 2009 for AVR32 UC3 - FreeRTOS Real Time Kernel by  doxygen 1.5.5