URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk
- from Rev 578 to Rev 579
- ↔ Reverse comparison
Rev 578 → Rev 579
/rtos/freertos-6.1.1/Demo/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 ); |
} |
/*-----------------------------------------------------------*/ |
|
|
/rtos/freertos-6.1.1/Demo/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 ); |
} |
} |
|
/rtos/freertos-6.1.1/Demo/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 |
|
/rtos/freertos-6.1.1/Demo/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 */ |
|
|
/rtos/freertos-6.1.1/Demo/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( ;; ); |
} |
|
|
/rtos/freertos-6.1.1/Demo/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; |
} |
} |
} |
} |
} |
} |
|
|
/rtos/freertos-6.1.1/Demo/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: |
/rtos/freertos-6.1.1/Demo/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 |
|
/rtos/freertos-6.1.1/Demo/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; |
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/rtos/freertos-6.1.1/Demo/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> |
/rtos/freertos-6.1.1/Demo/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 |
/rtos/freertos-6.1.1/Demo/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> |
/rtos/freertos-6.1.1/Demo/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. |
/rtos/freertos-6.1.1/Demo/CORTUS_APS3_GCC/BSP_ProjectForDebugging.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
rtos/freertos-6.1.1/Demo/CORTUS_APS3_GCC/BSP_ProjectForDebugging.zip
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property