OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/rtos/freertos-6.1.1/Demo
    from Rev 578 to Rev 579
    Reverse comparison

Rev 578 → Rev 579

/CORTUS_APS3_GCC/Demo/serial.c
0,0 → 1,236
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). Thank you for your support! *
* *
***************************************************************************
 
This file is part of the FreeRTOS distribution.
 
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
***NOTE*** The exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
/* Basic interrupt driven serial port driver for uart1.
*/
 
/* Standard includes. */
#include <stdlib.h>
 
/* Kernel includes. */
#include "FreeRTOS.h"
#include "queue.h"
#include "task.h"
 
/* Demo application includes. */
#include <machine/uart.h>
#include <machine/ic.h>
#include "serial.h"
/*-----------------------------------------------------------*/
 
#define comBLOCK_RETRY_TIME 10
/*-----------------------------------------------------------*/
 
/* The interrupt handlers are naked functions that call C handlers. The C
handlers are marked as noinline to ensure they work correctly when the
optimiser is on. */
void interrupt5_handler( void ) __attribute__((naked));
static void prvTxHandler( void ) __attribute__((noinline));
void interrupt6_handler( void ) __attribute__((naked));
static void prvRxHandler( void ) __attribute__((noinline));
 
/*-----------------------------------------------------------*/
 
/* Queues used to hold received characters, and characters waiting to be
transmitted. */
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
extern unsigned portBASE_TYPE *pxVectorTable;
/*-----------------------------------------------------------*/
 
xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{
/* Create the queues used to hold Rx and Tx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed char ) );
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed char ) );
 
if( ( xRxedChars ) && ( xCharsForTx ) )
{
/* Set up interrupts */
/* tx interrupt will be enabled when we need to send something */
uart1->tx_mask = 0;
uart1->rx_mask = 1;
irq[IRQ_UART1_TX].ien = 1;
irq[IRQ_UART1_TX].ipl = portSYSTEM_INTERRUPT_PRIORITY_LEVEL;
irq[IRQ_UART1_RX].ien = 1;
irq[IRQ_UART1_RX].ipl = portSYSTEM_INTERRUPT_PRIORITY_LEVEL;
}
 
return ( xComPortHandle ) 0;
}
/*-----------------------------------------------------------*/
 
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, portTickType xBlockTime )
{
/* The port handle is not required as this driver only supports uart1. */
(void) pxPort;
 
/* Get the next character from the buffer. Return false if no characters
are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{
return pdTRUE;
}
else
{
return pdFALSE;
}
}
/*-----------------------------------------------------------*/
 
void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )
{
int i;
signed char *pChNext;
 
/* Send each character in the string, one at a time. */
pChNext = ( signed char * )pcString;
for( i = 0; i < usStringLength; i++ )
{
/* Block until character has been transmitted. */
while( xSerialPutChar( pxPort, *pChNext, comBLOCK_RETRY_TIME ) != pdTRUE ); pChNext++;
}
}
/*-----------------------------------------------------------*/
 
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, portTickType xBlockTime )
{
( void ) pxPort;
 
/* Place the character in the queue of characters to be transmitted. */
if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
{
return pdFAIL;
}
 
/* Turn on the Tx interrupt so the ISR will remove the character from the
queue and send it. This does not need to be in a critical section as
if the interrupt has already removed the character the next interrupt
will simply turn off the Tx interrupt again. */
uart1->tx_mask = 1;
 
return pdPASS;
}
/*-----------------------------------------------------------*/
 
void vSerialClose( xComPortHandle xPort )
{
/* Not supported as not required by the demo application. */
( void ) xPort;
}
/*-----------------------------------------------------------*/
 
/* UART Tx interrupt handler. */
void interrupt5_handler( void )
{
/* This is a naked function. */
portSAVE_CONTEXT();
prvTxHandler();
portRESTORE_CONTEXT();
}
/*-----------------------------------------------------------*/
 
static void prvTxHandler( void )
{
signed char cChar;
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
 
/* The interrupt was caused by the transmit fifo having space for at least one
character. Are there any more characters to transmit? */
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )
{
/* A character was retrieved from the queue so can be sent to the uart now. */
uart1->tx_data = cChar;
}
else
{
/* Queue empty, nothing to send so turn off the Tx interrupt. */
uart1->tx_mask = 0;
}
 
/* If an event caused a task to unblock then we call "Yield from ISR" to
ensure that the unblocked task is the task that executes when the interrupt
completes if the unblocked task has a priority higher than the interrupted
task. */
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
}
/*-----------------------------------------------------------*/
 
/* UART Rx interrupt. */
void interrupt6_handler( void )
{
portSAVE_CONTEXT();
prvRxHandler();
portRESTORE_CONTEXT();
}
/*-----------------------------------------------------------*/
 
static void prvRxHandler( void )
{
signed char cChar;
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
 
/* The interrupt was caused by the receiver getting data. */
cChar = uart1->rx_data;
 
xQueueSendFromISR(xRxedChars, &cChar, &xHigherPriorityTaskWoken );
 
/* If an event caused a task to unblock then we call "Yield from ISR" to
ensure that the unblocked task is the task that executes when the interrupt
completes if the unblocked task has a priority higher than the interrupted
task. */
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
}
/*-----------------------------------------------------------*/
 
 
/CORTUS_APS3_GCC/Demo/ParTest.c
0,0 → 1,113
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). Thank you for your support! *
* *
***************************************************************************
 
