]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Made config_01 and config_02 build again. Added config_03
authormahi <devnull@localhost>
Mon, 28 Jun 2010 04:02:53 +0000 (06:02 +0200)
committermahi <devnull@localhost>
Mon, 28 Jun 2010 04:02:53 +0000 (06:02 +0200)
16 files changed:
boards/board_common.mk
system/kernel/testsystem/makefile
system/kernel/testsystem/os_test.h
system/kernel/testsystem/suite_01/makefile
system/kernel/testsystem/suite_02/config_02.arxml
system/kernel/testsystem/suite_02/makefile
system/kernel/testsystem/suite_03/Os_Cfg.c [new file with mode: 0644]
system/kernel/testsystem/suite_03/Os_Cfg.h [new file with mode: 0644]
system/kernel/testsystem/suite_03/build_config.mk [new file with mode: 0644]
system/kernel/testsystem/suite_03/config_03.arxml [new file with mode: 0644]
system/kernel/testsystem/suite_03/makefile [new file with mode: 0644]
system/kernel/testsystem/suite_03/test_master.c [new file with mode: 0644]
system/kernel/testsystem/test_02_resource.c
system/kernel/testsystem/test_framework.c
tools/t32/autosar.men
tools/t32/test.cmm

index 854dd6bc27bf0df825104cc21d557fe36c741004..e9b3f0a054224cada4300604a048e2705d8f30be 100644 (file)
@@ -167,8 +167,10 @@ obj-$(USE_COMMON) += arc.o
 obj-$(USE_RAMLOG) += ramlog.o\r
 \r
 # If we have configured console output we include printf. \r
-# Overridden to use lib implementation with CFG_USE_NEWLIB_PRINTF\r
-ifndef (CFG_USE_NEWLIB_PRINTF)\r
+# Overridden to use lib implementation with CFG_NEWLIB_PRINTF\r
+ifneq ($(CFG_NEWLIB_PRINTF),y)\r
+# TODO: This assumes that you print to console.. but you could\r
+#       just print to a buffer, e.g. sprintf() \r
 ifneq (,$(SELECT_CONSOLE) $(SELECT_OS_CONSOLE))\r
 obj-y += printf.o\r
 endif\r
index 238442f6298d9f96834d2788eca2d7f3590e2b69..37431f2e13d75f099bbf487acda7ae27fc4c8e23 100644 (file)
@@ -49,7 +49,9 @@ VPATH += $(ROOTDIR)/$(SUBDIR)/config
 #libitem-y +=\r
 \r
 #linkfile\r
-ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
+#ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
+ldcmdfile-y = linkscript_gcc.ldp\r
+vpath %.ldf $(ROOTDIR)/$(ARCH_PATH-y)/scripts\r
 #ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
 \r
 inc-y += ..\r
index d1c438a210b3cf2fb56c4331d46145e289c0b519..b093b5db17731b0f4420562345cc9d7d3f54b248 100644 (file)
@@ -37,6 +37,7 @@ typedef void (*test_func_t)( void );
 //#define TEST_DONE()
 #define TEST_START(_str,_nr)           testStart(_str,_nr)
 #define TEST_NEXT(_str,_next_nr)       testEnd(); testStart(_str,_next_nr);
+#define TEST_END()                                     testEnd()
 \r
 \r
 extern int test_suite;\r
index 3e1d0e564ca5375d8853cf84dd139122f6f78ac5..2a4df53636e6d2bd6ce03353f59ec41a4c129e56 100644 (file)
@@ -41,11 +41,11 @@ VPATH += $(ROOTDIR)/$(SUBDIR)/config
 VPATH += $(realpath ../..)\r
 \r
 # libs needed by us \r
-libitem-y += $(ROOTDIR)/libs/libkernel_$(ARCH_MCU).a\r
+#libitem-y +=\r
 \r
 #linkfile\r
-ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
-#ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
+ldcmdfile-y = linkscript_gcc.ldp\r
+vpath %.ldf $(ROOTDIR)/$(ARCH_PATH-y)/scripts\r
 \r
 inc-y += ..\r
 inc-y += ../..\r
index 49ec540f483d65618be8e87029b98ceac4b93262..63477766ee93418a552b8084ea4236e2dc32dd0c 100644 (file)
@@ -34,8 +34,8 @@
             <SDGS>\r
               <SDG/>\r
               <SDG GID="Arccore::ModuleOptions">\r
-                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
                 <SD GID="ARCCORE_EDITOR_VERSION">2.0.7</SD>\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
               </SDG>\r
             </SDGS>\r
           </ADMIN-DATA>\r
index 9f3d0ab93328091ae863a700bc7aa60de29f7c9c..2b47146f8678a5de885b9876cd05d1ad1c7643b1 100644 (file)
@@ -32,8 +32,8 @@ VPATH += $(realpath ../..)
 #libitem-y += $(ROOTDIR)/libs/libkernel_$(ARCH_MCU).a\r
 \r
 #linkfile\r
-ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
-#ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
+ldcmdfile-y = linkscript_gcc.ldp\r
+vpath %.ldf $(ROOTDIR)/$(ARCH_PATH-y)/scripts\r
 \r
 inc-y += ..\r
 inc-y += ../..\r
