diff --git a/Demo/TriCore_TC1782_TriBoard_GCC/.cproject b/Demo/TriCore_TC1782_TriBoard_GCC/.cproject
index d1d2fe9b0..87e438c87 100644
--- a/Demo/TriCore_TC1782_TriBoard_GCC/.cproject
+++ b/Demo/TriCore_TC1782_TriBoard_GCC/.cproject
@@ -562,6 +562,10 @@
+
+
@@ -571,36 +575,9 @@
-
+
+
diff --git a/Demo/TriCore_TC1782_TriBoard_GCC/.ude/UDEDefEclipseWorkspace.wsx b/Demo/TriCore_TC1782_TriBoard_GCC/.ude/UDEDefEclipseWorkspace.wsx
index ccabbb39d..8f0f69fb4 100644
--- a/Demo/TriCore_TC1782_TriBoard_GCC/.ude/UDEDefEclipseWorkspace.wsx
+++ b/Demo/TriCore_TC1782_TriBoard_GCC/.ude/UDEDefEclipseWorkspace.wsx
@@ -1,6 +1,6 @@
- UDEDefEclipseWorkspace.wsx005vQTv/gAAAQAQAAIAoAgKAAAAAwAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAA==3.009.10.2011 23:28:09:000
+ UDEDefEclipseWorkspace.wsx0011vQTv/gAAAQAQAAIAoAgKAAAAAwAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAA==3.009.10.2011 23:28:09:000
@@ -43,14 +43,17 @@
-
-
-
+
+
+
+
+
+
@@ -65,9 +68,9 @@
-
+
-
+
@@ -76,39 +79,52 @@
-
-
+
+
+
+
+
+
+
+
-
+
-
+
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
@@ -120,70 +136,134 @@
-
+
-
+
-
+
-
+
+
-
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -195,8 +275,11 @@
+
+
+
-
+
@@ -241,6 +324,7 @@
+
@@ -260,18 +344,21 @@
-
-
+
+
+
+
+
@@ -321,14 +408,17 @@
-
-
-
+
+
+
+
+
+
@@ -343,9 +433,9 @@
-
+
-
+
@@ -354,39 +444,52 @@
-
-
+
+
+
+
+
+
+
+
-
+
-
+
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
@@ -396,160 +499,163 @@
-
-
-
+
+
+
+
+
+
- -
-
+
-
+
- -
-
+
-
+
- -
-
+
-
+
- -
-
+
-
+
- -
-
+
-
+
- -
-
+
-
+
- -
-
+
-
+
- -
-
+
-
+
- -
-
+
-
+
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
+
-
+
-
-
+
+
+ -
+
+
+ -
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
- -
-
+
-
+
- -
-
+
-
+
- -
-
+
-
+
- -
-
+
-
+
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
+
-
- -
-
+
-
+
- -
-
+
-
+
- -
-
+
-
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
@@ -567,12 +673,11 @@
-
009.10.2011 23:28:11:619nAAAAD8AAYAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1515524294967295100Samsung SCX-3200 Series..\..\..\..\Program Files (x86)\pls\UDE 3.0\StdLibrary.mso{7c641d47-534f-4ed9-9070-088b60a3befa}..\..\..\..\Users\Public\Documents\pls\UDE 3.0The script contains a collection of macros to save memory content into different file formats
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1515524294967295100Samsung SCX-3200 Series..\..\..\..\Program Files (x86)\pls\UDE 3.0\StdLibrary.mso{7c641d47-534f-4ed9-9070-088b60a3befa}..\..\..\..\Users\Public\Documents\pls\UDE 3.0The script contains a collection of macros to save memory content into different file formats
and fill target memory rangesV:\UDE\AddOns\Macro\MacroLibrary\StdMacros1.dsm'
' $Header: /Ude/AddOns/Macro/MacroLibrary/StdMacros.dsm 3 30.04.04 9:34 Weisses $
'_______________________________________________________
@@ -842,4 +947,4 @@ Sub FillDWord(ParameterObj)
debugger.Write Address,udearrayobj
Next
-End Sub63VBScript24.11.2006 14:43:20:0001WS_CORE_DUOMacro_17_10_11_12_00_09_010Execute UnAss ..Macro UnAssExecute macro UnAss0210Execute SaveHEX ..Macro SaveHEXExecute macro SaveHEX0210Execute FillByte ..Macro FillByteExecute macro FillByte0110Execute FillWord ..Macro FillWordExecute macro FillWord0110Execute FillDWord ..Macro FillDWordExecute macro FillDWord015011.10.2011 21:18:03:9450x000000001351684294967295009.10.2011 23:28:11:73713926442949672951009.10.2011 23:28:17:413..\RTOSDemo\main.c13516842949672955017.10.2011 11:43:03:982code <0x80006000-0x800063FF>1351684294967295117.10.2011 11:45:47:6021351684294967295..\RTOSDemo\FreeRTOS_Source\tasks.c17.10.2011 11:45:58:240..\RTOSDemo\FreeRTOS_Source\portable\GCC\TriCore_1782\port.c13516842949672952317.10.2011 11:48:11:741..\RTOSDemo\Common_Demo_Source\flash.c135168429496729540109.10.2011 23:54:28:219288019200135168429496729500000000109.10.2011 23:57:15:537<_ExtentX type="bin" size="8">AAAAAA==<_ExtentY type="bin" size="8">AAAAAA==<_StockProps type="bin" size="8">AAAAAA==AgAAAA==UABDAAAAUABDAAAAAAAAAA==YAAAAA==RgB1AG4AYwB0AGkAbwBuAAAARgB1AG4AYwB0AGkAbwBuAAAAAAAAAA==QAYAAA==13516842949672950010000x00x00000000x00x00000000010000x00x00000000x00x00000000010001120100000001429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672951..\iROM\FreeRTOS_Demo.elfSoftware;enabled;0;disabled;'vLEDFlashTask {C:\E\Dev\FreeRTOS\WorkingCopy\Demo\TriCore_TC1782_TriBoard_GCC\RTOSDemo\Common_Demo_Source\flash.c} .105';flash.c;1;0;;$disabled; ;disabled; ;101100000verify.txt0000005..\RTOSDemo\main.ccode <0x80006000-0x800063FF>..\RTOSDemo\FreeRTOS_Source\tasks.c..\RTOSDemo\FreeRTOS_Source\portable\GCC\TriCore_1782\port.c..\RTOSDemo\Common_Demo_Source\flash.c.target\TriBoard_TC1782.cfg17.10.2011 12:00:09:000
+End Sub63VBScript24.11.2006 14:43:20:0001WS_CORE_DUOMacro_24_10_11_12_23_52_010Execute UnAss ..Macro UnAssExecute macro UnAss0210Execute SaveHEX ..Macro SaveHEXExecute macro SaveHEX0210Execute FillByte ..Macro FillByteExecute macro FillByte0110Execute FillWord ..Macro FillWordExecute macro FillWord0110Execute FillDWord ..Macro FillDWordExecute macro FillDWord015118.10.2011 12:08:31:0830x000000001351684294967295009.10.2011 23:28:11:73713926442949672951009.10.2011 23:28:17:413..\RTOSDemo\main.c13516842949672956024.10.2011 10:48:48:675..\RTOSDemo\FreeRTOS_Source\tasks.c1351684294967295221.10.2011 11:09:25:6341351684294967295..\RTOSDemo\Common_Demo_Source\death.c21.10.2011 11:09:53:005..\RTOSDemo\FreeRTOS_Source\portable\GCC\TriCore_1782\porttrap.c13516842949672953524.10.2011 10:49:13:935..\RTOSDemo\FreeRTOS_Source\queue.c1351684294967295121.10.2011 11:11:16:7721351684294967295..\RTOSDemo\FreeRTOS_Source\portable\GCC\TriCore_1782\port.c21.10.2011 12:09:01:970..\RTOSDemo\Common_Demo_Source\integer.c1351684294967295460109.10.2011 23:54:28:21928801920013516842949672950121.10.2011 12:11:03:52508972066300330033ulRegisterTest1Count [C:\E\Dev\FreeRTOS\WorkingCopy\Demo\TriCore_TC1782_TriBoard_GCC\RTOSDemo\main.c] @1pxHeadCSA (global) @1#0$1,1$#0$1,1$pxTailCSA (global) @1#0$1,1$#0$1,1$pucTemp (global) @1#0,0$1,1$#0#0,0$1,1$ucTemp (global) @1#0$1,1$#0$1,1$pulNextCSA (global) @1#0,0$1,1$#0#0,0$1,1$pxTCBx (global) @11351684294967295024.10.2011 11:39:29:87501330033?(*((unsigned long *)0xD000AB80))#0$1,1$#0$1,1$753050300135168429496729500000024.10.2011 11:37:39:7580xD000AB80AAAAAA==AAAAAA==AgAAAA==AQAAAA==AAAAAA==AAAAAA==BAAAAA==EIXr0Q==130533988013072757681351684294967295109.10.2011 23:57:15:537<_ExtentX type="bin" size="8">1CUAAA==<_ExtentY type="bin" size="8">vhAAAA==<_StockProps type="bin" size="8">AAAAAA==AgAAAA==UABDAAAAUABDAAAAAAAAAA==YAAAAA==RgB1AG4AYwB0AGkAbwBuAAAARgB1AG4AYwB0AGkAbwBuAAAAAAAAAA==QAYAAA==13516842949672950OFF010000x00x00000000x00x00000000010000x00x00000000x00x00000000010001120100000001429496729542949672954294967295429496729542949672954294967295429496729542949672954294967295429496729542949672951..\iRAM\FreeRTOS_Demo.elfvCreateTasks01100000verify.txt0000009..\RTOSDemo\Common_Demo_Source\flash.c..\RTOSDemo\ThirdPartyCode\cpufreq.c..\RTOSDemo\Common_Demo_Source\integer.c..\RTOSDemo\main.c..\RTOSDemo\Common_Demo_Source\death.c..\RTOSDemo\FreeRTOS_Source\portable\GCC\TriCore_1782\porttrap.c..\RTOSDemo\FreeRTOS_Source\portable\GCC\TriCore_1782\port.c..\RTOSDemo\FreeRTOS_Source\tasks.c..\RTOSDemo\FreeRTOS_Source\queue.c.target\TriBoard_TC1782.cfg24.10.2011 12:23:52:000
diff --git a/Demo/TriCore_TC1782_TriBoard_GCC/RTOSDemo/FreeRTOSConfig.h b/Demo/TriCore_TC1782_TriBoard_GCC/RTOSDemo/FreeRTOSConfig.h
index 951f17635..c015f4a4a 100644
--- a/Demo/TriCore_TC1782_TriBoard_GCC/RTOSDemo/FreeRTOSConfig.h
+++ b/Demo/TriCore_TC1782_TriBoard_GCC/RTOSDemo/FreeRTOSConfig.h
@@ -113,7 +113,5 @@
#define BLOCKQ_1 0
-#define portCLEANUP_TCB( pxTCB ) vPortReclaimCSA( ( unsigned portBASE_TYPE *) ( pxTCB ) )
-
#endif /* FREERTOS_CONFIG_H */
diff --git a/Demo/TriCore_TC1782_TriBoard_GCC/RTOSDemo/main.c b/Demo/TriCore_TC1782_TriBoard_GCC/RTOSDemo/main.c
index 5881cb96b..7376e22d2 100644
--- a/Demo/TriCore_TC1782_TriBoard_GCC/RTOSDemo/main.c
+++ b/Demo/TriCore_TC1782_TriBoard_GCC/RTOSDemo/main.c
@@ -78,6 +78,7 @@
#include "GenQTest.h"
#include "recmutex.h"
#include "serial.h"
+#include "death.h"
/*-----------------------------------------------------------*/
/* Constants for the ComTest tasks. */
@@ -91,6 +92,7 @@
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
+#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
/* The rate at which the on board LED will toggle when there is/is not an
error. */
@@ -168,7 +170,9 @@ int main( void )
/* Start the check task - which is defined in this file. */
xTaskCreate( prvCheckTask, ( signed char * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
- /* _RB_ start the death tasks here too. */
+ /* This task has to be created last as it keeps account of the number of tasks
+ it expects to see running. */
+ vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );
/* Now all the tasks have been started - start the scheduler. */
vTaskStartScheduler();
@@ -280,6 +284,11 @@ long lReturn = pdPASS;
lReturn = pdFAIL;
}
+ if( xIsCreateTaskStillRunning() != pdTRUE )
+ {
+ lReturn = pdFAIL;
+ }
+
return lReturn;
}
/*-----------------------------------------------------------*/
@@ -459,7 +468,7 @@ static void prvRegTask1( void *pvParameters )
/* Load the parameter address from the stack and modify the value. */
__asm volatile( \
" ld.w %d1, [%sp]4 \n" \
- " add %d1, %d15, 1 \n" \
+ " add %d1, 1 \n" \
" st.w [%sp]4, %d1 \n" \
" ld.a %a15, [%sp] \n" \
" st.w [%a15], %d1 \n" \
@@ -504,11 +513,10 @@ static void prvRegTask2( void *pvParameters )
" mov.a %a12, 4 \n" \
" mov.a %a13, 3 \n" \
" mov.a %a14, 2 \n" );
- /* Yield to force a context switch. */
- taskYIELD();
/* Check the values of the registers. */
__asm volatile( " _task2_loop: \n" \
+ " syscall 0 \n" \
" eq %d1, %d0, 7 \n" \
" jne %d1, 1, _task2_error_loop \n" \
" eq %d1, %d1, 1 \n" \
@@ -561,6 +569,7 @@ static void prvRegTask2( void *pvParameters )
" jne.a %a15, %a14, _task2_error_loop \n" \
" j _task2_skip_error_loop \n" \
"_task2_error_loop: \n" /* Hitting this error loop will stop the counter incrementing, allowing the check task to recognise an error. */ \
+ " debug \n" \
" j _task2_error_loop \n" \
"_task2_skip_error_loop: \n" );