This file is part of the FreeRTOS distribution.
 
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
***NOTE*** The exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "portable.h"
 
/* Demo app includes. */
#include "partest.h"
#include "demoGpio.h"
 
#define partstNUM_LEDS ( 8 )
#define partstALL_OUTPUTS_OFF ( ( unsigned long ) ~(0xFFFFFFFF << partstNUM_LEDS) )
 
static unsigned long ulLEDReg;
 
/*-----------------------------------------------------------
* Simple parallel port IO routines.
*-----------------------------------------------------------*/
 
static void SetLeds (unsigned int leds)
{
gpio->out.leds = leds;
}
 
/*-----------------------------------------------------------*/
 
void vParTestInitialise( void )
{
gpio->dir.leds = 0xff;
}
 
/*-----------------------------------------------------------*/
 
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
/* Switch an LED on or off as requested. */
if (uxLED < partstNUM_LEDS)
{
if( xValue )
{
ulLEDReg &= ~( 1 << uxLED );
}
else
{
ulLEDReg |= ( 1 << uxLED );
}
 
SetLeds( ulLEDReg );
}
}
/*-----------------------------------------------------------*/
 
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
/* Toggle the state of the requested LED. */
if (uxLED < partstNUM_LEDS)
{
ulLEDReg ^= ( 1 << uxLED );
SetLeds( ulLEDReg );
}
}
 
/CORTUS_APS3_GCC/Demo/RegTest.h
0,0 → 1,61
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). Thank you for your support! *
* *
***************************************************************************
 
This file is part of the FreeRTOS distribution.
 
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
***NOTE*** The exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
#ifndef REG_TEST_H
#define REG_TEST_H
 
void vStartRegTestTasks( void );
portBASE_TYPE xAreRegTestTasksStillRunning( void );
 
#endif
 
/CORTUS_APS3_GCC/Demo/FreeRTOSConfig.h
0,0 → 1,123
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). Thank you for your support! *
* *
***************************************************************************
 
This file is part of the FreeRTOS distribution.
 
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
***NOTE*** The exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
 
#include <machine/sfradr.h>
 
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*
* See http://www.freertos.org/a00110.html.
*/
 
/*----------------------------------------------------------*/
 
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned long ) CLOCK_FREQUENCY )
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 32 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 0
#define configUSE_MALLOC_FAILED_HOOK 1
#define configCHECK_FOR_STACK_OVERFLOW 1
 
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
 
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function.
We use --gc-sections when linking, so there is no harm is setting all of these to 1 */
 
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 1
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
 
#define BLOCKQ_1 1
 
 
 
 
/* A task is created to test the behaviour of the interrupt controller during
context switches. This macro is just used to set a variable to true each time
the test task is switched out - the task itself needs to know when this happens
in order to complete its tests. This macro will slow down the context switch
and can normally be removed (just delete the whole macro, although doing so will
cause the test task to indicate an error). */
extern void *xICTestTask;
extern volatile unsigned long ulTaskSwitchedOut;
#define traceTASK_SWITCHED_OUT() if( pxCurrentTCB == xICTestTask ) ulTaskSwitchedOut = pdTRUE
 
 
 
#endif /* FREERTOS_CONFIG_H */
 
 
/CORTUS_APS3_GCC/Demo/main.c
0,0 → 1,294
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). Thank you for your support! *
* *
***************************************************************************
 
This file is part of the FreeRTOS distribution.
 
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
***NOTE*** The exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
/*
* Creates all the demo application tasks, then starts the scheduler.
*
* Main.c also creates a task called "Check". This only executes every three
* seconds but has the highest priority so is guaranteed to get processor time.
* Its main function is to check that all the other tasks are still operational.
* Each task (other than the "flash" tasks) maintains a unique count that is
* incremented each time the task successfully completes its function. Should
* any error occur within such a task the count is permanently halted. The
* check task inspects the count of each task to ensure it has changed since
* the last time the check task executed. If all the count variables have
* changed all the tasks are still executing error free, and the check task
* toggles the on board LED. Should any task contain an error at any time
* the LED toggle rate will change from 3 seconds to 500ms.
*
* NOTE: The demo application includes tasks that send and receive characters
* over the UART. The characters sent by one task are received by another -
* with an error condition being flagged should any characters be missed or
* received out of order. A loopback connector is required on the 9way D socket
* for this mechanism to operation (pins 2 and 3 the socket should be connected
* together - a paper clip is normally sufficient).
*
*/
 
/* Standard includes. */
#include <stdlib.h>
#include <string.h>
 
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
 
/* Demo application includes. */
#include "partest.h"
#include "flash.h"
#include "integer.h"
#include "PollQ.h"
#include "comtest2.h"
#include "semtest.h"
#include "flop.h"
#include "dynamic.h"
#include "BlockQ.h"
#include "serial.h"
#include "demoGpio.h"
#include "7seg.h"
#include "RegTest.h"
 
/*-----------------------------------------------------------*/
 
/* Constants for the ComTest tasks. */
#define mainCOM_TEST_BAUD_RATE ( ( unsigned long ) 115200 )
#define mainCOM_TEST_LED ( 5 )
 
