[修改] 增加freeRTOS
1. 版本FreeRTOSv202212.01,命名为kernel;
This commit is contained in:
77
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/ConfigPerformance.c
Normal file
77
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/ConfigPerformance.c
Normal file
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file implements functions to access and manipulate the PIC32 hardware
|
||||
* without reliance on third party library functions that may be liable to
|
||||
* change.
|
||||
*/
|
||||
|
||||
/* FreeRTOS includes. */
|
||||
#include "FreeRTOS.h"
|
||||
|
||||
/* Demo includes. */
|
||||
#include "ConfigPerformance.h"
|
||||
|
||||
#define hwUNLOCK_KEY_0 ( 0xAA996655UL )
|
||||
#define hwUNLOCK_KEY_1 ( 0x556699AAUL )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vHardwareConfigurePerformance( void )
|
||||
{
|
||||
/* set PBCLK2 to deliver 40Mhz clock for PMP/I2C/UART/SPI. */
|
||||
SYSKEY = hwUNLOCK_KEY_0;
|
||||
SYSKEY = hwUNLOCK_KEY_1;
|
||||
|
||||
/* 200MHz / 5 = 40MHz */
|
||||
PB2DIVbits.PBDIV = 0b100;
|
||||
|
||||
/* Timers use clock PBCLK3, set this to 40MHz. */
|
||||
PB3DIVbits.PBDIV = 0b100;
|
||||
|
||||
/* Ports use PBCLK4. */
|
||||
PB4DIVbits.PBDIV = 0b000;
|
||||
|
||||
SYSKEY = 0;
|
||||
|
||||
/* Disable interrupts - note taskDISABLE_INTERRUPTS() cannot be used here as
|
||||
FreeRTOS does not globally disable interrupt. */
|
||||
__builtin_disable_interrupts();
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vHardwareUseMultiVectoredInterrupts( void )
|
||||
{
|
||||
/* Enable multi-vector interrupts. */
|
||||
_CP0_BIS_CAUSE( 0x00800000U );
|
||||
INTCONSET = _INTCON_MVEC_MASK;
|
||||
__builtin_enable_interrupts();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
42
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/ConfigPerformance.h
Normal file
42
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/ConfigPerformance.h
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_PERFORMANCE_H
|
||||
#define CONFIG_PERFORMANCE_H
|
||||
|
||||
/*
|
||||
* Configures the hardware for maximum performance by setting the speed of the
|
||||
* peripheral bus and enabling the cache.
|
||||
*/
|
||||
void vHardwareConfigurePerformance( void );
|
||||
|
||||
/*
|
||||
* Configure the interrupt controller to use a separate vector for each
|
||||
* interrupt.
|
||||
*/
|
||||
void vHardwareUseMultiVectoredInterrupts( void );
|
||||
|
||||
#endif /* CONFIG_PERFORMANCE_H */
|
||||
112
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/FreeRTOSConfig.h
Normal file
112
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/FreeRTOSConfig.h
Normal file
@ -0,0 +1,112 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef FREERTOS_CONFIG_H
|
||||
#define FREERTOS_CONFIG_H
|
||||
|
||||
#include <xc.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_PORT_OPTIMISED_TASK_SELECTION 1
|
||||
#define configUSE_QUEUE_SETS 1
|
||||
#define configUSE_IDLE_HOOK 0
|
||||
#define configUSE_TICK_HOOK 1
|
||||
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
|
||||
#define configCPU_CLOCK_HZ ( 200000000UL )
|
||||
#define configPERIPHERAL_CLOCK_HZ ( 40000000UL )
|
||||
#define configMAX_PRIORITIES ( 5UL )
|
||||
#define configMINIMAL_STACK_SIZE ( 190 )
|
||||
#define configISR_STACK_SIZE ( 400 )
|
||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) 60000 )
|
||||
#define configMAX_TASK_NAME_LEN ( 8 )
|
||||
#define configUSE_TRACE_FACILITY 0
|
||||
#define configUSE_16_BIT_TICKS 0
|
||||
#define configIDLE_SHOULD_YIELD 1
|
||||
#define configUSE_MUTEXES 1
|
||||
#define configCHECK_FOR_STACK_OVERFLOW 3 /* Three also checks the system/interrupt stack. */
|
||||
#define configQUEUE_REGISTRY_SIZE 0
|
||||
#define configUSE_RECURSIVE_MUTEXES 1
|
||||
#define configUSE_MALLOC_FAILED_HOOK 1
|
||||
#define configUSE_APPLICATION_TASK_TAG 0
|
||||
#define configUSE_COUNTING_SEMAPHORES 1
|
||||
#define configGENERATE_RUN_TIME_STATS 0
|
||||
|
||||
/* Enable support for Task based FPU operations. This will enable support for
|
||||
FPU context saving during switches only on architectures with hardware FPU.
|
||||
|
||||
NOTE: This constant is defined in the project options as configurations are
|
||||
provided that both enable and disable floating point support.
|
||||
#define configUSE_TASK_FPU_SUPPORT 0 */
|
||||
|
||||
|
||||
/* Software timer definitions. */
|
||||
#define configUSE_TIMERS 1
|
||||
#define configTIMER_TASK_PRIORITY ( 2 )
|
||||
#define configTIMER_QUEUE_LENGTH 5
|
||||
#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 )
|
||||
|
||||
/* Set the following definitions to 1 to include the API function, or zero
|
||||
to exclude the API function. */
|
||||
|
||||
#define INCLUDE_vTaskPrioritySet 1
|
||||
#define INCLUDE_uxTaskPriorityGet 1
|
||||
#define INCLUDE_vTaskDelete 1
|
||||
#define INCLUDE_vTaskCleanUpResources 0
|
||||
#define INCLUDE_vTaskSuspend 1
|
||||
#define INCLUDE_vTaskDelayUntil 1
|
||||
#define INCLUDE_vTaskDelay 1
|
||||
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
||||
#define INCLUDE_eTaskGetState 1
|
||||
#define INCLUDE_xTimerPendFunctionCall 1
|
||||
|
||||
/* The priority at which the tick interrupt runs. This should probably be
|
||||
kept at 1. */
|
||||
#define configKERNEL_INTERRUPT_PRIORITY 0x01
|
||||
|
||||
/* The maximum interrupt priority from which FreeRTOS.org API functions can
|
||||
be called. Only API functions that end in ...FromISR() can be used within
|
||||
interrupts. */
|
||||
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 0x03
|
||||
|
||||
/* Prevent C specific syntax being included in assembly files. */
|
||||
#ifndef __LANGUAGE_ASSEMBLY
|
||||
extern void vAssertCalled( const char * pcFile, unsigned long ulLine );
|
||||
#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ )
|
||||
#endif
|
||||
|
||||
#endif /* FREERTOS_CONFIG_H */
|
||||
175
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/ISRTriggeredTask.c
Normal file
175
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/ISRTriggeredTask.c
Normal file
@ -0,0 +1,175 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Interrupt service routines that cannot nest have no special requirements and
|
||||
* can be written as per the compiler documentation. However interrupts written
|
||||
* in this manner will utilise the stack of whichever task was interrupts,
|
||||
* rather than the system stack, necessitating that adequate stack space be
|
||||
* allocated to each created task. It is therefore not recommended to write
|
||||
* interrupt service routines in this manner.
|
||||
*
|
||||
* Interrupts service routines that can nest require a simple assembly wrapper.
|
||||
* This file is provided as a example of how this is done.
|
||||
*
|
||||
* The example in this file creates a single task. The task blocks on a
|
||||
* semaphore which is periodically 'given' from a timer interrupt. The assembly
|
||||
* wrapper for the interrupt is implemented in ISRTriggeredTask_isr.S. The
|
||||
* C function called by the assembly wrapper is implemented in this file.
|
||||
*
|
||||
* The task toggle LED mainISR_TRIGGERED_LED each time it is unblocked by the
|
||||
* interrupt.
|
||||
*/
|
||||
|
||||
|
||||
/* Standard includes. */
|
||||
#include <stdio.h>
|
||||
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "semphr.h"
|
||||
|
||||
/* Standard demo includes. */
|
||||
#include "partest.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* The LED controlled by the ISR triggered task. */
|
||||
#define mainISR_TRIGGERED_LED ( 1 )
|
||||
|
||||
/* Constants used to configure T5. */
|
||||
#define mainT5PRESCALAR ( 6 )
|
||||
#define mainT5_SEMAPHORE_RATE ( 31250 )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* The task that is periodically triggered by an interrupt, as described at the
|
||||
* top of this file.
|
||||
*/
|
||||
static void prvISRTriggeredTask( void* pvParameters );
|
||||
|
||||
/*
|
||||
* Configures the T5 timer peripheral to generate the interrupts that unblock
|
||||
* the task implemented by the prvISRTriggeredTask() function.
|
||||
*/
|
||||
static void prvSetupT5( void );
|
||||
|
||||
/* The timer 5 interrupt handler. As this interrupt uses the FreeRTOS assembly
|
||||
entry point the IPL setting in the following function prototype has no effect. */
|
||||
void __attribute__( (interrupt(IPL3AUTO), vector(_TIMER_5_VECTOR))) vT5InterruptWrapper( void );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* The semaphore given by the T5 interrupt to unblock the task implemented by
|
||||
the prvISRTriggeredTask() function. */
|
||||
static SemaphoreHandle_t xBlockSemaphore = NULL;
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vStartISRTriggeredTask( void )
|
||||
{
|
||||
/* Create the task described at the top of this file. The timer is
|
||||
configured by the task itself. */
|
||||
xTaskCreate( prvISRTriggeredTask, /* The function that implements the task. */
|
||||
"ISRt", /* Text name to help debugging - not used by the kernel. */
|
||||
configMINIMAL_STACK_SIZE, /* The size of the stack to allocate to the task - defined in words, not bytes. */
|
||||
NULL, /* The parameter to pass into the task. Not used in this case. */
|
||||
configMAX_PRIORITIES - 1, /* The priority at which the task is created. */
|
||||
NULL ); /* Used to pass a handle to the created task out of the function. Not used in this case. */
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vT5InterruptHandler( void )
|
||||
{
|
||||
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
|
||||
|
||||
/* This function is the handler for the peripheral timer interrupt.
|
||||
The interrupt is initially signalled in a separate assembly file
|
||||
which switches to the system stack and then calls this function.
|
||||
It gives a semaphore which signals the prvISRBlockTask */
|
||||
|
||||
/* Give the semaphore. If giving the semaphore causes the task to leave the
|
||||
Blocked state, and the priority of the task is higher than the priority of
|
||||
the interrupted task, then xHigherPriorityTaskWoken will be set to pdTRUE
|
||||
inside the xSemaphoreGiveFromISR() function. xHigherPriorityTaskWoken is
|
||||
later passed into portEND_SWITCHING_ISR(), where a context switch is
|
||||
requested if it is pdTRUE. The context switch ensures the interrupt returns
|
||||
directly to the unblocked task. */
|
||||
xSemaphoreGiveFromISR( xBlockSemaphore, &xHigherPriorityTaskWoken );
|
||||
|
||||
/* Clear the interrupt */
|
||||
IFS0CLR = _IFS0_T5IF_MASK;
|
||||
|
||||
/* See comment above the call to xSemaphoreGiveFromISR(). */
|
||||
portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvISRTriggeredTask( void* pvParameters )
|
||||
{
|
||||
/* Avoid compiler warnings. */
|
||||
( void ) pvParameters;
|
||||
|
||||
/* Create the semaphore used to signal this task */
|
||||
xBlockSemaphore = xSemaphoreCreateBinary();
|
||||
|
||||
/* Configure the timer to generate the interrupts. */
|
||||
prvSetupT5();
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Block on the binary semaphore given by the T5 interrupt. */
|
||||
xSemaphoreTake( xBlockSemaphore, portMAX_DELAY );
|
||||
|
||||
/* Toggle the LED. */
|
||||
vParTestToggleLED( mainISR_TRIGGERED_LED );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvSetupT5( void )
|
||||
{
|
||||
/* Set up timer 5 to generate an interrupt every 50 ms */
|
||||
T5CON = 0;
|
||||
TMR5 = 0;
|
||||
T5CONbits.TCKPS = mainT5PRESCALAR;
|
||||
PR5 = mainT5_SEMAPHORE_RATE;
|
||||
|
||||
/* Setup timer 5 interrupt priority to be the maximum from which interrupt
|
||||
safe FreeRTOS API functions can be called. Interrupt safe FreeRTOS API
|
||||
functions are those that end "FromISR". */
|
||||
IPC6bits.T5IP = configMAX_SYSCALL_INTERRUPT_PRIORITY;
|
||||
|
||||
/* Clear the interrupt as a starting condition. */
|
||||
IFS0bits.T5IF = 0;
|
||||
|
||||
/* Enable the interrupt. */
|
||||
IEC0bits.T5IE = 1;
|
||||
|
||||
/* Start the timer. */
|
||||
T5CONbits.TON = 1;
|
||||
}
|
||||
50
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/ISRTriggeredTask_isr.S
Normal file
50
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/ISRTriggeredTask_isr.S
Normal file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#include <xc.h>
|
||||
#include <sys/asm.h>
|
||||
#include "ISR_Support.h"
|
||||
|
||||
.set nomips16
|
||||
.set noreorder
|
||||
|
||||
.extern vT5InterruptHandler
|
||||
.extern xISRStackTop
|
||||
.global vT5InterruptWrapper
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
.ent vT5InterruptWrapper
|
||||
|
||||
vT5InterruptWrapper:
|
||||
|
||||
portSAVE_CONTEXT
|
||||
jal vT5InterruptHandler
|
||||
nop
|
||||
portRESTORE_CONTEXT
|
||||
|
||||
.end vT5InterruptWrapper
|
||||
|
||||
97
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/IntQueueTimer.c
Normal file
97
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/IntQueueTimer.c
Normal file
@ -0,0 +1,97 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
#include "IntQueueTimer.h"
|
||||
#include "IntQueue.h"
|
||||
|
||||
#define timerINTERRUPT3_FREQUENCY ( 2000UL )
|
||||
#define timerINTERRUPT4_FREQUENCY ( 2001UL )
|
||||
|
||||
void vT3InterruptHandler( void );
|
||||
void vT4InterruptHandler( void );
|
||||
|
||||
/* As these interrupts use the FreeRTOS interrupt entry point, the IPL settings
|
||||
in the following prototypes have no effect. The interrupt priorities are set
|
||||
by the ConfigIntTimerX() library calls in vInitialiseTimerForIntQueueTest(). */
|
||||
void __attribute__( (interrupt(IPL0AUTO), vector(_TIMER_3_VECTOR))) vT3InterruptWrapper( void );
|
||||
void __attribute__( (interrupt(IPL0AUTO), vector(_TIMER_4_VECTOR))) vT4InterruptWrapper( void );
|
||||
|
||||
void vInitialiseTimerForIntQueueTest( void )
|
||||
{
|
||||
/* Timer 1 is used for the tick interrupt, timer 2 is used for the high
|
||||
frequency interrupt test. This file therefore uses timers 3 and 4. */
|
||||
|
||||
T3CON = 0;
|
||||
TMR3 = 0;
|
||||
PR3 = ( unsigned short ) ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT3_FREQUENCY );
|
||||
|
||||
/* Setup timer 3 interrupt priority to be above the kernel priority. */
|
||||
IPC3bits.T3IP = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 1 );
|
||||
|
||||
/* Clear the interrupt as a starting condition. */
|
||||
IFS0bits.T3IF = 0;
|
||||
|
||||
/* Enable the interrupt. */
|
||||
IEC0bits.T3IE = 1;
|
||||
|
||||
/* Start the timer. */
|
||||
T3CONbits.TON = 1;
|
||||
|
||||
|
||||
/* Do the same for timer 4. */
|
||||
T4CON = 0;
|
||||
TMR4 = 0;
|
||||
PR4 = ( unsigned short ) ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT4_FREQUENCY );
|
||||
|
||||
/* Setup timer 4 interrupt priority to be above the kernel priority. */
|
||||
IPC4bits.T4IP = configMAX_SYSCALL_INTERRUPT_PRIORITY;
|
||||
|
||||
/* Clear the interrupt as a starting condition. */
|
||||
IFS0bits.T4IF = 0;
|
||||
|
||||
/* Enable the interrupt. */
|
||||
IEC0bits.T4IE = 1;
|
||||
|
||||
/* Start the timer. */
|
||||
T4CONbits.TON = 1;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vT3InterruptHandler( void )
|
||||
{
|
||||
IFS0CLR = _IFS0_T3IF_MASK;
|
||||
portEND_SWITCHING_ISR( xFirstTimerHandler() );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vT4InterruptHandler( void )
|
||||
{
|
||||
IFS0CLR = _IFS0_T4IF_MASK;
|
||||
portEND_SWITCHING_ISR( xSecondTimerHandler() );
|
||||
}
|
||||
|
||||
|
||||
35
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/IntQueueTimer.h
Normal file
35
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/IntQueueTimer.h
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef INT_QUEUE_TIMER_H
|
||||
#define INT_QUEUE_TIMER_H
|
||||
|
||||
void vInitialiseTimerForIntQueueTest( void );
|
||||
portBASE_TYPE xTimer0Handler( void );
|
||||
portBASE_TYPE xTimer1Handler( void );
|
||||
|
||||
#endif
|
||||
|
||||
76
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/IntQueueTimer_isr.S
Normal file
76
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/IntQueueTimer_isr.S
Normal file
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#include <xc.h>
|
||||
#include <sys/asm.h>
|
||||
#include "ISR_Support.h"
|
||||
|
||||
#define portEXC_CODE_MASK ( 0x1f << 2 )
|
||||
|
||||
.set nomips16
|
||||
.set noreorder
|
||||
|
||||
.extern vT3InterruptHandler
|
||||
.extern vT4InterruptHandler
|
||||
|
||||
.global vT3InterruptWrapper
|
||||
.global vT4InterruptWrapper
|
||||
|
||||
|
||||
/******************************************************************/
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
.ent vT3InterruptWrapper
|
||||
|
||||
vT3InterruptWrapper:
|
||||
|
||||
portSAVE_CONTEXT
|
||||
|
||||
jal vT3InterruptHandler
|
||||
nop
|
||||
|
||||
portRESTORE_CONTEXT
|
||||
|
||||
.end vT3InterruptWrapper
|
||||
|
||||
/******************************************************************/
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
.ent vT4InterruptWrapper
|
||||
|
||||
vT4InterruptWrapper:
|
||||
|
||||
portSAVE_CONTEXT
|
||||
|
||||
jal vT4InterruptHandler
|
||||
nop
|
||||
|
||||
portRESTORE_CONTEXT
|
||||
|
||||
.end vT4InterruptWrapper
|
||||
|
||||
89
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/ParTest/ParTest.c
Normal file
89
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/ParTest/ParTest.c
Normal file
@ -0,0 +1,89 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
|
||||
/* Demo app includes. */
|
||||
#include "partest.h"
|
||||
|
||||
#define ptOUTPUT 0
|
||||
#define ptALL_OFF 0
|
||||
#define ptNUM_LEDS 3
|
||||
|
||||
/*-----------------------------------------------------------
|
||||
* Simple parallel port IO routines.
|
||||
*-----------------------------------------------------------*/
|
||||
|
||||
void vParTestInitialise( void )
|
||||
{
|
||||
/* All LEDs output. */
|
||||
TRISH = ptOUTPUT;
|
||||
LATH = ptALL_OFF;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
|
||||
{
|
||||
unsigned portBASE_TYPE uxLEDBit;
|
||||
|
||||
if( uxLED < ptNUM_LEDS )
|
||||
{
|
||||
/* Which port H bit is being modified? */
|
||||
uxLEDBit = 1 << uxLED;
|
||||
|
||||
if( xValue )
|
||||
{
|
||||
/* Turn the LED on. Use of the LATHSET register removes the need
|
||||
to use a critical section. */
|
||||
LATHSET = uxLEDBit;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Turn the LED off. Use of the LATHCLR register removes the need
|
||||
to use a critical section. */
|
||||
LATHCLR = uxLEDBit;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
|
||||
{
|
||||
unsigned portBASE_TYPE uxLEDBit;
|
||||
|
||||
if( uxLED < ptNUM_LEDS )
|
||||
{
|
||||
uxLEDBit = 1 << uxLED;
|
||||
|
||||
/* Use of the LATHINV register removes the need to use a critical
|
||||
section. */
|
||||
LATHINV = uxLEDBit;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
108
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/Makefile
Normal file
108
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/Makefile
Normal file
@ -0,0 +1,108 @@
|
||||
#
|
||||
# There exist several targets which are by default empty and which can be
|
||||
# used for execution of your targets. These targets are usually executed
|
||||
# before and after some main targets. They are:
|
||||
#
|
||||
# .build-pre: called before 'build' target
|
||||
# .build-post: called after 'build' target
|
||||
# .clean-pre: called before 'clean' target
|
||||
# .clean-post: called after 'clean' target
|
||||
# .clobber-pre: called before 'clobber' target
|
||||
# .clobber-post: called after 'clobber' target
|
||||
# .all-pre: called before 'all' target
|
||||
# .all-post: called after 'all' target
|
||||
# .help-pre: called before 'help' target
|
||||
# .help-post: called after 'help' target
|
||||
#
|
||||
# Targets beginning with '.' are not intended to be called on their own.
|
||||
#
|
||||
# Main targets can be executed directly, and they are:
|
||||
#
|
||||
# build build a specific configuration
|
||||
# clean remove built files from a configuration
|
||||
# clobber remove all built files
|
||||
# all build all configurations
|
||||
# help print help mesage
|
||||
#
|
||||
# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
|
||||
# .help-impl are implemented in nbproject/makefile-impl.mk.
|
||||
#
|
||||
# Available make variables:
|
||||
#
|
||||
# CND_BASEDIR base directory for relative paths
|
||||
# CND_DISTDIR default top distribution directory (build artifacts)
|
||||
# CND_BUILDDIR default top build directory (object files, ...)
|
||||
# CONF name of current configuration
|
||||
# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration)
|
||||
# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration)
|
||||
# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration)
|
||||
# CND_PACKAGE_DIR_${CONF} directory of package (current configuration)
|
||||
# CND_PACKAGE_NAME_${CONF} name of package (current configuration)
|
||||
# CND_PACKAGE_PATH_${CONF} path to package (current configuration)
|
||||
#
|
||||
# NOCDDL
|
||||
|
||||
|
||||
# Environment
|
||||
MKDIR=mkdir
|
||||
CP=cp
|
||||
CCADMIN=CCadmin
|
||||
RANLIB=ranlib
|
||||
|
||||
|
||||
# build
|
||||
build: .build-post
|
||||
|
||||
.build-pre:
|
||||
# Add your pre 'build' code here...
|
||||
|
||||
.build-post: .build-impl
|
||||
# Add your post 'build' code here...
|
||||
|
||||
|
||||
# clean
|
||||
clean: .clean-post
|
||||
|
||||
.clean-pre:
|
||||
# Add your pre 'clean' code here...
|
||||
|
||||
.clean-post: .clean-impl
|
||||
# Add your post 'clean' code here...
|
||||
|
||||
|
||||
# clobber
|
||||
clobber: .clobber-post
|
||||
|
||||
.clobber-pre:
|
||||
# Add your pre 'clobber' code here...
|
||||
|
||||
.clobber-post: .clobber-impl
|
||||
# Add your post 'clobber' code here...
|
||||
|
||||
|
||||
# all
|
||||
all: .all-post
|
||||
|
||||
.all-pre:
|
||||
# Add your pre 'all' code here...
|
||||
|
||||
.all-post: .all-impl
|
||||
# Add your post 'all' code here...
|
||||
|
||||
|
||||
# help
|
||||
help: .help-post
|
||||
|
||||
.help-pre:
|
||||
# Add your pre 'help' code here...
|
||||
|
||||
.help-post: .help-impl
|
||||
# Add your post 'help' code here...
|
||||
|
||||
|
||||
|
||||
# include project implementation makefile
|
||||
include nbproject/Makefile-impl.mk
|
||||
|
||||
# include project make variables
|
||||
include nbproject/Makefile-variables.mk
|
||||
@ -0,0 +1,557 @@
|
||||
#
|
||||
# Generated Makefile - do not edit!
|
||||
#
|
||||
# Edit the Makefile in the project folder instead (../Makefile). Each target
|
||||
# has a -pre and a -post target defined where you can add customized code.
|
||||
#
|
||||
# This makefile implements configuration specific macros and targets.
|
||||
|
||||
|
||||
# Include project Makefile
|
||||
ifeq "${IGNORE_LOCAL}" "TRUE"
|
||||
# do not include local makefile. User is passing all local related variables already
|
||||
else
|
||||
include Makefile
|
||||
# Include makefile containing local settings
|
||||
ifeq "$(wildcard nbproject/Makefile-local-PIC32MZ2048_SK.mk)" "nbproject/Makefile-local-PIC32MZ2048_SK.mk"
|
||||
include nbproject/Makefile-local-PIC32MZ2048_SK.mk
|
||||
endif
|
||||
endif
|
||||
|
||||
# Environment
|
||||
MKDIR=gnumkdir -p
|
||||
RM=rm -f
|
||||
MV=mv
|
||||
CP=cp
|
||||
|
||||
# Macros
|
||||
CND_CONF=PIC32MZ2048_SK
|
||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
||||
IMAGE_TYPE=debug
|
||||
OUTPUT_SUFFIX=elf
|
||||
DEBUGGABLE_SUFFIX=elf
|
||||
FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
|
||||
else
|
||||
IMAGE_TYPE=production
|
||||
OUTPUT_SUFFIX=hex
|
||||
DEBUGGABLE_SUFFIX=elf
|
||||
FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
|
||||
endif
|
||||
|
||||
ifeq ($(COMPARE_BUILD), true)
|
||||
COMPARISON_BUILD=-mafrlcsj
|
||||
else
|
||||
COMPARISON_BUILD=
|
||||
endif
|
||||
|
||||
ifdef SUB_IMAGE_ADDRESS
|
||||
|
||||
else
|
||||
SUB_IMAGE_ADDRESS_COMMAND=
|
||||
endif
|
||||
|
||||
# Object Directory
|
||||
OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
|
||||
|
||||
# Distribution Directory
|
||||
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
|
||||
|
||||
# Source Files Quoted if spaced
|
||||
SOURCEFILES_QUOTED_IF_SPACED=../../Common/Minimal/GenQTest.c ../../Common/Minimal/QPeek.c ../../Common/Minimal/blocktim.c ../../Common/Minimal/flash_timer.c ../../Common/Minimal/semtest.c ../../Common/Minimal/IntQueue.c ../../Common/Minimal/QueueOverwrite.c ../../Common/Minimal/QueueSet.c ../../Common/Minimal/countsem.c ../../Common/Minimal/dynamic.c ../../Common/Minimal/recmutex.c ../../Common/Minimal/EventGroupsDemo.c ../../../Source/queue.c ../../../Source/tasks.c ../../../Source/list.c ../../../Source/timers.c ../../../Source/portable/MPLAB/PIC32MZ/port.c ../../../Source/portable/MPLAB/PIC32MZ/port_asm.S ../../../Source/portable/MemMang/heap_4.c ../../../Source/event_groups.c ../main.c ../ParTest/ParTest.c ../main_blinky.c ../ConfigPerformance.c ../main_full.c ../RegisterTestTasks.S ../IntQueueTimer.c ../IntQueueTimer_isr.S ../timertest.c ../timertest_isr.S ../ISRTriggeredTask.c ../ISRTriggeredTask_isr.S ../flop_mz.c
|
||||
|
||||
# Object Files Quoted if spaced
|
||||
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/1163846883/GenQTest.o ${OBJECTDIR}/_ext/1163846883/QPeek.o ${OBJECTDIR}/_ext/1163846883/blocktim.o ${OBJECTDIR}/_ext/1163846883/flash_timer.o ${OBJECTDIR}/_ext/1163846883/semtest.o ${OBJECTDIR}/_ext/1163846883/IntQueue.o ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o ${OBJECTDIR}/_ext/1163846883/QueueSet.o ${OBJECTDIR}/_ext/1163846883/countsem.o ${OBJECTDIR}/_ext/1163846883/dynamic.o ${OBJECTDIR}/_ext/1163846883/recmutex.o ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o ${OBJECTDIR}/_ext/449926602/queue.o ${OBJECTDIR}/_ext/449926602/tasks.o ${OBJECTDIR}/_ext/449926602/list.o ${OBJECTDIR}/_ext/449926602/timers.o ${OBJECTDIR}/_ext/332309698/port.o ${OBJECTDIR}/_ext/332309698/port_asm.o ${OBJECTDIR}/_ext/1884096877/heap_4.o ${OBJECTDIR}/_ext/449926602/event_groups.o ${OBJECTDIR}/_ext/1472/main.o ${OBJECTDIR}/_ext/809743516/ParTest.o ${OBJECTDIR}/_ext/1472/main_blinky.o ${OBJECTDIR}/_ext/1472/ConfigPerformance.o ${OBJECTDIR}/_ext/1472/main_full.o ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o ${OBJECTDIR}/_ext/1472/IntQueueTimer.o ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o ${OBJECTDIR}/_ext/1472/timertest.o ${OBJECTDIR}/_ext/1472/timertest_isr.o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o ${OBJECTDIR}/_ext/1472/flop_mz.o
|
||||
POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/1163846883/GenQTest.o.d ${OBJECTDIR}/_ext/1163846883/QPeek.o.d ${OBJECTDIR}/_ext/1163846883/blocktim.o.d ${OBJECTDIR}/_ext/1163846883/flash_timer.o.d ${OBJECTDIR}/_ext/1163846883/semtest.o.d ${OBJECTDIR}/_ext/1163846883/IntQueue.o.d ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o.d ${OBJECTDIR}/_ext/1163846883/QueueSet.o.d ${OBJECTDIR}/_ext/1163846883/countsem.o.d ${OBJECTDIR}/_ext/1163846883/dynamic.o.d ${OBJECTDIR}/_ext/1163846883/recmutex.o.d ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o.d ${OBJECTDIR}/_ext/449926602/queue.o.d ${OBJECTDIR}/_ext/449926602/tasks.o.d ${OBJECTDIR}/_ext/449926602/list.o.d ${OBJECTDIR}/_ext/449926602/timers.o.d ${OBJECTDIR}/_ext/332309698/port.o.d ${OBJECTDIR}/_ext/332309698/port_asm.o.d ${OBJECTDIR}/_ext/1884096877/heap_4.o.d ${OBJECTDIR}/_ext/449926602/event_groups.o.d ${OBJECTDIR}/_ext/1472/main.o.d ${OBJECTDIR}/_ext/809743516/ParTest.o.d ${OBJECTDIR}/_ext/1472/main_blinky.o.d ${OBJECTDIR}/_ext/1472/ConfigPerformance.o.d ${OBJECTDIR}/_ext/1472/main_full.o.d ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.d ${OBJECTDIR}/_ext/1472/IntQueueTimer.o.d ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.d ${OBJECTDIR}/_ext/1472/timertest.o.d ${OBJECTDIR}/_ext/1472/timertest_isr.o.d ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.d ${OBJECTDIR}/_ext/1472/flop_mz.o.d
|
||||
|
||||
# Object Files
|
||||
OBJECTFILES=${OBJECTDIR}/_ext/1163846883/GenQTest.o ${OBJECTDIR}/_ext/1163846883/QPeek.o ${OBJECTDIR}/_ext/1163846883/blocktim.o ${OBJECTDIR}/_ext/1163846883/flash_timer.o ${OBJECTDIR}/_ext/1163846883/semtest.o ${OBJECTDIR}/_ext/1163846883/IntQueue.o ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o ${OBJECTDIR}/_ext/1163846883/QueueSet.o ${OBJECTDIR}/_ext/1163846883/countsem.o ${OBJECTDIR}/_ext/1163846883/dynamic.o ${OBJECTDIR}/_ext/1163846883/recmutex.o ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o ${OBJECTDIR}/_ext/449926602/queue.o ${OBJECTDIR}/_ext/449926602/tasks.o ${OBJECTDIR}/_ext/449926602/list.o ${OBJECTDIR}/_ext/449926602/timers.o ${OBJECTDIR}/_ext/332309698/port.o ${OBJECTDIR}/_ext/332309698/port_asm.o ${OBJECTDIR}/_ext/1884096877/heap_4.o ${OBJECTDIR}/_ext/449926602/event_groups.o ${OBJECTDIR}/_ext/1472/main.o ${OBJECTDIR}/_ext/809743516/ParTest.o ${OBJECTDIR}/_ext/1472/main_blinky.o ${OBJECTDIR}/_ext/1472/ConfigPerformance.o ${OBJECTDIR}/_ext/1472/main_full.o ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o ${OBJECTDIR}/_ext/1472/IntQueueTimer.o ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o ${OBJECTDIR}/_ext/1472/timertest.o ${OBJECTDIR}/_ext/1472/timertest_isr.o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o ${OBJECTDIR}/_ext/1472/flop_mz.o
|
||||
|
||||
# Source Files
|
||||
SOURCEFILES=../../Common/Minimal/GenQTest.c ../../Common/Minimal/QPeek.c ../../Common/Minimal/blocktim.c ../../Common/Minimal/flash_timer.c ../../Common/Minimal/semtest.c ../../Common/Minimal/IntQueue.c ../../Common/Minimal/QueueOverwrite.c ../../Common/Minimal/QueueSet.c ../../Common/Minimal/countsem.c ../../Common/Minimal/dynamic.c ../../Common/Minimal/recmutex.c ../../Common/Minimal/EventGroupsDemo.c ../../../Source/queue.c ../../../Source/tasks.c ../../../Source/list.c ../../../Source/timers.c ../../../Source/portable/MPLAB/PIC32MZ/port.c ../../../Source/portable/MPLAB/PIC32MZ/port_asm.S ../../../Source/portable/MemMang/heap_4.c ../../../Source/event_groups.c ../main.c ../ParTest/ParTest.c ../main_blinky.c ../ConfigPerformance.c ../main_full.c ../RegisterTestTasks.S ../IntQueueTimer.c ../IntQueueTimer_isr.S ../timertest.c ../timertest_isr.S ../ISRTriggeredTask.c ../ISRTriggeredTask_isr.S ../flop_mz.c
|
||||
|
||||
|
||||
CFLAGS=
|
||||
ASFLAGS=
|
||||
LDLIBSOPTIONS=
|
||||
|
||||
############# Tool locations ##########################################
|
||||
# If you copy a project from one host to another, the path where the #
|
||||
# compiler is installed may be different. #
|
||||
# If you open this project with MPLAB X in the new host, this #
|
||||
# makefile will be regenerated and the paths will be corrected. #
|
||||
#######################################################################
|
||||
# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build
|
||||
FIXDEPS=fixDeps
|
||||
|
||||
.build-conf: ${BUILD_SUBPROJECTS}
|
||||
ifneq ($(INFORMATION_MESSAGE), )
|
||||
@echo $(INFORMATION_MESSAGE)
|
||||
endif
|
||||
${MAKE} -f nbproject/Makefile-PIC32MZ2048_SK.mk dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
|
||||
|
||||
MP_PROCESSOR_OPTION=32MZ2048ECH144
|
||||
MP_LINKER_FILE_OPTION=
|
||||
# ------------------------------------------------------------------------------------
|
||||
# Rules for buildStep: assemble
|
||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
||||
else
|
||||
endif
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# Rules for buildStep: assembleWithPreprocess
|
||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
||||
${OBJECTDIR}/_ext/332309698/port_asm.o: ../../../Source/portable/MPLAB/PIC32MZ/port_asm.S nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/332309698"
|
||||
@${RM} ${OBJECTDIR}/_ext/332309698/port_asm.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/332309698/port_asm.o
|
||||
@${RM} ${OBJECTDIR}/_ext/332309698/port_asm.o.ok ${OBJECTDIR}/_ext/332309698/port_asm.o.err
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/332309698/port_asm.o.d" "${OBJECTDIR}/_ext/332309698/port_asm.o.asm.d" -t $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_AS_PRE) -D__DEBUG -DPKOBSKDEPlatformTool=1 -c -mprocessor=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/_ext/332309698/port_asm.o.d" -o ${OBJECTDIR}/_ext/332309698/port_asm.o ../../../Source/portable/MPLAB/PIC32MZ/port_asm.S -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc -Wa,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_AS_POST),-MD="${OBJECTDIR}/_ext/332309698/port_asm.o.asm.d",--defsym=__ICD2RAM=1,--defsym=__MPLAB_DEBUG=1,--gdwarf-2,--defsym=__DEBUG=1,--defsym=PKOBSKDEPlatformTool=1 -I../../../Source/portable/MPLAB/PIC32MZ -I../
|
||||
|
||||
${OBJECTDIR}/_ext/1472/RegisterTestTasks.o: ../RegisterTestTasks.S nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.ok ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.err
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.d" "${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.asm.d" -t $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_AS_PRE) -D__DEBUG -DPKOBSKDEPlatformTool=1 -c -mprocessor=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.d" -o ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o ../RegisterTestTasks.S -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc -Wa,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_AS_POST),-MD="${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.asm.d",--defsym=__ICD2RAM=1,--defsym=__MPLAB_DEBUG=1,--gdwarf-2,--defsym=__DEBUG=1,--defsym=PKOBSKDEPlatformTool=1 -I../../../Source/portable/MPLAB/PIC32MZ -I../
|
||||
|
||||
${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o: ../IntQueueTimer_isr.S nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.ok ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.err
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.d" "${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.asm.d" -t $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_AS_PRE) -D__DEBUG -DPKOBSKDEPlatformTool=1 -c -mprocessor=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.d" -o ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o ../IntQueueTimer_isr.S -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc -Wa,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_AS_POST),-MD="${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.asm.d",--defsym=__ICD2RAM=1,--defsym=__MPLAB_DEBUG=1,--gdwarf-2,--defsym=__DEBUG=1,--defsym=PKOBSKDEPlatformTool=1 -I../../../Source/portable/MPLAB/PIC32MZ -I../
|
||||
|
||||
${OBJECTDIR}/_ext/1472/timertest_isr.o: ../timertest_isr.S nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/timertest_isr.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/timertest_isr.o
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/timertest_isr.o.ok ${OBJECTDIR}/_ext/1472/timertest_isr.o.err
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/timertest_isr.o.d" "${OBJECTDIR}/_ext/1472/timertest_isr.o.asm.d" -t $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_AS_PRE) -D__DEBUG -DPKOBSKDEPlatformTool=1 -c -mprocessor=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/_ext/1472/timertest_isr.o.d" -o ${OBJECTDIR}/_ext/1472/timertest_isr.o ../timertest_isr.S -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc -Wa,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_AS_POST),-MD="${OBJECTDIR}/_ext/1472/timertest_isr.o.asm.d",--defsym=__ICD2RAM=1,--defsym=__MPLAB_DEBUG=1,--gdwarf-2,--defsym=__DEBUG=1,--defsym=PKOBSKDEPlatformTool=1 -I../../../Source/portable/MPLAB/PIC32MZ -I../
|
||||
|
||||
${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o: ../ISRTriggeredTask_isr.S nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.ok ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.err
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.d" "${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.asm.d" -t $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_AS_PRE) -D__DEBUG -DPKOBSKDEPlatformTool=1 -c -mprocessor=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.d" -o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o ../ISRTriggeredTask_isr.S -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc -Wa,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_AS_POST),-MD="${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.asm.d",--defsym=__ICD2RAM=1,--defsym=__MPLAB_DEBUG=1,--gdwarf-2,--defsym=__DEBUG=1,--defsym=PKOBSKDEPlatformTool=1 -I../../../Source/portable/MPLAB/PIC32MZ -I../
|
||||
|
||||
else
|
||||
${OBJECTDIR}/_ext/332309698/port_asm.o: ../../../Source/portable/MPLAB/PIC32MZ/port_asm.S nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/332309698"
|
||||
@${RM} ${OBJECTDIR}/_ext/332309698/port_asm.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/332309698/port_asm.o
|
||||
@${RM} ${OBJECTDIR}/_ext/332309698/port_asm.o.ok ${OBJECTDIR}/_ext/332309698/port_asm.o.err
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/332309698/port_asm.o.d" "${OBJECTDIR}/_ext/332309698/port_asm.o.asm.d" -t $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_AS_PRE) -c -mprocessor=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/_ext/332309698/port_asm.o.d" -o ${OBJECTDIR}/_ext/332309698/port_asm.o ../../../Source/portable/MPLAB/PIC32MZ/port_asm.S -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc -Wa,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_AS_POST),-MD="${OBJECTDIR}/_ext/332309698/port_asm.o.asm.d",--gdwarf-2 -I../../../Source/portable/MPLAB/PIC32MZ -I../
|
||||
|
||||
${OBJECTDIR}/_ext/1472/RegisterTestTasks.o: ../RegisterTestTasks.S nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.ok ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.err
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.d" "${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.asm.d" -t $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_AS_PRE) -c -mprocessor=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.d" -o ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o ../RegisterTestTasks.S -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc -Wa,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_AS_POST),-MD="${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.asm.d",--gdwarf-2 -I../../../Source/portable/MPLAB/PIC32MZ -I../
|
||||
|
||||
${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o: ../IntQueueTimer_isr.S nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.ok ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.err
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.d" "${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.asm.d" -t $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_AS_PRE) -c -mprocessor=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.d" -o ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o ../IntQueueTimer_isr.S -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc -Wa,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_AS_POST),-MD="${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.asm.d",--gdwarf-2 -I../../../Source/portable/MPLAB/PIC32MZ -I../
|
||||
|
||||
${OBJECTDIR}/_ext/1472/timertest_isr.o: ../timertest_isr.S nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/timertest_isr.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/timertest_isr.o
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/timertest_isr.o.ok ${OBJECTDIR}/_ext/1472/timertest_isr.o.err
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/timertest_isr.o.d" "${OBJECTDIR}/_ext/1472/timertest_isr.o.asm.d" -t $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_AS_PRE) -c -mprocessor=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/_ext/1472/timertest_isr.o.d" -o ${OBJECTDIR}/_ext/1472/timertest_isr.o ../timertest_isr.S -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc -Wa,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_AS_POST),-MD="${OBJECTDIR}/_ext/1472/timertest_isr.o.asm.d",--gdwarf-2 -I../../../Source/portable/MPLAB/PIC32MZ -I../
|
||||
|
||||
${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o: ../ISRTriggeredTask_isr.S nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.ok ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.err
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.d" "${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.asm.d" -t $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_AS_PRE) -c -mprocessor=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.d" -o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o ../ISRTriggeredTask_isr.S -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc -Wa,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_AS_POST),-MD="${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.asm.d",--gdwarf-2 -I../../../Source/portable/MPLAB/PIC32MZ -I../
|
||||
|
||||
endif
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# Rules for buildStep: compile
|
||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
||||
${OBJECTDIR}/_ext/1163846883/GenQTest.o: ../../Common/Minimal/GenQTest.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/GenQTest.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/GenQTest.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/GenQTest.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/GenQTest.o.d" -o ${OBJECTDIR}/_ext/1163846883/GenQTest.o ../../Common/Minimal/GenQTest.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/QPeek.o: ../../Common/Minimal/QPeek.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/QPeek.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/QPeek.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/QPeek.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/QPeek.o.d" -o ${OBJECTDIR}/_ext/1163846883/QPeek.o ../../Common/Minimal/QPeek.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/blocktim.o: ../../Common/Minimal/blocktim.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/blocktim.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/blocktim.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/blocktim.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/blocktim.o.d" -o ${OBJECTDIR}/_ext/1163846883/blocktim.o ../../Common/Minimal/blocktim.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/flash_timer.o: ../../Common/Minimal/flash_timer.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/flash_timer.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/flash_timer.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/flash_timer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/flash_timer.o.d" -o ${OBJECTDIR}/_ext/1163846883/flash_timer.o ../../Common/Minimal/flash_timer.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/semtest.o: ../../Common/Minimal/semtest.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/semtest.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/semtest.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/semtest.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/semtest.o.d" -o ${OBJECTDIR}/_ext/1163846883/semtest.o ../../Common/Minimal/semtest.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/IntQueue.o: ../../Common/Minimal/IntQueue.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/IntQueue.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/IntQueue.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/IntQueue.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/IntQueue.o.d" -o ${OBJECTDIR}/_ext/1163846883/IntQueue.o ../../Common/Minimal/IntQueue.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o: ../../Common/Minimal/QueueOverwrite.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o.d" -o ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o ../../Common/Minimal/QueueOverwrite.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/QueueSet.o: ../../Common/Minimal/QueueSet.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/QueueSet.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/QueueSet.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/QueueSet.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/QueueSet.o.d" -o ${OBJECTDIR}/_ext/1163846883/QueueSet.o ../../Common/Minimal/QueueSet.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/countsem.o: ../../Common/Minimal/countsem.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/countsem.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/countsem.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/countsem.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/countsem.o.d" -o ${OBJECTDIR}/_ext/1163846883/countsem.o ../../Common/Minimal/countsem.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/dynamic.o: ../../Common/Minimal/dynamic.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/dynamic.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/dynamic.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/dynamic.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/dynamic.o.d" -o ${OBJECTDIR}/_ext/1163846883/dynamic.o ../../Common/Minimal/dynamic.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/recmutex.o: ../../Common/Minimal/recmutex.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/recmutex.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/recmutex.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/recmutex.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/recmutex.o.d" -o ${OBJECTDIR}/_ext/1163846883/recmutex.o ../../Common/Minimal/recmutex.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o: ../../Common/Minimal/EventGroupsDemo.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o.d" -o ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o ../../Common/Minimal/EventGroupsDemo.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/449926602/queue.o: ../../../Source/queue.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/449926602"
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/queue.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/queue.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/449926602/queue.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/449926602/queue.o.d" -o ${OBJECTDIR}/_ext/449926602/queue.o ../../../Source/queue.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/449926602/tasks.o: ../../../Source/tasks.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/449926602"
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/tasks.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/tasks.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/449926602/tasks.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/449926602/tasks.o.d" -o ${OBJECTDIR}/_ext/449926602/tasks.o ../../../Source/tasks.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/449926602/list.o: ../../../Source/list.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/449926602"
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/list.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/list.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/449926602/list.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/449926602/list.o.d" -o ${OBJECTDIR}/_ext/449926602/list.o ../../../Source/list.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/449926602/timers.o: ../../../Source/timers.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/449926602"
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/timers.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/timers.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/449926602/timers.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/449926602/timers.o.d" -o ${OBJECTDIR}/_ext/449926602/timers.o ../../../Source/timers.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/332309698/port.o: ../../../Source/portable/MPLAB/PIC32MZ/port.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/332309698"
|
||||
@${RM} ${OBJECTDIR}/_ext/332309698/port.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/332309698/port.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/332309698/port.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/332309698/port.o.d" -o ${OBJECTDIR}/_ext/332309698/port.o ../../../Source/portable/MPLAB/PIC32MZ/port.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1884096877/heap_4.o: ../../../Source/portable/MemMang/heap_4.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1884096877"
|
||||
@${RM} ${OBJECTDIR}/_ext/1884096877/heap_4.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1884096877/heap_4.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1884096877/heap_4.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1884096877/heap_4.o.d" -o ${OBJECTDIR}/_ext/1884096877/heap_4.o ../../../Source/portable/MemMang/heap_4.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/449926602/event_groups.o: ../../../Source/event_groups.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/449926602"
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/event_groups.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/event_groups.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/449926602/event_groups.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/449926602/event_groups.o.d" -o ${OBJECTDIR}/_ext/449926602/event_groups.o ../../../Source/event_groups.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/main.o: ../main.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/main.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/main.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/main.o.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/809743516/ParTest.o: ../ParTest/ParTest.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/809743516"
|
||||
@${RM} ${OBJECTDIR}/_ext/809743516/ParTest.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/809743516/ParTest.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/809743516/ParTest.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/809743516/ParTest.o.d" -o ${OBJECTDIR}/_ext/809743516/ParTest.o ../ParTest/ParTest.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/main_blinky.o: ../main_blinky.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/main_blinky.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/main_blinky.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/main_blinky.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/main_blinky.o.d" -o ${OBJECTDIR}/_ext/1472/main_blinky.o ../main_blinky.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/ConfigPerformance.o: ../ConfigPerformance.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ConfigPerformance.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ConfigPerformance.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/ConfigPerformance.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/ConfigPerformance.o.d" -o ${OBJECTDIR}/_ext/1472/ConfigPerformance.o ../ConfigPerformance.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/main_full.o: ../main_full.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/main_full.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/main_full.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/main_full.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/main_full.o.d" -o ${OBJECTDIR}/_ext/1472/main_full.o ../main_full.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/IntQueueTimer.o: ../IntQueueTimer.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/IntQueueTimer.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/IntQueueTimer.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/IntQueueTimer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/IntQueueTimer.o.d" -o ${OBJECTDIR}/_ext/1472/IntQueueTimer.o ../IntQueueTimer.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/timertest.o: ../timertest.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/timertest.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/timertest.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/timertest.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/timertest.o.d" -o ${OBJECTDIR}/_ext/1472/timertest.o ../timertest.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o: ../ISRTriggeredTask.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d" -o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o ../ISRTriggeredTask.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/flop_mz.o: ../flop_mz.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/flop_mz.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/flop_mz.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/flop_mz.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -DPKOBSKDEPlatformTool=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/flop_mz.o.d" -o ${OBJECTDIR}/_ext/1472/flop_mz.o ../flop_mz.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
else
|
||||
${OBJECTDIR}/_ext/1163846883/GenQTest.o: ../../Common/Minimal/GenQTest.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/GenQTest.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/GenQTest.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/GenQTest.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/GenQTest.o.d" -o ${OBJECTDIR}/_ext/1163846883/GenQTest.o ../../Common/Minimal/GenQTest.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/QPeek.o: ../../Common/Minimal/QPeek.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/QPeek.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/QPeek.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/QPeek.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/QPeek.o.d" -o ${OBJECTDIR}/_ext/1163846883/QPeek.o ../../Common/Minimal/QPeek.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/blocktim.o: ../../Common/Minimal/blocktim.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/blocktim.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/blocktim.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/blocktim.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/blocktim.o.d" -o ${OBJECTDIR}/_ext/1163846883/blocktim.o ../../Common/Minimal/blocktim.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/flash_timer.o: ../../Common/Minimal/flash_timer.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/flash_timer.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/flash_timer.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/flash_timer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/flash_timer.o.d" -o ${OBJECTDIR}/_ext/1163846883/flash_timer.o ../../Common/Minimal/flash_timer.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/semtest.o: ../../Common/Minimal/semtest.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/semtest.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/semtest.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/semtest.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/semtest.o.d" -o ${OBJECTDIR}/_ext/1163846883/semtest.o ../../Common/Minimal/semtest.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/IntQueue.o: ../../Common/Minimal/IntQueue.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/IntQueue.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/IntQueue.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/IntQueue.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/IntQueue.o.d" -o ${OBJECTDIR}/_ext/1163846883/IntQueue.o ../../Common/Minimal/IntQueue.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o: ../../Common/Minimal/QueueOverwrite.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o.d" -o ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o ../../Common/Minimal/QueueOverwrite.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/QueueSet.o: ../../Common/Minimal/QueueSet.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/QueueSet.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/QueueSet.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/QueueSet.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/QueueSet.o.d" -o ${OBJECTDIR}/_ext/1163846883/QueueSet.o ../../Common/Minimal/QueueSet.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/countsem.o: ../../Common/Minimal/countsem.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/countsem.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/countsem.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/countsem.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/countsem.o.d" -o ${OBJECTDIR}/_ext/1163846883/countsem.o ../../Common/Minimal/countsem.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/dynamic.o: ../../Common/Minimal/dynamic.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/dynamic.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/dynamic.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/dynamic.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/dynamic.o.d" -o ${OBJECTDIR}/_ext/1163846883/dynamic.o ../../Common/Minimal/dynamic.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/recmutex.o: ../../Common/Minimal/recmutex.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/recmutex.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/recmutex.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/recmutex.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/recmutex.o.d" -o ${OBJECTDIR}/_ext/1163846883/recmutex.o ../../Common/Minimal/recmutex.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o: ../../Common/Minimal/EventGroupsDemo.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1163846883"
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o.d" -o ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o ../../Common/Minimal/EventGroupsDemo.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/449926602/queue.o: ../../../Source/queue.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/449926602"
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/queue.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/queue.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/449926602/queue.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/449926602/queue.o.d" -o ${OBJECTDIR}/_ext/449926602/queue.o ../../../Source/queue.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/449926602/tasks.o: ../../../Source/tasks.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/449926602"
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/tasks.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/tasks.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/449926602/tasks.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/449926602/tasks.o.d" -o ${OBJECTDIR}/_ext/449926602/tasks.o ../../../Source/tasks.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/449926602/list.o: ../../../Source/list.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/449926602"
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/list.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/list.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/449926602/list.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/449926602/list.o.d" -o ${OBJECTDIR}/_ext/449926602/list.o ../../../Source/list.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/449926602/timers.o: ../../../Source/timers.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/449926602"
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/timers.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/timers.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/449926602/timers.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/449926602/timers.o.d" -o ${OBJECTDIR}/_ext/449926602/timers.o ../../../Source/timers.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/332309698/port.o: ../../../Source/portable/MPLAB/PIC32MZ/port.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/332309698"
|
||||
@${RM} ${OBJECTDIR}/_ext/332309698/port.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/332309698/port.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/332309698/port.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/332309698/port.o.d" -o ${OBJECTDIR}/_ext/332309698/port.o ../../../Source/portable/MPLAB/PIC32MZ/port.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1884096877/heap_4.o: ../../../Source/portable/MemMang/heap_4.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1884096877"
|
||||
@${RM} ${OBJECTDIR}/_ext/1884096877/heap_4.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1884096877/heap_4.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1884096877/heap_4.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1884096877/heap_4.o.d" -o ${OBJECTDIR}/_ext/1884096877/heap_4.o ../../../Source/portable/MemMang/heap_4.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/449926602/event_groups.o: ../../../Source/event_groups.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/449926602"
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/event_groups.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/449926602/event_groups.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/449926602/event_groups.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/449926602/event_groups.o.d" -o ${OBJECTDIR}/_ext/449926602/event_groups.o ../../../Source/event_groups.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/main.o: ../main.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/main.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/main.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/main.o.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/809743516/ParTest.o: ../ParTest/ParTest.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/809743516"
|
||||
@${RM} ${OBJECTDIR}/_ext/809743516/ParTest.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/809743516/ParTest.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/809743516/ParTest.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/809743516/ParTest.o.d" -o ${OBJECTDIR}/_ext/809743516/ParTest.o ../ParTest/ParTest.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/main_blinky.o: ../main_blinky.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/main_blinky.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/main_blinky.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/main_blinky.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/main_blinky.o.d" -o ${OBJECTDIR}/_ext/1472/main_blinky.o ../main_blinky.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/ConfigPerformance.o: ../ConfigPerformance.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ConfigPerformance.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ConfigPerformance.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/ConfigPerformance.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/ConfigPerformance.o.d" -o ${OBJECTDIR}/_ext/1472/ConfigPerformance.o ../ConfigPerformance.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/main_full.o: ../main_full.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/main_full.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/main_full.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/main_full.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/main_full.o.d" -o ${OBJECTDIR}/_ext/1472/main_full.o ../main_full.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/IntQueueTimer.o: ../IntQueueTimer.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/IntQueueTimer.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/IntQueueTimer.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/IntQueueTimer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/IntQueueTimer.o.d" -o ${OBJECTDIR}/_ext/1472/IntQueueTimer.o ../IntQueueTimer.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/timertest.o: ../timertest.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/timertest.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/timertest.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/timertest.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/timertest.o.d" -o ${OBJECTDIR}/_ext/1472/timertest.o ../timertest.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o: ../ISRTriggeredTask.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d" -o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o ../ISRTriggeredTask.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
${OBJECTDIR}/_ext/1472/flop_mz.o: ../flop_mz.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/_ext/1472"
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/flop_mz.o.d
|
||||
@${RM} ${OBJECTDIR}/_ext/1472/flop_mz.o
|
||||
@${FIXDEPS} "${OBJECTDIR}/_ext/1472/flop_mz.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/flop_mz.o.d" -o ${OBJECTDIR}/_ext/1472/flop_mz.o ../flop_mz.c -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wall -Wextra
|
||||
|
||||
endif
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# Rules for buildStep: compileCPP
|
||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
||||
else
|
||||
endif
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# Rules for buildStep: link
|
||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
||||
dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE}
|
||||
${MP_CC} $(MP_EXTRA_LD_PRE) -g -mdebugger -DPKOBSKDEPlatformTool=1 -mprocessor=$(MP_PROCESSOR_OPTION) -o dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -mreserve=data@0x0:0x27F -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,-D=__DEBUG_D,--defsym=PKOBSKDEPlatformTool=1,--defsym=_min_heap_size=0,--no-code-in-dinit,--no-dinit-in-serial-mem,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml
|
||||
|
||||
else
|
||||
dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE}
|
||||
${MP_CC} $(MP_EXTRA_LD_PRE) -mprocessor=$(MP_PROCESSOR_OPTION) -o dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} -DXPRJ_PIC32MZ2048_SK=$(CND_CONF) -no-legacy-libc $(COMPARISON_BUILD) -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=_min_heap_size=0,--no-code-in-dinit,--no-dinit-in-serial-mem,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml
|
||||
${MP_CC_DIR}\\xc32-bin2hex dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}
|
||||
endif
|
||||
|
||||
|
||||
# Subprojects
|
||||
.build-subprojects:
|
||||
|
||||
|
||||
# Subprojects
|
||||
.clean-subprojects:
|
||||
|
||||
# Clean Targets
|
||||
.clean-conf: ${CLEAN_SUBPROJECTS}
|
||||
${RM} -r build/PIC32MZ2048_SK
|
||||
${RM} -r dist/PIC32MZ2048_SK
|
||||
|
||||
# Enable dependency checking
|
||||
.dep.inc: .depcheck-impl
|
||||
|
||||
DEPFILES=$(shell mplabwildcard ${POSSIBLE_DEPFILES})
|
||||
ifneq (${DEPFILES},)
|
||||
include ${DEPFILES}
|
||||
endif
|
||||
@ -0,0 +1,15 @@
|
||||
#
|
||||
#Mon Nov 27 19:15:47 PST 2017
|
||||
PIC32MZ2048_SK.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=002e07fc35a732566b3c80c1ed2897e8
|
||||
PIC32MZ2048EF_SK_SOFT_FLOAT.languagetoolchain.dir=C\:\\devtools\\Microchip\\xc32\\v1.44\\bin
|
||||
conf.ids=PIC32MZ2048_SK,PIC32MZ2048EF_SK_SOFT_FLOAT,PIC32MZ2048EF_SK_HARD_FLOAT
|
||||
configurations-xml=13fcae0d1fad5561c790993f814dff8b
|
||||
PIC32MZ2048EF_SK_HARD_FLOAT.languagetoolchain.dir=C\:\\devtools\\Microchip\\xc32\\v1.44\\bin
|
||||
PIC32MZ2048EF_SK_SOFT_FLOAT.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=002e07fc35a732566b3c80c1ed2897e8
|
||||
PIC32MZ2048EF_SK_HARD_FLOAT.languagetoolchain.version=1.44
|
||||
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=5d30ff5128b14865c8a3796a8f0bb8a0
|
||||
PIC32MZ2048_SK.languagetoolchain.version=1.44
|
||||
PIC32MZ2048_SK.languagetoolchain.dir=C\:\\devtools\\Microchip\\xc32\\v1.44\\bin
|
||||
PIC32MZ2048EF_SK_HARD_FLOAT.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=002e07fc35a732566b3c80c1ed2897e8
|
||||
PIC32MZ2048EF_SK_SOFT_FLOAT.languagetoolchain.version=1.44
|
||||
host.platform=windows
|
||||
@ -0,0 +1,73 @@
|
||||
#
|
||||
# Generated Makefile - do not edit!
|
||||
#
|
||||
# Edit the Makefile in the project folder instead (../Makefile). Each target
|
||||
# has a pre- and a post- target defined where you can add customization code.
|
||||
#
|
||||
# This makefile implements macros and targets common to all configurations.
|
||||
#
|
||||
# NOCDDL
|
||||
|
||||
|
||||
# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
|
||||
# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
|
||||
# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
|
||||
# and .clean-reqprojects-conf unless SUB has the value 'no'
|
||||
SUB_no=NO
|
||||
SUBPROJECTS=${SUB_${SUB}}
|
||||
BUILD_SUBPROJECTS_=.build-subprojects
|
||||
BUILD_SUBPROJECTS_NO=
|
||||
BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
|
||||
CLEAN_SUBPROJECTS_=.clean-subprojects
|
||||
CLEAN_SUBPROJECTS_NO=
|
||||
CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
|
||||
|
||||
|
||||
# Project Name
|
||||
PROJECTNAME=RTOSDemo.X
|
||||
|
||||
# Active Configuration
|
||||
DEFAULTCONF=PIC32MZ2048_SK
|
||||
CONF=${DEFAULTCONF}
|
||||
|
||||
# All Configurations
|
||||
ALLCONFS=PIC32MZ2048_SK PIC32MZ2048EF_SK_SOFT_FLOAT PIC32MZ2048EF_SK_HARD_FLOAT
|
||||
|
||||
|
||||
# build
|
||||
.build-impl: .build-pre
|
||||
${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf
|
||||
|
||||
|
||||
# clean
|
||||
.clean-impl: .clean-pre
|
||||
${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf
|
||||
|
||||
# clobber
|
||||
.clobber-impl: .clobber-pre .depcheck-impl
|
||||
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048_SK clean
|
||||
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048EF_SK_SOFT_FLOAT clean
|
||||
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048EF_SK_HARD_FLOAT clean
|
||||
|
||||
|
||||
|
||||
# all
|
||||
.all-impl: .all-pre .depcheck-impl
|
||||
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048_SK build
|
||||
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048EF_SK_SOFT_FLOAT build
|
||||
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048EF_SK_HARD_FLOAT build
|
||||
|
||||
|
||||
|
||||
# dependency checking support
|
||||
.depcheck-impl:
|
||||
# @echo "# This code depends on make tool being used" >.dep.inc
|
||||
# @if [ -n "${MAKE_VERSION}" ]; then \
|
||||
# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \
|
||||
# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
|
||||
# echo "include \$${DEPFILES}" >>.dep.inc; \
|
||||
# echo "endif" >>.dep.inc; \
|
||||
# else \
|
||||
# echo ".KEEP_STATE:" >>.dep.inc; \
|
||||
# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
|
||||
# fi
|
||||
@ -0,0 +1,37 @@
|
||||
#
|
||||
# Generated Makefile - do not edit!
|
||||
#
|
||||
#
|
||||
# This file contains information about the location of compilers and other tools.
|
||||
# If you commmit this file into your revision control server, you will be able to
|
||||
# to checkout the project and build it from the command line with make. However,
|
||||
# if more than one person works on the same project, then this file might show
|
||||
# conflicts since different users are bound to have compilers in different places.
|
||||
# In that case you might choose to not commit this file and let MPLAB X recreate this file
|
||||
# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at
|
||||
# least once so the file gets created and the project can be built. Finally, you can also
|
||||
# avoid using this file at all if you are only building from the command line with make.
|
||||
# You can invoke make with the values of the macros:
|
||||
# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...
|
||||
#
|
||||
SHELL=cmd.exe
|
||||
PATH_TO_IDE_BIN=C:/devtools/Microchip/MPLABX/v4.05/mplab_ide/platform/../mplab_ide/modules/../../bin/
|
||||
# Adding MPLAB X bin directory to path.
|
||||
PATH:=C:/devtools/Microchip/MPLABX/v4.05/mplab_ide/platform/../mplab_ide/modules/../../bin/:$(PATH)
|
||||
# Path to java used to run MPLAB X when this makefile was created
|
||||
MP_JAVA_PATH="C:\devtools\Microchip\MPLABX\v4.05\sys\java\jre1.8.0_144/bin/"
|
||||
OS_CURRENT="$(shell uname -s)"
|
||||
MP_CC="C:\devtools\Microchip\xc32\v1.44\bin\xc32-gcc.exe"
|
||||
MP_CPPC="C:\devtools\Microchip\xc32\v1.44\bin\xc32-g++.exe"
|
||||
# MP_BC is not defined
|
||||
MP_AS="C:\devtools\Microchip\xc32\v1.44\bin\xc32-as.exe"
|
||||
MP_LD="C:\devtools\Microchip\xc32\v1.44\bin\xc32-ld.exe"
|
||||
MP_AR="C:\devtools\Microchip\xc32\v1.44\bin\xc32-ar.exe"
|
||||
DEP_GEN=${MP_JAVA_PATH}java -jar "C:/devtools/Microchip/MPLABX/v4.05/mplab_ide/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
|
||||
MP_CC_DIR="C:\devtools\Microchip\xc32\v1.44\bin"
|
||||
MP_CPPC_DIR="C:\devtools\Microchip\xc32\v1.44\bin"
|
||||
# MP_BC_DIR is not defined
|
||||
MP_AS_DIR="C:\devtools\Microchip\xc32\v1.44\bin"
|
||||
MP_LD_DIR="C:\devtools\Microchip\xc32\v1.44\bin"
|
||||
MP_AR_DIR="C:\devtools\Microchip\xc32\v1.44\bin"
|
||||
# MP_BC_DIR is not defined
|
||||
@ -0,0 +1,27 @@
|
||||
#
|
||||
# Generated - do not edit!
|
||||
#
|
||||
# NOCDDL
|
||||
#
|
||||
CND_BASEDIR=`pwd`
|
||||
# PIC32MZ2048_SK configuration
|
||||
CND_ARTIFACT_DIR_PIC32MZ2048_SK=dist/PIC32MZ2048_SK/production
|
||||
CND_ARTIFACT_NAME_PIC32MZ2048_SK=RTOSDemo.X.production.hex
|
||||
CND_ARTIFACT_PATH_PIC32MZ2048_SK=dist/PIC32MZ2048_SK/production/RTOSDemo.X.production.hex
|
||||
CND_PACKAGE_DIR_PIC32MZ2048_SK=${CND_DISTDIR}/PIC32MZ2048_SK/package
|
||||
CND_PACKAGE_NAME_PIC32MZ2048_SK=rtosdemo.x.tar
|
||||
CND_PACKAGE_PATH_PIC32MZ2048_SK=${CND_DISTDIR}/PIC32MZ2048_SK/package/rtosdemo.x.tar
|
||||
# PIC32MZ2048EF_SK_SOFT_FLOAT configuration
|
||||
CND_ARTIFACT_DIR_PIC32MZ2048EF_SK_SOFT_FLOAT=dist/PIC32MZ2048EF_SK_SOFT_FLOAT/production
|
||||
CND_ARTIFACT_NAME_PIC32MZ2048EF_SK_SOFT_FLOAT=RTOSDemo.X.production.hex
|
||||
CND_ARTIFACT_PATH_PIC32MZ2048EF_SK_SOFT_FLOAT=dist/PIC32MZ2048EF_SK_SOFT_FLOAT/production/RTOSDemo.X.production.hex
|
||||
CND_PACKAGE_DIR_PIC32MZ2048EF_SK_SOFT_FLOAT=${CND_DISTDIR}/PIC32MZ2048EF_SK_SOFT_FLOAT/package
|
||||
CND_PACKAGE_NAME_PIC32MZ2048EF_SK_SOFT_FLOAT=rtosdemo.x.tar
|
||||
CND_PACKAGE_PATH_PIC32MZ2048EF_SK_SOFT_FLOAT=${CND_DISTDIR}/PIC32MZ2048EF_SK_SOFT_FLOAT/package/rtosdemo.x.tar
|
||||
# PIC32MZ2048EF_SK_HARD_FLOAT configuration
|
||||
CND_ARTIFACT_DIR_PIC32MZ2048EF_SK_HARD_FLOAT=dist/PIC32MZ2048EF_SK_HARD_FLOAT/production
|
||||
CND_ARTIFACT_NAME_PIC32MZ2048EF_SK_HARD_FLOAT=RTOSDemo.X.production.hex
|
||||
CND_ARTIFACT_PATH_PIC32MZ2048EF_SK_HARD_FLOAT=dist/PIC32MZ2048EF_SK_HARD_FLOAT/production/RTOSDemo.X.production.hex
|
||||
CND_PACKAGE_DIR_PIC32MZ2048EF_SK_HARD_FLOAT=${CND_DISTDIR}/PIC32MZ2048EF_SK_HARD_FLOAT/package
|
||||
CND_PACKAGE_NAME_PIC32MZ2048EF_SK_HARD_FLOAT=rtosdemo.x.tar
|
||||
CND_PACKAGE_PATH_PIC32MZ2048EF_SK_HARD_FLOAT=${CND_DISTDIR}/PIC32MZ2048EF_SK_HARD_FLOAT/package/rtosdemo.x.tar
|
||||
@ -0,0 +1,73 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
#
|
||||
# Generated - do not edit!
|
||||
#
|
||||
|
||||
# Macros
|
||||
TOP=`pwd`
|
||||
CND_CONF=PIC32MZ2048_SK
|
||||
CND_DISTDIR=dist
|
||||
TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging
|
||||
TMPDIRNAME=tmp-packaging
|
||||
OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
|
||||
OUTPUT_BASENAME=RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
|
||||
PACKAGE_TOP_DIR=rtosdemo.x/
|
||||
|
||||
# Functions
|
||||
function checkReturnCode
|
||||
{
|
||||
rc=$?
|
||||
if [ $rc != 0 ]
|
||||
then
|
||||
exit $rc
|
||||
fi
|
||||
}
|
||||
function makeDirectory
|
||||
# $1 directory path
|
||||
# $2 permission (optional)
|
||||
{
|
||||
mkdir -p "$1"
|
||||
checkReturnCode
|
||||
if [ "$2" != "" ]
|
||||
then
|
||||
chmod $2 "$1"
|
||||
checkReturnCode
|
||||
fi
|
||||
}
|
||||
function copyFileToTmpDir
|
||||
# $1 from-file path
|
||||
# $2 to-file path
|
||||
# $3 permission
|
||||
{
|
||||
cp "$1" "$2"
|
||||
checkReturnCode
|
||||
if [ "$3" != "" ]
|
||||
then
|
||||
chmod $3 "$2"
|
||||
checkReturnCode
|
||||
fi
|
||||
}
|
||||
|
||||
# Setup
|
||||
cd "${TOP}"
|
||||
mkdir -p ${CND_DISTDIR}/${CND_CONF}/package
|
||||
rm -rf ${TMPDIR}
|
||||
mkdir -p ${TMPDIR}
|
||||
|
||||
# Copy files and create directories and links
|
||||
cd "${TOP}"
|
||||
makeDirectory ${TMPDIR}/rtosdemo.x/bin
|
||||
copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755
|
||||
|
||||
|
||||
# Generate tar file
|
||||
cd "${TOP}"
|
||||
rm -f ${CND_DISTDIR}/${CND_CONF}/package/rtosdemo.x.tar
|
||||
cd ${TMPDIR}
|
||||
tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/rtosdemo.x.tar *
|
||||
checkReturnCode
|
||||
|
||||
# Cleanup
|
||||
cd "${TOP}"
|
||||
rm -rf ${TMPDIR}
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configurationDescriptor version="62">
|
||||
<projectmakefile>Makefile</projectmakefile>
|
||||
<defaultConf>0</defaultConf>
|
||||
<confs>
|
||||
<conf name="PIC32MZ2048_SK" type="2">
|
||||
<platformToolSN>:=MPLABComm-USB-Microchip:=<vid>04D8:=<pid>8107:=<rev>0002:=<man>Microchip Technology Incorporated:=<prod>PIC32MZ EC Family:=<sn>MTI132990155:=<drv>x:=<xpt>h:=end</platformToolSN>
|
||||
<languageToolchainDir>C:\devtools\Microchip\xc32\v1.44\bin</languageToolchainDir>
|
||||
<mdbdebugger version="1">
|
||||
<placeholder1>place holder 1</placeholder1>
|
||||
<placeholder2>place holder 2</placeholder2>
|
||||
</mdbdebugger>
|
||||
<runprofile version="6">
|
||||
<args></args>
|
||||
<rundir></rundir>
|
||||
<buildfirst>true</buildfirst>
|
||||
<console-type>0</console-type>
|
||||
<terminal-type>0</terminal-type>
|
||||
<remove-instrumentation>0</remove-instrumentation>
|
||||
<environment>
|
||||
</environment>
|
||||
</runprofile>
|
||||
</conf>
|
||||
<conf name="PIC32MZ2048EF_SK_SOFT_FLOAT" type="2">
|
||||
<platformToolSN>:=MPLABComm-USB-Microchip:=<vid>04D8:=<pid>8107:=<rev>0002:=<man>Microchip Technology Incorporated:=<prod>PIC32MZ EF Family:=<sn>BUR153124004:=<drv>x:=<xpt>h:=end</platformToolSN>
|
||||
<languageToolchainDir>C:\devtools\Microchip\xc32\v1.44\bin</languageToolchainDir>
|
||||
<mdbdebugger version="1">
|
||||
<placeholder1>place holder 1</placeholder1>
|
||||
<placeholder2>place holder 2</placeholder2>
|
||||
</mdbdebugger>
|
||||
<runprofile version="6">
|
||||
<args></args>
|
||||
<rundir></rundir>
|
||||
<buildfirst>true</buildfirst>
|
||||
<console-type>0</console-type>
|
||||
<terminal-type>0</terminal-type>
|
||||
<remove-instrumentation>0</remove-instrumentation>
|
||||
<environment>
|
||||
</environment>
|
||||
</runprofile>
|
||||
</conf>
|
||||
<conf name="PIC32MZ2048EF_SK_HARD_FLOAT" type="2">
|
||||
<platformToolSN>:=MPLABComm-USB-Microchip:=<vid>04D8:=<pid>8107:=<rev>0002:=<man>Microchip Technology Incorporated:=<prod>PIC32MZ EC Family:=<sn>MTI132990155:=<drv>x:=<xpt>h:=end</platformToolSN>
|
||||
<languageToolchainDir>C:\devtools\Microchip\xc32\v1.44\bin</languageToolchainDir>
|
||||
<mdbdebugger version="1">
|
||||
<placeholder1>place holder 1</placeholder1>
|
||||
<placeholder2>place holder 2</placeholder2>
|
||||
</mdbdebugger>
|
||||
<runprofile version="6">
|
||||
<args></args>
|
||||
<rundir></rundir>
|
||||
<buildfirst>true</buildfirst>
|
||||
<console-type>0</console-type>
|
||||
<terminal-type>0</terminal-type>
|
||||
<remove-instrumentation>0</remove-instrumentation>
|
||||
<environment>
|
||||
</environment>
|
||||
</runprofile>
|
||||
</conf>
|
||||
</confs>
|
||||
</configurationDescriptor>
|
||||
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
|
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
|
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
|
||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
||||
<group name="Masters19024">
|
||||
<file>file:/C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c</file>
|
||||
<file>file:/C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.c</file>
|
||||
<file>file:/C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/PIC32MZ_MPLAB/FreeRTOSConfig.h</file>
|
||||
<file>file:/C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port.c</file>
|
||||
<file>file:/C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port_asm.S</file>
|
||||
</group>
|
||||
<group/>
|
||||
</open-files>
|
||||
</project-private>
|
||||
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||
<type>com.microchip.mplab.nbide.embedded.makeproject</type>
|
||||
<configuration>
|
||||
<data xmlns="http://www.netbeans.org/ns/make-project/1">
|
||||
<name>RTOSDemo</name>
|
||||
<creation-uuid>55ff5cee-2e70-4454-810e-9beac606f4f5</creation-uuid>
|
||||
<make-project-type>0</make-project-type>
|
||||
<c-extensions>c</c-extensions>
|
||||
<cpp-extensions/>
|
||||
<header-extensions>h</header-extensions>
|
||||
<sourceEncoding>ISO-8859-1</sourceEncoding>
|
||||
<asminc-extensions/>
|
||||
<make-dep-projects/>
|
||||
</data>
|
||||
</configuration>
|
||||
</project>
|
||||
550
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/RegisterTestTasks.S
Normal file
550
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/RegisterTestTasks.S
Normal file
@ -0,0 +1,550 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <xc.h>
|
||||
#include <sys/asm.h>
|
||||
#include "FreeRTOSConfig.h"
|
||||
|
||||
.set nomips16
|
||||
.set noreorder
|
||||
|
||||
|
||||
.global vRegTest1
|
||||
.global vRegTest2
|
||||
|
||||
/************************************************************************/
|
||||
/* Reg test macro helper. Test a register for a known value branching to
|
||||
error_loop if not correct otherwise continuing on */
|
||||
.macro portREG_TEST work_reg, test_reg, test_value
|
||||
|
||||
/* Check each register maintains the value assigned to it for the lifetime
|
||||
of the task. */
|
||||
addiu \work_reg, $0, 0x00
|
||||
addiu \work_reg, \test_reg, -\test_value
|
||||
beq \work_reg, $0, 1f
|
||||
nop
|
||||
/* The register value was not that expected. Jump to the error loop so the
|
||||
cycle counter stops incrementing. */
|
||||
b error_loop
|
||||
nop
|
||||
1:
|
||||
.endm
|
||||
|
||||
/************************************************************************/
|
||||
/* FPU reg test macro helper, Test an FPU register for a known value branching to
|
||||
error_loop if not correct otherwise continuing on */
|
||||
#if ( __mips_hard_float == 1) && ( configUSE_TASK_FPU_SUPPORT == 1 )
|
||||
.macro portFPU_REG_TEST work_reg, test_reg, test_value
|
||||
/* get the lower 32 bit value from the FPU and compare to the test value */
|
||||
mfc1 \work_reg, \test_reg
|
||||
addiu \work_reg, \work_reg, -\test_value
|
||||
beq \work_reg, $0, 1f
|
||||
nop
|
||||
|
||||
/* The register values was not that expected. Jump to the error loop */
|
||||
b error_loop
|
||||
nop
|
||||
1:
|
||||
.endm
|
||||
#endif
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
.set noreorder
|
||||
.set noat
|
||||
.ent error_loop
|
||||
|
||||
/* Reg test tasks call the error loop when they find an error. Sitting in the
|
||||
tight error loop prevents them incrementing their ulRegTestnCycles counter, and
|
||||
so allows the check softwate timer to know an error has been found. */
|
||||
error_loop:
|
||||
b .
|
||||
nop
|
||||
|
||||
.end error_loop
|
||||
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
.ent vRegTest1
|
||||
|
||||
vRegTest1:
|
||||
/* Fill the registers with known values. */
|
||||
addiu $1, $0, 0x11
|
||||
addiu $2, $0, 0x12
|
||||
addiu $3, $0, 0x13
|
||||
/* $4 contains the address of the loop counter - don't mess with $4. */
|
||||
addiu $5, $0, 0x15
|
||||
addiu $6, $0, 0x16
|
||||
addiu $7, $0, 0x17
|
||||
addiu $8, $0, 0x18
|
||||
addiu $9, $0, 0x19
|
||||
addiu $10, $0, 0x110
|
||||
addiu $11, $0, 0x111
|
||||
addiu $12, $0, 0x112
|
||||
addiu $13, $0, 0x113
|
||||
addiu $14, $0, 0x114
|
||||
addiu $15, $0, 0x115
|
||||
addiu $16, $0, 0x116
|
||||
addiu $17, $0, 0x117
|
||||
addiu $18, $0, 0x118
|
||||
addiu $19, $0, 0x119
|
||||
addiu $20, $0, 0x120
|
||||
addiu $21, $0, 0x121
|
||||
addiu $23, $0, 0x123
|
||||
addiu $24, $0, 0x124
|
||||
addiu $25, $0, 0x125
|
||||
addiu $30, $0, 0x130
|
||||
addiu $22, $0, 0x131
|
||||
mthi $22, $ac1
|
||||
addiu $22, $0, 0x132
|
||||
mtlo $22, $ac1
|
||||
addiu $22, $0, 0x133
|
||||
mthi $22, $ac2
|
||||
addiu $22, $0, 0x134
|
||||
mtlo $22, $ac2
|
||||
addiu $22, $0, 0x135
|
||||
mthi $22, $ac3
|
||||
addiu $22, $0, 0x136
|
||||
mtlo $22, $ac3
|
||||
|
||||
/* Test the FPU registers if they are present on the part. */
|
||||
#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )
|
||||
addiu $22, $0, 0x180
|
||||
mtc1 $22, $f0
|
||||
addiu $22, $0, 0x181
|
||||
mtc1 $22, $f1
|
||||
addiu $22, $0, 0x182
|
||||
mtc1 $22, $f2
|
||||
addiu $22, $0, 0x183
|
||||
mtc1 $22, $f3
|
||||
addiu $22, $0, 0x184
|
||||
mtc1 $22, $f4
|
||||
addiu $22, $0, 0x185
|
||||
mtc1 $22, $f5
|
||||
addiu $22, $0, 0x186
|
||||
mtc1 $22, $f6
|
||||
addiu $22, $0, 0x187
|
||||
mtc1 $22, $f7
|
||||
addiu $22, $0, 0x188
|
||||
mtc1 $22, $f8
|
||||
addiu $22, $0, 0x189
|
||||
mtc1 $22, $f9
|
||||
addiu $22, $0, 0x18A
|
||||
mtc1 $22, $f10
|
||||
addiu $22, $0, 0x18B
|
||||
mtc1 $22, $f11
|
||||
addiu $22, $0, 0x18C
|
||||
mtc1 $22, $f12
|
||||
addiu $22, $0, 0x18D
|
||||
mtc1 $22, $f13
|
||||
addiu $22, $0, 0x18E
|
||||
mtc1 $22, $f14
|
||||
addiu $22, $0, 0x18F
|
||||
mtc1 $22, $f15
|
||||
addiu $22, $0, 0x190
|
||||
mtc1 $22, $f16
|
||||
addiu $22, $0, 0x191
|
||||
mtc1 $22, $f17
|
||||
addiu $22, $0, 0x192
|
||||
mtc1 $22, $f18
|
||||
addiu $22, $0, 0x193
|
||||
mtc1 $22, $f19
|
||||
addiu $22, $0, 0x194
|
||||
mtc1 $22, $f20
|
||||
addiu $22, $0, 0x195
|
||||
mtc1 $22, $f21
|
||||
addiu $22, $0, 0x196
|
||||
mtc1 $22, $f22
|
||||
addiu $22, $0, 0x197
|
||||
mtc1 $22, $f23
|
||||
addiu $22, $0, 0x198
|
||||
mtc1 $22, $f24
|
||||
addiu $22, $0, 0x199
|
||||
mtc1 $22, $f25
|
||||
addiu $22, $0, 0x19A
|
||||
mtc1 $22, $f26
|
||||
addiu $22, $0, 0x19B
|
||||
mtc1 $22, $f27
|
||||
addiu $22, $0, 0x19C
|
||||
mtc1 $22, $f28
|
||||
addiu $22, $0, 0x19D
|
||||
mtc1 $22, $f29
|
||||
addiu $22, $0, 0x19E
|
||||
mtc1 $22, $f30
|
||||
addiu $22, $0, 0x19F
|
||||
mtc1 $22, $f31
|
||||
#endif
|
||||
|
||||
vRegTest1Loop:
|
||||
portREG_TEST $22, $1, 0x11
|
||||
portREG_TEST $22, $2, 0x12
|
||||
portREG_TEST $22, $3, 0x13
|
||||
/* Do not test r4 as we are using it as a loop counter */
|
||||
portREG_TEST $22, $5, 0x15
|
||||
portREG_TEST $22, $6, 0x16
|
||||
portREG_TEST $22, $7, 0x17
|
||||
portREG_TEST $22, $8, 0x18
|
||||
portREG_TEST $22, $9, 0x19
|
||||
portREG_TEST $22, $10, 0x110
|
||||
portREG_TEST $22, $11, 0x111
|
||||
portREG_TEST $22, $12, 0x112
|
||||
portREG_TEST $22, $13, 0x113
|
||||
portREG_TEST $22, $14, 0x114
|
||||
portREG_TEST $22, $15, 0x115
|
||||
portREG_TEST $22, $16, 0x116
|
||||
portREG_TEST $22, $17, 0x117
|
||||
portREG_TEST $22, $18, 0x118
|
||||
portREG_TEST $22, $19, 0x119
|
||||
portREG_TEST $22, $20, 0x120
|
||||
portREG_TEST $22, $21, 0x121
|
||||
/* Do not test r22, used as a helper */
|
||||
portREG_TEST $22, $23, 0x123
|
||||
portREG_TEST $22, $24, 0x124
|
||||
portREG_TEST $22, $25, 0x125
|
||||
portREG_TEST $22, $30, 0x130
|
||||
|
||||
mfhi $22, $ac1
|
||||
addiu $22, $22, -0x131
|
||||
beq $22, $0, .+16
|
||||
nop
|
||||
b error_loop
|
||||
nop
|
||||
|
||||
mflo $22, $ac1
|
||||
addiu $22, $22, -0x132
|
||||
beq $22, $0, .+16
|
||||
nop
|
||||
b error_loop
|
||||
nop
|
||||
|
||||
mfhi $22, $ac2
|
||||
addiu $22, $22, -0x133
|
||||
beq $22, $0, .+16
|
||||
nop
|
||||
b error_loop
|
||||
nop
|
||||
|
||||
mflo $22, $ac2
|
||||
addiu $22, $22, -0x134
|
||||
beq $22, $0, .+16
|
||||
nop
|
||||
b error_loop
|
||||
nop
|
||||
|
||||
mfhi $22, $ac3
|
||||
addiu $22, $22, -0x135
|
||||
beq $22, $0, .+16
|
||||
nop
|
||||
b error_loop
|
||||
nop
|
||||
|
||||
mflo $22, $ac3
|
||||
addiu $22, $22, -0x136
|
||||
beq $22, $0, .+16
|
||||
nop
|
||||
b error_loop
|
||||
nop
|
||||
|
||||
/* Test the FPU registers if they are present on the part. */
|
||||
#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )
|
||||
portFPU_REG_TEST $22, $f0, 0x180
|
||||
portFPU_REG_TEST $22, $f1, 0x181
|
||||
portFPU_REG_TEST $22, $f2, 0x182
|
||||
portFPU_REG_TEST $22, $f3, 0x183
|
||||
portFPU_REG_TEST $22, $f4, 0x184
|
||||
portFPU_REG_TEST $22, $f5, 0x185
|
||||
portFPU_REG_TEST $22, $f6, 0x186
|
||||
portFPU_REG_TEST $22, $f7, 0x187
|
||||
portFPU_REG_TEST $22, $f8, 0x188
|
||||
portFPU_REG_TEST $22, $f9, 0x189
|
||||
portFPU_REG_TEST $22, $f10, 0x18A
|
||||
portFPU_REG_TEST $22, $f11, 0x18B
|
||||
portFPU_REG_TEST $22, $f12, 0x18C
|
||||
portFPU_REG_TEST $22, $f13, 0x18D
|
||||
portFPU_REG_TEST $22, $f14, 0x18E
|
||||
portFPU_REG_TEST $22, $f15, 0x18F
|
||||
portFPU_REG_TEST $22, $f16, 0x190
|
||||
portFPU_REG_TEST $22, $f17, 0x191
|
||||
portFPU_REG_TEST $22, $f18, 0x192
|
||||
portFPU_REG_TEST $22, $f19, 0x193
|
||||
portFPU_REG_TEST $22, $f20, 0x194
|
||||
portFPU_REG_TEST $22, $f21, 0x195
|
||||
portFPU_REG_TEST $22, $f22, 0x196
|
||||
portFPU_REG_TEST $22, $f23, 0x197
|
||||
portFPU_REG_TEST $22, $f24, 0x198
|
||||
portFPU_REG_TEST $22, $f25, 0x199
|
||||
portFPU_REG_TEST $22, $f26, 0x19A
|
||||
portFPU_REG_TEST $22, $f27, 0x19B
|
||||
portFPU_REG_TEST $22, $f28, 0x19C
|
||||
portFPU_REG_TEST $22, $f29, 0x19D
|
||||
portFPU_REG_TEST $22, $f30, 0x19E
|
||||
portFPU_REG_TEST $22, $f31, 0x19F
|
||||
#endif
|
||||
|
||||
/* No errors detected. Increment the loop count so the check timer knows
|
||||
this task is still running without error, then loop back to do it all
|
||||
again. The address of the loop counter is in $4. */
|
||||
lw $22, 0( $4 )
|
||||
addiu $22, $22, 0x01
|
||||
sw $22, 0( $4 )
|
||||
b vRegTest1Loop
|
||||
nop
|
||||
|
||||
.end vRegTest1
|
||||
|
||||
/************************************************************************/
|
||||
.set noreorder
|
||||
.set noat
|
||||
.ent vRegTest2
|
||||
|
||||
vRegTest2:
|
||||
addiu $1, $0, 0x21
|
||||
addiu $2, $0, 0x22
|
||||
addiu $3, $0, 0x23
|
||||
/* $4 contains the address of the loop counter - don't mess with $4. */
|
||||
addiu $5, $0, 0x25
|
||||
addiu $6, $0, 0x26
|
||||
addiu $7, $0, 0x27
|
||||
addiu $8, $0, 0x28
|
||||
addiu $9, $0, 0x29
|
||||
addiu $10, $0, 0x210
|
||||
addiu $11, $0, 0x211
|
||||
addiu $12, $0, 0x212
|
||||
addiu $13, $0, 0x213
|
||||
addiu $14, $0, 0x214
|
||||
addiu $15, $0, 0x215
|
||||
addiu $16, $0, 0x216
|
||||
addiu $17, $0, 0x217
|
||||
addiu $18, $0, 0x218
|
||||
addiu $19, $0, 0x219
|
||||
addiu $20, $0, 0x220
|
||||
addiu $21, $0, 0x221
|
||||
addiu $23, $0, 0x223
|
||||
addiu $24, $0, 0x224
|
||||
addiu $25, $0, 0x225
|
||||
addiu $30, $0, 0x230
|
||||
addiu $22, $0, 0x231
|
||||
mthi $22, $ac1
|
||||
addiu $22, $0, 0x232
|
||||
mtlo $22, $ac1
|
||||
addiu $22, $0, 0x233
|
||||
mthi $22, $ac2
|
||||
addiu $22, $0, 0x234
|
||||
mtlo $22, $ac2
|
||||
addiu $22, $0, 0x235
|
||||
mthi $22, $ac3
|
||||
addiu $22, $0, 0x236
|
||||
mtlo $22, $ac3
|
||||
|
||||
/* Test the FPU registers if they are present on the part. */
|
||||
#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )
|
||||
addiu $22, $0, 0x280
|
||||
mtc1 $22, $f0
|
||||
addiu $22, $0, 0x281
|
||||
mtc1 $22, $f1
|
||||
addiu $22, $0, 0x282
|
||||
mtc1 $22, $f2
|
||||
addiu $22, $0, 0x283
|
||||
mtc1 $22, $f3
|
||||
addiu $22, $0, 0x284
|
||||
mtc1 $22, $f4
|
||||
addiu $22, $0, 0x285
|
||||
mtc1 $22, $f5
|
||||
addiu $22, $0, 0x286
|
||||
mtc1 $22, $f6
|
||||
addiu $22, $0, 0x287
|
||||
mtc1 $22, $f7
|
||||
addiu $22, $0, 0x288
|
||||
mtc1 $22, $f8
|
||||
addiu $22, $0, 0x289
|
||||
mtc1 $22, $f9
|
||||
addiu $22, $0, 0x28A
|
||||
mtc1 $22, $f10
|
||||
addiu $22, $0, 0x28B
|
||||
mtc1 $22, $f11
|
||||
addiu $22, $0, 0x28C
|
||||
mtc1 $22, $f12
|
||||
addiu $22, $0, 0x28D
|
||||
mtc1 $22, $f13
|
||||
addiu $22, $0, 0x28E
|
||||
mtc1 $22, $f14
|
||||
addiu $22, $0, 0x28F
|
||||
mtc1 $22, $f15
|
||||
addiu $22, $0, 0x290
|
||||
mtc1 $22, $f16
|
||||
addiu $22, $0, 0x291
|
||||
mtc1 $22, $f17
|
||||
addiu $22, $0, 0x292
|
||||
mtc1 $22, $f18
|
||||
addiu $22, $0, 0x293
|
||||
mtc1 $22, $f19
|
||||
addiu $22, $0, 0x294
|
||||
mtc1 $22, $f20
|
||||
addiu $22, $0, 0x295
|
||||
mtc1 $22, $f21
|
||||
addiu $22, $0, 0x296
|
||||
mtc1 $22, $f22
|
||||
addiu $22, $0, 0x297
|
||||
mtc1 $22, $f23
|
||||
addiu $22, $0, 0x298
|
||||
mtc1 $22, $f24
|
||||
addiu $22, $0, 0x299
|
||||
mtc1 $22, $f25
|
||||
addiu $22, $0, 0x29A
|
||||
mtc1 $22, $f26
|
||||
addiu $22, $0, 0x29B
|
||||
mtc1 $22, $f27
|
||||
addiu $22, $0, 0x29C
|
||||
mtc1 $22, $f28
|
||||
addiu $22, $0, 0x29D
|
||||
mtc1 $22, $f29
|
||||
addiu $22, $0, 0x29E
|
||||
mtc1 $22, $f30
|
||||
addiu $22, $0, 0x29F
|
||||
mtc1 $22, $f31
|
||||
#endif
|
||||
|
||||
vRegTest2Loop:
|
||||
portREG_TEST $22, $1, 0x21
|
||||
portREG_TEST $22, $2, 0x22
|
||||
portREG_TEST $22, $3, 0x23
|
||||
/* Do not test r4 as we are using it as a loop counter */
|
||||
portREG_TEST $22, $5, 0x25
|
||||
portREG_TEST $22, $6, 0x26
|
||||
portREG_TEST $22, $7, 0x27
|
||||
portREG_TEST $22, $8, 0x28
|
||||
portREG_TEST $22, $9, 0x29
|
||||
portREG_TEST $22, $10, 0x210
|
||||
portREG_TEST $22, $11, 0x211
|
||||
portREG_TEST $22, $12, 0x212
|
||||
portREG_TEST $22, $13, 0x213
|
||||
portREG_TEST $22, $14, 0x214
|
||||
portREG_TEST $22, $15, 0x215
|
||||
portREG_TEST $22, $16, 0x216
|
||||
portREG_TEST $22, $17, 0x217
|
||||
portREG_TEST $22, $18, 0x218
|
||||
portREG_TEST $22, $19, 0x219
|
||||
portREG_TEST $22, $20, 0x220
|
||||
portREG_TEST $22, $21, 0x221
|
||||
/* Do not test r22, used as a helper */
|
||||
portREG_TEST $22, $23, 0x223
|
||||
portREG_TEST $22, $24, 0x224
|
||||
portREG_TEST $22, $25, 0x225
|
||||
portREG_TEST $22, $30, 0x230
|
||||
|
||||
mfhi $22, $ac1
|
||||
addiu $22, $22, -0x231
|
||||
beq $22, $0, .+16
|
||||
nop
|
||||
b error_loop
|
||||
nop
|
||||
|
||||
mflo $22, $ac1
|
||||
addiu $22, $22, -0x232
|
||||
beq $22, $0, .+16
|
||||
nop
|
||||
b error_loop
|
||||
nop
|
||||
|
||||
mfhi $22, $ac2
|
||||
addiu $22, $22, -0x233
|
||||
beq $22, $0, .+16
|
||||
nop
|
||||
b error_loop
|
||||
nop
|
||||
|
||||
mflo $22, $ac2
|
||||
addiu $22, $22, -0x234
|
||||
beq $22, $0, .+16
|
||||
nop
|
||||
b error_loop
|
||||
nop
|
||||
|
||||
mfhi $22, $ac3
|
||||
addiu $22, $22, -0x235
|
||||
beq $22, $0, .+16
|
||||
nop
|
||||
b error_loop
|
||||
nop
|
||||
|
||||
mflo $22, $ac3
|
||||
addiu $22, $22, -0x236
|
||||
beq $22, $0, .+16
|
||||
nop
|
||||
b error_loop
|
||||
nop
|
||||
|
||||
/* Test the FPU registers if they are present on the part. */
|
||||
#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )
|
||||
portFPU_REG_TEST $22, $f0, 0x280
|
||||
portFPU_REG_TEST $22, $f1, 0x281
|
||||
portFPU_REG_TEST $22, $f2, 0x282
|
||||
portFPU_REG_TEST $22, $f3, 0x283
|
||||
portFPU_REG_TEST $22, $f4, 0x284
|
||||
portFPU_REG_TEST $22, $f5, 0x285
|
||||
portFPU_REG_TEST $22, $f6, 0x286
|
||||
portFPU_REG_TEST $22, $f7, 0x287
|
||||
portFPU_REG_TEST $22, $f8, 0x288
|
||||
portFPU_REG_TEST $22, $f9, 0x289
|
||||
portFPU_REG_TEST $22, $f10, 0x28A
|
||||
portFPU_REG_TEST $22, $f11, 0x28B
|
||||
portFPU_REG_TEST $22, $f12, 0x28C
|
||||
portFPU_REG_TEST $22, $f13, 0x28D
|
||||
portFPU_REG_TEST $22, $f14, 0x28E
|
||||
portFPU_REG_TEST $22, $f15, 0x28F
|
||||
portFPU_REG_TEST $22, $f16, 0x290
|
||||
portFPU_REG_TEST $22, $f17, 0x291
|
||||
portFPU_REG_TEST $22, $f18, 0x292
|
||||
portFPU_REG_TEST $22, $f19, 0x293
|
||||
portFPU_REG_TEST $22, $f20, 0x294
|
||||
portFPU_REG_TEST $22, $f21, 0x295
|
||||
portFPU_REG_TEST $22, $f22, 0x296
|
||||
portFPU_REG_TEST $22, $f23, 0x297
|
||||
portFPU_REG_TEST $22, $f24, 0x298
|
||||
portFPU_REG_TEST $22, $f25, 0x299
|
||||
portFPU_REG_TEST $22, $f26, 0x29A
|
||||
portFPU_REG_TEST $22, $f27, 0x29B
|
||||
portFPU_REG_TEST $22, $f28, 0x29C
|
||||
portFPU_REG_TEST $22, $f29, 0x29D
|
||||
portFPU_REG_TEST $22, $f30, 0x29E
|
||||
portFPU_REG_TEST $22, $f31, 0x29F
|
||||
#endif
|
||||
|
||||
/* No errors detected. Increment the loop count so the check timer knows
|
||||
this task is still running without error, then loop back to do it all
|
||||
again. The address of the loop counter is in $4. */
|
||||
lw $22, 0( $4 )
|
||||
addiu $22, $22, 0x01
|
||||
sw $22, 0( $4 )
|
||||
b vRegTest2Loop
|
||||
nop
|
||||
|
||||
.end vRegTest2
|
||||
|
||||
|
||||
|
||||
345
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.c
Normal file
345
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.c
Normal file
@ -0,0 +1,345 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Creates eight tasks, each of which loops continuously performing a
|
||||
* floating point calculation.
|
||||
*
|
||||
* All the tasks run at the idle priority and never block or yield. This causes
|
||||
* all eight tasks to time slice with the idle task. Running at the idle priority
|
||||
* means that these tasks will get pre-empted any time another task is ready to run
|
||||
* or a time slice occurs. More often than not the pre-emption will occur mid
|
||||
* calculation, creating a good test of the schedulers context switch mechanism - a
|
||||
* calculation producing an unexpected result could be a symptom of a corruption in
|
||||
* the context of a task.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
/* Scheduler include files. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
|
||||
/* Demo program include files. */
|
||||
#include "flop_mz.h"
|
||||
|
||||
#define mathSTACK_SIZE (configMINIMAL_STACK_SIZE + 100)
|
||||
#define mathNUMBER_OF_TASKS ( 8 )
|
||||
|
||||
/* Four tasks, each of which performs a different floating point calculation.
|
||||
Each of the four is created twice. */
|
||||
static portTASK_FUNCTION_PROTO( vCompetingMathTask1, pvParameters );
|
||||
static portTASK_FUNCTION_PROTO( vCompetingMathTask2, pvParameters );
|
||||
static portTASK_FUNCTION_PROTO( vCompetingMathTask3, pvParameters );
|
||||
static portTASK_FUNCTION_PROTO( vCompetingMathTask4, pvParameters );
|
||||
|
||||
/* These variables are used to check that all the tasks are still running. If a
|
||||
task gets a calculation wrong it will
|
||||
stop incrementing its check variable. */
|
||||
static volatile unsigned long ulTaskCheck[ mathNUMBER_OF_TASKS ] = { 0 };
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vStartMathTasks( unsigned portBASE_TYPE uxPriority )
|
||||
{
|
||||
xTaskCreate( vCompetingMathTask1, "Math1", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 0 ] ), uxPriority, NULL );
|
||||
xTaskCreate( vCompetingMathTask2, "Math2", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 1 ] ), uxPriority, NULL );
|
||||
xTaskCreate( vCompetingMathTask3, "Math3", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 2 ] ), uxPriority, NULL );
|
||||
xTaskCreate( vCompetingMathTask4, "Math4", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 3 ] ), uxPriority, NULL );
|
||||
xTaskCreate( vCompetingMathTask1, "Math5", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 4 ] ), uxPriority, NULL );
|
||||
xTaskCreate( vCompetingMathTask2, "Math6", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 5 ] ), uxPriority, NULL );
|
||||
xTaskCreate( vCompetingMathTask3, "Math7", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 6 ] ), uxPriority, NULL );
|
||||
xTaskCreate( vCompetingMathTask4, "Math8", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 7 ] ), uxPriority, NULL );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static portTASK_FUNCTION( vCompetingMathTask1, pvParameters )
|
||||
{
|
||||
volatile portDOUBLE d1, d2, d3, d4;
|
||||
volatile unsigned long *pulTaskCheckVariable;
|
||||
volatile portDOUBLE dAnswer;
|
||||
short sError = pdFALSE;
|
||||
|
||||
|
||||
/* Must be called before any hardware floating point operations are
|
||||
performed to let the RTOS portable layer know that this task requires
|
||||
a floating point context. */
|
||||
portTASK_USES_FLOATING_POINT();
|
||||
|
||||
d1 = 123.4567;
|
||||
d2 = 2345.6789;
|
||||
d3 = -918.222;
|
||||
|
||||
dAnswer = ( d1 + d2 ) * d3;
|
||||
|
||||
/* The variable this task increments to show it is still running is passed in
|
||||
as the parameter. */
|
||||
pulTaskCheckVariable = ( unsigned long * ) pvParameters;
|
||||
|
||||
/* Keep performing a calculation and checking the result against a constant. */
|
||||
for(;;)
|
||||
{
|
||||
d1 = 123.4567;
|
||||
d2 = 2345.6789;
|
||||
d3 = -918.222;
|
||||
|
||||
d4 = ( d1 + d2 ) * d3;
|
||||
|
||||
#if configUSE_PREEMPTION == 0
|
||||
taskYIELD();
|
||||
#endif
|
||||
|
||||
/* If the calculation does not match the expected constant, stop the
|
||||
increment of the check variable. */
|
||||
if( fabs( d4 - dAnswer ) > 0.001 )
|
||||
{
|
||||
sError = pdTRUE;
|
||||
}
|
||||
|
||||
if( sError == pdFALSE )
|
||||
{
|
||||
/* If the calculation has always been correct, increment the check
|
||||
variable so we know this task is still running okay. */
|
||||
( *pulTaskCheckVariable )++;
|
||||
}
|
||||
|
||||
#if configUSE_PREEMPTION == 0
|
||||
taskYIELD();
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static portTASK_FUNCTION( vCompetingMathTask2, pvParameters )
|
||||
{
|
||||
volatile portDOUBLE d1, d2, d3, d4;
|
||||
volatile unsigned long *pulTaskCheckVariable;
|
||||
volatile portDOUBLE dAnswer;
|
||||
short sError = pdFALSE;
|
||||
|
||||
/* Must be called before any hardware floating point operations are
|
||||
performed to let the RTOS portable layer know that this task requires
|
||||
a floating point context. */
|
||||
portTASK_USES_FLOATING_POINT();
|
||||
|
||||
d1 = -389.38;
|
||||
d2 = 32498.2;
|
||||
d3 = -2.0001;
|
||||
|
||||
dAnswer = ( d1 / d2 ) * d3;
|
||||
|
||||
|
||||
/* The variable this task increments to show it is still running is passed in
|
||||
as the parameter. */
|
||||
pulTaskCheckVariable = ( unsigned long * ) pvParameters;
|
||||
|
||||
/* Keep performing a calculation and checking the result against a constant. */
|
||||
for( ;; )
|
||||
{
|
||||
d1 = -389.38;
|
||||
d2 = 32498.2;
|
||||
d3 = -2.0001;
|
||||
|
||||
d4 = ( d1 / d2 ) * d3;
|
||||
|
||||
#if configUSE_PREEMPTION == 0
|
||||
taskYIELD();
|
||||
#endif
|
||||
|
||||
/* If the calculation does not match the expected constant, stop the
|
||||
increment of the check variable. */
|
||||
if( fabs( d4 - dAnswer ) > 0.001 )
|
||||
{
|
||||
sError = pdTRUE;
|
||||
}
|
||||
|
||||
if( sError == pdFALSE )
|
||||
{
|
||||
/* If the calculation has always been correct, increment the check
|
||||
variable so we know
|
||||
this task is still running okay. */
|
||||
( *pulTaskCheckVariable )++;
|
||||
}
|
||||
|
||||
#if configUSE_PREEMPTION == 0
|
||||
taskYIELD();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static portTASK_FUNCTION( vCompetingMathTask3, pvParameters )
|
||||
{
|
||||
volatile portDOUBLE *pdArray, dTotal1, dTotal2, dDifference;
|
||||
volatile unsigned long *pulTaskCheckVariable;
|
||||
const size_t xArraySize = 10;
|
||||
size_t xPosition;
|
||||
short sError = pdFALSE;
|
||||
|
||||
/* Must be called before any hardware floating point operations are
|
||||
performed to let the RTOS portable layer know that this task requires
|
||||
a floating point context. */
|
||||
portTASK_USES_FLOATING_POINT();
|
||||
|
||||
/* The variable this task increments to show it is still running is passed in
|
||||
as the parameter. */
|
||||
pulTaskCheckVariable = ( unsigned long * ) pvParameters;
|
||||
|
||||
pdArray = ( portDOUBLE * ) pvPortMalloc( xArraySize * sizeof( portDOUBLE ) );
|
||||
|
||||
/* Keep filling an array, keeping a running total of the values placed in the
|
||||
array. Then run through the array adding up all the values. If the two totals
|
||||
do not match, stop the check variable from incrementing. */
|
||||
for( ;; )
|
||||
{
|
||||
dTotal1 = 0.0;
|
||||
dTotal2 = 0.0;
|
||||
|
||||
for( xPosition = 0; xPosition < xArraySize; xPosition++ )
|
||||
{
|
||||
pdArray[ xPosition ] = ( portDOUBLE ) xPosition + 5.5;
|
||||
dTotal1 += ( portDOUBLE ) xPosition + 5.5;
|
||||
}
|
||||
|
||||
#if configUSE_PREEMPTION == 0
|
||||
taskYIELD();
|
||||
#endif
|
||||
|
||||
for( xPosition = 0; xPosition < xArraySize; xPosition++ )
|
||||
{
|
||||
dTotal2 += pdArray[ xPosition ];
|
||||
}
|
||||
|
||||
dDifference = dTotal1 - dTotal2;
|
||||
if( fabs( dDifference ) > 0.001 )
|
||||
{
|
||||
sError = pdTRUE;
|
||||
}
|
||||
|
||||
#if configUSE_PREEMPTION == 0
|
||||
taskYIELD();
|
||||
#endif
|
||||
|
||||
if( sError == pdFALSE )
|
||||
{
|
||||
/* If the calculation has always been correct, increment the check
|
||||
variable so we know this task is still running okay. */
|
||||
( *pulTaskCheckVariable )++;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static portTASK_FUNCTION( vCompetingMathTask4, pvParameters )
|
||||
{
|
||||
volatile portDOUBLE *pdArray, dTotal1, dTotal2, dDifference;
|
||||
volatile unsigned long *pulTaskCheckVariable;
|
||||
const size_t xArraySize = 10;
|
||||
size_t xPosition;
|
||||
short sError = pdFALSE;
|
||||
|
||||
/* Must be called before any hardware floating point operations are
|
||||
performed to let the RTOS portable layer know that this task requires
|
||||
a floating point context. */
|
||||
portTASK_USES_FLOATING_POINT();
|
||||
|
||||
/* The variable this task increments to show it is still running is passed in
|
||||
as the parameter. */
|
||||
pulTaskCheckVariable = ( unsigned long * ) pvParameters;
|
||||
|
||||
pdArray = ( portDOUBLE * ) pvPortMalloc( xArraySize * sizeof( portDOUBLE ) );
|
||||
|
||||
/* Keep filling an array, keeping a running total of the values placed in the
|
||||
array. Then run through the array adding up all the values. If the two totals
|
||||
do not match, stop the check variable from incrementing. */
|
||||
for( ;; )
|
||||
{
|
||||
dTotal1 = 0.0;
|
||||
dTotal2 = 0.0;
|
||||
|
||||
for( xPosition = 0; xPosition < xArraySize; xPosition++ )
|
||||
{
|
||||
pdArray[ xPosition ] = ( portDOUBLE ) xPosition * 12.123;
|
||||
dTotal1 += ( portDOUBLE ) xPosition * 12.123;
|
||||
}
|
||||
|
||||
#if configUSE_PREEMPTION == 0
|
||||
taskYIELD();
|
||||
#endif
|
||||
|
||||
for( xPosition = 0; xPosition < xArraySize; xPosition++ )
|
||||
{
|
||||
dTotal2 += pdArray[ xPosition ];
|
||||
}
|
||||
|
||||
dDifference = dTotal1 - dTotal2;
|
||||
if( fabs( dDifference ) > 0.001 )
|
||||
{
|
||||
sError = pdTRUE;
|
||||
}
|
||||
|
||||
#if configUSE_PREEMPTION == 0
|
||||
taskYIELD();
|
||||
#endif
|
||||
|
||||
if( sError == pdFALSE )
|
||||
{
|
||||
/* If the calculation has always been correct, increment the check
|
||||
variable so we know this task is still running okay. */
|
||||
( *pulTaskCheckVariable )++;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* This is called to check that all the created tasks are still running. */
|
||||
portBASE_TYPE xAreMathsTaskStillRunning( void )
|
||||
{
|
||||
/* Keep a history of the check variables so we know if they have been incremented
|
||||
since the last call. */
|
||||
static unsigned long ulLastTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 };
|
||||
portBASE_TYPE xReturn = pdTRUE, xTask;
|
||||
|
||||
/* Check the maths tasks are still running by ensuring their check variables
|
||||
are still incrementing. */
|
||||
for( xTask = 0; xTask < mathNUMBER_OF_TASKS; xTask++ )
|
||||
{
|
||||
if( ulTaskCheck[ xTask ] == ulLastTaskCheck[ xTask ] )
|
||||
{
|
||||
/* The check has not incremented so an error exists. */
|
||||
xReturn = pdFALSE;
|
||||
}
|
||||
|
||||
ulLastTaskCheck[ xTask ] = ulTaskCheck[ xTask ];
|
||||
}
|
||||
|
||||
return xReturn;
|
||||
}
|
||||
|
||||
|
||||
|
||||
35
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.h
Normal file
35
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.h
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef FLOP_TASKS_H
|
||||
#define FLOP_TASKS_H
|
||||
|
||||
void vStartMathTasks( unsigned portBASE_TYPE uxPriority );
|
||||
portBASE_TYPE xAreMathsTaskStillRunning( void );
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
274
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c
Normal file
274
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c
Normal file
@ -0,0 +1,274 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/******************************************************************************
|
||||
* This project provides two demo applications. A simple blinky style project,
|
||||
* and a more comprehensive test and demo application. The
|
||||
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting (defined in this file) is used to
|
||||
* select between the two. The simply blinky demo is implemented and described
|
||||
* in main_blinky.c. The more comprehensive test and demo application is
|
||||
* implemented and described in main_full.c.
|
||||
*
|
||||
* This file implements the code that is not demo specific, including the
|
||||
* hardware setup and FreeRTOS hook functions.
|
||||
*/
|
||||
|
||||
/* Kernel includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
|
||||
/* Standard demo includes. */
|
||||
#include "partest.h"
|
||||
#include "QueueOverwrite.h"
|
||||
#include "QueueSet.h"
|
||||
#include "EventGroupsDemo.h"
|
||||
|
||||
/* Hardware specific includes. */
|
||||
#include "ConfigPerformance.h"
|
||||
|
||||
/* Core configuration fuse settings */
|
||||
#if defined(__32MZ2048ECM144) || defined(__32MZ2048ECH144)
|
||||
#pragma config FMIIEN = OFF, FETHIO = OFF, PGL1WAY = OFF, PMDL1WAY = OFF, IOL1WAY = OFF, FUSBIDIO = OFF
|
||||
#pragma config FNOSC = SPLL, FSOSCEN = OFF, IESO = OFF, POSCMOD = EC
|
||||
#pragma config OSCIOFNC = OFF, FCKSM = CSECMD, FWDTEN = OFF, FDMTEN = OFF
|
||||
#pragma config DMTINTV = WIN_127_128, WDTSPGM = STOP, WINDIS= NORMAL
|
||||
#pragma config WDTPS = PS1048576, FWDTWINSZ = WINSZ_25, DMTCNT = DMT31
|
||||
#pragma config FPLLIDIV = DIV_3, FPLLRNG = RANGE_13_26_MHZ, FPLLICLK = PLL_POSC
|
||||
#pragma config FPLLMULT = MUL_50, FPLLODIV = DIV_2, UPLLFSEL = FREQ_12MHZ, UPLLEN = OFF
|
||||
#pragma config EJTAGBEN = NORMAL, DBGPER = PG_ALL, FSLEEP = OFF, FECCCON = OFF_UNLOCKED
|
||||
#pragma config BOOTISA = MIPS32, TRCEN = ON, ICESEL = ICS_PGx2, JTAGEN = OFF, DEBUG = ON
|
||||
#pragma config CP = OFF
|
||||
#elif defined(__32MZ2048EFM144) || defined(__32MZ2048EFH144)
|
||||
#pragma config FMIIEN = OFF, FETHIO = OFF, PGL1WAY = OFF, PMDL1WAY = OFF, IOL1WAY = OFF, FUSBIDIO = OFF
|
||||
#pragma config FNOSC = SPLL, FSOSCEN = OFF, IESO = OFF, POSCMOD = EC
|
||||
#pragma config OSCIOFNC = OFF, FCKSM = CSECMD, FWDTEN = OFF, FDMTEN = OFF
|
||||
#pragma config DMTINTV = WIN_127_128, WDTSPGM = STOP, WINDIS= NORMAL
|
||||
#pragma config WDTPS = PS1048576, FWDTWINSZ = WINSZ_25, DMTCNT = DMT31
|
||||
#pragma config FPLLIDIV = DIV_3, FPLLRNG = RANGE_13_26_MHZ, FPLLICLK = PLL_POSC
|
||||
#pragma config FPLLMULT = MUL_50, FPLLODIV = DIV_2, UPLLFSEL = FREQ_12MHZ
|
||||
#pragma config EJTAGBEN = NORMAL, DBGPER = PG_ALL, FSLEEP = OFF, FECCCON = OFF_UNLOCKED
|
||||
#pragma config BOOTISA = MIPS32, TRCEN = ON, ICESEL = ICS_PGx2, JTAGEN = OFF, DEBUG = ON
|
||||
#pragma config CP = OFF
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to one to run the simple blinky demo,
|
||||
or 0 to run the more comprehensive test and demo application. */
|
||||
#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 0
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* Set up the hardware ready to run this demo.
|
||||
*/
|
||||
static void prvSetupHardware( void );
|
||||
|
||||
/*
|
||||
* main_blinky() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.
|
||||
* main_full() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0.
|
||||
*/
|
||||
extern void main_blinky( void );
|
||||
extern void main_full( void );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* Create the demo tasks then start the scheduler.
|
||||
*/
|
||||
int main( void )
|
||||
{
|
||||
/* Prepare the hardware to run this demo. */
|
||||
prvSetupHardware();
|
||||
|
||||
/* The mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting is described at the top
|
||||
of this file. */
|
||||
#if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1
|
||||
{
|
||||
main_blinky();
|
||||
}
|
||||
#else
|
||||
{
|
||||
main_full();
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvSetupHardware( void )
|
||||
{
|
||||
/* Configure the hardware for maximum performance. */
|
||||
vHardwareConfigurePerformance();
|
||||
|
||||
/* Setup to use the external interrupt controller. */
|
||||
vHardwareUseMultiVectoredInterrupts();
|
||||
|
||||
portDISABLE_INTERRUPTS();
|
||||
|
||||
/* Setup the digital IO for the LED's. */
|
||||
vParTestInitialise();
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationMallocFailedHook( void )
|
||||
{
|
||||
/* vApplicationMallocFailedHook() will only be called if
|
||||
configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook
|
||||
function that will get called if a call to pvPortMalloc() fails.
|
||||
pvPortMalloc() is called internally by the kernel whenever a task, queue,
|
||||
timer or semaphore is created. It is also called by various parts of the
|
||||
demo application. If heap_1.c or heap_2.c are used, then the size of the
|
||||
heap available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in
|
||||
FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used
|
||||
to query the size of free heap space that remains (although it does not
|
||||
provide information on how the remaining heap might be fragmented). */
|
||||
taskDISABLE_INTERRUPTS();
|
||||
for( ;; );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationIdleHook( void )
|
||||
{
|
||||
/* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set
|
||||
to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle
|
||||
task. It is essential that code added to this hook function never attempts
|
||||
to block in any way (for example, call xQueueReceive() with a block time
|
||||
specified, or call vTaskDelay()). If the application makes use of the
|
||||
vTaskDelete() API function (as this demo application does) then it is also
|
||||
important that vApplicationIdleHook() is permitted to return to its calling
|
||||
function, because it is the responsibility of the idle task to clean up
|
||||
memory allocated by the kernel to any task that has since been deleted. */
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )
|
||||
{
|
||||
( void ) pcTaskName;
|
||||
( void ) pxTask;
|
||||
|
||||
/* Run time task stack overflow checking is performed if
|
||||
configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook function is
|
||||
called if a task stack overflow is detected. Note the system/interrupt
|
||||
stack is not checked. */
|
||||
taskDISABLE_INTERRUPTS();
|
||||
for( ;; );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationTickHook( void )
|
||||
{
|
||||
/* This function will be called by each tick interrupt if
|
||||
configUSE_TICK_HOOK is set to 1 in FreeRTOSConfig.h. User code can be
|
||||
added here, but the tick hook is called from an interrupt context, so
|
||||
code must not attempt to block, and only the interrupt safe FreeRTOS API
|
||||
functions can be used (those that end in FromISR()). */
|
||||
|
||||
#if( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0 )
|
||||
{
|
||||
/* Call the periodic queue overwrite from ISR demo. */
|
||||
vQueueOverwritePeriodicISRDemo();
|
||||
|
||||
/* Call the queue set ISR test function. */
|
||||
vQueueSetAccessQueueSetFromISR();
|
||||
|
||||
/* Exercise event groups from interrupts. */
|
||||
vPeriodicEventGroupsProcessing();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
extern void vAssertCalled( const char * pcFile, unsigned long ulLine )
|
||||
{
|
||||
volatile char *pcFileName;
|
||||
volatile unsigned long ulLineNumber;
|
||||
|
||||
/* Prevent things that are useful to view in the debugger from being
|
||||
optimised away. */
|
||||
pcFileName = ( char * ) pcFile;
|
||||
( void ) pcFileName;
|
||||
ulLineNumber = ulLine;
|
||||
|
||||
/* Set ulLineNumber to 0 in the debugger to break out of this loop and
|
||||
return to the line that triggered the assert. */
|
||||
while( ulLineNumber != 0 )
|
||||
{
|
||||
__asm volatile( "NOP" );
|
||||
__asm volatile( "NOP" );
|
||||
__asm volatile( "NOP" );
|
||||
__asm volatile( "NOP" );
|
||||
__asm volatile( "NOP" );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* This function overrides the normal _weak_ generic handler. */
|
||||
void _general_exception_handler(void)
|
||||
{
|
||||
static enum {
|
||||
EXCEP_IRQ = 0, /* interrupt */
|
||||
EXCEP_AdEL = 4, /* address error exception (load or ifetch) */
|
||||
EXCEP_AdES, /* address error exception (store) */
|
||||
EXCEP_IBE, /* bus error (ifetch) */
|
||||
EXCEP_DBE, /* bus error (load/store) */
|
||||
EXCEP_Sys, /* syscall */
|
||||
EXCEP_Bp, /* breakpoint */
|
||||
EXCEP_RI, /* reserved instruction */
|
||||
EXCEP_CpU, /* coprocessor unusable */
|
||||
EXCEP_Overflow, /* arithmetic overflow */
|
||||
EXCEP_Trap, /* trap (possible divide by zero) */
|
||||
EXCEP_FPE = 15, /* floating point exception */
|
||||
EXCEP_IS1 = 16, /* implementation specific 1 */
|
||||
EXCEP_CEU, /* CorExtend Unuseable */
|
||||
EXCEP_C2E, /* coprocessor 2 */
|
||||
EXCEP_DSPDis = 26 /* DSP module disabled */
|
||||
} _excep_code;
|
||||
|
||||
static unsigned long _epc_code;
|
||||
static unsigned long _excep_addr;
|
||||
|
||||
asm volatile( "mfc0 %0,$13" : "=r" (_epc_code) );
|
||||
asm volatile( "mfc0 %0,$14" : "=r" (_excep_addr) );
|
||||
|
||||
_excep_code = ( _epc_code & 0x0000007C ) >> 2;
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* prevent compiler warning */
|
||||
(void) _excep_code;
|
||||
|
||||
/* Examine _excep_code to identify the type of exception. Examine
|
||||
_excep_addr to find the address that caused the exception */
|
||||
LATHSET = 0x0007;
|
||||
Nop();
|
||||
Nop();
|
||||
Nop();
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
246
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/main_blinky.c
Normal file
246
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/main_blinky.c
Normal file
@ -0,0 +1,246 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/******************************************************************************
|
||||
* NOTE 1: This project provides two demo applications. A simple blinky style
|
||||
* project, and a more comprehensive test and demo application. The
|
||||
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting in main.c is used to select
|
||||
* between the two. See the notes on using mainCREATE_SIMPLE_BLINKY_DEMO_ONLY
|
||||
* in main.c. This file implements the simply blinky style version.
|
||||
*
|
||||
* NOTE 2: This file only contains the source code that is specific to the
|
||||
* basic demo. Generic functions, such FreeRTOS hook functions, and functions
|
||||
* required to configure the hardware, are defined in main.c.
|
||||
******************************************************************************
|
||||
*
|
||||
* main_blinky() creates one queue, two tasks, and one software timer. It then
|
||||
* starts the scheduler.
|
||||
*
|
||||
* The Blinky Software Timer:
|
||||
* This demonstrates an auto-reload software timer. The timer callback function
|
||||
* does nothing but toggle an LED.
|
||||
*
|
||||
* The Queue Send Task:
|
||||
* The queue send task is implemented by prvQueueSendTask() in main_blinky.c.
|
||||
* prvQueueSendTask() repeatedly blocks for 200 milliseconds before sending the
|
||||
* value 100 to the queue that was created in main_blinky().
|
||||
*
|
||||
* The Queue Receive Task:
|
||||
* The queue receive task is implemented by prvQueueReceiveTask() in
|
||||
* main_blinky.c. prvQueueReceiveTask() repeatedly blocks on attempts to read
|
||||
* from the queue that was created in main_blinky(), toggling an LED each time
|
||||
* data is received. The queue send task sends data to the queue every 200
|
||||
* milliseconds, so the LED will toggle every 200 milliseconds.
|
||||
*/
|
||||
|
||||
/* Standard includes. */
|
||||
#include <stdio.h>
|
||||
|
||||
/* Kernel includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "queue.h"
|
||||
#include "timers.h"
|
||||
|
||||
/* Standard demo includes. */
|
||||
#include "partest.h"
|
||||
#include "semphr.h"
|
||||
|
||||
/* Priorities at which the tasks are created. */
|
||||
#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
|
||||
/* The rate at which data is sent to the queue. The 200ms value is converted
|
||||
to ticks using the portTICK_PERIOD_MS constant. */
|
||||
#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS )
|
||||
|
||||
/* The number of items the queue can hold. This is 1 as the receive task
|
||||
will remove items as they are added, meaning the send task should always find
|
||||
the queue empty. */
|
||||
#define mainQUEUE_LENGTH ( 1 )
|
||||
|
||||
/* Values passed to the two tasks just to check the task parameter
|
||||
functionality. */
|
||||
#define mainQUEUE_SEND_PARAMETER ( 0x1111UL )
|
||||
#define mainQUEUE_RECEIVE_PARAMETER ( 0x22UL )
|
||||
|
||||
/* The period of the blinky software timer. The period is specified in ms and
|
||||
converted to ticks using the portTICK_PERIOD_MS constant. */
|
||||
#define mainBLINKY_TIMER_PERIOD ( 50 / portTICK_PERIOD_MS )
|
||||
|
||||
/* The LED used by the communicating tasks and the blinky timer respectively. */
|
||||
#define mainTASKS_LED ( 0 )
|
||||
#define mainTIMER_LED ( 1 )
|
||||
|
||||
/* Misc. */
|
||||
#define mainDONT_BLOCK ( 0 )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* The tasks as described in the comments at the top of this file.
|
||||
*/
|
||||
static void prvQueueReceiveTask( void *pvParameters );
|
||||
static void prvQueueSendTask( void *pvParameters );
|
||||
|
||||
/*
|
||||
* The callback function for the blinky software timer, as described at the top
|
||||
* of this file.
|
||||
*/
|
||||
static void prvBlinkyTimerCallback( TimerHandle_t xTimer );
|
||||
|
||||
/*
|
||||
* Called by main() to create the simply blinky style application if
|
||||
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.
|
||||
*/
|
||||
void main_blinky( void );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* The queue used by both tasks. */
|
||||
static QueueHandle_t xQueue = NULL;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void main_blinky( void )
|
||||
{
|
||||
TimerHandle_t xTimer;
|
||||
|
||||
/* Create the queue. */
|
||||
xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) );
|
||||
configASSERT( xQueue );
|
||||
|
||||
if( xQueue != NULL )
|
||||
{
|
||||
/* Create the two tasks as described in the comments at the top of this
|
||||
file. */
|
||||
xTaskCreate( prvQueueReceiveTask, /* The function that implements the task. */
|
||||
"Rx", /* The text name assigned to the task - for debug only as it is not used by the kernel. */
|
||||
configMINIMAL_STACK_SIZE, /* The size of the stack to allocate to the task. */
|
||||
( void * ) mainQUEUE_RECEIVE_PARAMETER, /* The parameter passed to the task - just to check the functionality. */
|
||||
mainQUEUE_RECEIVE_TASK_PRIORITY, /* The priority assigned to the task. */
|
||||
NULL ); /* The task handle is not required, so NULL is passed. */
|
||||
|
||||
xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, ( void * ) mainQUEUE_SEND_PARAMETER, mainQUEUE_SEND_TASK_PRIORITY, NULL );
|
||||
|
||||
|
||||
/* Create the blinky software timer as described at the top of this file. */
|
||||
xTimer = xTimerCreate( "Blinky", /* A text name, purely to help debugging. */
|
||||
( mainBLINKY_TIMER_PERIOD ),/* The timer period. */
|
||||
pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */
|
||||
( void * ) 0, /* The ID is not used, so can be set to anything. */
|
||||
prvBlinkyTimerCallback ); /* The callback function that inspects the status of all the other tasks. */
|
||||
configASSERT( xTimer );
|
||||
|
||||
if( xTimer != NULL )
|
||||
{
|
||||
xTimerStart( xTimer, mainDONT_BLOCK );
|
||||
}
|
||||
|
||||
/* Start the tasks and timer running. */
|
||||
vTaskStartScheduler();
|
||||
}
|
||||
|
||||
/* If all is well, the scheduler will now be running, and the following
|
||||
line will never be reached. If the following line does execute, then
|
||||
there was insufficient FreeRTOS heap memory available for the idle and/or
|
||||
timer tasks to be created. See the memory management section on the
|
||||
FreeRTOS web site for more details. http://www.freertos.org/a00111.html */
|
||||
for( ;; );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvQueueSendTask( void *pvParameters )
|
||||
{
|
||||
TickType_t xNextWakeTime;
|
||||
const unsigned long ulValueToSend = 100UL;
|
||||
|
||||
/* Remove compiler warnings in the case that configASSERT() is not dfined. */
|
||||
( void ) pvParameters;
|
||||
|
||||
/* Check the task parameter is as expected. */
|
||||
configASSERT( ( ( unsigned long ) pvParameters ) == mainQUEUE_SEND_PARAMETER );
|
||||
|
||||
/* Initialise xNextWakeTime - this only needs to be done once. */
|
||||
xNextWakeTime = xTaskGetTickCount();
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Place this task in the blocked state until it is time to run again.
|
||||
The block time is specified in ticks, the constant used converts ticks
|
||||
to ms. While in the Blocked state this task will not consume any CPU
|
||||
time. */
|
||||
vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS );
|
||||
|
||||
/* Send to the queue - causing the queue receive task to unblock and
|
||||
toggle the LED. 0 is used as the block time so the sending operation
|
||||
will not block - it shouldn't need to block as the queue should always
|
||||
be empty at this point in the code. */
|
||||
xQueueSend( xQueue, &ulValueToSend, 0U );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvQueueReceiveTask( void *pvParameters )
|
||||
{
|
||||
unsigned long ulReceivedValue;
|
||||
|
||||
/* Remove compiler warnings in the case where configASSERT() is not defined. */
|
||||
( void ) pvParameters;
|
||||
|
||||
/* Check the task parameter is as expected. */
|
||||
configASSERT( ( ( unsigned long ) pvParameters ) == mainQUEUE_RECEIVE_PARAMETER );
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Wait until something arrives in the queue - this task will block
|
||||
indefinitely provided INCLUDE_vTaskSuspend is set to 1 in
|
||||
FreeRTOSConfig.h. */
|
||||
xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY );
|
||||
|
||||
/* To get here something must have been received from the queue, but
|
||||
is it the expected value? If it is, toggle the LED. */
|
||||
if( ulReceivedValue == 100UL )
|
||||
{
|
||||
vParTestToggleLED( mainTASKS_LED );
|
||||
ulReceivedValue = 0U;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvBlinkyTimerCallback( TimerHandle_t xTimer )
|
||||
{
|
||||
/* Avoid compiler warnings. */
|
||||
( void ) xTimer;
|
||||
|
||||
/* This function is called when the blinky software time expires. All the
|
||||
function does is toggle the LED. LED mainTIMER_LED should therefore toggle
|
||||
with the period set by mainBLINKY_TIMER_PERIOD. */
|
||||
vParTestToggleLED( mainTIMER_LED );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
415
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/main_full.c
Normal file
415
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/main_full.c
Normal file
@ -0,0 +1,415 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/******************************************************************************
|
||||
* NOTE 1: This project provides two demo applications. A simple blinky style
|
||||
* project, and a more comprehensive test and demo application. The
|
||||
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting in main.c is used to select
|
||||
* between the two. See the notes on using mainCREATE_SIMPLE_BLINKY_DEMO_ONLY
|
||||
* in main.c. This file implements the comprehensive test and demo version.
|
||||
*
|
||||
* NOTE 2: This file only contains the source code that is specific to the
|
||||
* full demo. Generic functions, such FreeRTOS hook functions, and functions
|
||||
* required to configure the hardware, are defined in main.c.
|
||||
******************************************************************************
|
||||
*
|
||||
* main_full() creates all the demo application tasks and software timers, then
|
||||
* starts the scheduler. The WEB documentation provides more details of the
|
||||
* standard demo application tasks. In addition to the standard demo tasks, the
|
||||
* following tasks and tests are also defined:
|
||||
*
|
||||
* "Register test" tasks - These tasks are used in part to test the kernel port.
|
||||
* They set each processor register to a known value, then check that the
|
||||
* register still contains that value. Each of the tasks sets the registers
|
||||
* to different values, and will get swapping in and out between setting and
|
||||
* then subsequently checking the register values. Discovery of an incorrect
|
||||
* value would be indicative of an error in the task switching mechanism.
|
||||
*
|
||||
* "ISR triggered task" - This is provided as an example of how to write a
|
||||
* FreeRTOS compatible interrupt service routine. See the comments in
|
||||
* ISRTriggeredTask.c.
|
||||
*
|
||||
* "High Frequency Timer Test" - The high frequency timer is created to test
|
||||
* the interrupt nesting method. The standard demo interrupt nesting test tasks
|
||||
* are created with priorities at or below configMAX_SYSCALL_INTERRUPT_PRIORITY
|
||||
* because they use interrupt safe FreeRTOS API functions. The high frequency
|
||||
* time is created with a priority above configMAX_SYSCALL_INTERRUPT_PRIORITY,
|
||||
* so cannot us the same API functions.
|
||||
|
||||
* By way of demonstration, the demo application defines
|
||||
* configMAX_SYSCALL_INTERRUPT_PRIORITY to be 3, configKERNEL_INTERRUPT_PRIORITY
|
||||
* to be 1, and all other interrupts as follows:
|
||||
*
|
||||
* See the online documentation for this demo for more information on interrupt
|
||||
* usage.
|
||||
*
|
||||
* "Check" timer - The check software timer period is initially set to three
|
||||
* seconds. The callback function associated with the check software timer
|
||||
* checks that all the standard demo tasks, and the register check tasks, are
|
||||
* not only still executing, but are executing without reporting any errors. If
|
||||
* the check software timer discovers that a task has either stalled, or
|
||||
* reported an error, then it changes its own execution period from the initial
|
||||
* three seconds, to just 200ms. The check software timer also toggle LED
|
||||
* mainCHECK_LED; If mainCHECK_LED toggles every 3 seconds, no errors have
|
||||
* been detected. If mainCHECK_LED toggles every 200ms then an error has been
|
||||
* detected in at least one task.
|
||||
*
|
||||
*/
|
||||
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "queue.h"
|
||||
#include "semphr.h"
|
||||
#include "timers.h"
|
||||
|
||||
/* Demo application includes. */
|
||||
#include "partest.h"
|
||||
#include "blocktim.h"
|
||||
#include "flash_timer.h"
|
||||
#include "semtest.h"
|
||||
#include "GenQTest.h"
|
||||
#include "QPeek.h"
|
||||
#include "IntQueue.h"
|
||||
#include "countsem.h"
|
||||
#include "dynamic.h"
|
||||
#include "QueueOverwrite.h"
|
||||
#include "QueueSet.h"
|
||||
#include "recmutex.h"
|
||||
#include "EventGroupsDemo.h"
|
||||
#include "flop_mz.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* The period after which the check timer will expire, in ms, provided no errors
|
||||
have been reported by any of the standard demo tasks. ms are converted to the
|
||||
equivalent in ticks using the portTICK_PERIOD_MS constant. */
|
||||
#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_PERIOD_MS )
|
||||
|
||||
/* The period at which the check timer will expire, in ms, if an error has been
|
||||
reported in one of the standard demo tasks. ms are converted to the equivalent
|
||||
in ticks using the portTICK_PERIOD_MS constant. */
|
||||
#define mainERROR_CHECK_TIMER_PERIOD_MS ( 200UL / portTICK_PERIOD_MS )
|
||||
|
||||
/* The priorities of the various demo application tasks. */
|
||||
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||
#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||
#define mainQUEUE_OVERWRITE_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||
#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||
|
||||
/* The LED controlled by the 'check' software timer. */
|
||||
#define mainCHECK_LED ( 2 )
|
||||
|
||||
/* The number of LEDs that should be controlled by the flash software timer
|
||||
standard demo. In this case it is only 1 as the starter kit has three LEDs, one
|
||||
of which is controlled by the check timer and one of which is controlled by the
|
||||
ISR triggered task. */
|
||||
#define mainNUM_FLASH_TIMER_LEDS ( 1 )
|
||||
|
||||
/* Misc. */
|
||||
#define mainDONT_BLOCK ( 0 )
|
||||
|
||||
/* The frequency at which the "high frequency interrupt" interrupt will
|
||||
occur. */
|
||||
#define mainTEST_INTERRUPT_FREQUENCY ( 20000 )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* The check timer callback function, as described at the top of this file.
|
||||
*/
|
||||
static void prvCheckTimerCallback( TimerHandle_t xTimer );
|
||||
|
||||
/*
|
||||
* It is important to ensure the high frequency timer test does not start before
|
||||
* the kernel. It is therefore started from inside a software timer callback
|
||||
* function, which will not execute until the timer service/daemon task is
|
||||
* executing. A one-shot timer is used, so the callback function will only
|
||||
* execute once (unless it is manually reset/restarted).
|
||||
*/
|
||||
static void prvSetupHighFrequencyTimerTest( TimerHandle_t xTimer );
|
||||
|
||||
/*
|
||||
* Tasks that test the context switch mechanism by filling the processor
|
||||
* registers with known values, then checking that the values contained
|
||||
* within the registers is as expected. The tasks are likely to get swapped
|
||||
* in and out between setting the register values and checking the register
|
||||
* values.
|
||||
*/
|
||||
static void prvRegTestTask1( void *pvParameters );
|
||||
static void prvRegTestTask2( void *pvParameters );
|
||||
|
||||
/*
|
||||
* The task that is periodically triggered by an interrupt, as described at the
|
||||
* top of this file.
|
||||
*/
|
||||
extern void vStartISRTriggeredTask( void );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Variables incremented by prvRegTestTask1() and prvRegTestTask2() respectively
|
||||
on each iteration of their function. These are used to detect errors in the
|
||||
reg test tasks. */
|
||||
volatile unsigned long ulRegTest1Cycles = 0, ulRegTest2Cycles = 0;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* Create the demo tasks then start the scheduler.
|
||||
*/
|
||||
int main_full( void )
|
||||
{
|
||||
TimerHandle_t xTimer = NULL;
|
||||
|
||||
/* Create all the other standard demo tasks. */
|
||||
vStartLEDFlashTimers( mainNUM_FLASH_TIMER_LEDS );
|
||||
vCreateBlockTimeTasks();
|
||||
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
|
||||
vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );
|
||||
vStartQueuePeekTasks();
|
||||
vStartInterruptQueueTasks();
|
||||
vStartISRTriggeredTask();
|
||||
vStartCountingSemaphoreTasks();
|
||||
vStartDynamicPriorityTasks();
|
||||
vStartQueueOverwriteTask( mainQUEUE_OVERWRITE_TASK_PRIORITY );
|
||||
vStartQueueSetTasks();
|
||||
vStartRecursiveMutexTasks();
|
||||
vStartEventGroupTasks();
|
||||
vStartMathTasks( mainFLOP_TASK_PRIORITY );
|
||||
|
||||
/* Create the tasks defined within this file. */
|
||||
xTaskCreate( prvRegTestTask1, /* The function that implements the task. */
|
||||
"Reg1", /* Text name for the task to assist debugger - not used by FreeRTOS itself. */
|
||||
configMINIMAL_STACK_SIZE, /* The stack size to allocate for the task - specified in words not bytes. */
|
||||
NULL, /* The parameter to pass into the task - not used in this case so set to NULL. */
|
||||
tskIDLE_PRIORITY, /* The priority to assign to the task. */
|
||||
NULL ); /* Used to obtain a handle to the task being created - not used in this case so set to NULL. */
|
||||
|
||||
xTaskCreate( prvRegTestTask2, "Reg2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
|
||||
|
||||
/* Create the software timer that performs the 'check' functionality, as
|
||||
described at the top of this file. */
|
||||
xTimer = xTimerCreate( "CheckTimer",/* A text name, purely to help debugging. */
|
||||
( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */
|
||||
pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */
|
||||
( void * ) 0, /* The ID is not used, so can be set to anything. */
|
||||
prvCheckTimerCallback ); /* The callback function that inspects the status of all the other tasks. */
|
||||
|
||||
if( xTimer != NULL )
|
||||
{
|
||||
xTimerStart( xTimer, mainDONT_BLOCK );
|
||||
}
|
||||
|
||||
/* A software timer is also used to start the high frequency timer test.
|
||||
This is to ensure the test does not start before the kernel. This time a
|
||||
one-shot software timer is used. */
|
||||
xTimer = xTimerCreate( "HighHzTimerSetup", 1, pdFALSE, ( void * ) 0, prvSetupHighFrequencyTimerTest );
|
||||
if( xTimer != NULL )
|
||||
{
|
||||
xTimerStart( xTimer, mainDONT_BLOCK );
|
||||
}
|
||||
|
||||
/* Finally start the scheduler. */
|
||||
vTaskStartScheduler();
|
||||
|
||||
/* If all is well, the scheduler will now be running, and the following line
|
||||
will never be reached. If the following line does execute, then there was
|
||||
insufficient FreeRTOS heap memory available for the idle and/or timer tasks
|
||||
to be created. See the memory management section on the FreeRTOS web site
|
||||
for more details. http://www.freertos.org/a00111.html */
|
||||
for( ;; );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvRegTestTask1( void *pvParameters )
|
||||
{
|
||||
extern void vRegTest1( volatile unsigned long * );
|
||||
|
||||
/* Avoid compiler warnings. */
|
||||
( void ) pvParameters;
|
||||
|
||||
/* Must be called before any hardware floating point operations are
|
||||
performed to let the RTOS portable layer know that this task requires
|
||||
a floating point context. */
|
||||
portTASK_USES_FLOATING_POINT();
|
||||
|
||||
/* Pass the address of the RegTest1 loop counter into the test function,
|
||||
which is necessarily implemented in assembler. */
|
||||
vRegTest1( &ulRegTest1Cycles );
|
||||
|
||||
/* vRegTest1 should never exit! */
|
||||
vTaskDelete( NULL );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvRegTestTask2( void *pvParameters )
|
||||
{
|
||||
extern void vRegTest2( volatile unsigned long * );
|
||||
|
||||
/* Avoid compiler warnings. */
|
||||
( void ) pvParameters;
|
||||
|
||||
/* Must be called before any hardware floating point operations are
|
||||
performed to let the RTOS portable layer know that this task requires
|
||||
a floating point context. */
|
||||
portTASK_USES_FLOATING_POINT();
|
||||
|
||||
/* Pass the address of the RegTest2 loop counter into the test function,
|
||||
which is necessarily implemented in assembler. */
|
||||
vRegTest2( &ulRegTest2Cycles );
|
||||
|
||||
/* vRegTest1 should never exit! */
|
||||
vTaskDelete( NULL );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvCheckTimerCallback( TimerHandle_t xTimer )
|
||||
{
|
||||
static long lChangedTimerPeriodAlready = pdFALSE;
|
||||
static unsigned long ulLastRegTest1Value = 0, ulLastRegTest2Value = 0, ulLastHighFrequencyTimerInterrupts = 0;
|
||||
static const unsigned long ulExpectedHighFrequencyInterrupts = ( ( mainTEST_INTERRUPT_FREQUENCY / 1000UL ) * mainCHECK_TIMER_PERIOD_MS ) - 10; /* 10 allows for a margin of error. */
|
||||
unsigned long ulErrorOccurred = pdFALSE;
|
||||
|
||||
/* The count of the high frequency timer interrupts. */
|
||||
extern unsigned long ulHighFrequencyTimerInterrupts;
|
||||
|
||||
/* Avoid compiler warnings. */
|
||||
( void ) xTimer;
|
||||
|
||||
/* Check that the register test 1 task is still running. */
|
||||
if( ulLastRegTest1Value == ulRegTest1Cycles )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 1UL );
|
||||
}
|
||||
ulLastRegTest1Value = ulRegTest1Cycles;
|
||||
|
||||
|
||||
/* Check that the register test 2 task is still running. */
|
||||
if( ulLastRegTest2Value == ulRegTest2Cycles )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 2UL );
|
||||
}
|
||||
ulLastRegTest2Value = ulRegTest2Cycles;
|
||||
|
||||
/* Have any of the standard demo tasks detected an error in their
|
||||
operation? */
|
||||
if( xAreGenericQueueTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 3UL );
|
||||
}
|
||||
else if( xAreQueuePeekTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 4UL );
|
||||
}
|
||||
else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 5UL );
|
||||
}
|
||||
else if( xAreSemaphoreTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 6UL );
|
||||
}
|
||||
else if( xAreIntQueueTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 7UL );
|
||||
}
|
||||
else if( xAreCountingSemaphoreTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 8UL );
|
||||
}
|
||||
else if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 9UL );
|
||||
}
|
||||
else if( xIsQueueOverwriteTaskStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 10UL );
|
||||
}
|
||||
else if( xAreQueueSetTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 11UL );
|
||||
}
|
||||
else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 12UL );
|
||||
}
|
||||
else if( xAreEventGroupTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 13UL );
|
||||
}
|
||||
else if( xAreMathsTaskStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 15UL );
|
||||
}
|
||||
|
||||
/* Ensure the expected number of high frequency interrupts have occurred. */
|
||||
if( ulLastHighFrequencyTimerInterrupts != 0 )
|
||||
{
|
||||
if( ( ulHighFrequencyTimerInterrupts - ulLastHighFrequencyTimerInterrupts ) < ulExpectedHighFrequencyInterrupts )
|
||||
{
|
||||
ulErrorOccurred |= ( 0x01UL << 14UL );
|
||||
}
|
||||
}
|
||||
ulLastHighFrequencyTimerInterrupts = ulHighFrequencyTimerInterrupts;
|
||||
|
||||
if( ulErrorOccurred != pdFALSE )
|
||||
{
|
||||
/* An error occurred. Increase the frequency at which the check timer
|
||||
toggles its LED to give visual feedback of the potential error
|
||||
condition. */
|
||||
if( lChangedTimerPeriodAlready == pdFALSE )
|
||||
{
|
||||
lChangedTimerPeriodAlready = pdTRUE;
|
||||
|
||||
/* This call to xTimerChangePeriod() uses a zero block time.
|
||||
Functions called from inside of a timer callback function must
|
||||
*never* attempt to block as to do so could impact other software
|
||||
timers. */
|
||||
xTimerChangePeriod( xTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK );
|
||||
}
|
||||
}
|
||||
|
||||
vParTestToggleLED( mainCHECK_LED );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvSetupHighFrequencyTimerTest( TimerHandle_t xTimer )
|
||||
{
|
||||
void vSetupTimerTest( unsigned short usFrequencyHz );
|
||||
|
||||
/* Avoid compiler warnings. */
|
||||
( void ) xTimer;
|
||||
|
||||
/* Setup the high frequency, high priority, timer test. It is setup in this
|
||||
software timer callback to ensure it does not start before the kernel does.
|
||||
This is a one-shot timer - so the setup routine will only be executed once. */
|
||||
vSetupTimerTest( mainTEST_INTERRUPT_FREQUENCY );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
98
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/timertest.c
Normal file
98
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/timertest.c
Normal file
@ -0,0 +1,98 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/* High speed timer test as described in main.c. */
|
||||
|
||||
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
|
||||
/* The maximum value the 16bit timer can contain. */
|
||||
#define timerMAX_COUNT 0xffff
|
||||
|
||||
/* The timer 2 interrupt handler. As this interrupt uses the FreeRTOS assembly
|
||||
entry point the IPL setting in the following function prototype has no effect.
|
||||
The interrupt priority is set by ConfigIntTimer2() in vSetupTimerTest(). */
|
||||
void __attribute__( (interrupt(IPL0AUTO), vector(_TIMER_2_VECTOR))) vT2InterruptWrapper( void );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Incremented every 20,000 interrupts, so should count in seconds. */
|
||||
unsigned long ulHighFrequencyTimerInterrupts = 0;
|
||||
|
||||
/* The frequency at which the timer is interrupting. */
|
||||
static unsigned long ulFrequencyHz;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vSetupTimerTest( unsigned short usFrequencyHz )
|
||||
{
|
||||
/* Remember the frequency so it can be used from the ISR. */
|
||||
ulFrequencyHz = ( unsigned long ) usFrequencyHz;
|
||||
|
||||
/* T2 is used to generate interrupts above the kernel and max syscall
|
||||
interrupt priority. */
|
||||
T2CON = 0;
|
||||
TMR2 = 0;
|
||||
|
||||
/* Timer 2 is going to interrupt at usFrequencyHz Hz. */
|
||||
PR2 = ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / ( unsigned long ) usFrequencyHz ) - 1 );
|
||||
|
||||
/* Setup timer 2 interrupt priority to be above the kernel priority so
|
||||
the timer jitter is not effected by the kernel activity. */
|
||||
IPC2bits.T2IP = ( configMAX_SYSCALL_INTERRUPT_PRIORITY + 1 );
|
||||
|
||||
/* Clear the interrupt as a starting condition. */
|
||||
IFS0bits.T2IF = 0;
|
||||
|
||||
/* Enable the interrupt. */
|
||||
IEC0bits.T2IE = 1;
|
||||
|
||||
/* Start the timer. */
|
||||
T2CONbits.TON = 1;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vT2InterruptHandler( void )
|
||||
{
|
||||
static unsigned long ulMaxNestingDepth = 0;
|
||||
|
||||
/* Keep a count of interrupts so the check timer can ensure they are
|
||||
occurring at the expected rate. */
|
||||
ulHighFrequencyTimerInterrupts++;
|
||||
|
||||
/* Establish the maximum nesting count reached to ensure the test is doing
|
||||
what it is supposed to. */
|
||||
if( uxInterruptNesting > ulMaxNestingDepth )
|
||||
{
|
||||
ulMaxNestingDepth = uxInterruptNesting;
|
||||
}
|
||||
|
||||
/* Clear the timer interrupt. */
|
||||
IFS0CLR = _IFS0_T2IF_MASK;
|
||||
}
|
||||
|
||||
|
||||
36
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/timertest.h
Normal file
36
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/timertest.h
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef TIMER_TEST_H
|
||||
#define TIMER_TEST_H
|
||||
|
||||
/* Setup the high frequency timer interrupt. */
|
||||
void vSetupTimerTest( unsigned short usFrequencyHz );
|
||||
|
||||
#endif /* TIMER_TEST_H */
|
||||
|
||||
|
||||
|
||||
50
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/timertest_isr.S
Normal file
50
kernel/FreeRTOS/Demo/PIC32MZ_MPLAB/timertest_isr.S
Normal file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* FreeRTOS V202212.01
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#include <xc.h>
|
||||
#include <sys/asm.h>
|
||||
#include "ISR_Support.h"
|
||||
|
||||
.set nomips16
|
||||
.set noreorder
|
||||
|
||||
.extern vT2InterruptHandler
|
||||
.extern xISRStackTop
|
||||
.global vT2InterruptWrapper
|
||||
|
||||
.set noreorder
|
||||
.set noat
|
||||
.ent vT2InterruptWrapper
|
||||
|
||||
vT2InterruptWrapper:
|
||||
|
||||
portSAVE_CONTEXT
|
||||
jal vT2InterruptHandler
|
||||
nop
|
||||
portRESTORE_CONTEXT
|
||||
|
||||
.end vT2InterruptWrapper
|
||||
|
||||
Reference in New Issue
Block a user