Work in progress.

This commit is contained in:
Richard Barry 2008-02-12 17:37:03 +00:00
parent 1eb00d2045
commit b31c9e18f9

View file

@ -1,7 +1,45 @@
/* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS. FUJITSU */
/* MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR */
/* ELIGIBILITY FOR ANY PURPOSES. */
/* (C) Fujitsu Microelectronics Europe GmbH */
/*
FreeRTOS.org V4.7.1 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
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 combined work that includes FreeRTOS.org, without being obliged to provide
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
can be applied.
***************************************************************************
Please ensure to read the configuration and relevant port sections of the
online documentation.
+++ http://www.FreeRTOS.org +++
Documentation, latest information, license and contact details.
+++ http://www.SafeRTOS.com +++
A version that is certified for use in safety critical systems.
+++ http://www.OpenRTOS.com +++
Commercial support, development, porting, licensing and training services.
***************************************************************************
*/
/*---------------------------------------------------------------------------
MAIN.C
- description
@ -48,7 +86,9 @@ LCD represent LED's]*/
#define ledNUMBER_OF_LEDS 8
#define mainCOM_TEST_LED 0x05
#define mainCHECK_TEST_LED 0x07
/*---------------------------------------------------------------------------*/
/*
* The function that implements the Check task. See the comments at the head
* of the page for implementation details.
@ -62,12 +102,13 @@ static void vErrorChecks( void *pvParameters );
static portSHORT prvCheckOtherTasksAreStillRunning( void );
/*---------------------------------------------------------------------------*/
static unsigned portCHAR sState[2] = { 0xFF, 0xFF };
/*---------------------------------------------------------------------------
* The below callback function is called from Tick ISR if configUSE_TICK_HOOK
* is configured as 1.
*---------------------------------------------------------------------------*/
/*void vApplicationTickHook ( void )
{
#if WATCHDOG == WTC_IN_TICK
@ -84,11 +125,11 @@ void vApplicationIdleHook ( void )
#if WATCHDOG == WTC_IN_IDLE
Kick_Watchdog();
#endif
#if ( INCLUDE_StartFlashCoRoutines == 1 || INCLUDE_StartHookCoRoutines == 1 )
vCoRoutineSchedule();
#endif
}
/*---------------------------------------------------------------------------
* Initialize Port 00
*---------------------------------------------------------------------------*/
@ -99,6 +140,7 @@ static void prvInitPort00( void )
DDR09 = 0xFF;
PDR09 = 0xFF;
}
/*---------------------------------------------------------------------------
* Setup the hardware
*---------------------------------------------------------------------------*/
@ -126,63 +168,48 @@ void main(void)
#endif
/* Start the standard demo application tasks. */
#if ( INCLUDE_StartLEDFlashTasks == 1 )
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
#endif
#if ( INCLUDE_StartIntegerMathTasks == 1 )
vStartIntegerMathTasks( tskIDLE_PRIORITY );
#endif
#if ( INCLUDE_AltStartComTestTasks == 1 )
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED - 1 );
#endif
#if ( INCLUDE_StartPolledQueueTasks == 1 )
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
#endif
#if ( INCLUDE_StartSemaphoreTasks == 1 )
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
#endif
#if ( INCLUDE_StartBlockingQueueTasks == 1 )
vStartBlockingQueueTasks( mainQUEUE_BLOCK_PRIORITY );
#endif
#if ( INCLUDE_StartDynamicPriorityTasks == 1 )
vStartDynamicPriorityTasks();
#endif
#if ( INCLUDE_StartMathTasks == 1 )
vStartMathTasks( tskIDLE_PRIORITY );
#endif
#if ( INCLUDE_StartFlashCoRoutines == 1 )
vStartFlashCoRoutines( ledNUMBER_OF_LEDS );
#endif
#if ( INCLUDE_StartHookCoRoutines == 1 )
vStartHookCoRoutines();
#endif
#if ( INCLUDE_StartGenericQueueTasks == 1 )
vStartGenericQueueTasks( mainGENERIC_QUEUE_PRIORITY );
#endif
#if ( INCLUDE_StartQueuePeekTasks == 1 )
vStartQueuePeekTasks();
#endif
#if ( INCLUDE_CreateBlockTimeTasks == 1 )
vCreateBlockTimeTasks();
#endif
#if ( INCLUDE_CreateSuicidalTasks == 1 )
vCreateSuicidalTasks( mainDEATH_PRIORITY );
#endif
#if ( INCLUDE_TraceListTasks == 1 )
vTraceListTasks( TASK_UTILITY_PRIORITY );
#endif
@ -195,7 +222,7 @@ void main(void)
/* Should not reach here */
while( 1 )
{
__asm(" NOP "); //
__asm( " NOP " ); /* // */
}
}
@ -217,6 +244,7 @@ void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
PDR09 &= ~( 1 << uxLED );
sState[0] &= ~( 1 << uxLED );
}
xTaskResumeAll();
}
else
@ -239,6 +267,7 @@ void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
xTaskResumeAll();
}
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
@ -255,8 +284,10 @@ void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
else
{
PDR09 |= ( 1 << uxLED );
sState[0] |= (1 << uxLED); }
sState[0] |= ( 1 << uxLED );
}
}
xTaskResumeAll();
}
else
@ -274,17 +305,18 @@ void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
sState[1] |= ( 1 << uxLED );
}
}
xTaskResumeAll();
}
}
/*-----------------------------------------------------------*/
/*-----------------------------------------------------------*/
static void vErrorChecks( void *pvParameters )
{
static volatile unsigned portLONG ulDummyVariable = 3UL;
portTickType xDelayPeriod = mainNO_ERROR_CHECK_DELAY;
( void ) pvParameters;
/* Cycle for ever, delaying then checking all the other tasks are still
operating without error. */
for( ;; )
@ -317,7 +349,6 @@ portTickType xDelayPeriod = mainNO_ERROR_CHECK_DELAY;
}
/*-----------------------------------------------------------*/
static portSHORT prvCheckOtherTasksAreStillRunning( void )
{
static portSHORT sNoErrorFound = pdTRUE;
@ -328,105 +359,97 @@ static portSHORT sNoErrorFound = pdTRUE;
incremented. A count remaining at the same value between calls therefore
indicates that an error has been detected. Only tasks that do not flash
an LED are checked. */
#if ( INCLUDE_StartIntegerMathTasks == 1 )
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#if ( INCLUDE_AltStartComTestTasks == 1 )
if( xAreComTestTasksStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#if ( INCLUDE_StartPolledQueueTasks == 1 )
if( xArePollingQueuesStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#if ( INCLUDE_StartSemaphoreTasks == 1 )
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#if ( INCLUDE_StartBlockingQueueTasks == 1 )
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#if ( INCLUDE_StartDynamicPriorityTasks == 1 )
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#if ( INCLUDE_StartMathTasks == 1 )
if( xAreMathsTaskStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#if ( INCLUDE_StartFlashCoRoutines == 1 )
if( xAreFlashCoRoutinesStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#endif
#if ( INCLUDE_StartHookCoRoutines == 1 )
if( xAreHookCoRoutinesStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#endif
#if ( INCLUDE_StartGenericQueueTasks == 1 )
if( xAreGenericQueueTasksStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#endif
#if ( INCLUDE_StartQueuePeekTasks == 1 )
if( xAreQueuePeekTasksStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#endif
#if ( INCLUDE_CreateBlockTimeTasks == 1 )
if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#endif
#if ( INCLUDE_CreateSuicidalTasks == 1 )
if( xIsCreateTaskStillRunning() != pdTRUE )
{
sNoErrorFound = pdFALSE;
}
#endif
#endif
return sNoErrorFound;
}