/* Priorities for the demo application tasks. */
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define main7SEG_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
 
/* The rate at which the on board LED will toggle when there is/is not an
error. */
#define mainNO_ERROR_FLASH_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
#define mainERROR_FLASH_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )
#define mainON_BOARD_LED_BIT ( ( unsigned long ) 7 )
 
/* The size of the memory blocks allocated by the vMemCheckTask() task. */
#define mainMEM_CHECK_SIZE_1 ( ( size_t ) 51 )
#define mainMEM_CHECK_SIZE_2 ( ( size_t ) 52 )
#define mainMEM_CHECK_SIZE_3 ( ( size_t ) 151 )
 
/*-----------------------------------------------------------*/
 
/*
* Checks that all the demo application tasks are still executing without error
* - as described at the top of the file.
*/
static long prvCheckOtherTasksAreStillRunning( void );
 
/*
* The task that executes at the highest priority and calls
* prvCheckOtherTasksAreStillRunning(). See the description at the top
* of the file.
*/
static void vErrorChecks( void *pvParameters );
 
/*
* Configure the processor for use with the Olimex demo board. This includes
* setup for the I/O, system clock, and access timings.
*/
static void prvSetupHardware( void );
 
 
/*-----------------------------------------------------------*/
 
/*
* Starts all the other tasks, then starts the scheduler.
*/
int main( void )
{
/* Setup the hardware for use with the Xilinx evaluation board. */
prvSetupHardware();
 
/* Start the demo/test application tasks. */
vStartIntegerMathTasks( tskIDLE_PRIORITY );
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartDynamicPriorityTasks();
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vStart7SegTasks( main7SEG_TASK_PRIORITY );
vStartRegTestTasks();
 
/* Start the check task - which is defined in this file. */
xTaskCreate( vErrorChecks, ( signed char * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
 
/* Now all the tasks have been started - start the scheduler. */
vTaskStartScheduler();
 
/* Should never reach here! */
for( ;; );
}
/*-----------------------------------------------------------*/
 
static void vErrorChecks( void *pvParameters )
{
portTickType xDelayPeriod = mainNO_ERROR_FLASH_PERIOD;
 
/* Just to stop compiler warnings. */
( void ) pvParameters;
 
/* Cycle for ever, delaying then checking all the other tasks are still
operating without error. If an error is detected then the delay period
is decreased from mainNO_ERROR_FLASH_PERIOD to mainERROR_FLASH_PERIOD so
the on board LED flash rate will increase. */
 
for( ;; )
{
/* Delay until it is time to execute again. */
vTaskDelay( xDelayPeriod );
 
/* Check all the standard demo application tasks are executing without
error. */
if( prvCheckOtherTasksAreStillRunning() != pdPASS )
{
/* An error has been detected in one of the tasks - flash faster. */
xDelayPeriod = mainERROR_FLASH_PERIOD;
}
 
/* The toggle rate of the LED depends on how long this task delays for.
An error reduces the delay period and so increases the toggle rate. */
vParTestToggleLED( mainON_BOARD_LED_BIT );
}
}
/*-----------------------------------------------------------*/
 
static void prvSetupHardware( void )
{
/* Initialise LED outputs. */
vParTestInitialise();
}
/*-----------------------------------------------------------*/
 
static long prvCheckOtherTasksAreStillRunning( void )
{
long lReturn = pdPASS;
 
/* Check all the demo tasks (other than the flash tasks) to ensure
that they are all still running, and that none of them have detected
an error. */
 
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
lReturn = pdFAIL;
}
 
if( xAreComTestTasksStillRunning() != pdTRUE )
{
lReturn = pdFAIL;
}
 
if( xArePollingQueuesStillRunning() != pdTRUE )
{
lReturn = pdFAIL;
}
 
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
lReturn = pdFAIL;
}
 
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
lReturn = pdFAIL;
}
 
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
lReturn = pdFAIL;
}
 
if( xAreRegTestTasksStillRunning() != pdTRUE )
{
lReturn = pdFAIL;
}
 
return lReturn;
}
/*-----------------------------------------------------------*/
 
void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName )
{
/* This function will be called if a task overflows its stack. Inspect
pxCurrentTCB to find the offending task if the overflow was sever enough
to corrupt the pcTaskName parameter. */
vParTestSetLED( 4, 1 );
for( ;; );
}
/*-----------------------------------------------------------*/
 
void vApplicationMallocFailedHook( void )
{
/* This function will be called if a call to pvPortMalloc() fails to return
the requested memory. pvPortMalloc() is called internally by the scheduler
whenever a task, queue or semaphore is created. */
vParTestSetLED( 4, 1 );
for( ;; );
}
/*-----------------------------------------------------------*/
 
/* Provide an exit function to prevent a whole load of standard library functions
being brought into the build. */
void exit( int status )
{
for( ;; );
}
 
 
/CORTUS_APS3_GCC/Demo/7seg.c
0,0 → 1,186
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). Thank you for your support! *
* *
***************************************************************************
 
This file is part of the FreeRTOS distribution.
 
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
***NOTE*** The exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
 
#include <stdlib.h>
 
/* Scheduler include files. */
#include "FreeRTOS.h"
#include "task.h"
 
/* Demo program include files. */
#include "7seg.h"
#include "demoGpio.h"
 
