Update to V5.0.2

pull/4/head
Richard Barry 17 years ago
parent 48eff41955
commit 1e83961601

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
@ -66,8 +66,8 @@
#define configUSE_IDLE_HOOK 0 #define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0 #define configUSE_TICK_HOOK 0
#define configTICK_RATE_HZ ( ( portTickType ) 1000 ) #define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 72000000UL ) #define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 80000000UL )
#define configPERIPHERAL_CLOCK_HZ ( ( unsigned portLONG ) 36000000UL ) #define configPERIPHERAL_CLOCK_HZ ( ( unsigned portLONG ) 40000000UL )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 ) #define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( 200 ) #define configMINIMAL_STACK_SIZE ( 200 )
#define configISR_STACK_SIZE ( 400 ) #define configISR_STACK_SIZE ( 400 )
@ -81,7 +81,7 @@
#define configQUEUE_REGISTRY_SIZE 0 #define configQUEUE_REGISTRY_SIZE 0
/* Co-routine definitions. */ /* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0 #define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) #define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero /* Set the following definitions to 1 to include the API function, or zero

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -93,7 +93,7 @@ suite_guid={14495C23-81F8-43F3-8A44-859C583D7760}
suite_state= suite_state=
[TOOL_SETTINGS] [TOOL_SETTINGS]
TS{CB0AF4B8-4022-429D-8F99-8A56782B2C6D}=--keep-locals --gdwarf-2 TS{CB0AF4B8-4022-429D-8F99-8A56782B2C6D}=--keep-locals --gdwarf-2
TS{9C698E0A-CBC9-4EFF-AE7D-B569F93E7322}=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer TS{9C698E0A-CBC9-4EFF-AE7D-B569F93E7322}=-g -DMPLAB_PIC32MX_PORT -Wall -fomit-frame-pointer
TS{77F59DA1-3C53-4677-AC5F-A03EB0125170}=--defsym=_min_heap_size=0 --defsym=_min_heap_size=0 -Map="$(BINDIR_)$(TARGETBASE).map" -o"$(BINDIR_)$(TARGETBASE).$(TARGETSUFFIX)" -O3 TS{77F59DA1-3C53-4677-AC5F-A03EB0125170}=--defsym=_min_heap_size=0 --defsym=_min_heap_size=0 -Map="$(BINDIR_)$(TARGETBASE).map" -o"$(BINDIR_)$(TARGETBASE).$(TARGETSUFFIX)" -O3
TS{0396C0A1-9052-4E4F-8B84-EF0162B1B4E9}= TS{0396C0A1-9052-4E4F-8B84-EF0162B1B4E9}=
[INSTRUMENTED_TRACE] [INSTRUMENTED_TRACE]

@ -1,318 +1,6 @@
[Header] [Header]
MagicCookie={0b13fe8c-dfe0-40eb-8900-6712719559a7} MagicCookie={0b13fe8c-dfe0-40eb-8900-6712719559a7}
Version=1.0 Version=1.0
[File000]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\main.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File001]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\ParTest.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File002]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\port.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File003]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\list.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File004]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\queue.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File005]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\tasks.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File006]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\port_asm.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={92E15EC6-5E91-4BF4-B5FA-C80AD2601AA7}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-as.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=--keep-locals --gdwarf-2
TraceCmdString=
[File007]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\RegisterTestTasks.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={92E15EC6-5E91-4BF4-B5FA-C80AD2601AA7}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-as.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=--keep-locals --gdwarf-2
TraceCmdString=
[File008]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\heap_2.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File009]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\flash.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File010]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\QPeek.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File011]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\semtest.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File012]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\GenQTest.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File013]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\blocktim.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File014]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\lcd.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File015]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\serial.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File016]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\comtest.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File017]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\serial_isr.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={92E15EC6-5E91-4BF4-B5FA-C80AD2601AA7}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-as.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=--keep-locals --gdwarf-2
TraceCmdString=
[File018]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\timertest.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File019]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\timertest_isr.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={92E15EC6-5E91-4BF4-B5FA-C80AD2601AA7}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-as.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=--keep-locals --gdwarf-2
TraceCmdString=
[File020]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\IntQueue.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File021]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\IntQueueTimer.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File022]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\IntQueueTimer_isr.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={92E15EC6-5E91-4BF4-B5FA-C80AD2601AA7}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-as.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=--keep-locals --gdwarf-2
TraceCmdString=
[File023]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\printf-stdarg.o
Folder=Intermediary
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={430F471F-7ECB-4852-A80D-DEF9A5C8E751}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=-g -DMPLAB_PIC32MX_PORT -Wall -O3 -fomit-frame-pointer
TraceCmdString=
[File024]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\RTOSDemo.elf
Folder=Output
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={C68E5105-1196-4333-A0BF-3DC57271E614}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-ld.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=--defsym=_min_heap_size=0 --defsym=_min_heap_size=0 -Map="$(BINDIR_)$(TARGETBASE).map" -o"$(BINDIR_)$(TARGETBASE).$(TARGETSUFFIX)" -O3
TraceCmdString=
[File025]
Location=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PIC32MX_MPLAB\RTOSDemo.hex
Folder=Output
DeviceName=PIC32MX360F512L
LanguageToolSuiteID={14495C23-81F8-43F3-8A44-859C583D7760}
LanguageToolID={C68E5105-1196-4333-A0BF-3DC57271E614}
LanguageToolLocation=C:\Devtools\Microchip\MPLAB C32\bin\pic32-ld.exe
PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)|..\..\Source\portable\MPLAB\PIC32MX;.||$(INCDIR)|.;.;..\common\include;..\..\source\portable\mplab\pic32mx;..\..\source\include||$(LIBDIR)||$(LKRDIR)||
SOLK=<src>|main.c|ParTest\ParTest.c|..\..\Source\portable\MPLAB\PIC32MX\port.c|..\..\Source\list.c|..\..\Source\queue.c|..\..\Source\tasks.c|..\..\Source\portable\MPLAB\PIC32MX\port_asm.S|RegisterTestTasks.s|..\..\Source\portable\MemMang\heap_2.c|..\Common\Minimal\flash.c|..\Common\Minimal\QPeek.c|..\Common\Minimal\semtest.c|..\Common\Minimal\GenQTest.c|..\Common\Minimal\blocktim.c|lcd.c|serial\serial.c|..\Common\Minimal\comtest.c|serial\serial_isr.S|timertest.c|timertest_isr.S|C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\Common\Minimal\IntQueue.c|IntQueueTimer.c|IntQueueTimer_isr.S|printf-stdarg.c||<obj>||<lib>||<lkr>||
SuiteArgsString=
ToolArgsString=--defsym=_min_heap_size=0 --defsym=_min_heap_size=0 -Map="$(BINDIR_)$(TARGETBASE).map" -o"$(BINDIR_)$(TARGETBASE).$(TARGETSUFFIX)" -O3
TraceCmdString=
[TOOL_LOC_STAMPS] [TOOL_LOC_STAMPS]
tool_loc{92E15EC6-5E91-4BF4-B5FA-C80AD2601AA7}=C:\Devtools\Microchip\MPLAB C32\bin\pic32-as.exe tool_loc{92E15EC6-5E91-4BF4-B5FA-C80AD2601AA7}=C:\Devtools\Microchip\MPLAB C32\bin\pic32-as.exe
tool_loc{430F471F-7ECB-4852-A80D-DEF9A5C8E751}=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe tool_loc{430F471F-7ECB-4852-A80D-DEF9A5C8E751}=C:\Devtools\Microchip\MPLAB C32\bin\pic32-gcc.exe

Binary file not shown.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
@ -53,15 +53,6 @@
* In addition to the standard demo tasks, the following tasks and tests are * In addition to the standard demo tasks, the following tasks and tests are
* defined and/or created within this file: * defined and/or created within this file:
* *
* "Fast Interrupt Test" - A high frequency periodic interrupt is generated
* using a free running timer to demonstrate the use of the
* configKERNEL_INTERRUPT_PRIORITY configuration constant. The interrupt
* service routine measures the number of processor clocks that occur between
* each interrupt - and in so doing measures the jitter in the interrupt timing.
* The maximum measured jitter time is latched in the ulMaxJitter variable, and
* displayed on the LCD display by the 'LCD' task as described below. The
* fast interrupt is configured and handled in the timertest.c source file.
*
* "LCD" task - the LCD task is a 'gatekeeper' task. It is the only task that * "LCD" task - the LCD task is a 'gatekeeper' task. It is the only task that
* is permitted to access the display directly. Other tasks wishing to write a * is permitted to access the display directly. Other tasks wishing to write a
* message to the LCD send the message on a queue to the LCD task instead of * message to the LCD send the message on a queue to the LCD task instead of
@ -73,8 +64,9 @@
* check that all the standard demo tasks are still operational. Should any * check that all the standard demo tasks are still operational. Should any
* unexpected behaviour within a demo task be discovered the check task will * unexpected behaviour within a demo task be discovered the check task will
* write an error to the LCD (via the LCD task). If all the demo tasks are * write an error to the LCD (via the LCD task). If all the demo tasks are
* executing with their expected behaviour then the check task writes the * executing with their expected behaviour then the check task instead writes
* maximum jitter time to the LCD (as described above) - again via the LCD task. * a count of the number of times the high frequency interrupt has incremented
* ulHighFrequencyTimerInterrupts - which is one in every 20,000 interrupts.
* *
* "Register test" tasks - These tasks are used in part to test the kernel port. * "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 * They set each processor register to a known value, then check that the
@ -82,6 +74,26 @@
* to different values, and will get swapping in and out between setting and * to different values, and will get swapping in and out between setting and
* then subsequently checking the register values. Discovery of an incorrect * then subsequently checking the register values. Discovery of an incorrect
* value would be indicative of an error in the task switching mechanism. * value would be indicative of an error in the task switching mechanism.
*
* 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:
*
* + The UART is allocated a priority of 2. This means it can interrupt the
* RTOS tick, and can also safely use queues.
* + Two timers are configured to generate interrupts just to test the nesting
* and queue access mechanisms. These timers are allocated priorities 2 and 3
* respectively. Even though they both access the same two queues, the
* priority 3 interrupt can safely interrupt the priority 2 interrupt. Both
* can interrupt the RTOS tick.
* + Finally a high frequency timer interrupt is configured to use priority 4 -
* therefore kernel activity will never prevent the high frequency timer from
* executing immediately that the interrupt is raised (within the limitations
* of the hardware itself). It would not be safe to access a queue from this
* interrupt as it is above configMAX_SYSCALL_INTERRUPT_PRIORITY.
*
* See the online documentation for this demo for more information on interrupt
* usage.
*/ */
/* Standard includes. */ /* Standard includes. */
@ -104,7 +116,7 @@
#include "timertest.h" #include "timertest.h"
#include "IntQueue.h" #include "IntQueue.h"
#pragma config FPLLMUL = MUL_18, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF #pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF
#pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_2 #pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_2
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -138,8 +150,8 @@ See the comtest.c file for more information. */
/* Misc. */ /* Misc. */
#define mainDONT_WAIT ( 0 ) #define mainDONT_WAIT ( 0 )
/* Dimension the buffer used to hold the value of the maximum jitter time when /* Dimension the buffer used to hold the value of the high frequency timer
it is converted to a string. */ count when it is converted to a string. */
#define mainMAX_STRING_LENGTH ( 20 ) #define mainMAX_STRING_LENGTH ( 20 )
/* The frequency at which the "fast interrupt test" interrupt will occur. */ /* The frequency at which the "fast interrupt test" interrupt will occur. */
@ -262,7 +274,8 @@ extern void vRegTest2( unsigned long * );
static void prvSetupHardware( void ) static void prvSetupHardware( void )
{ {
/* Set the system and peripheral bus speeds and enable the program cache*/ /* Set the system and peripheral bus speeds and enable the program cache*/
SYSTEMConfigPerformance( configCPU_CLOCK_HZ ); SYSTEMConfigPerformance( configCPU_CLOCK_HZ - 1 );
mOSCSetPBDIV( OSC_PB_DIV_2 );
/* Setup to use the external interrupt controller. */ /* Setup to use the external interrupt controller. */
INTEnableSystemMultiVectoredInt(); INTEnableSystemMultiVectoredInt();
@ -279,11 +292,11 @@ static void prvCheckTask( void *pvParameters )
unsigned portLONG ulLastRegTest1Value = 0, ulLastRegTest2Value = 0, ulTicksToWait = mainNO_ERROR_PERIOD; unsigned portLONG ulLastRegTest1Value = 0, ulLastRegTest2Value = 0, ulTicksToWait = mainNO_ERROR_PERIOD;
portTickType xLastExecutionTime; portTickType xLastExecutionTime;
/* Buffer into which the maximum jitter time is written as a string. */ /* Buffer into which the high frequency timer count is written as a string. */
static portCHAR cStringBuffer[ mainMAX_STRING_LENGTH ]; static portCHAR cStringBuffer[ mainMAX_STRING_LENGTH ];
/* The maximum jitter time measured by the fast interrupt test. */ /* The count of the high frequency timer interrupts. */
extern unsigned portLONG ulMaxJitter ; extern unsigned portLONG ulHighFrequencyTimerInterrupts;
xLCDMessage xMessage = { ( 200 / portTICK_RATE_MS ), cStringBuffer }; xLCDMessage xMessage = { ( 200 / portTICK_RATE_MS ), cStringBuffer };
/* Setup the high frequency, high priority, timer test. It is setup here /* Setup the high frequency, high priority, timer test. It is setup here
@ -357,9 +370,9 @@ xLCDMessage xMessage = { ( 200 / portTICK_RATE_MS ), cStringBuffer };
xMessage.pcMessage = "Error: Int queue"; xMessage.pcMessage = "Error: Int queue";
} }
/* Write the max jitter time to the string buffer. It will only be /* Write the ulHighFrequencyTimerInterrupts value to the string
displayed if no errors have been detected. */ buffer. It will only be displayed if no errors have been detected. */
sprintf( cStringBuffer, "%dns max jitter", ( int ) ( ( ulMaxJitter - mainEXPECTED_CLOCKS_BETWEEN_INTERRUPTS ) * mainNS_PER_CLOCK ) ); sprintf( cStringBuffer, "Pass %u", ( unsigned int ) ulHighFrequencyTimerInterrupts );
xQueueSend( xLCDQueue, &xMessage, mainDONT_WAIT ); xQueueSend( xLCDQueue, &xMessage, mainDONT_WAIT );
vParTestToggleLED( mainCHECK_LED ); vParTestToggleLED( mainCHECK_LED );
@ -369,6 +382,7 @@ xLCDMessage xMessage = { ( 200 / portTICK_RATE_MS ), cStringBuffer };
void vApplicationStackOverflowHook( void ) void vApplicationStackOverflowHook( void )
{ {
/* Look at pxCurrentTCB to see which task overflowed its stack. */
for( ;; ); for( ;; );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
@ -53,12 +53,6 @@
/* Scheduler includes. */ /* Scheduler includes. */
#include "FreeRTOS.h" #include "FreeRTOS.h"
/* Demo includes. */
#include "partest.h"
/* The number of interrupts to pass before we start looking at the jitter. */
#define timerSETTLE_TIME 200
/* The maximum value the 16bit timer can contain. */ /* The maximum value the 16bit timer can contain. */
#define timerMAX_COUNT 0xffff #define timerMAX_COUNT 0xffff
@ -67,21 +61,26 @@ void __attribute__( (interrupt(ipl0), vector(_TIMER_2_VECTOR))) vT2InterruptWrap
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* The maximum time (in processor clocks) between two consecutive timer /* Incremented every 20,000 interrupts, so should count in seconds. */
interrupts so far. */ unsigned portLONG ulHighFrequencyTimerInterrupts = 0;
unsigned portLONG ulMaxJitter = 0;
/* The frequency at which the timer is interrupting. */
static unsigned portLONG ulFrequencyHz;
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
void vSetupTimerTest( unsigned portSHORT usFrequencyHz ) void vSetupTimerTest( unsigned portSHORT usFrequencyHz )
{ {
/* T2 is used to generate interrupts. The core timer is used to provide an /* Remember the frequency so it can be used from the ISR. */
accurate time measurement. */ ulFrequencyHz = ( unsigned portLONG ) usFrequencyHz;
/* T2 is used to generate interrupts above the kernel and max syscall interrupt
priority. */
T2CON = 0; T2CON = 0;
TMR2 = 0; TMR2 = 0;
/* Timer 2 is going to interrupt at usFrequencyHz Hz. */ /* Timer 2 is going to interrupt at usFrequencyHz Hz. */
PR2 = ( unsigned portSHORT ) ( configPERIPHERAL_CLOCK_HZ / ( unsigned portLONG ) usFrequencyHz ); PR2 = ( unsigned portSHORT ) ( ( configPERIPHERAL_CLOCK_HZ / ( unsigned portLONG ) usFrequencyHz ) - 1 );
/* Setup timer 2 interrupt priority to be above the kernel priority so /* Setup timer 2 interrupt priority to be above the kernel priority so
the timer jitter is not effected by the kernel activity. */ the timer jitter is not effected by the kernel activity. */
@ -100,38 +99,18 @@ void vSetupTimerTest( unsigned portSHORT usFrequencyHz )
void vT2InterruptHandler( void ) void vT2InterruptHandler( void )
{ {
static unsigned portLONG ulLastCount = 0, ulSettleCount = 0; static unsigned portLONG ulCalls = 0;
static unsigned portLONG ulThisCount, ulDifference;
/* Capture the timer value as we enter the interrupt. */ ++ulCalls;
ulThisCount = _CP0_GET_COUNT(); if( ulCalls >= ulFrequencyHz )
if( ulSettleCount >= timerSETTLE_TIME )
{
/* What is the difference between the timer value in this interrupt
and the value from the last interrupt. */
ulDifference = ulThisCount - ulLastCount;
/* Store the difference in the timer values if it is larger than the
currently stored largest value. The difference over and above the
expected difference will give the 'jitter' in the processing of these
interrupts. */
if( ulDifference > ulMaxJitter )
{
ulMaxJitter = ulDifference;
}
}
else
{ {
/* Don't bother storing any values for the first couple of /* Increment the count that will be shown on the LCD.
interrupts. */ The increment occurs once every 20,000 interrupts so
ulSettleCount++; ulHighFrequencyTimerInterrupts should count in seconds. */
ulHighFrequencyTimerInterrupts++;
ulCalls = 0;
} }
/* Remember what the timer value was this time through, so we can calculate
the difference the next time through. */
ulLastCount = ulThisCount;
/* Clear the timer interrupt. */ /* Clear the timer interrupt. */
IFS0bits.T2IF = 0; IFS0bits.T2IF = 0;
} }

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,3 +1,52 @@
/*
FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
***************************************************************************
* *
* SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
* and even write all or part of your application on your behalf. *
* See http://www.OpenRTOS.com for details of the services we provide to *
* expedite your project. *
* *
***************************************************************************
***************************************************************************
Please ensure to read the configuration and relevant port sections of the
online documentation.
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
#include <p32xxxx.h> #include <p32xxxx.h>
#include <sys/asm.h> #include <sys/asm.h>
#include "ISR_Support.h" #include "ISR_Support.h"

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

File diff suppressed because it is too large Load Diff

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,233 +1,233 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. (at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful, FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception of http://www.FreeRTOS.org for full details of how and when the exception
can be applied. can be applied.
*************************************************************************** ***************************************************************************
*************************************************************************** ***************************************************************************
* * * *
* SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, * * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
* and even write all or part of your application on your behalf. * * and even write all or part of your application on your behalf. *
* See http://www.OpenRTOS.com for details of the services we provide to * * See http://www.OpenRTOS.com for details of the services we provide to *
* expedite your project. * * expedite your project. *
* * * *
*************************************************************************** ***************************************************************************
*************************************************************************** ***************************************************************************
Please ensure to read the configuration and relevant port sections of the Please ensure to read the configuration and relevant port sections of the
online documentation. online documentation.
http://www.FreeRTOS.org - Documentation, latest information, license and http://www.FreeRTOS.org - Documentation, latest information, license and
contact details. contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems. critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting, http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services. licensing and training services.
*/ */
/* /*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART
*/ */
/* Scheduler includes. */ /* Scheduler includes. */
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "queue.h" #include "queue.h"
#include "task.h" #include "task.h"
/* Demo application includes. */ /* Demo application includes. */
#include "serial.h" #include "serial.h"
/* Library includes. */ /* Library includes. */
#include "xparameters.h" #include "xparameters.h"
#include "xuartlite.h" #include "xuartlite.h"
#include "xuartlite_l.h" #include "xuartlite_l.h"
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* Queues used to hold received characters, and characters waiting to be /* Queues used to hold received characters, and characters waiting to be
transmitted. */ transmitted. */
static xQueueHandle xRxedChars; static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx; static xQueueHandle xCharsForTx;
/* Structure that maintains information on the UART being used. */ /* Structure that maintains information on the UART being used. */
static XUartLite xUART; static XUartLite xUART;
/* /*
* Sample UART interrupt handler. Note this is used to demonstrate the kernel * Sample UART interrupt handler. Note this is used to demonstrate the kernel
* features and test the port - it is not intended to represent an efficient * features and test the port - it is not intended to represent an efficient
* implementation. * implementation.
*/ */
static void vSerialISR( XUartLite *pxUART ); static void vSerialISR( XUartLite *pxUART );
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength ) xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{ {
/* NOTE: The baud rate used by this driver is determined by the hardware /* NOTE: The baud rate used by this driver is determined by the hardware
parameterization of the UART Lite peripheral, and the baud value passed to parameterization of the UART Lite peripheral, and the baud value passed to
this function has no effect. */ this function has no effect. */
( void ) ulWantedBaud; ( void ) ulWantedBaud;
/* Create the queues used to hold Rx and Tx characters. */ /* Create the queues used to hold Rx and Tx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) ); xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) ); xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
/* Only initialise the UART if the queues were created correctly. */ /* Only initialise the UART if the queues were created correctly. */
if( ( xRxedChars != NULL ) && ( xCharsForTx != NULL ) ) if( ( xRxedChars != NULL ) && ( xCharsForTx != NULL ) )
{ {
XUartLite_Initialize( &xUART, XPAR_RS232_UART_DEVICE_ID ); XUartLite_Initialize( &xUART, XPAR_RS232_UART_DEVICE_ID );
XUartLite_ResetFifos( &xUART ); XUartLite_ResetFifos( &xUART );
XUartLite_DisableInterrupt( &xUART ); XUartLite_DisableInterrupt( &xUART );
if( xPortInstallInterruptHandler( XPAR_XPS_INTC_0_RS232_UART_INTERRUPT_INTR, ( XInterruptHandler )vSerialISR, (void *)&xUART ) == pdPASS ) if( xPortInstallInterruptHandler( XPAR_XPS_INTC_0_RS232_UART_INTERRUPT_INTR, ( XInterruptHandler )vSerialISR, (void *)&xUART ) == pdPASS )
{ {
/* xPortInstallInterruptHandler() could fail if /* xPortInstallInterruptHandler() could fail if
vPortSetupInterruptController() has not been called prior to this vPortSetupInterruptController() has not been called prior to this
function. */ function. */
XUartLite_EnableInterrupt( &xUART ); XUartLite_EnableInterrupt( &xUART );
} }
} }
/* There is only one port so the handle is not used. */ /* There is only one port so the handle is not used. */
return ( xComPortHandle ) 0; return ( xComPortHandle ) 0;
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime ) signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
{ {
/* The port handle is not required as this driver only supports one UART. */ /* The port handle is not required as this driver only supports one UART. */
( void ) pxPort; ( void ) pxPort;
/* Get the next character from the buffer. Return false if no characters /* Get the next character from the buffer. Return false if no characters
are available, or arrive before xBlockTime expires. */ are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) ) if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{ {
return pdTRUE; return pdTRUE;
} }
else else
{ {
return pdFALSE; return pdFALSE;
} }
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime ) signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
{ {
portBASE_TYPE xReturn = pdTRUE; portBASE_TYPE xReturn = pdTRUE;
/* Just to remove compiler warning. */ /* Just to remove compiler warning. */
( void ) pxPort; ( void ) pxPort;
portENTER_CRITICAL(); portENTER_CRITICAL();
{ {
/* If the UART FIFO is full we can block posting the new data on the /* If the UART FIFO is full we can block posting the new data on the
Tx queue. */ Tx queue. */
if( XUartLite_mIsTransmitFull( XPAR_RS232_UART_BASEADDR ) ) if( XUartLite_mIsTransmitFull( XPAR_RS232_UART_BASEADDR ) )
{ {
if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS ) if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
{ {
xReturn = pdFAIL; xReturn = pdFAIL;
} }
} }
/* Otherwise, if there is data already in the queue we should add the /* Otherwise, if there is data already in the queue we should add the
new data to the back of the queue to ensure the sequencing is new data to the back of the queue to ensure the sequencing is
maintained. */ maintained. */
else if( uxQueueMessagesWaiting( xCharsForTx ) ) else if( uxQueueMessagesWaiting( xCharsForTx ) )
{ {
if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS ) if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
{ {
xReturn = pdFAIL; xReturn = pdFAIL;
} }
} }
/* If the UART FIFO is not full and there is no data already in the /* If the UART FIFO is not full and there is no data already in the
queue we can write directly to the FIFO without disrupting the queue we can write directly to the FIFO without disrupting the
sequence. */ sequence. */
else else
{ {
XIo_Out32( XPAR_RS232_UART_BASEADDR + XUL_TX_FIFO_OFFSET, cOutChar ); XIo_Out32( XPAR_RS232_UART_BASEADDR + XUL_TX_FIFO_OFFSET, cOutChar );
} }
} }
portEXIT_CRITICAL(); portEXIT_CRITICAL();
return xReturn; return xReturn;
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
void vSerialClose( xComPortHandle xPort ) void vSerialClose( xComPortHandle xPort )
{ {
/* Not supported as not required by the demo application. */ /* Not supported as not required by the demo application. */
( void ) xPort; ( void ) xPort;
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
static void vSerialISR( XUartLite *pxUART ) static void vSerialISR( XUartLite *pxUART )
{ {
unsigned portLONG ulISRStatus; unsigned portLONG ulISRStatus;
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE, lDidSomething; portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE, lDidSomething;
portCHAR cChar; portCHAR cChar;
/* Just to remove compiler warning. */ /* Just to remove compiler warning. */
( void ) pxUART; ( void ) pxUART;
do do
{ {
lDidSomething = pdFALSE; lDidSomething = pdFALSE;
ulISRStatus = XIo_In32( XPAR_RS232_UART_BASEADDR + XUL_STATUS_REG_OFFSET ); ulISRStatus = XIo_In32( XPAR_RS232_UART_BASEADDR + XUL_STATUS_REG_OFFSET );
if( ( ulISRStatus & XUL_SR_RX_FIFO_VALID_DATA ) != 0 ) if( ( ulISRStatus & XUL_SR_RX_FIFO_VALID_DATA ) != 0 )
{ {
/* A character is available - place it in the queue of received /* A character is available - place it in the queue of received
characters. This might wake a task that was blocked waiting for characters. This might wake a task that was blocked waiting for
data. */ data. */
cChar = ( portCHAR ) XIo_In32( XPAR_RS232_UART_BASEADDR + XUL_RX_FIFO_OFFSET ); cChar = ( portCHAR ) XIo_In32( XPAR_RS232_UART_BASEADDR + XUL_RX_FIFO_OFFSET );
xQueueSendFromISR( xRxedChars, &cChar, &xHigherPriorityTaskWoken ); xQueueSendFromISR( xRxedChars, &cChar, &xHigherPriorityTaskWoken );
lDidSomething = pdTRUE; lDidSomething = pdTRUE;
} }
if( ( ulISRStatus & XUL_SR_TX_FIFO_EMPTY ) != 0 ) if( ( ulISRStatus & XUL_SR_TX_FIFO_EMPTY ) != 0 )
{ {
/* There is space in the FIFO - if there are any characters queue for /* There is space in the FIFO - if there are any characters queue for
transmission they can be sent to the UART now. This might unblock a transmission they can be sent to the UART now. This might unblock a
task that was waiting for space to become available on the Tx queue. */ task that was waiting for space to become available on the Tx queue. */
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE ) if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )
{ {
XIo_Out32( XPAR_RS232_UART_BASEADDR + XUL_TX_FIFO_OFFSET, cChar ); XIo_Out32( XPAR_RS232_UART_BASEADDR + XUL_TX_FIFO_OFFSET, cChar );
lDidSomething = pdTRUE; lDidSomething = pdTRUE;
} }
} }
} while( lDidSomething == pdTRUE ); } while( lDidSomething == pdTRUE );
/* If we woke any tasks we may require a context switch. */ /* If we woke any tasks we may require a context switch. */
if( xHigherPriorityTaskWoken ) if( xHigherPriorityTaskWoken )
{ {
portYIELD_FROM_ISR(); portYIELD_FROM_ISR();
} }
} }

@ -61,7 +61,7 @@ Header: RTOSDemo/FreeRTOSConfig.h
DefaultInit: EXECUTABLE DefaultInit: EXECUTABLE
InitBram: 0 InitBram: 0
Active: 1 Active: 1
CompilerOptLevel: 2 CompilerOptLevel: 0
GlobPtrOpt: 0 GlobPtrOpt: 0
DebugSym: 1 DebugSym: 1
ProfileFlag: 0 ProfileFlag: 0

@ -1,110 +1,110 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. (at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful, FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception of http://www.FreeRTOS.org for full details of how and when the exception
can be applied. can be applied.
*************************************************************************** ***************************************************************************
*************************************************************************** ***************************************************************************
* * * *
* SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, * * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
* and even write all or part of your application on your behalf. * * and even write all or part of your application on your behalf. *
* See http://www.OpenRTOS.com for details of the services we provide to * * See http://www.OpenRTOS.com for details of the services we provide to *
* expedite your project. * * expedite your project. *
* * * *
*************************************************************************** ***************************************************************************
*************************************************************************** ***************************************************************************
Please ensure to read the configuration and relevant port sections of the Please ensure to read the configuration and relevant port sections of the
online documentation. online documentation.
http://www.FreeRTOS.org - Documentation, latest information, license and http://www.FreeRTOS.org - Documentation, latest information, license and
contact details. contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems. critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting, http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services. licensing and training services.
*/ */
#ifndef FREERTOS_CONFIG_H #ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H
/*----------------------------------------------------------- /*-----------------------------------------------------------
* Application specific definitions. * Application specific definitions.
* *
* These definitions should be adjusted for your particular hardware and * These definitions should be adjusted for your particular hardware and
* application requirements. * application requirements.
* *
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/ *----------------------------------------------------------*/
#define configUSE_PREEMPTION 1 #define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0 #define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0 #define configUSE_TICK_HOOK 0
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 250 ) #define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 250 )
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 200000000 ) /* Clock setup from start.asm in the demo application. */ #define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 200000000 ) /* Clock setup from start.asm in the demo application. */
#define configTICK_RATE_HZ ( (portTickType) 1000 ) #define configTICK_RATE_HZ ( (portTickType) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 6 ) #define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 6 )
#define configTOTAL_HEAP_SIZE ( (size_t) (80 * 1024) ) #define configTOTAL_HEAP_SIZE ( (size_t) (80 * 1024) )
#define configMAX_TASK_NAME_LEN ( 20 ) #define configMAX_TASK_NAME_LEN ( 20 )
#define configUSE_16_BIT_TICKS 1 #define configUSE_16_BIT_TICKS 1
#define configIDLE_SHOULD_YIELD 1 #define configIDLE_SHOULD_YIELD 1
#define configUSE_MUTEXES 1 #define configUSE_MUTEXES 1
#define configUSE_TRACE_FACILITY 0 #define configUSE_TRACE_FACILITY 0
#define configCHECK_FOR_STACK_OVERFLOW 2 #define configCHECK_FOR_STACK_OVERFLOW 2
#define configUSE_COUNTING_SEMAPHORES 1 #define configUSE_COUNTING_SEMAPHORES 1
#define configUSE_APPLICATION_TASK_TAG 1 #define configUSE_APPLICATION_TASK_TAG 1
#define configUSE_FPU 0 #define configUSE_FPU 0
/* Co-routine definitions. */ /* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0 #define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 4 ) #define configMAX_CO_ROUTINE_PRIORITIES ( 4 )
/* Set the following definitions to 1 to include the API function, or zero /* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */ to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1 #define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1 #define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1 #define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 1 #define INCLUDE_vTaskCleanUpResources 1
#define INCLUDE_vTaskSuspend 1 #define INCLUDE_vTaskSuspend 1
#define INCLUDE_vResumeFromISR 1 #define INCLUDE_vResumeFromISR 1
#define INCLUDE_vTaskDelayUntil 1 #define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1 #define INCLUDE_vTaskDelay 1
#define INCLUDE_xTaskGetSchedulerState 1 #define INCLUDE_xTaskGetSchedulerState 1
#define INCLUDE_xTaskGetCurrentTaskHandle 1 #define INCLUDE_xTaskGetCurrentTaskHandle 1
#define INCLUDE_uxTaskGetStackHighWaterMark 1 #define INCLUDE_uxTaskGetStackHighWaterMark 1
#define configUSE_RECURSIVE_MUTEXES 1 #define configUSE_RECURSIVE_MUTEXES 1
#if configUSE_FPU == 1 #if configUSE_FPU == 1
/* Include the header that define the traceTASK_SWITCHED_IN() and /* Include the header that define the traceTASK_SWITCHED_IN() and
traceTASK_SWITCHED_OUT() macros to save and restore the floating traceTASK_SWITCHED_OUT() macros to save and restore the floating
point registers for tasks that have requested this behaviour. */ point registers for tasks that have requested this behaviour. */
#include "FPU_Macros.h" #include "FPU_Macros.h"
#endif #endif
#endif /* FREERTOS_CONFIG_H */ #endif /* FREERTOS_CONFIG_H */

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

File diff suppressed because it is too large Load Diff

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,233 +1,233 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. (at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful, FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception of http://www.FreeRTOS.org for full details of how and when the exception
can be applied. can be applied.
*************************************************************************** ***************************************************************************
*************************************************************************** ***************************************************************************
* * * *
* SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, * * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
* and even write all or part of your application on your behalf. * * and even write all or part of your application on your behalf. *
* See http://www.OpenRTOS.com for details of the services we provide to * * See http://www.OpenRTOS.com for details of the services we provide to *
* expedite your project. * * expedite your project. *
* * * *
*************************************************************************** ***************************************************************************
*************************************************************************** ***************************************************************************
Please ensure to read the configuration and relevant port sections of the Please ensure to read the configuration and relevant port sections of the
online documentation. online documentation.
http://www.FreeRTOS.org - Documentation, latest information, license and http://www.FreeRTOS.org - Documentation, latest information, license and
contact details. contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems. critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting, http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services. licensing and training services.
*/ */
/* /*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART
*/ */
/* Scheduler includes. */ /* Scheduler includes. */
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "queue.h" #include "queue.h"
#include "task.h" #include "task.h"
/* Demo application includes. */ /* Demo application includes. */
#include "serial.h" #include "serial.h"
/* Library includes. */ /* Library includes. */
#include "xparameters.h" #include "xparameters.h"
#include "xuartlite.h" #include "xuartlite.h"
#include "xuartlite_l.h" #include "xuartlite_l.h"
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* Queues used to hold received characters, and characters waiting to be /* Queues used to hold received characters, and characters waiting to be
transmitted. */ transmitted. */
static xQueueHandle xRxedChars; static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx; static xQueueHandle xCharsForTx;
/* Structure that maintains information on the UART being used. */ /* Structure that maintains information on the UART being used. */
static XUartLite xUART; static XUartLite xUART;
/* /*
* Sample UART interrupt handler. Note this is used to demonstrate the kernel * Sample UART interrupt handler. Note this is used to demonstrate the kernel
* features and test the port - it is not intended to represent an efficient * features and test the port - it is not intended to represent an efficient
* implementation. * implementation.
*/ */
static void vSerialISR( XUartLite *pxUART ); static void vSerialISR( XUartLite *pxUART );
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength ) xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{ {
/* NOTE: The baud rate used by this driver is determined by the hardware /* NOTE: The baud rate used by this driver is determined by the hardware
parameterization of the UART Lite peripheral, and the baud value passed to parameterization of the UART Lite peripheral, and the baud value passed to
this function has no effect. */ this function has no effect. */
( void ) ulWantedBaud; ( void ) ulWantedBaud;
/* Create the queues used to hold Rx and Tx characters. */ /* Create the queues used to hold Rx and Tx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) ); xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) ); xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
/* Only initialise the UART if the queues were created correctly. */ /* Only initialise the UART if the queues were created correctly. */
if( ( xRxedChars != NULL ) && ( xCharsForTx != NULL ) ) if( ( xRxedChars != NULL ) && ( xCharsForTx != NULL ) )
{ {
XUartLite_Initialize( &xUART, XPAR_RS232_UART_DEVICE_ID ); XUartLite_Initialize( &xUART, XPAR_RS232_UART_DEVICE_ID );
XUartLite_ResetFifos( &xUART ); XUartLite_ResetFifos( &xUART );
XUartLite_DisableInterrupt( &xUART ); XUartLite_DisableInterrupt( &xUART );
if( xPortInstallInterruptHandler( XPAR_XPS_INTC_0_RS232_UART_INTERRUPT_INTR, ( XInterruptHandler )vSerialISR, (void *)&xUART ) == pdPASS ) if( xPortInstallInterruptHandler( XPAR_XPS_INTC_0_RS232_UART_INTERRUPT_INTR, ( XInterruptHandler )vSerialISR, (void *)&xUART ) == pdPASS )
{ {
/* xPortInstallInterruptHandler() could fail if /* xPortInstallInterruptHandler() could fail if
vPortSetupInterruptController() has not been called prior to this vPortSetupInterruptController() has not been called prior to this
function. */ function. */
XUartLite_EnableInterrupt( &xUART ); XUartLite_EnableInterrupt( &xUART );
} }
} }
/* There is only one port so the handle is not used. */ /* There is only one port so the handle is not used. */
return ( xComPortHandle ) 0; return ( xComPortHandle ) 0;
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime ) signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
{ {
/* The port handle is not required as this driver only supports one UART. */ /* The port handle is not required as this driver only supports one UART. */
( void ) pxPort; ( void ) pxPort;
/* Get the next character from the buffer. Return false if no characters /* Get the next character from the buffer. Return false if no characters
are available, or arrive before xBlockTime expires. */ are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) ) if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{ {
return pdTRUE; return pdTRUE;
} }
else else
{ {
return pdFALSE; return pdFALSE;
} }
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime ) signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
{ {
portBASE_TYPE xReturn = pdTRUE; portBASE_TYPE xReturn = pdTRUE;
/* Just to remove compiler warning. */ /* Just to remove compiler warning. */
( void ) pxPort; ( void ) pxPort;
portENTER_CRITICAL(); portENTER_CRITICAL();
{ {
/* If the UART FIFO is full we can block posting the new data on the /* If the UART FIFO is full we can block posting the new data on the
Tx queue. */ Tx queue. */
if( XUartLite_mIsTransmitFull( XPAR_RS232_UART_BASEADDR ) ) if( XUartLite_mIsTransmitFull( XPAR_RS232_UART_BASEADDR ) )
{ {
if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS ) if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
{ {
xReturn = pdFAIL; xReturn = pdFAIL;
} }
} }
/* Otherwise, if there is data already in the queue we should add the /* Otherwise, if there is data already in the queue we should add the
new data to the back of the queue to ensure the sequencing is new data to the back of the queue to ensure the sequencing is
maintained. */ maintained. */
else if( uxQueueMessagesWaiting( xCharsForTx ) ) else if( uxQueueMessagesWaiting( xCharsForTx ) )
{ {
if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS ) if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
{ {
xReturn = pdFAIL; xReturn = pdFAIL;
} }
} }
/* If the UART FIFO is not full and there is no data already in the /* If the UART FIFO is not full and there is no data already in the
queue we can write directly to the FIFO without disrupting the queue we can write directly to the FIFO without disrupting the
sequence. */ sequence. */
else else
{ {
XIo_Out32( XPAR_RS232_UART_BASEADDR + XUL_TX_FIFO_OFFSET, cOutChar ); XIo_Out32( XPAR_RS232_UART_BASEADDR + XUL_TX_FIFO_OFFSET, cOutChar );
} }
} }
portEXIT_CRITICAL(); portEXIT_CRITICAL();
return xReturn; return xReturn;
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
void vSerialClose( xComPortHandle xPort ) void vSerialClose( xComPortHandle xPort )
{ {
/* Not supported as not required by the demo application. */ /* Not supported as not required by the demo application. */
( void ) xPort; ( void ) xPort;
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
static void vSerialISR( XUartLite *pxUART ) static void vSerialISR( XUartLite *pxUART )
{ {
unsigned portLONG ulISRStatus; unsigned portLONG ulISRStatus;
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE, lDidSomething; portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE, lDidSomething;
portCHAR cChar; portCHAR cChar;
/* Just to remove compiler warning. */ /* Just to remove compiler warning. */
( void ) pxUART; ( void ) pxUART;
do do
{ {
lDidSomething = pdFALSE; lDidSomething = pdFALSE;
ulISRStatus = XIo_In32( XPAR_RS232_UART_BASEADDR + XUL_STATUS_REG_OFFSET ); ulISRStatus = XIo_In32( XPAR_RS232_UART_BASEADDR + XUL_STATUS_REG_OFFSET );
if( ( ulISRStatus & XUL_SR_RX_FIFO_VALID_DATA ) != 0 ) if( ( ulISRStatus & XUL_SR_RX_FIFO_VALID_DATA ) != 0 )
{ {
/* A character is available - place it in the queue of received /* A character is available - place it in the queue of received
characters. This might wake a task that was blocked waiting for characters. This might wake a task that was blocked waiting for
data. */ data. */
cChar = ( portCHAR ) XIo_In32( XPAR_RS232_UART_BASEADDR + XUL_RX_FIFO_OFFSET ); cChar = ( portCHAR ) XIo_In32( XPAR_RS232_UART_BASEADDR + XUL_RX_FIFO_OFFSET );
xQueueSendFromISR( xRxedChars, &cChar, &xHigherPriorityTaskWoken ); xQueueSendFromISR( xRxedChars, &cChar, &xHigherPriorityTaskWoken );
lDidSomething = pdTRUE; lDidSomething = pdTRUE;
} }
if( ( ulISRStatus & XUL_SR_TX_FIFO_EMPTY ) != 0 ) if( ( ulISRStatus & XUL_SR_TX_FIFO_EMPTY ) != 0 )
{ {
/* There is space in the FIFO - if there are any characters queue for /* There is space in the FIFO - if there are any characters queue for
transmission they can be sent to the UART now. This might unblock a transmission they can be sent to the UART now. This might unblock a
task that was waiting for space to become available on the Tx queue. */ task that was waiting for space to become available on the Tx queue. */
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE ) if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )
{ {
XIo_Out32( XPAR_RS232_UART_BASEADDR + XUL_TX_FIFO_OFFSET, cChar ); XIo_Out32( XPAR_RS232_UART_BASEADDR + XUL_TX_FIFO_OFFSET, cChar );
lDidSomething = pdTRUE; lDidSomething = pdTRUE;
} }
} }
} while( lDidSomething == pdTRUE ); } while( lDidSomething == pdTRUE );
/* If we woke any tasks we may require a context switch. */ /* If we woke any tasks we may require a context switch. */
if( xHigherPriorityTaskWoken ) if( xHigherPriorityTaskWoken )
{ {
portYIELD_FROM_ISR(); portYIELD_FROM_ISR();
} }
} }

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,4 +1,4 @@
# FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. # FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
# #
# This file is part of the FreeRTOS.org distribution. # This file is part of the FreeRTOS.org distribution.
# #

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

@ -1,5 +1,5 @@
/* /*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution. This file is part of the FreeRTOS.org distribution.

Loading…
Cancel
Save