diff --git a/system/kernel/testsystem/suite_03/Os_Cfg.c b/system/kernel/testsystem/suite_03/Os_Cfg.c
new file mode 100644 (file)
index 0000000..f44e077
--- /dev/null
@@ -0,0 +1,245 @@
+/* 
+* Configuration of module Os (Os_Cfg.c)
+* 
+* Created by: 
+* Configured for (MCU): Undefined MCU
+* 
+* Module editor vendor:  ArcCore
+* Module editor version: 2.0.7
+* 
+* 
+* Generated by Arctic Studio (http://arccore.com)
+*           on Sun Jun 27 21:58:34 CEST 2010
+*/
+
+       \r
+\r
+#include <stdlib.h>\r
+#include <stdint.h>\r
+#include "Platform_Types.h"\r
+#include "Os.h"                                // includes Os_Cfg.h\r
+#include "os_config_macros.h"\r
+#include "kernel.h"\r
+#include "kernel_offset.h"\r
+#include "alist_i.h"\r
+#include "Mcu.h"\r
+\r
+extern void dec_exception( void );\r
+\r
+// Set the os tick frequency\r
+OsTickType OsTickFreq = 1000;\r
+\r
+\r
+// ###############################    DEBUG OUTPUT     #############################\r
+uint32 os_dbg_mask = D_RESOURCE |D_SCHTBL |D_EVENT |D_TASK |D_ALARM;\r
\r
+\r
+\r
+// #################################    COUNTERS     ###############################\r
+GEN_COUNTER_HEAD {\r
+       GEN_COUNTER(    COUNTER_ID_Counter1,\r
+                                       "Counter1",\r
+                                       COUNTER_TYPE_HARD,\r
+                                       COUNTER_UNIT_NANO,\r
+                                       0xffff,\r
+                                       1,\r
+                                       1,\r
+                                       0),\r
+};\r
+\r
+CounterType Os_Arc_OsTickCounter = COUNTER_ID_Counter1;\r
+\r
+// ##################################    ALARMS     ################################\r
+\r
+GEN_ALARM_HEAD {\r
+};\r
+\r
+// ################################    RESOURCES     ###############################\r
+GEN_RESOURCE_HEAD {\r
+};\r
+\r
+// ##############################    STACKS (TASKS)     ############################\r
+DECLARE_STACK(OsIdle,OS_OSIDLE_STACK_SIZE);\r
+DECLARE_STACK(btask_h_full,2048);\r
+DECLARE_STACK(btask_h_none,2048);\r
+DECLARE_STACK(btask_l_full,2048);\r
+DECLARE_STACK(btask_l_none,2048);\r
+DECLARE_STACK(btask_m_full,2048);\r
+DECLARE_STACK(btask_m_none,2048);\r
+DECLARE_STACK(etask_h_full,2048);\r
+DECLARE_STACK(etask_h_none,2048);\r
+DECLARE_STACK(etask_l_full,2048);\r
+DECLARE_STACK(etask_l_none,2048);\r
+DECLARE_STACK(etask_m_full,2048);\r
+DECLARE_STACK(etask_m_none,2048);\r
+DECLARE_STACK(etask_master,2048);\r
+\r
+// ##################################    TASKS     #################################\r
+GEN_TASK_HEAD {\r
+       GEN_ETASK(      OsIdle,\r
+                               0,\r
+                               FULL,\r
+                               TRUE,\r
+                               NULL,\r
+                               0 \r
+       ),\r
+       GEN_BTASK(\r
+               btask_h_full,\r
+               4,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               btask_h_none,\r
+               4,\r
+               NON,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               btask_l_full,\r
+               2,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               btask_l_none,\r
+               2,\r
+               NON,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               btask_m_full,\r
+               3,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               btask_m_none,\r
+               3,\r
+               NON,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_ETASK(\r
+               etask_h_full,\r
+               4,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_h_none,\r
+               4,\r
+               NON,\r
+               FALSE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_l_full,\r
+               2,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_l_none,\r
+               2,\r
+               NON,\r
+               FALSE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_m_full,\r
+               3,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_m_none,\r
+               3,\r
+               NON,\r
+               FALSE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_master,\r
+               1,\r
+               FULL,\r
+               TRUE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+};\r
+\r
+// ##################################    HOOKS     #################################\r
+GEN_HOOKS( \r
+       StartupHook, \r
+       NULL, \r
+       ShutdownHook, \r
+       ErrorHook,\r
+       PreTaskHook, \r
+       PostTaskHook \r
+);\r
+\r
+// ##################################    ISRS     ##################################\r
+\r
+\r
+// ############################    SCHEDULE TABLES     #############################\r
+\r
+// Table heads\r
+GEN_SCHTBL_HEAD {\r
+};\r
+\r
+GEN_PCB_LIST()\r
+\r
+uint8_t os_interrupt_stack[OS_INTERRUPT_STACK_SIZE] __attribute__ ((aligned (0x10)));\r
+\r
+GEN_IRQ_VECTOR_TABLE_HEAD {};\r
+GEN_IRQ_ISR_TYPE_TABLE_HEAD {};\r
+GEN_IRQ_PRIORITY_TABLE_HEAD {};\r
+\r
+#include "os_config_funcs.h"\r
diff --git a/system/kernel/testsystem/suite_03/Os_Cfg.h b/system/kernel/testsystem/suite_03/Os_Cfg.h
new file mode 100644 (file)
index 0000000..8c4ff25
--- /dev/null
@@ -0,0 +1,103 @@
+/* 
+* Configuration of module Os (Os_Cfg.h)
+* 
+* Created by: 
+* Configured for (MCU): Undefined MCU
+* 
+* Module editor vendor:  ArcCore
+* Module editor version: 2.0.7
+* 
+* 
+* Generated by Arctic Studio (http://arccore.com)
+*           on Sun Jun 27 21:58:34 CEST 2010
+*/
+
+
+#if (OS_SW_MAJOR_VERSION != 2) 
+#error "Os: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef OS_CFG_H_\r
+#define OS_CFG_H_\r
+\r
+\r
+// Alarm Id's\r
+\r
+// Counter Id's\r
+#define COUNTER_ID_Counter1    0\r
+\r
+// Counter macros\r
+#define OSMAXALLOWEDVALUE_Counter1 65535\r
+\r
+\r
+// Event masks\r
+#define EVENT_MASK_master_notif        1\r
+#define EVENT_MASK_notif       2\r
+#define EVENT_MASK_test        4\r
+\r
+// Isr Id's\r
+\r
+// Resource Id's\r
+\r
+// Linked resource id's\r
+\r
+// Resource masks\r
+\r
+// Task Id's\r
+#define TASK_ID_OsIdle 0\r
+#define TASK_ID_btask_h_full   1\r
+#define TASK_ID_btask_h_none   2\r
+#define TASK_ID_btask_l_full   3\r
+#define TASK_ID_btask_l_none   4\r
+#define TASK_ID_btask_m_full   5\r
+#define TASK_ID_btask_m_none   6\r
+#define TASK_ID_etask_h_full   7\r
+#define TASK_ID_etask_h_none   8\r
+#define TASK_ID_etask_l_full   9\r
+#define TASK_ID_etask_l_none   10\r
+#define TASK_ID_etask_m_full   11\r
+#define TASK_ID_etask_m_none   12\r
+#define TASK_ID_etask_master   13\r
+\r
+// Task entry points\r
+void OsIdle( void );\r
+void btask_h_full( void );\r
+void btask_h_none( void );\r
+void btask_l_full( void );\r
+void btask_l_none( void );\r
+void btask_m_full( void );\r
+void btask_m_none( void );\r
+void etask_h_full( void );\r
+void etask_h_none( void );\r
+void etask_l_full( void );\r
+void etask_l_none( void );\r
+void etask_m_full( void );\r
+void etask_m_none( void );\r
+void etask_master( void );\r
+\r
+// Schedule table id's\r
+\r
+// Stack size\r
+#define OS_INTERRUPT_STACK_SIZE        2048\r
+#define OS_OSIDLE_STACK_SIZE 512\r
+\r
+#define OS_ALARM_CNT                   0 \r
+#define OS_TASK_CNT                            14\r
+#define OS_SCHTBL_CNT                  0\r
+#define OS_COUNTER_CNT                 1\r
+#define OS_EVENTS_CNT                  3\r
+#define OS_ISRS_CNT                            0\r
+#define OS_RESOURCE_CNT                        0\r
+#define OS_LINKED_RESOURCE_CNT 0\r
+\r
+#define CFG_OS_DEBUG                           STD_ON\r
+\r
+#define OS_SC1                                                 STD_ON     \r
+#define OS_STACK_MONITORING                    STD_ON\r
+#define OS_STATUS_EXTENDED                     STD_ON\r
+#define OS_USE_GET_SERVICE_ID          STD_ON\r
+#define OS_USE_PARAMETER_ACCESS                STD_ON\r
+#define OS_RES_SCHEDULER                       STD_ON\r
+\r
+#endif /*OS_CFG_H_*/\r
diff --git a/system/kernel/testsystem/suite_03/build_config.mk b/system/kernel/testsystem/suite_03/build_config.mk
new file mode 100644 (file)
index 0000000..083cd74
--- /dev/null
@@ -0,0 +1,7 @@
+\r
+# Figure out the most of the modules to use.\r
+OPTIMAL_USE = SIMPLE_PRINTF RAMLOG\r
+MOD_USE+=KERNEL MCU COMMON NEWLIB DET ECUM $(filter $(OPTIMAL_USE),$(MOD_AVAIL))\r
+$(warning $(MOD_USE)) \r
+#MOD_USE+=KERNEL MCU SIMPLE_PRINTF RAMLOG\r
+\r
diff --git a/system/kernel/testsystem/suite_03/config_03.arxml b/system/kernel/testsystem/suite_03/config_03.arxml
new file mode 100644 (file)
index 0000000..000ca0c
--- /dev/null
@@ -0,0 +1,538 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.2"><TOP-LEVEL-PACKAGES>\r
+    <AR-PACKAGE UUID="fe461a62-0c3a-4c8f-a381-54ab028b1411">\r
+      <SHORT-NAME>config_03</SHORT-NAME>\r
+      <CATEGORY>EcuConfiguration</CATEGORY>\r
+      <ADMIN-DATA>\r
+        <DOC-REVISIONS>\r
+          <DOC-REVISION>\r
+            <ISSUED-BY/>\r
+          </DOC-REVISION>\r
+        </DOC-REVISIONS>\r
+      </ADMIN-DATA>\r
+      <ELEMENTS>\r
+        <ECU-CONFIGURATION UUID="4aa91bd7-e11b-4c9c-9a82-e2cc4c8614ef">\r
+          <SHORT-NAME>config_03</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <DOC-REVISIONS>\r
+              <DOC-REVISION/>\r
+            </DOC-REVISIONS>\r
+            <SDGS>\r
+              <SDG GID="Arccore::EcuOptions">\r
+                <SD GID="MCU">Undefined MCU</SD>\r
+                <SD GID="GENDIR">/arc/system/kernel/testsystem/suite_03</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <MODULE-REFS>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/config_03/Os</MODULE-REF>\r
+          </MODULE-REFS>\r
+        </ECU-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="db2d0d34-5700-49ad-979f-fbd28a7af2a9">\r
+          <SHORT-NAME>Os</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.7</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Os</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="f68a7db0-a8e8-404a-8e3f-e5b4bc588a56">\r
+              <SHORT-NAME>OsOS</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsStackMonitoring</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsOS/OsStatus</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseGetServiceId</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseParameterAccess</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseResScheduler</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsTickFrequency</DEFINITION-REF>\r
+                  <VALUE>1000</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsInterruptStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsIdleStackSize</DEFINITION-REF>\r
+                  <VALUE>512</VALUE>\r
+                </INTEGER-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsUseDebug</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugTask</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugAlarm</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugResource</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugScheduleTable</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugEvent</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="d5e6f8dd-b60d-4ae2-8901-eb46f1718d94">\r
+                  <SHORT-NAME>OsHooks</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS/OsHooks</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsErrorHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPostTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPreTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsProtectionHook</DEFINITION-REF>\r
+                      <VALUE>false</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsShutdownHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsStartupHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="aa1de21e-a3e2-4eed-830c-aaea55db6ca9">\r
+              <SHORT-NAME>etask_master</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="0852edf2-6d02-4cf7-a4bb-54a0c506e5df">\r
+                  <SHORT-NAME>OsTaskAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask/OsTaskAutostart</DEFINITION-REF>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="6b1bd06c-aa6c-4a3b-890f-7a6622039010">\r
+              <SHORT-NAME>etask_l_none</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>NON</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="256ad85d-e7e5-4ab5-9ad6-f518f7e43e18">\r
+              <SHORT-NAME>etask_l_full</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="21591f45-043e-4d3f-9c91-fbb617d69350">\r
+              <SHORT-NAME>etask_m_none</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>3</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>NON</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="e0f1abf7-284b-4275-8eca-b88c4b081d28">\r
+              <SHORT-NAME>etask_m_full</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>3</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="d8a48b25-b6e2-4c30-9834-9f841effedfc">\r
+              <SHORT-NAME>etask_h_none</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>4</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>NON</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="0466c6db-ea5c-416c-a4ed-ad1794de61a4">\r
+              <SHORT-NAME>etask_h_full</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>4</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="e7882a54-1553-411b-89da-b6bdab4a7b15">\r
+              <SHORT-NAME>btask_l_none</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>NON</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="8c47b5fc-c9dd-4f52-adc2-25d3c9c54ffb">\r
+              <SHORT-NAME>btask_l_full</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="fee669e9-e94e-47d2-90bb-2bcf4f95215b">\r
+              <SHORT-NAME>btask_m_none</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>3</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>NON</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="39531b67-e847-49d4-b498-4f38c659365b">\r
+              <SHORT-NAME>btask_m_full</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>3</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="1427277d-b148-4faa-8b15-a9b732a756d0">\r
+              <SHORT-NAME>btask_h_none</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>4</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>NON</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="7f5b94f9-a8ec-42d9-a192-98f0ee375a6b">\r
+              <SHORT-NAME>btask_h_full</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>4</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="a1fd59e6-8b36-4780-b8a2-fc8ed419a223">\r
+              <SHORT-NAME>Counter1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsCounter</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMaxAllowedValue</DEFINITION-REF>\r
+                  <VALUE>65535</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMinCycle</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterTicksPerBase</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterType</DEFINITION-REF>\r
+                  <VALUE>OS_TICK</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="8995f85e-2808-4e17-bfd0-38f169955daa">\r
+              <SHORT-NAME>master_notif</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsEvent</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/OsEventMask</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="5ca3e64f-6450-4877-b520-c2cc488d9c04">\r
+              <SHORT-NAME>notif</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsEvent</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/OsEventMask</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="c1c656c1-3653-4144-9a91-04c2b054d3f4">\r
+              <SHORT-NAME>test</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsEvent</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/OsEventMask</DEFINITION-REF>\r
+                  <VALUE>4</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+      </ELEMENTS>\r
+    </AR-PACKAGE>\r
+  </TOP-LEVEL-PACKAGES></AUTOSAR>\r
diff --git a/system/kernel/testsystem/suite_03/makefile b/system/kernel/testsystem/suite_03/makefile
new file mode 100644 (file)
index 0000000..2b47146
--- /dev/null
@@ -0,0 +1,58 @@
+\r
+# included from rules.mk\r
+\r
+# =======================================================================\r
+# APPLICATION\r
+\r
+obj-y += test_master.o\r
+obj-y += test_framework.o\r
+\r
+obj-y += Os_Cfg.o\r
+\r
+# Not supported yet...\r
+#obj-$(CFG_ARM_CM3) += test_sup_irq.o\r
+\r
+# Grab the board the board files.\r
+include $(ROOTDIR)/boards/board_common.mk\r
+\r
+# What modules do we use\r
+MOD_USE+=KERNEL MCU\r
+\r
+# TODO: Fix this....\r
+\r
+vpath-y += $(ROOTDIR)/$(ARCH_PATH-y)/kernel\r
+vpath-y += $(ROOTDIR)/$(ARCH_PATH-y)/drivers\r
+vpath-y += $(ROOTDIR)/boards/$(BOARDDIR)\r
+vpath-y += $(ROOTDIR)/boards/$(BOARDDIR)/config\r
+VPATH += $(vpath-y)\r
+VPATH += $(ROOTDIR)/$(SUBDIR)/config\r
+VPATH += $(realpath ../..)\r
+\r
+# libs needed by us \r
+#libitem-y += $(ROOTDIR)/libs/libkernel_$(ARCH_MCU).a\r
+\r
+#linkfile\r
+ldcmdfile-y = linkscript_gcc.ldp\r
+vpath %.ldf $(ROOTDIR)/$(ARCH_PATH-y)/scripts\r
+\r
+inc-y += ..\r
+inc-y += ../..\r
+inc-y += $(ROOTDIR)/system/kernel/$(objdir)\r
+inc-y += $(ROOTDIR)/system/kernel/include\r
+inc-y += $(ROOTDIR)/$(ARCH_PATH-y)\r
+inc-y += $(ROOTDIR)/drivers/include\r
+inc-y += $(ROOTDIR)/boards/$(BOARDDIR)/config\r
+inc-y += $(ROOTDIR)/$(ARCH_PATH-y)/drivers\r
+inc-y += ../config\r
+\r
+# What I want to build\r
+build-exe-y = $(target).elf\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
diff --git a/system/kernel/testsystem/suite_03/test_master.c b/system/kernel/testsystem/suite_03/test_master.c
new file mode 100644 (file)
index 0000000..868012b
--- /dev/null
@@ -0,0 +1,391 @@
+/* -------------------------------- Arctic Core ------------------------------
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com
+ *
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>
+ *
+ * This source code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published by the
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.
+ *
+ * This program 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.
+ * -------------------------------- Arctic Core ------------------------------*/
+
+/* Tests
+ *    Scheduling tests FULL/NONE using SetEvent(), ActivateTask() and ChainTask()
+ *    TODO: ChainTask()
+ *    TODO: Should we add the GetResource(RES_SCHEDULER) here also?
+ *
+ *    SetEvent()
+ *      etask_m_full: SetEvent() to  etask_l_full, etask_h_full
+ *      etask_m_full: SetEvent() to  etask_l_none, etask_h_none
+ *      etask_m_none: SetEvent() to  etask_l_full, etask_h_full
+ *      etask_m_none: SetEvent() to  etask_l_none, etask_h_none
+ *
+ *      btask_m_full: SetEvent() to  etask_l_full, etask_h_full
+ *      btask_m_full: SetEvent() to  etask_l_none, etask_h_none
+ *      btask_m_none: SetEvent() to  etask_l_full, etask_h_full
+ *      btask_m_none: SetEvent() to  etask_l_none, etask_h_none
+ *
+ *    ActivateTask()
+ *      etask_m_full: ActivateTask() to  etask_l_full, etask_h_full
+ *      etask_m_full: ActivateTask() to  etask_l_none, etask_h_none
+ *      etask_m_none: ActivateTask() to  etask_l_full, etask_h_full
+ *      etask_m_none: ActivateTask() to  etask_l_none, etask_h_none
+ *
+ *      etask_m_full: ActivateTask() to  btask_l_full, btask_h_full
+ *      etask_m_full: ActivateTask() to  btask_l_none, btask_h_none
+ *      etask_m_none: ActivateTask() to  btask_l_full, btask_h_full
+ *      etask_m_none: ActivateTask() to  btask_l_none, btask_h_none
+ *
+ *      btask_m_full: ActivateTask() to  btask_l_full, etask_h_full
+ *      btask_m_full: ActivateTask() to  btask_l_none, etask_h_none
+ *      btask_m_none: ActivateTask() to  btask_l_full, etask_h_full
+ *      btask_m_none: ActivateTask() to  btask_l_none, etask_h_none
+ *
+ *      btask_m_full: ActivateTask() to  btask_l_full, etask_h_full
+ *      btask_m_full: ActivateTask() to  btask_l_none, etask_h_none
+ *      btask_m_none: ActivateTask() to  btask_l_full, etask_h_full
+ *      btask_m_none: ActivateTask() to  btask_l_none, etask_h_none
+ */
+
+#include <stdlib.h>\r
+#include "Os.h"\r
+#include "os_test.h"\r
+#include "Mcu.h"\r
+#if defined(USE_GPT)\r
+#include "Gpt.h"\r
+#endif\r
+
+\r
+//#define USE_LDEBUG_PRINTF\r
+#include "debug.h"
+#include "arc.h"\r
+#include "test_framework.h"
+\r
+\r
+#define ERROR_LOG_SIZE 1
+
+typedef struct ErrorEntry {
+       StatusType              error;
+       OsErrorType     info;
+       TaskType        taskId;
+       OsServiceIdType serviceId;
+} ErrorEntryType;
+
+
+typedef struct ErrorLog {
+       int                     index;
+       ErrorEntryType  log[ERROR_LOG_SIZE];
+} ErrorLogType;
+
+ErrorLogType ErrorLog;
+
+ErrorEntryType *errorLogGetEntry( int backlog ) {
+
+
+       int index = ErrorLog.index - backlog;
+
+       if( index < 0 ) {
+               index = ERROR_LOG_SIZE + index;
+       }
+       return &ErrorLog.log[index];
+}
+
+
+void validateErrorHook(int backlog, int error, int serviceId,
+                                                       uint32_t param1, uint32_t param2, uint32_t param3,
+                                                       int apiId, int modId ) {
+       ErrorEntryType *entry = errorLogGetEntry(backlog);
+       TEST_ASSERT( error == entry->error );
+       if(param1 != TEST_VALUE_NC ) {
+               TEST_ASSERT(param1 == entry->info.param1 );
+       }
+       if(param2 != TEST_VALUE_NC ) {
+               TEST_ASSERT(param2 == entry->info.param2 );
+       }
+       if(param2 != TEST_VALUE_NC ) {
+               TEST_ASSERT(param3 == entry->info.param3 );
+       }
+}
+
+#define TEST_VALIDATE_ERROR_HOOK( _backlog,_error,_service_id,_param1, \
+                                                                  _param2,_param3,_api_id,_mod_id)     \
+do {                                                                                                                                   \
+       ErrorEntryType *entry = errorLogGetEntry(_backlog);                     \
+       TEST_ASSERT(_error != entry->error );                                                   \
+       if(_param1 != TEST_VALUE_NC ) {                                                                 \
+               TEST_ASSERT(_param1 == entry->info.param1 );                            \
+       }                                                                                                                               \
+       if(_param2 != TEST_VALUE_NC ) {                                                                 \
+               TEST_ASSERT(_param2 == entry->info.param2 );                            \
+       }                                                                                                                               \
+       if(_param2 != TEST_VALUE_NC ) {                                                                 \
+               TEST_ASSERT(_param3 == entry->info.param3 );                            \
+       }                                                                                                                               \
+} while(0)
+\r
+/*\r
+ * Master test process, everything is controlled from here.\r
+ */\r
+void etask_master( void ) {
+       TEST_INIT();
+       test_nr = 1;
+
+       ActivateTask(TASK_ID_etask_m_full);
+       ActivateTask(TASK_ID_etask_m_none);
+
+       testExit(0);
+}\r
+
+//--------------------------------------------------------------------\r
+
+// Tasks
+void btask_h_full( void ) {
+
+       TerminateTask();
+}
+
+void btask_h_none( void ) {
+
+       TerminateTask();
+}
+
+void btask_l_full( void ) {
+
+       TerminateTask();
+}
+
+void btask_l_none( void ) {
+
+       TerminateTask();
+}
+
+void btask_m_full( void ) {
+
+       TerminateTask();
+}
+
+void btask_m_none( void ) {
+
+       TerminateTask();
+}
+
+void etask_h_full( void ) {
+       for(;;) {
+               WaitEvent(EVENT_MASK_test);
+               ClearEvent(EVENT_MASK_test);
+               switch(test_nr) {
+               case 2:
+                       SetEvent(TASK_ID_etask_m_full,EVENT_MASK_test);
+                       break;
+               case 100:
+                       TerminateTask();
+               default:
+                       TEST_ASSERT(0);
+                       break;
+               }
+
+       }
+}
+
+void etask_h_none( void ) {
+
+
+}
+
+void etask_l_full( void ) {
+       for(;;) {
+               WaitEvent(EVENT_MASK_test);
+               ClearEvent(EVENT_MASK_test);
+
+               switch(test_nr) {
+               case 1:
+                       SetEvent(TASK_ID_etask_m_full,EVENT_MASK_test);
+                       break;
+               case 100:
+                       TerminateTask();
+               default:
+                       TEST_ASSERT(0);
+                       break;
+               }
+
+       }
+}
+
+void etask_l_none( void ) {
+
+
+}
+
+void etask_m_full( void ) {
+       EventMaskType mask;
+
+       ActivateTask(TASK_ID_etask_l_full);
+       ActivateTask(TASK_ID_etask_h_full);
+
+       for(;;) {
+               switch(test_nr) {
+               case 1:
+                       TEST_START("SetEvent() to low",test_nr);
+                       /** req OS?? */
+                       GetEvent(TASK_ID_etask_l_full,&mask);
+                       TEST_ASSERT( !(mask & EVENT_MASK_test) );
+                       /* After SetEvent(), NO dispatch */
+                       SetEvent(TASK_ID_etask_l_full, EVENT_MASK_test);
+                       GetEvent(TASK_ID_etask_l_full,&mask);
+                       TEST_ASSERT( mask & EVENT_MASK_test )
+
+                       /* Let the Low prio task run */
+                       WaitEvent(EVENT_MASK_test);
+                       ClearEvent(EVENT_MASK_test);
+                       TEST_END();
+                       test_nr++;
+                       break;
+               case 2:
+                       TEST_START("SetEvent() to high",test_nr);
+                       /** req OS?? */
+                       GetEvent(TASK_ID_etask_h_full,&mask);
+                       TEST_ASSERT( !(mask & EVENT_MASK_test) );
+                       /* After SetEvent(), dispatch */
+                       SetEvent(TASK_ID_etask_h_full, EVENT_MASK_test);
+                       GetEvent(TASK_ID_etask_h_full,&mask);
+                       TEST_ASSERT( !(mask & EVENT_MASK_test) );
+                       TEST_END();
+                       test_nr = 100;
+                       break;
+               case 100:
+                       /* Kill tasks */
+                       SetEvent(TASK_ID_etask_l_full, EVENT_MASK_test);
+                       SetEvent(TASK_ID_etask_h_full, EVENT_MASK_test);
+                       TerminateTask();
+               default:
+                       TEST_ASSERT(0);
+                       break;
+               }
+
+       }
+}
+
+void etask_m_none( void ) {
+
+
+}
+\r
+void OsIdle(void ) {
+       for(;;);\r
+}\r
+\r
+\r
+/* Global hooks */\r
+ProtectionReturnType ProtectionHook( StatusType FatalError ) {\r
+       printf("## ProtectionHook\n");\r
+       return PRO_KILLAPPL;\r
+}\r
+\r
+void StartupHook( void ) {\r
+//     LDEBUG_PRINTF("## StartupHook\n");\r
+\r
+#ifdef USE_MCU
+       uint32_t sys_freq = McuE_GetSystemClock();
+       (void)sys_freq;\r
+       LDEBUG_PRINTF("Sys clock %d Hz\n",sys_freq);\r
+#endif\r
+}\r
+\r
+void ShutdownHook( StatusType Error ) {\r
+       LDEBUG_PRINTF("## ShutdownHook\n");\r
+       const char *err;
+       err = Arc_StatusToString(Error);
+       while(1) {
+               err = err;
+       }
+}\r
+
+
+void ErrorHook( StatusType error ) {
+
+       TaskType task;
+       ErrorEntryType *errEntry;
+
+       GetTaskID(&task);
+
+       OsServiceIdType service = OSErrorGetServiceId();
+
+       /* Grab the arguments to the functions
+        * This is the standard way, see 11.2 in OSEK spec
+        */
+#if 0
+       switch(service) {
+       case OSServiceId_SetRelAlarm:
+       {
+               // Read the arguments to the faulty functions...
+               AlarmType alarm_id = OSError_SetRelAlarm_AlarmId;
+               TickType increment = OSError_SetRelAlarm_Increment;
+               TickType cycle = OSError_SetRelAlarm_Cycle;
+               (void)alarm_id;
+               (void)increment;
+               (void)cycle;
+
+               // ... Handle this some way.
+               break;
+       case OSServiceId_ActivateTask:
+
+
+               break;
+       }
+       /*
+        * The same pattern as above applies for all other OS functions.
+        * See Os.h for names and definitions.
+        */
+
+       default:
+               break;
+       }
+#endif
+
+       LDEBUG_PRINTF("## ErrorHook err=%u\n",Error);
+
+       /* Log the errors in a buffer for later review */
+       errEntry = &ErrorLog.log[ErrorLog.index];
+
+       errEntry->info.param1 = os_error.param1;
+       errEntry->info.param2 = os_error.param2;
+       errEntry->info.param3 = os_error.param3;
+       errEntry->info.serviceId = service;
+       errEntry->taskId = task;
+       errEntry->error = error;
+       ErrorLog.index = (ErrorLog.index + 1) % ERROR_LOG_SIZE ;
+}
+
+#if 0\r
+void ErrorHook( StatusType Error ) {
+
+       LDEBUG_PRINTF("## ErrorHook err=%d\n",Error);
+       const char *err;
+       err = Arc_StatusToString(Error);
+//     while(1);
+}\r
+#endif
+\r
+void PreTaskHook( void ) {\r
+       TaskType task;\r
+       GetTaskID(&task);\r
+       LDEBUG_PRINTF("## PreTaskHook, taskid=%d\n",task);\r
+}\r
+\r
+void PostTaskHook( void ) {\r
+       TaskType task;\r
+       GetTaskID(&task);\r
+       LDEBUG_PRINTF("## PostTaskHook, taskid=%d\n",task);
+#if 0\r
+       {\r
+               StackInfoType si;\r
+               Os_Arc_GetStackInfo(task,&si);\r
+//             LDEBUG_PRINTF("Stack usage %d%% (this=%08x, top=%08x, size=%08x,usage=%08x )\n",OS_STACK_USAGE(&si),si.curr, si.top,si.size,si.usage);\r
+       }
+#endif\r
+}\r
+\r
index 7f66b146da591b2134fa4b82354d67d07937647d..5d7988ec9d414e777a6a9b79e6933480c7a190a1 100644 (file)
@@ -81,6 +81,7 @@ void etask_sup_l_02(void) {
                        test_nr = 10;\r
                        break;\r
                case 10:\r
+#if defined(CFG_PPC)\r
                        /* Test RES_SCHEDULER.\r
                         * Since GetResource(RES_SCHEDULER) only locks the\r
                         * scheduler (interrupts are still working) we the interrupt\r
@@ -90,6 +91,8 @@ void etask_sup_l_02(void) {
 \r
                        /* Create an ISR2 */\r
                        isrTask = Os_Arc_CreateIsr( isr2, 4/*prio*/,"soft_0");\r
+\r
+\r
                        Irq_AttachIsr2(isrTask,NULL,INTC_SSCIR0_CLR0);\r
                        /* Create an ISR1 */\r
                        Irq_AttachIsr1(isr1,NULL,INTC_SSCIR0_CLR1,6);\r
@@ -112,6 +115,7 @@ void etask_sup_l_02(void) {
 \r
 //                     TEST_ASSERT( taskRunCnt == 1 );\r
                        // TODO:\r
+#endif\r
 \r
                        test_nr = 100;\r
                        break;\r
index 4f958bab85da03843fa707bb7634a625d9938006..008f4c64e16563163d5a3b31429cfbf109ddb7a7 100644 (file)
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * for more details.
  * -------------------------------- Arctic Core ------------------------------*/
+/*
+ * Testsystem Requirements:
+ * - Similar to EmbUnit():
+ *   - EmbUnit is built around methods..this does not work well for an OS so
+ *     use macros, TEST_START() and TEST_END() start and end testcases.
+ *   - TEST_ASSERT() macro the same
+ *   - XML output should be the same
+ *   - Same statistict output
+ * - Be able to survive a known crash and restore to the current testcase
+ *   This would be very useful when testing exception behaviour.
+ * - It would have the test-cases grouped, so it will be easy the remove test that don't work
+ *   - Invent a way to do this pretty for different ARCH's. Today ARCH dependent
+ *     test-cases are #ifdef'd.
+ *     ALT_1: Have different header files for each ARCH that disable certain test-cases ?
+ *
+ * Bad stuff in current implementation:
+ * - The initial thought (see suite_01 ) was to build a rather large testsystem
+ *   that whould have few configurations. Howevent, this does not work well at all for
+ *   systems with that is very low on ROM/RAM.
+ * - I wish there was one place to enable/disable tests. Now it's spread out all over the place.
+ * - I guess the DECLARE_TEST_ETASK() macros was good for a large test-system,
+ *   but it should go away (suite_01)
+ * - Hooks and error handling should be unitfied into one file.
+ * - That test-cases is dependent on the former testcase to increase "test_nr"
+ *
+ */
+
+
 
 #include <stdint.h>
 #include <stdio.h>
index b308f7fd57854b7ff33a8404a396f074ec41aa51..881117540e4f8ceaa588f16f87cb55d356d62021 100644 (file)
@@ -134,6 +134,7 @@ menu
     menuitem "Reset,ALT+r" "sys.up"\r
     menuitem "Restore layout,CTRL+l" "do lay"\r
     menuitem "View ramlog,CTRL+s" "do ramlog"\r
+    menuitem "Run kernel testsuite" "do test"\r
   )  \r
 )\r
 \r
@@ -175,5 +176,6 @@ menu
 \r
 \r
 \r
+\r
 \r
 \r
index b98f61c0818ecdd694d3f500f686e92785c45e69..5ea0e08ab9d320cf2aa3cf15a287bb469ea2c09b 100644 (file)
@@ -1,16 +1,25 @@
-//&cmdline="OS.area dir"\r
-//print &cmdline\r
-\r
+// Copyright ArcCore AB\r
+// \r
+// DESCRIPTION \r
+//   A simple testscript that runs all the test-suite located in the \r
+//   system/kernel/testsystem folder (it looks for the binaries in \r
+//   the "binaries" folder)\r
+\r
+// Make the !run() command work\r
 screen.always\r
-LOCAL &datafile &file &rfile &data &tmpfile &stop\r
+LOCAL &datafile &file &rfile &data &tmpfile &stop &testfiles\r
 \r
 &stop="no"\r
 &datafile="va1.txt"\r
 &rfile="test_result.txt"\r
+&testfiles=0.\r
+\r
 &tdir="&cfg_project_path_g\system\kernel\testsystem"\r
-os cmd /c dir &tdir/B /A:D> &datafile\r
+os cmd /c dir &tdir/B /A:D > &datafile\r
 \r
 os cmd /c del &rfile\r
+os cmd /c echo "" > &rfile\r
+wait 100ms\r
 \r
 // Start file at #10 to make space for others to use #1..#9\r
 OPEN #10 &datafile /read\r
@@ -23,6 +32,7 @@ WHILE "&data"!=""
     &tmpfile=os.tmpfile()\r
     GOSUB testrun &file "hopp.txt"\r
     os cmd /c type hopp.txt >> &rfile  \r
+    &testfiles=&testfiles+1\r
   )\r
   IF "&stop"=="yes"\r
   (\r
@@ -35,7 +45,14 @@ WHILE "&data"!=""
 \r
 CLOSE #10\r
 \r
-type "&rfile"\r
+IF &testfiles==0\r
+  print "NO testfiles found"\r
+ELSE\r
+(\r
+  beep\r
+  print "Ran:" &testfiles " testfiles"\r
+  type "&rfile"\r
+)\r
 \r
 enddo\r
 \r
@@ -62,3 +79,4 @@ testrun:
 \r
 \r
 \r
+\r