#define x7segSTACK_SIZE configMINIMAL_STACK_SIZE
 
static void prvRefreshTask( void *pvParameters );
static void prvCountTask( void *pvParameters );
 
/* Value to output to 7 segment display
led_digits[0] is the right most digit */
static signed char seg7_digits[4];
 
void vStart7SegTasks( unsigned portBASE_TYPE uxPriority )
{
xTaskCreate( prvRefreshTask, ( signed char * ) "7SegRefresh", x7segSTACK_SIZE, NULL, uxPriority, ( xTaskHandle *) NULL );
xTaskCreate( prvCountTask, ( signed char * ) "7SegCount", x7segSTACK_SIZE, NULL, uxPriority, ( xTaskHandle *) NULL );
}
/*-----------------------------------------------------------*/
 
static void prvRefreshTask( void *pvParameters )
{
/* This is table 3.3 from the Spartan-3 Starter Kit board user guide */
const unsigned char bits[ 16 ] =
{
0x01,
0x4f,
0x12,
0x06,
0x4c,
0x24,
0x20,
0x0f,
0x00,
0x04,
0x08,
0x60,
0x31,
0x42,
0x30,
0x38
};
 
const unsigned char apsx[4] =
{
0x06, /* 3 */
0x24, /* S */
0x18, /* P */
0x08 /* A */
};
 
portTickType xRefreshRate, xLastRefreshTime;
 
/* Digit to scan */
static int d = 0;
 
xRefreshRate = 2;
 
/* We need to initialise xLastRefreshTime prior to the first call to
vTaskDelayUntil(). */
xLastRefreshTime = xTaskGetTickCount();
 
for (;;)
{
for( d = 0; d < 4; d++ )
{
vTaskDelayUntil ( &xLastRefreshTime, xRefreshRate );
 
/* Display digit */
gpio->out.an = -1;
if( ( seg7_digits[ 1 ] == 4 ) || ( seg7_digits[ 1 ] == 5 ) )
{
gpio->out.digit = apsx[ d ];
}
else
{
gpio->out.digit = bits[ seg7_digits[ d ] ];
}
 
gpio->out.dp = 1;
gpio->out.an = ~(1 << d);
}
}
}
/*-----------------------------------------------------------*/
 
static void prvCountTask( void *pvParameters )
{
portTickType xCountRate, xLastCountTime;
 
/* Approximately 20HZ */
xCountRate = configTICK_RATE_HZ / 20;
 
/* We need to initialise xLastCountTime prior to the first call to
vTaskDelayUntil(). */
xLastCountTime = xTaskGetTickCount();
 
for (;;)
{
vTaskDelayUntil( &xLastCountTime, xCountRate );
 
/* Really ugly way to do BCD arithmetic.... */
seg7_digits[ 0 ] -= 1;
if( seg7_digits[ 0 ] < 0 )
{
seg7_digits[ 0 ] = 9;
seg7_digits[ 1 ] -= 1;
if( seg7_digits[ 1 ] < 0 )
{
seg7_digits[ 1 ] = 9;
seg7_digits[ 2 ] -= 1;
if( seg7_digits[ 2 ] < 0 )
{
seg7_digits[ 2 ] = 9;
seg7_digits[ 3 ] -= 1;
if( seg7_digits[ 3 ] < 0 )
{
seg7_digits[ 3 ] = 9;
}
}
}
}
}
}
 
 
/CORTUS_APS3_GCC/Demo/demoGpio.h
0,0 → 1,97
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). Thank you for your support! *
* *
***************************************************************************
 
This file is part of the FreeRTOS distribution.
 
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
***NOTE*** The exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
/* Layout of pins connected to GPIO on Xilinx FPGA evaluation board
*/
 
#include <machine/sfradr.h>
 
#ifndef DEMOGPIO_H
#define DEMOGPIO_H
 
typedef struct DemoBoardGpioPins
{
/* Leds on board */
unsigned leds:8;
/* 7 segment display */
unsigned digit:7;
 
/* Decimal point */
unsigned dp:1;
 
/* Select anode for digit and decimal pt to light up */
unsigned an:4;
 
/* Unused */
unsigned _fill:12;
 
} DemoBoardGpioPins;
 
typedef struct DemoBoardGpio
{
volatile DemoBoardGpioPins out;
volatile DemoBoardGpioPins in;
volatile DemoBoardGpioPins dir;
volatile unsigned _fill;
} DemoBoardGpio;
 
#ifdef SFRADR_GPIO1
#define gpio ((DemoBoardGpio*)SFRADR_GPIO1)
#endif
 
#endif
 
// Local Variables:
// tab-width:4
// End:
/CORTUS_APS3_GCC/Demo/7seg.h
0,0 → 1,60
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). Thank you for your support! *
* *
***************************************************************************
 
This file is part of the FreeRTOS distribution.
 
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
***NOTE*** The exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
#ifndef SEVENSEG_H
#define SEVENSEG_H
 
void vStart7SegTasks( unsigned portBASE_TYPE uxPriority );
 
#endif
 
/CORTUS_APS3_GCC/Demo/RegTest.c
0,0 → 1,319
/*
FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
 
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS books - available as PDF or paperback *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). Thank you for your support! *
* *
***************************************************************************
 
This file is part of the FreeRTOS distribution.
 
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
***NOTE*** The exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
 
1 tab == 4 spaces!
 
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
 
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
 
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
 
#include "FreeRTOS.h"
#include "task.h"
 
/*
* Two test tasks that fill the CPU registers with known values before
* continuously looping round checking that each register still contains its
* expected value. Both tasks use a separate set of values, with an incorrect
* value being found at any time being indicative of an error in the context
* switch mechanism. One of the tasks uses a yield instruction to increase the
* test coverage. The nature of these tasks necessitates that they are written
* in assembly code.
*/
static void vRegTest1( void *pvParameters );
static void vRegTest2( void *pvParameters );
 
/*
* A task that tests the management of the Interrupt Controller (IC) during a
* context switch. The state of the IC current mask level must be maintained
* across context switches. Also, yields must be able to be performed when the
* interrupt controller mask is not zero. This task tests both these
* requirements.
*/
static void prvICCheck1Task( void *pvParameters );
 
/* Counters used to ensure the tasks are still running. */
static volatile unsigned long ulRegTest1Counter = 0UL, ulRegTest2Counter = 0UL, ulICTestCounter = 0UL;
 
/* Handle to the task that checks the interrupt controller behaviour. This is
used by the traceTASK_SWITCHED_OUT() macro, which is defined in
FreeRTOSConfig.h and can be removed - it is just for the purpose of this test. */
xTaskHandle xICTestTask = NULL;
 
/* Variable that gets set to pdTRUE by traceTASK_SWITCHED_OUT each time
is switched out. */
volatile unsigned long ulTaskSwitchedOut;
/*-----------------------------------------------------------*/
 
void vStartRegTestTasks( void )
{
xTaskCreate( vRegTest1, ( signed char * ) "RTest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
xTaskCreate( vRegTest2, ( signed char * ) "RTest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
xTaskCreate( prvICCheck1Task, ( signed char * ) "ICCheck", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xICTestTask );
}
/*-----------------------------------------------------------*/
 
static void vRegTest1( void *pvParameters )
{
__asm volatile
(
" mov r2, #0x02 \n" /* Fill the registers with known values, r0 is always 0 and r1 is the stack pointer. */
" mov r3, #0x03 \n"
" mov r4, #0x04 \n"
" mov r5, #0x05 \n"
" mov r6, #0x06 \n"
" mov r7, #0x07 \n"
" mov r8, #0x08 \n"
" mov r9, #0x09 \n"
" mov r10, #0x0a \n"
" mov r11, #0x0b \n"
" mov r12, #0x0c \n"
" mov r13, #0x0d \n"
" mov r14, #0x0e \n"
" mov r15, #0x0f \n"
" \n"
"reg_check_loop_1: \n"
" trap #31 \n"
" cmp r2, #0x02 \n" /* Check that each register still contains the expected value, jump to an infinite loop if an error is found. */
" bne.s reg_check_error_1 \n"
" cmp r3, #0x03 \n"
" bne.s reg_check_error_1 \n"
" cmp r4, #0x04 \n"
" bne.s reg_check_error_1 \n"
" cmp r5, #0x05 \n"
" bne.s reg_check_error_1 \n"
" cmp r6, #0x06 \n"
" bne.s reg_check_error_1 \n"
" cmp r7, #0x07 \n"
" bne.s reg_check_error_1 \n"
" cmp r8, #0x08 \n"
" bne.s reg_check_error_1 \n"
" cmp r9, #0x09 \n"
" bne.s reg_check_error_1 \n"
" cmp r10, #0x0a \n"
" bne.s reg_check_error_1 \n"
" cmp r11, #0x0b \n"
" bne.s reg_check_error_1 \n"
" cmp r12, #0x0c \n"
" bne.s reg_check_error_1 \n"
" cmp r13, #0x0d \n"
" bne.s reg_check_error_1 \n"
" cmp r14, #0x0e \n"
" bne.s reg_check_error_1 \n"
" cmp r15, #0x0f \n"
" bne.s reg_check_error_1 \n"
" \n"
" ld r2, [r0]+short(ulRegTest1Counter) \n" /* Increment the loop counter to show that this task is still running error free. */
" add r2, #1 \n"
" st r2, [r0]+short(ulRegTest1Counter) \n"
" mov r2, #0x02 \n"
" \n"
" bra.s reg_check_loop_1 \n" /* Do it all again. */
" \n"
"reg_check_error_1: \n"
"bra.s . \n"
);
}
/*-----------------------------------------------------------*/
 
static void vRegTest2( void *pvParameters )
{
__asm volatile
(
" mov r2, #0x12 \n" /* Fill the registers with known values, r0 is always 0 and r1 is the stack pointer. */
" mov r3, #0x13 \n"
" mov r4, #0x14 \n"
" mov r5, #0x15 \n"
" mov r6, #0x16 \n"
" mov r7, #0x17 \n"
" mov r8, #0x18 \n"
" mov r9, #0x19 \n"
" mov r10, #0x1a \n"
" mov r11, #0x1b \n"
" mov r12, #0x1c \n"
" mov r13, #0x1d \n"
" mov r14, #0x1e \n"
" mov r15, #0x1f \n"
" \n"
"reg_check_loop_2: \n"
" cmp r2, #0x12 \n" /* Check that each register still contains the expected value, jump to an infinite loop if an error is found. */
" bne.s reg_check_error_2 \n"
" cmp r3, #0x13 \n"
" bne.s reg_check_error_2 \n"
" cmp r4, #0x14 \n"
" bne.s reg_check_error_2 \n"
" cmp r5, #0x15 \n"
" bne.s reg_check_error_2 \n"
" cmp r6, #0x16 \n"
" bne.s reg_check_error_2 \n"
" cmp r7, #0x17 \n"
" bne.s reg_check_error_2 \n"
" cmp r8, #0x18 \n"
" bne.s reg_check_error_2 \n"
" cmp r9, #0x19 \n"
" bne.s reg_check_error_2 \n"
" cmp r10, #0x1a \n"
" bne.s reg_check_error_2 \n"
" cmp r11, #0x1b \n"
" bne.s reg_check_error_2 \n"
" cmp r12, #0x1c \n"
" bne.s reg_check_error_2 \n"
" cmp r13, #0x1d \n"
" bne.s reg_check_error_2 \n"
" cmp r14, #0x1e \n"
" bne.s reg_check_error_2 \n"
" cmp r15, #0x1f \n"
" bne.s reg_check_error_2 \n"
" \n"
" ld r2, [r0]+short(ulRegTest2Counter) \n" /* Increment the loop counter to show that this task is still running error free. */
" add r2, #1 \n"
" st r2, [r0]+short(ulRegTest2Counter) \n"
" mov r2, #0x12 \n"
" \n"
" bra.s reg_check_loop_2 \n" /* Do it all again. */
" \n"
"reg_check_error_2: \n"
"bra.s . \n"
);
}
/*-----------------------------------------------------------*/
 
static void prvICCheck1Task( void *pvParameters )
{
long lICCheckStatus = pdPASS;
 
for( ;; )
{
/* At this point the interrupt mask should be zero. */
if( ic->cpl != 0 )
{
lICCheckStatus = pdFAIL;
}
 
/* If we yield here, it should still be 0 when the task next runs.
ulTaskSwitchedOut is just used to check that a switch does actually
happen. */
ulTaskSwitchedOut = pdFALSE;
taskYIELD();
if( ( ulTaskSwitchedOut != pdTRUE ) || ( ic->cpl != 0 ) )
{
lICCheckStatus = pdFAIL;
}
 
/* Set the interrupt mask to portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1,
before checking it is as expected. */
taskENTER_CRITICAL();
if( ic->cpl != ( portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1 ) )
{
lICCheckStatus = pdFAIL;
}
 
/* If we yield here, it should still be
portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 10 when the task next runs. */
ulTaskSwitchedOut = pdFALSE;
taskYIELD();
if( ( ulTaskSwitchedOut != pdTRUE ) || ( ic->cpl != ( portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1 ) ) )
{
lICCheckStatus = pdFAIL;
}
 
/* Return the interrupt mask to its default state. */
taskEXIT_CRITICAL();
 
/* Just increment a loop counter so the check task knows if this task
is still running or not. */
if( lICCheckStatus == pdPASS )
{
ulICTestCounter++;
}
}
}
/*-----------------------------------------------------------*/
 
portBASE_TYPE xAreRegTestTasksStillRunning( void )
{
static unsigned long ulLastCounter1 = 0UL, ulLastCounter2 = 0UL, ulLastICTestCounter = 0UL;
long lReturn;
 
/* Check that both loop counters are still incrementing, indicating that
both reg test tasks are still running error free. */
if( ulLastCounter1 == ulRegTest1Counter )
{
lReturn = pdFAIL;
}
else if( ulLastCounter2 == ulRegTest2Counter )
{
lReturn = pdFAIL;
}
else if( ulLastICTestCounter == ulICTestCounter )
{
lReturn = pdFAIL;
}
else
{
lReturn = pdPASS;
}
 
ulLastCounter1 = ulRegTest1Counter;
ulLastCounter2 = ulRegTest2Counter;
ulLastICTestCounter = ulICTestCounter;
 
return lReturn;
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/CORTUS_APS3_GCC/.project
0,0 → 1,81
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>FreeRTOS</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>aps3-make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value>${workspace_loc:/FreeRTOS/Debug}</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>true</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
</natures>
</projectDescription>
/CORTUS_APS3_GCC/CreateProjectDirectoryStructure.bat
0,0 → 1,45
REM This file should be executed from the command line prior to the first
REM build. It will be necessary to refresh the Eclipse project once the
REM .bat file has been executed (normally just press F5 to refresh).
 
REM Copies all the required files from their location within the standard
REM FreeRTOS directory structure to under the Eclipse project directory.
REM This permits the Eclipse project to be used in 'managed' mode and without
REM having to setup any linked resources.
 
REM Have the files already been copied?
IF EXIST Source Goto END
 
REM Create the required directory structure.
MD Source
MD Source\include
MD Source\portable\GCC\CORTUS_APS3
MD Source\portable\MemMang
MD Demo\Common
MD Demo\Common\include
REM Copy the core kernel files.
copy ..\..\Source\*.* Source
REM Copy the common header files
copy ..\..\Source\include\*.* Source\include
REM Copy the portable layer files
copy ..\..\Source\portable\GCC\CORTUS_APS3\*.* Source\portable\GCC\CORTUS_APS3
REM Copy the basic memory allocation files
copy ..\..\Source\portable\MemMang\heap_2.c Source\portable\MemMang
 
REM Copy the files that define the common demo tasks.
copy ..\common\Minimal\BlockQ.c Demo\Common
copy ..\common\Minimal\comtest.c Demo\Common
copy ..\common\Minimal\dynamic.c Demo\Common
copy ..\common\Minimal\flash.c Demo\Common
copy ..\common\Minimal\integer.c Demo\Common
copy ..\common\Minimal\PollQ.c Demo\Common
copy ..\common\Minimal\semtest.c Demo\Common
REM Copy the common demo file headers.
copy ..\common\include\*.* Demo\Common\include
: END
/CORTUS_APS3_GCC/.cproject
0,0 → 1,527
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
 
<cproject>
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="aps.managedbuild.project.exe.config.debug.77227718">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="aps.managedbuild.project.exe.config.debug.77227718" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="FreeRTOS" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="aps.managedbuild.project.exe.config.debug.77227718" name="Debug" parent="aps.managedbuild.project.exe.config.debug">
<folderInfo id="aps.managedbuild.project.exe.config.debug.77227718." name="/" resourcePath="">
<toolChain id="aps.managedbuild.exe.config.debug.toolchain.705347401" name="APS3 Tool Chain" superClass="aps.managedbuild.exe.config.debug.toolchain">
<targetPlatform id="aps.managedbuild.exe.config.debug.toolchain.targetplatform.1736682702" name="APS3 Platform" superClass="aps.managedbuild.exe.config.debug.toolchain.targetplatform"/>
<builder buildPath="${workspace_loc:/FreeRTOS/Debug}" id="aps.managedbuild.exe.config.debug.toolchain.builder.1190272241" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make for APS" stopOnErr="true" superClass="aps.managedbuild.exe.config.debug.toolchain.builder"/>
<tool id="aps.managedbuild.toolchain.assembler.1922538025" name="APS3 Assembler" superClass="aps.managedbuild.toolchain.assembler">
<inputType id="aps.managedbuild.tool.assembler.input.1540065745" superClass="aps.managedbuild.tool.assembler.input"/>
</tool>
<tool id="aps.managedbuild.toolchain.c.compiler.320865439" name="APS3 C Compiler" superClass="aps.managedbuild.toolchain.c.compiler">
<option defaultValue="aps.c.optimization.level.optimize" id="aps.c.compiler.option.optimization.level.1183272934" name="Optimization Level" superClass="aps.c.compiler.option.optimization.level" value="aps.c.optimization.level.none" valueType="enumerated"/>
<option id="aps.c.compiler.option.include.paths.1169759315" name="Include paths (-I)" superClass="aps.c.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="../Demo/Common/include"/>
<listOptionValue builtIn="false" value="../Demo"/>
<listOptionValue builtIn="false" value="../Source/include"/>
<listOptionValue builtIn="false" value="../Source/portable/GCC/CORTUS_APS3"/>
</option>
<option id="aps.c.compiler.option.misc.other.330923733" name="Other flags" superClass="aps.c.compiler.option.misc.other" value="" valueType="string"/>
<inputType id="aps.managedbuild.tool.c.compiler.input.846359435" superClass="aps.managedbuild.tool.c.compiler.input"/>
</tool>
<tool id="aps.managedbuild.toolchain.cpp.compiler.1844253933" name="APS3 C++ Compiler" superClass="aps.managedbuild.toolchain.cpp.compiler">
<option defaultValue="aps.c.optimization.level.optimize" id="aps.cpp.compiler.option.optimization.level.1060405565" name="Optimization Level" superClass="aps.cpp.compiler.option.optimization.level" valueType="enumerated"/>
</tool>
<tool id="aps.managedbuild.toolchain.c.linker.2020114858" name="APS3 C Linker" superClass="aps.managedbuild.toolchain.c.linker">
<inputType id="aps.managedbuild.tool.c.linker.input.95153467" superClass="aps.managedbuild.tool.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="aps.managedbuild.toolchain.cpp.linker.570426443" name="APS3 C++ Linker" superClass="aps.managedbuild.toolchain.cpp.linker"/>
<tool id="aps.managedbuild.toolchain.archiver.2059949874" name="APS3 Librarian" superClass="aps.managedbuild.toolchain.archiver"/>
</toolChain>
</folderInfo>
<sourceEntries>
<entry excluding="Demo/Common/crhook.c|Demo/Common/crflash.c|Demo/Common/climon.c|Demo/Common/cliFatCmds.c|Demo/Common/IntQueue.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.cortus.builddefinitions.APS3PerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="aps3-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.cortus.builddefinitions.APS3PerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-f ${project_name}_scd.mk" command="aps3-make" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<scannerConfigBuildInfo instanceId="aps.managedbuild.project.exe.config.debug.77227718;aps.managedbuild.project.exe.config.debug.77227718.;aps.managedbuild.toolchain.c.compiler.320865439;aps.managedbuild.tool.c.compiler.input.846359435">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.cortus.builddefinitions.APS3PerProjectProfile"/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.cortus.builddefinitions.APS3PerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="aps3-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.cortus.builddefinitions.APS3PerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-f ${project_name}_scd.mk" command="aps3-make" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cconfiguration>
<cconfiguration id="aps.managedbuild.project.exe.config.release.1342017762">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="aps.managedbuild.project.exe.config.release.1342017762" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="FreeRTOS" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" description="" id="aps.managedbuild.project.exe.config.release.1342017762" name="Release" parent="aps.managedbuild.project.exe.config.release" preannouncebuildStep="Rebuild C library and crt0-jtag.o if necessary" prebuildStep="make prebuild">
<folderInfo id="aps.managedbuild.project.exe.config.release.1342017762." name="/" resourcePath="">
<toolChain id="aps.managedbuild.exe.config.rel.toolchain.1154376887" name="APS3 Tool Chain" superClass="aps.managedbuild.exe.config.rel.toolchain">
<targetPlatform id="aps.managedbuild.exe.config.rel.toolchain.targetplatform.944411008" name="APS3 Platform" superClass="aps.managedbuild.exe.config.rel.toolchain.targetplatform"/>
<builder buildPath="${workspace_loc:/FreeRTOS/Release}" id="aps.managedbuild.exe.config.rel.toolchain.builder.1564405757" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make for APS" superClass="aps.managedbuild.exe.config.rel.toolchain.builder"/>
<tool id="aps.managedbuild.toolchain.assembler.2117821479" name="APS3 Assembler" superClass="aps.managedbuild.toolchain.assembler">
<inputType id="aps.managedbuild.tool.assembler.input.1291864346" superClass="aps.managedbuild.tool.assembler.input"/>
</tool>
<tool id="aps.managedbuild.toolchain.c.compiler.101966342" name="APS3 C Compiler" superClass="aps.managedbuild.toolchain.c.compiler">
<option defaultValue="aps.c.optimization.level.size" id="aps.c.compiler.option.optimization.level.374767543" name="Optimization Level" superClass="aps.c.compiler.option.optimization.level" valueType="enumerated"/>
<option id="aps.c.compiler.option.include.paths.31240964" name="Include paths (-I)" superClass="aps.c.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="../Demo/Common/include"/>
<listOptionValue builtIn="false" value="../Demo/CORTUS_APS3_GCC"/>
<listOptionValue builtIn="false" value="../Source/include"/>
<listOptionValue builtIn="false" value="../Source/portable/GCC/CORTUS_APS3"/>
</option>
<inputType id="aps.managedbuild.tool.c.compiler.input.1715146867" superClass="aps.managedbuild.tool.c.compiler.input"/>
</tool>
<tool id="aps.managedbuild.toolchain.cpp.compiler.399777207" name="APS3 C++ Compiler" superClass="aps.managedbuild.toolchain.cpp.compiler">
<option defaultValue="aps.c.optimization.level.size" id="aps.cpp.compiler.option.optimization.level.735472277" name="Optimization Level" superClass="aps.cpp.compiler.option.optimization.level" valueType="enumerated"/>
</tool>
<tool id="aps.managedbuild.toolchain.c.linker.1546591287" name="APS3 C Linker" superClass="aps.managedbuild.toolchain.c.linker">
<inputType id="aps.managedbuild.tool.c.linker.input.1700836906" superClass="aps.managedbuild.tool.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="aps.managedbuild.toolchain.cpp.linker.1669982255" name="APS3 C++ Linker" superClass="aps.managedbuild.toolchain.cpp.linker"/>
<tool id="aps.managedbuild.toolchain.archiver.605551981" name="APS3 Librarian" superClass="aps.managedbuild.toolchain.archiver"/>
</toolChain>
</folderInfo>
<sourceEntries>
<entry excluding="Demo/Common/crhook.c|Demo/Common/crflash.c|Demo/Common/climon.c|Demo/Common/cliFatCmds.c|Demo/Common/IntQueue.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.cortus.builddefinitions.APS3PerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="aps3-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.cortus.builddefinitions.APS3PerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-f ${project_name}_scd.mk" command="aps3-make" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<scannerConfigBuildInfo instanceId="aps.managedbuild.project.exe.config.debug.77227718;aps.managedbuild.project.exe.config.debug.77227718.;aps.managedbuild.toolchain.c.compiler.320865439;aps.managedbuild.tool.c.compiler.input.846359435">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.cortus.builddefinitions.APS3PerProjectProfile"/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.cortus.builddefinitions.APS3PerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="aps3-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.cortus.builddefinitions.APS3PerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-f ${project_name}_scd.mk" command="aps3-make" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="FreeRTOS.aps.managedbuild.project.exe.331027925" name="APS3 Executable project" projectType="aps.managedbuild.project.exe"/>
</storageModule>
</cproject>
/CORTUS_APS3_GCC/ReadMe_Set_Up.txt
0,0 → 1,5
1) Program Cortus\eval-r3.0.2a\eval-r3.0.2a.tar\eval-r3.0.2a\cortus\vlog\impl\xstart-aps3-eval\fpga1000.mcs into the PROM.
 
2) Edit .jtag_ini so that the USB cable is being used and the parallel cable is commented out.
 
3) Copy dpcutil.dll from the Windows system32 directory into the cortus-ide\toolchain\bin directory.
/CORTUS_APS3_GCC/BSP_ProjectForDebugging.zip Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
CORTUS_APS3_GCC/BSP_ProjectForDebugging.zip Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.