]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Merge with 0e036b1adeb8dc04e8d78232e12bfb02934f0abc
authormahi <devnull@localhost>
Mon, 14 Jun 2010 19:05:28 +0000 (21:05 +0200)
committermahi <devnull@localhost>
Mon, 14 Jun 2010 19:05:28 +0000 (21:05 +0200)
52 files changed:
boards/board_common.mk
boards/et_stm32_stamp/build_config.mk
boards/hcs12_elmicro_card12/build_config.mk
boards/linux/build_config.mk [new file with mode: 0644]
boards/mpc5516it/build_config.mk
boards/mpc551xsim/build_config.mk
boards/mpc5554sim/build_config.mk
boards/mpc5567qrtech/build_config.mk
boards/mpc563xsim/build_config.mk
boards/stm32_mcbstm32/build_config.mk
boards/stm32_stm3210c/build_config.mk
examples/pwm_node/build_config.mk
examples/pwm_node2/build_config.mk
examples/simple/build_config.mk
examples/switch_node/build_config.mk
include/Os.h
include/os_config_funcs.h
makefile
scripts/rules.mk
system/kernel/alarm.c
system/kernel/counter.c
system/kernel/event.c
system/kernel/sched_table.c
system/kernel/testsystem/build_config.mk
system/kernel/testsystem/config/Os_Cfg.c
system/kernel/testsystem/config/Os_Cfg.h
system/kernel/testsystem/os_test.h
system/kernel/testsystem/suite_01/Os_Cfg.c [new file with mode: 0644]
system/kernel/testsystem/suite_01/Os_Cfg.h [new file with mode: 0644]
system/kernel/testsystem/suite_01/build_config.mk [new file with mode: 0644]
system/kernel/testsystem/suite_01/config_01.arxml [new file with mode: 0644]
system/kernel/testsystem/suite_01/makefile [new file with mode: 0644]
system/kernel/testsystem/suite_01/test_01_task.c [new file with mode: 0644]
system/kernel/testsystem/suite_01/test_02_resource.c [new file with mode: 0644]
system/kernel/testsystem/suite_01/test_03_alarm.c [new file with mode: 0644]
system/kernel/testsystem/suite_01/test_04_stable.c [new file with mode: 0644]
system/kernel/testsystem/suite_01/test_05_const.c [new file with mode: 0644]
system/kernel/testsystem/suite_01/test_06_event.c [new file with mode: 0644]
system/kernel/testsystem/suite_01/test_07_misc.c [new file with mode: 0644]
system/kernel/testsystem/suite_01/test_master.c [moved from system/kernel/testsystem/test_master.c with 96% similarity]
system/kernel/testsystem/suite_02/Os_Cfg.c [new file with mode: 0644]
system/kernel/testsystem/suite_02/Os_Cfg.h [new file with mode: 0644]
system/kernel/testsystem/suite_02/build_config.mk [new file with mode: 0644]
system/kernel/testsystem/suite_02/config_02.arxml [new file with mode: 0644]
system/kernel/testsystem/suite_02/makefile [new file with mode: 0644]
system/kernel/testsystem/suite_02/test_master.c [new file with mode: 0644]
system/kernel/testsystem/test_03_alarm.c
system/kernel/testsystem/test_framework.c
system/kernel/testsystem/test_framework.h
tools/t32/load.cmm
tools/t32/term.cmm
tools/t32/test.cmm [new file with mode: 0644]

index de00a1feaae09f3c152420d940bf77f07343680a..854dd6bc27bf0df825104cc21d557fe36c741004 100644 (file)
@@ -6,11 +6,11 @@ obj-$(CFG_ARM_CM3) += startup_stm32f10x.o
 \r
 #Ecu\r
 #obj-y += EcuM_$(BOARDDIR).o\r
-obj-y += EcuM.o\r
-obj-y += EcuM_Cfg.o\r
-obj-y += EcuM_Callout_template.o\r
-inc-y += $(ROOTDIR)/system/EcuM\r
-vpath-y += $(ROOTDIR)/system/EcuM\r
+obj-$(USE_ECUM) += EcuM.o\r
+obj-$(USE_ECUM) += EcuM_Cfg.o\r
+obj-$(USE_ECUM) += EcuM_Callout_template.o\r
+inc-$(USE_ECUM) += $(ROOTDIR)/system/EcuM\r
+vpath-$(USE_ECUM) += $(ROOTDIR)/system/EcuM\r
 \r
 # Gpt\r
 obj-$(USE_GPT) += Gpt.o\r
@@ -61,7 +61,9 @@ obj-$(USE_ADC) += Adc.o
 obj-$(USE_ADC) += Adc_Cfg.o\r
 \r
 # Include the kernel\r
+ifneq ($(USE_KERNEL),)\r
 include $(ROOTDIR)/system/kernel/makefile\r
+endif\r
 \r
 # Spi\r
 obj-$(USE_SPI) += Spi.o\r
@@ -89,7 +91,7 @@ obj-$(USE_PWM) += Pwm.o
 obj-$(USE_PWM) += Pwm_Cfg.o\r
 \r
 # Misc\r
-obj-y += Det.o\r
+obj-$(USE_DET) += Det.o\r
 \r
 # Lin\r
 obj-$(USE_LIN) += Lin_PBcfg.o\r
@@ -158,37 +160,9 @@ inc-$(USE_DCM) += $(ROOTDIR)/diagnostic/Dcm
 vpath-$(USE_DCM) += $(ROOTDIR)/diagnostic/Dcm\r
 \r
 \r
-\r
-#tests\r
-#obj-y += RunTests.o\r
-#obj-$(USE_CAN) += can_test.o\r
-#obj-$(USE_DIO) += dio_test.o\r
-#obj-$(USE_PORT) += port_test.o\r
-#obj-$(USE_CANIF) += canif_test.o\r
-#obj-$(USE_FLS) += fls_test.o\r
-#obj-y += mahi_test.o\r
-#obj-$(USE_GPT) += gpt_test.o\r
-#obj-$(USE_SPI) += spi_test.o\r
-#obj-$(USE_EEP) += eep_test.o\r
-#obj-y += det_test.o\r
-#obj-$(USE_MCU) += mcu_test.o\r
-#obj-$(USE_FLS_SST25XX) += xfls_test.o\r
-#obj-y += lin_test.o\r
-#obj-$(USE_PDUR) += pdur_test.o\r
-#obj-$(USE_COM) += com_test.o\r
-\r
-#inc-$(USE_TESTS) += $(ROOTDIR)/embunit/embUnit\r
-#inc-$(USE_TESTS) += $(ROOTDIR)/embunit/textui\r
-#inc-$(USE_TESTS) += $(ROOTDIR)/embunit\r
-\r
-#libitem-$(USE_TESTS) += $(ROOTDIR)/embunit/embUnit/obj_$(ARCH)/libembunit.a\r
-#libitem-$(USE_TESTS) += $(ROOTDIR)/embunit/textui/obj_$(ARCH)/libtextui.a\r
-\r
-\r
-\r
 # Common\r
-obj-y += xtoa.o\r
-obj-y += arc.o\r
+obj-$(USE_COMMON) += xtoa.o\r
+obj-$(USE_COMMON) += arc.o\r
 #obj-y += malloc.o\r
 obj-$(USE_RAMLOG) += ramlog.o\r
 \r
@@ -202,7 +176,7 @@ endif
 \r
 VPATH += $(ROOTDIR)/common\r
 \r
-obj-y += newlib_port.o\r
+obj-$(USE_NEWLIB) += newlib_port.o\r
 obj-y += $(obj-y-y)\r
 \r
 vpath-y += $(ROOTDIR)/$(ARCH_PATH-y)/kernel\r
index 452138d99a8357972d0219184e057a216078cfc8..82777e20f7a452c9a09b078c2692cbf270740c46 100644 (file)
@@ -1,22 +1,23 @@
-
-# ARCH defines
-ARCH=arm_cm3
-ARCH_FAM=arm
-ARCH_MCU=arm_cm3
-
-# CFG (y/n) macros
-CFG=ARM ARM_CM3 BRD_ET_STM32_STAMP STM32_CL
-
-# What buildable modules does this board have, 
-# default or private
-MOD_AVAIL=KERNEL MCU PWM ADC ARM_ITM_TERM DEM DCM IOHWAB
-#T32_TERM SIMPLE_PRINTF RAMLOG
-#
-
-# Needed by us
-MOD_USE=KERNEL MCU
-
-# Use little heap
-def-y += HEAPSIZE=4000
-def-y += STM32F10X_CL
-
+\r
+# ARCH defines\r
+ARCH=arm_cm3\r
+ARCH_FAM=arm\r
+ARCH_MCU=arm_cm3\r
+\r
+# CFG (y/n) macros\r
+CFG=ARM ARM_CM3 BRD_ET_STM32_STAMP STM32_CL\r
+\r
+# What buildable modules does this board have, \r
+# default or private\r
+MOD_AVAIL=KERNEL MCU ECUM PWM ADC SIMPLE_PRINTF ARM_ITM_TERM RAMLOG DEM IOHWAB\r
+MOD_AVAIL+=COMMON\r
+#T32_TERM SIMPLE_PRINTF RAMLOG\r
+#\r
+\r
+# Needed by us\r
+MOD_USE=KERNEL MCU\r
+\r
+# Use little heap\r
+def-y += HEAPSIZE=4000\r
+def-y += STM32F10X_CL\r
+\r
index 83d774eb9b49231c5c43b5ed8a06bfa8685f06c1..c25dddc708cbcd3db96c0152628f026c7f78800e 100644 (file)
@@ -9,8 +9,10 @@ CFG=HC1X HCS12D MC912DG128A BRD_HCS12_ELMICRO_CARD12 SIMULATOR
 
 # What buildable modules does this board have, 
 # default or private (These become MOD_XXX=y )
-MOD_AVAIL=KERNEL MCU GPT
+MOD_AVAIL=KERNEL MCU ECUM T32_TERM WINIDEA_TERM SIMPLE_PRINTF GPT RAMLOG
 
 # Needed by us (These become USE_XXX=y and def-y += USE_XXX )
 MOD_USE=KERNEL MCU
 
+# Extra defines
+def-y += HEAPSIZE=400
diff --git a/boards/linux/build_config.mk b/boards/linux/build_config.mk
new file mode 100644 (file)
index 0000000..92c4f29
--- /dev/null
@@ -0,0 +1,15 @@
+
+# ARCH defines
+#ARCH=mpc55xx
+#ARCH_FAM=ppc
+#ARCH_MCU=mpc5516
+
+# CFG (y/n) macros
+CFG= BRD_LINUX
+
+# What buildable modules does this board have, 
+# default or private
+MOD_AVAIL+=COM
+
+# Needed by us
+MOD_USE=
index 035712879549452c918aee4a34510cad7c38c726..328f1334a73120ae4d23b069a971c9ff67288300 100644 (file)
@@ -1,15 +1,15 @@
-
-# ARCH defines
-ARCH=mpc55xx
-ARCH_FAM=ppc
-ARCH_MCU=mpc5516
-
-# CFG (y/n) macros
-CFG=PPC BOOKE E200Z1 MPC55XX MPC5516 BRD_MPC5516IT
-
-# What buildable modules does this board have, 
-# default or private
-MOD_AVAIL+=KERNEL MCU GPT LIN CAN CANIF CANTP PORT DIO WDG WDGM PWM COM ADC DMA DEM DCM PDUR IOHWAB
-
-# Needed by us
-MOD_USE=KERNEL MCU
+\r
+# ARCH defines\r
+ARCH=mpc55xx\r
+ARCH_FAM=ppc\r
+ARCH_MCU=mpc5516\r
+\r
+# CFG (y/n) macros\r
+CFG=PPC BOOKE E200Z1 MPC55XX MPC5516 BRD_MPC5516IT\r
+\r
+# What buildable modules does this board have, \r
+# default or private\r
+MOD_AVAIL+=KERNEL RAMLOG MCU ECUM GPT LIN CAN CANIF CANTP PORT DIO WDG WDGM PWM COM ADC DMA DEM DCM PDUR IOHWAB\r
+\r
+# Needed by us\r
+MOD_USE=KERNEL MCU\r
index 1e1735d2ff183923a05da5ff01eba1f4af4169e9..d72a154e322b43addf25d2a6b8ec0235b46302bf 100644 (file)
@@ -1,15 +1,16 @@
-
-# ARCH defines
-ARCH=mpc55xx
-ARCH_FAM=ppc
-ARCH_MCU=mpc5516
-
-# CFG (y/n) macros
-CFG=PPC BOOKE E200Z1 MPC55XX MPC5516 BRD_MPC551XSIM SIMULATOR
-
-# What buildable modules does this board have, 
-# default or private
-MOD_AVAIL=KERNEL MCU GPT LIN CAN WDG WDGM DEM DCM IOHWAB
-
-# Needed by us
-MOD_USE=KERNEL MCU
+\r
+# ARCH defines\r
+ARCH=mpc55xx\r
+ARCH_FAM=ppc\r
+ARCH_MCU=mpc5516\r
+\r
+# CFG (y/n) macros\r
+CFG=PPC BOOKE E200Z1 MPC55XX MPC5516 BRD_MPC551XSIM SIMULATOR\r
+\r
+# What buildable modules does this board have, \r
+# default or private\r
+MOD_AVAIL=KERNEL RAMLOG MCU ECUM GPT LIN CAN WDG WDGM  DEM DCM IOHWAB\r
+MOD_AVAIL+=COMMON NEWLIB DET\r
+\r
+# Needed by us\r
+#MOD_USE=KERNEL MCU COMMON NEWLIB DET\r
index 94a15a3df58dbbfafc99d80cc1bb753485a1fbc4..f7fa81461ae1e7e1b89eac305e183e5287fad5fe 100644 (file)
@@ -1,15 +1,15 @@
-
-# ARCH defines
-ARCH=mpc55xx
-ARCH_FAM=ppc
-ARCH_MCU=mpc5554
-
-# CFG (y/n) macros
-CFG=PPC BOOKE SPE E200Z6 MPC55XX MPC5554 BRD_MPC5554SIM SIMULATOR
-
-# What buildable modules does this board have, 
-# default or private
-MOD_AVAIL+=KERNEL MCU GPT LIN CAN COM WDG WDGM DEM DCM IOHWAB
-
-# Needed by kernel
-MOD_USE+=KERNEL MCU
+\r
+# ARCH defines\r
+ARCH=mpc55xx\r
+ARCH_FAM=ppc\r
+ARCH_MCU=mpc5554\r
+\r
+# CFG (y/n) macros\r
+CFG=PPC BOOKE SPE E200Z6 MPC55XX MPC5554 BRD_MPC5554SIM SIMULATOR\r
+\r
+# What buildable modules does this board have, \r
+# default or private\r
+MOD_AVAIL+=KERNEL RAMLOG MCU ECUM GPT LIN CAN COM WDG WDGM T32_TERM WINIDEA_TERM SIMPLE_PRINTF DEM DCM IOHWAB\r
+\r
+# Needed by kernel\r
+MOD_USE+=KERNEL MCU\r
index 5a44647e1a8e394fb8a6a5d2855f667550a388db..2cb3e384843b6f6bf1b32fd90fe59a5c179a965c 100644 (file)
@@ -1,17 +1,17 @@
-
-# ARCH defines
-ARCH=mpc55xx
-ARCH_FAM=ppc
-ARCH_MCU=mpc5567
-
-# CFG (y/n) macros
-CFG=PPC BOOKE E200Z6 MPC55XX MPC5567 BRD_MPC5567QRTECH SPE
-
-# What buildable modules does this board have, 
-# default or private
-MOD_AVAIL=KERNEL MCU WDG WDGM PORT DIO WDG WDGM PWM CAN CANIF COM ADC DMA DEM DCM CANTP PDUR IOHWAB
-
-# Needed by us
-MOD_USE=KERNEL MCU
-
-
+\r
+# ARCH defines\r
+ARCH=mpc55xx\r
+ARCH_FAM=ppc\r
+ARCH_MCU=mpc5567\r
+\r
+# CFG (y/n) macros\r
+CFG=PPC BOOKE E200Z6 MPC55XX MPC5567 BRD_MPC5567QRTECH SPE\r
+\r
+# What buildable modules does this board have, \r
+# default or private\r
+MOD_AVAIL=KERNEL RAMLOG MCU ECUM WDG WDGM PORT DIO WDG WDGM T32_TERM WINIDEA_TERM PWM CAN CANIF COM ADC DMA SIMPLE_PRINTF DEM PDUR IOHWAB\r
+\r
+# Needed by us\r
+MOD_USE=KERNEL MCU\r
+\r
+\r
index c26455b7bc3990e40a59ec54e381a6b67f00d473..adc8c5d0ae6d57e0f3ba2b905ee1908204f8a6f4 100644 (file)
@@ -9,7 +9,7 @@ CFG=PPC BOOKE E200Z3 MPC55XX MPC5633 BRD_MPC5633SIM SPE
 
 # What buildable modules does this board have, 
 # default or private
-MOD_AVAIL=KERNEL RAMLOG MCU WDG WDGM PORT DIO WDG WDGM PWM CAN CANIF COM ADC DMA
+MOD_AVAIL=KERNEL RAMLOG MCU ECUM WDG WDGM PORT DIO WDG WDGM T32_TERM WINIDEA_TERM PWM CAN CANIF COM ADC DMA SIMPLE_PRINTF
 
 # Needed by us
 MOD_USE=KERNEL MCU
index 8a0caff3f78ab90a66588bbb457d75c8ec74a41a..abb9a6bd876bef3b200bba3d29527796b5c87948 100644 (file)
@@ -24,7 +24,7 @@ CFG+=STM32_MD
 \r
 # What buildable modules does this board have, \r
 # default or private\r
-MOD_AVAIL=KERNEL MCU PWM ADC DIO PORT FLS CAN COM CAN CANIF SIMPLE_PRINTF ARM_ITM_TERM RAMLOG DEM IOHWAB\r
+MOD_AVAIL=KERNEL MCU ECUM PWM ADC SIMPLE_PRINTF ARM_ITM_TERM RAMLOG DEM IOHWAB\r
 \r
 #\r
 # Modules needed by us\r
index 57f795581a38a6b00e91c9d8588a2211db3a9abe..55ea730d49cbb40df9ce15b37eb82895b207ea33 100644 (file)
@@ -24,7 +24,7 @@ CFG+=STM32_CL
 \r
 # What buildable modules does this board have, \r
 # default or private\r
-MOD_AVAIL=KERNEL MCU PWM ADC DIO PORT FLS CAN COM CAN CANIF SIMPLE_PRINTF ARM_ITM_TERM RAMLOG DEM IOHWAB\r
+MOD_AVAIL=KERNEL MCU ECUM PWM ADC DIO PORT FLS CAN COM CAN CANIF SIMPLE_PRINTF ARM_ITM_TERM RAMLOG DEM IOHWAB\r
 \r
 #\r
 # Modules needed by us\r
index fe6daf9e00caaef727d0f96f4780aee81225095a..a9995630d4c1b04210f578d38acc0c540962fbc6 100644 (file)
@@ -1,5 +1,2 @@
 \r
-MOD_USE+=KERNEL MCU PORT PWM\r
-\r
-SELECT_CONSOLE = RAMLOG\r
-SELECT_OS_CONSOLE = RAMLOG\r
+MOD_USE+=KERNEL MCU ECUM NEWLIB COMMON DET PORT PWM WINIDEA_TERM SIMPLE_PRINTF RAMLOG\r
index 4ef7c56f5c08aa3cb0ab7b3271d0f7b7220d75d7..3cc5e676ba8265ec0cacb34d52688518d2e55361 100644 (file)
@@ -1,7 +1,2 @@
--include ../config/*.mk\r
--include ../config/$(BOARDDIR)/*.mk\r
 \r
-MOD_USE+=KERNEL MCU\r
-\r
-SELECT_CONSOLE = RAMLOG\r
-SELECT_OS_CONSOLE = RAMLOG\r
+MOD_USE+=KERNEL MCU ECUM NEWLIB COMMON DET PORT COM CAN CANIF WINIDEA_TERM PWM SIMPLE_PRINTF RAMLOG\r
index 9a909bdf87d5ce5aae19b7fa436c69e175b60927..4ba6320ce1cca0d9b943deeedca922d58e5f352f 100644 (file)
@@ -1,8 +1,4 @@
 \r
-MOD_USE+=KERNEL MCU\r
+MOD_USE+=KERNEL MCU ECUM NEWLIB COMMON DET T32_TERM RAMLOG SIMPLE_PRINTF RAMLOG\r
 \r
-SELECT_CONSOLE = RAMLOG\r
-SELECT_OS_CONSOLE = RAMLOG\r
-\r
-def-y += CFG_RAMLOG_SIZE=1024\r
 def-y += HEAPSIZE=1400
\ No newline at end of file
index aa7914668cbe4ecfcb4db4d56fc8ff5d2a68b32f..f21c8b4e76305893b69f76da465640a549c01bc1 100644 (file)
@@ -4,4 +4,4 @@
 MOD_USE+=KERNEL MCU ADC DMA \r
 \r
 SELECT_CONSOLE = RAMLOG\r
-SELECT_OS_CONSOLE = RAMLOG\r
+SELECT_OS_CONSOLE = RAMLOG
\ No newline at end of file
index c8c3568eb9a5ccd3ac8bde8b0a5ac4dfbd84cb4a..b714805e4e94b36275f30c29fd1933f445e06ff8 100644 (file)
@@ -347,21 +347,21 @@ typedef enum {
     OSServiceId_GetTaskState,\r
 } OsServiceIdType;;\r
 \r
-typedef struct os_error_s {\r
+typedef struct OsError {\r
        OsServiceIdType serviceId;\r
        uint32_t param1;\r
        uint32_t param2;\r
        uint32_t param3;\r
-} os_error_t;\r
+} OsErrorType;\r
 \r
-extern os_error_t os_error;\r
+extern OsErrorType os_error;\r
 \r
 // TODO: Add the service id to all OS service methods.\r
 static inline OsServiceIdType OSErrorGetServiceId(void)  {\r
        return os_error.serviceId;\r
 }\r
 \r
-extern os_error_t os_error;\r
+extern OsErrorType os_error;\r
 \r
 #define OSError_ActivateTask_TaskID ((TaskType) os_error.param1)\r
 #define OSError_ChainTask_TaskID ((TaskType) os_error.param1)\r
index 9cdd14455dd0bcdb64485c513b6e404bf1b8efe8..3e7daa20ad93e37f5bf81b4ff6c68af1df40b071 100644 (file)
@@ -49,7 +49,7 @@ void Os_CfgValidate(void ) {
 #endif
 }
 \r
-os_error_t os_error;\r
+OsErrorType os_error;\r
 \r
 //-------------------------------------------------------------------\r
 \r
index d359266cc0792d94475b46c52461080452af6a40..7f93e62ef43f2274d528a0ba77416dcf394913af 100644 (file)
--- a/makefile
+++ b/makefile
@@ -107,9 +107,9 @@ cmd_cmd_goals := $(filter clean all,$(MAKECMDGOALS))
 \r
 # Check for CROSS_COMPILE\r
 ifneq ($(cmd_cmd_goals),)\r
-ifndef CROSS_COMPILE\r
-  $(error CROSS_COMPILE not defined)\r
-endif\r
+#ifndef CROSS_COMPILE\r
+#  $(error CROSS_COMPILE not defined)\r
+#endif\r
 \r
 # Check that the board actually exist\r
 ifdef BOARDDIR\r
@@ -157,6 +157,8 @@ clean_all:
        @find . -type f -name *.a | xargs rm -rf\r
        echo Done!\r
        \r
+config: $(dir_cmd_goals)       \r
+       \r
 clean: $(dir_cmd_goals)\r
        @echo "Clean:"\r
        @echo "  Removing objectfiles and libs for ARCH=$(ARCH)"\r
index 15904a5a91f0ccd2be7a589b900d20a196b8a56a..2eddf2707ec3294aa8b137d1d7616c83fca35a16 100644 (file)
@@ -140,9 +140,13 @@ $(build-hex-y): $(build-exe-y)
        @echo "  >> OBJCOPY $@"   \r
        $(Q)$(CROSS_COMPILE)objcopy -O ihex $< $@\r
 \r
+# Linker\r
 # Could use readelf -S instead of parsing the *.map file.\r
 $(build-exe-y): $(dep-y) $(obj-y) $(sim-y) $(libitem-y) $(ldcmdfile-y)\r
        @echo "  >> LD $@"\r
+ifeq ($(CROSS_COMPILE),)\r
+       $(Q)$(CC) $(LDFLAGS) -o $@ $(libpath-y) $(obj-y) $(lib-y) $(libitem-y)  \r
+else   \r
        $(Q)$(LD) $(LDFLAGS) -T $(ldcmdfile-y) -o $@ $(libpath-y) --start-group $(obj-y) $(lib-y) $(libitem-y) --end-group $(LDMAPFILE)\r
 ifdef CFG_MC912DG128A\r
        @$(CROSS_COMPILE)objdump -h $@ | gawk -f $(ROOTDIR)/scripts/hc1x_memory.awk\r
@@ -152,10 +156,11 @@ else
                                                                /^\.data/ { print "  data:"  $$3+0 " bytes"; rom+=$$3; ram+=$$3}; \\r
                                                                /^\.bss/ { print "  bss :"  $$3+0 " bytes"; ram+=$$3}; \\r
                                                                END { print "  ROM: ~" rom " bytes"; print "  RAM: ~" ram " bytes"}' $(subst .elf,.map,$@)\r
+endif\r
 endif\r
        @echo "  >>>>>>>  DONE  <<<<<<<<<"\r
        \r
-\r
+       \r
 $(size-exe-y): $(build-exe-y)\r
        $(Q)$(OBJDUMP) -h $<\r
        @echo TODO: Parse the file....\r
index 12b62329021f5635a7e79212fff44c7aab90583c..ce53f725b2e04d8e9f983a6ceaa07e4c1bffdc6b 100644 (file)
@@ -147,6 +147,37 @@ StatusType SetRelAlarm(AlarmType AlarmId, TickType Increment, TickType Cycle){
 \r
        OS_STD_END_3(OSServiceId_SetRelAlarm,AlarmId, Increment, Cycle);\r
 }\r
+
+/**
+ * The  system  service  occupies  the  alarm  <AlarmID>  element.
+ * When <start> ticks are reached, the task assigned to the alarm
+ *
+ * If the absolute value <start> is very close to the current counter
+ * value, the alarm may expire, and the task may become ready or
+ * the  alarm-callback  may  be  called  before  the  system  service
+ * returns to the user.
+ * If  the  absolute  value  <start>  already  was  reached  before  the
+ * system call, the alarm shall only expire when the absolute value
+ * <start>  is  reached  again,  i.e.  after  the  next  overrun  of  the
+ * counter.
+ *
+ * If <cycle> is unequal zero, the alarm element is logged on again
+ * immediately after expiry with the relative value <cycle>.
+ *
+ * The alarm <AlarmID> shall not already be in use.
+ * To  change  values  of  alarms  already  in  use  the  alarm  shall  be
+ * cancelled first.
+ *
+ * If  the  alarm  is  already  in  use,  this  call  will  be  ignored  and  the
+ * error E_OS_STATE is returned.
+ *
+ * Allowed on task level and in ISR, but not in hook routines.
+ *
+ * @param AlarmId
+ * @param Start
+ * @param Cycle
+ * @return
+ */
 \r
 StatusType SetAbsAlarm(AlarmType AlarmId, TickType Start, TickType Cycle) {\r
 \r
@@ -176,7 +207,8 @@ StatusType SetAbsAlarm(AlarmType AlarmId, TickType Start, TickType Cycle) {
 \r
        Irq_Save(flags);\r
        if( aPtr->active == 1 ) {\r
-               rv = E_OS_STATE;\r
+               rv = E_OS_STATE;
+               Irq_Restore(flags);\r
                goto err;\r
        }\r
 \r
index f44c7ed7fcff36b911e15a9eba162e837538bf34..d4abacb5913812dc64e31dfd171baddd4d97469c 100644 (file)
@@ -202,30 +202,23 @@ TickType GetOsTick( void ) {
  * Initialize alarms and schedule-tables for the counters
  */
 void Os_CounterInit( void ) {
-       OsCounterType *counter;
-       OsAlarmType *alarm_obj;
-       OsSchTblType *sched_obj;
-       /* Create a list from the counter to the alarms */
-       for(int i=0; i < Os_CfgGetCounterCnt() ; i++) {
-               counter = Os_CfgGetCounter(i);
-               // Alarms
-               SLIST_INIT(&counter->alarm_head);
-               for(int j=0; j < Os_CfgGetAlarmCnt(); j++ ) {
-                       alarm_obj = Os_CfgGetAlarmObj(j);
-                       // Add the alarms
-                       SLIST_INSERT_HEAD(&counter->alarm_head,alarm_obj, alarm_list);
-               }
-               // Schedule tables
-               SLIST_INIT(&counter->sched_head);
-               for(int j=0; j < Os_CfgGetSchedCnt(); j++ ) {
-                       sched_obj = Os_CfgGetSched(j);
-                       // Add the alarms
-                       SLIST_INSERT_HEAD(&counter->sched_head,
-                                                               sched_obj,
-                                                               sched_list);
-               }
+       OsCounterType *cPtr;
+       OsAlarmType *aPtr;
+       OsSchTblType *sPtr;
+
+       /* Add the alarms to counters */
+       for(int i=0; i < Os_CfgGetAlarmCnt(); i++ ) {
+               aPtr = Os_CfgGetAlarmObj(i);
+               cPtr = aPtr->counter;
+               SLIST_INSERT_HEAD(&cPtr->alarm_head,aPtr, alarm_list);
+       }
 
+       /* Add the schedule tables to counters */
+       for(int i=0; i < Os_CfgGetSchedCnt(); i++ ) {
 
+               sPtr = Os_CfgGetSched(i);
+               cPtr = sPtr->counter;
+               SLIST_INSERT_HEAD(&cPtr->sched_head, sPtr, sched_list);
        }
 }
 \r
index bfe20a062164fb9d1e67b352644cc16e27a0a6d8..44678bfdab9638cd971b7c3fcd761b9a589177df 100644 (file)
@@ -142,7 +142,20 @@ StatusType SetEvent( TaskType TaskID, EventMaskType Mask ) {
 \r
        OS_STD_END_2(OSServiceId_SetEvent,TaskID, Mask);\r
 }\r
-\r
+
+
+/**
+ * This service returns the current state of all event bits of the task
+ * <TaskID>, not the events that the task is waiting for.
+ * The service may be called from interrupt service routines, task
+ * level and some hook routines (see Figure 12-1).
+ *  The current status of the event mask of task <TaskID> is copied
+ * to <Event>.
+ *
+ * @param TaskId Task whose event mask is to be returned.
+ * @param Mask   Reference to the memory of the return data.
+ * @return
+ */\r
 StatusType GetEvent( TaskType TaskId, EventMaskRefType Mask) {\r
 \r
        OsPcbType *dest_pcb;\r
@@ -160,7 +173,15 @@ StatusType GetEvent( TaskType TaskId, EventMaskRefType Mask) {
        OS_STD_END_2(OSServiceId_GetEvent,TaskId, Mask);\r
 }\r
 \r
-\r
+
+/**
+ * The events of the extended task calling ClearEvent are cleared
+ * according to the event mask <Mask>.
+ *
+ *
+ * @param Mask
+ * @return
+ */\r
 StatusType ClearEvent( EventMaskType Mask) {\r
     StatusType rv = E_OK;\r
        OsPcbType *pcb;
index 9aa5edb7f60c9a507d8fde72e34ba5550ecc06c6..885f1d176a9b507e3f347b80b3849fc08ba80663 100644 (file)
@@ -125,7 +125,10 @@ static void ScheduleTableConsistenyCheck( OsSchTblType *sTblPtr ) {
                /** @req OS408 */
                for(iter=0; iter  <  SA_LIST_CNT(&sTblPtr->expirePointList) ; iter++) {
                        delta = SA_LIST_GET(&sTblPtr->expirePointList,iter)->offset - delta;
-                       assert( delta >=  minCycle );
+                       /* initial offset may be zero (OS443) */
+                       if(iter!=0) {
+                               assert( delta >=  minCycle );
+                       }
                        assert( delta <=  maxValue );
                }
 
index 46ee368b855959e30a8644fd6451ce988cbb038f..c418f9473b2ea0bd7a56f01968e383488bbf0519 100644 (file)
@@ -1,7 +1,7 @@
 \r
 # Figure out the most of the modules to use.\r
 OPTIMAL_USE = T32_TERM SIMPLE_PRINTF RAMLOG\r
-MOD_USE+=KERNEL MCU $(filter $(OPTIMAL_USE),$(MOD_AVAIL))\r
+MOD_USE+=KERNEL MCU COMMON NEWLIB DET ECUM $(filter $(OPTIMAL_USE),$(MOD_AVAIL))\r
 $(warning $(MOD_USE)) \r
 #MOD_USE+=KERNEL MCU T32_TERM SIMPLE_PRINTF RAMLOG\r
 \r
index d3bcc746b03f9585e912a7b38c9c0afabcc5f057..919a2d4ff2e8068805f784ab4f680d8dc9dec6b9 100644 (file)
@@ -9,7 +9,7 @@
 * 
 * 
 * Generated by Arctic Studio (http://arccore.com)
-*           on Wed May 05 23:09:13 CEST 2010
+*           on Tue Jun 08 08:30:59 CEST 2010
 */
 
        \r
index 39603564ed59dd59fde8274800572cb451394d2d..f71ef2a4d60e17bd5215d97f481dd1339f8ce60f 100644 (file)
@@ -9,7 +9,7 @@
 * 
 * 
 * Generated by Arctic Studio (http://arccore.com)
-*           on Wed May 05 23:09:13 CEST 2010
+*           on Tue Jun 08 08:30:59 CEST 2010
 */
 
 
index 3087bd283752474c9c70e26c34601e48c8664195..d1c438a210b3cf2fb56c4331d46145e289c0b519 100644 (file)
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * for more details.
  * -------------------------------- Arctic Core ------------------------------*/
-\r
+/*
+ * Contains mostly macros for the test-system. Most macro's have the same
+ * name as in embUnit, to make it easier to use.
+ *
+ */
+
 #ifndef OS_TEST_H_\r
 #define OS_TEST_H_\r
 \r
 #include "test_framework.h"
 #include "debug.h"\r
 \r
-typedef void (*test_func_t)( void );\r
+typedef void (*test_func_t)( void );
 \r
+
+#define TEST_INIT()                    printf("Test init\n");\r
 #define TEST_FAIL(_text)               test_fail((_text),  __FILE__,  __LINE__, __FUNCTION__ )\r
-#define TEST_OK()                              test_ok();\r
+#define TEST_OK()                              test_ok();
 #define TEST_ASSERT(_cond)                     if(!(_cond)) { TEST_FAIL(#_cond); }
+/* Start to run a test */
 #define TEST_RUN()                             printf("Running test %d\n",test_nr);
+/* Indicate that a test is done */
+//#define TEST_DONE()
+#define TEST_START(_str,_nr)           testStart(_str,_nr)
+#define TEST_NEXT(_str,_next_nr)       testEnd(); testStart(_str,_next_nr);
 \r
 \r
 extern int test_suite;\r
diff --git a/system/kernel/testsystem/suite_01/Os_Cfg.c b/system/kernel/testsystem/suite_01/Os_Cfg.c
new file mode 100644 (file)
index 0000000..8e61f32
--- /dev/null
@@ -0,0 +1,324 @@
+/* 
+* Configuration of module Os (Os_Cfg.c)
+* 
+* Created by: 
+* Configured for (MCU): MPC551x
+* 
+* Module editor vendor:  ArcCore
+* Module editor version: 2.0.7
+* 
+* 
+* Generated by Arctic Studio (http://arccore.com)
+*           on Tue Jun 08 20:51:20 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_OsTick,\r
+                                       "OsTick",\r
+                                       COUNTER_TYPE_HARD,\r
+                                       COUNTER_UNIT_NANO,\r
+                                       0xffff,\r
+                                       1,\r
+                                       1,\r
+                                       0),\r
+       GEN_COUNTER(    COUNTER_ID_soft_1,\r
+                                       "soft_1",\r
+                                       COUNTER_TYPE_SOFT,\r
+                                       COUNTER_UNIT_NANO,\r
+                                       65535,\r
+                                       1,\r
+                                       1,\r
+                                       0),\r
+       GEN_COUNTER(    COUNTER_ID_soft_2,\r
+                                       "soft_2",\r
+                                       COUNTER_TYPE_SOFT,\r
+                                       COUNTER_UNIT_NANO,\r
+                                       65535,\r
+                                       1,\r
+                                       1,\r
+                                       0),\r
+};\r
+\r
+CounterType Os_Arc_OsTickCounter = COUNTER_ID_OsTick;\r
+\r
+// ##################################    ALARMS     ################################\r
+\r
+GEN_ALARM_HEAD {\r
+       GEN_ALARM(      ALARM_ID_c_soft_1_inc_counter_2,\r
+                               "c_soft_1_inc_cou",\r
+                               COUNTER_ID_soft_1,\r
+                               NULL,\r
+                               ALARM_ACTION_INCREMENTCOUNTER,\r
+                               NULL,\r
+                               NULL,\r
+                               COUNTER_ID_soft_2 ),\r
+       GEN_ALARM(      ALARM_ID_c_soft_1_setevent_etask_m,\r
+                               "c_soft_1_seteven",\r
+                               COUNTER_ID_soft_1,\r
+                               NULL,\r
+                               ALARM_ACTION_SETEVENT,\r
+                               TASK_ID_etask_sup_m,\r
+                               EVENT_MASK_notif,\r
+                               NULL ),\r
+       GEN_ALARM(      ALARM_ID_c_sys_1_setevent_etask_m,\r
+                               "c_sys_1_setevent",\r
+                               COUNTER_ID_OsTick,\r
+                               NULL,\r
+                               ALARM_ACTION_SETEVENT,\r
+                               TASK_ID_etask_sup_m,\r
+                               EVENT_MASK_notif,\r
+                               NULL ),\r
+       GEN_ALARM(      ALARM_ID_c_sys_activate_btask_h,\r
+                               "c_sys_activate_b",\r
+                               COUNTER_ID_OsTick,\r
+                               NULL,\r
+                               ALARM_ACTION_ACTIVATETASK,\r
+                               TASK_ID_btask_sup_h,\r
+                               NULL,\r
+                               NULL ),\r
+};\r
+\r
+// ################################    RESOURCES     ###############################\r
+GEN_RESOURCE_HEAD {\r
+       GEN_RESOURCE(\r
+               RES_ID_int_1,\r
+               RESOURCE_TYPE_INTERNAL,\r
+               0\r
+       ),\r
+       GEN_RESOURCE(\r
+               RES_ID_std_prio_3,\r
+               RESOURCE_TYPE_STANDARD,\r
+               0\r
+       ),\r
+       GEN_RESOURCE(\r
+               RES_ID_std_prio_4,\r
+               RESOURCE_TYPE_STANDARD,\r
+               0\r
+       ),\r
+       GEN_RESOURCE(\r
+               RES_ID_std_prio_5,\r
+               RESOURCE_TYPE_STANDARD,\r
+               0\r
+       ),\r
+};\r
+\r
+// ##############################    STACKS (TASKS)     ############################\r
+DECLARE_STACK(OsIdle,OS_OSIDLE_STACK_SIZE);\r
+DECLARE_STACK(btask_sup_h,2048);\r
+DECLARE_STACK(btask_sup_l,2048);\r
+DECLARE_STACK(btask_sup_m,2048);\r
+DECLARE_STACK(etask_master,2048);\r
+DECLARE_STACK(etask_sup_h,2048);\r
+DECLARE_STACK(etask_sup_l,2048);\r
+DECLARE_STACK(etask_sup_m,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_sup_h,\r
+               6,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               RES_MASK_std_prio_3 | RES_MASK_std_prio_4 | RES_MASK_std_prio_5 | 0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               btask_sup_l,\r
+               2,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               RES_MASK_std_prio_3 | RES_MASK_std_prio_4 | RES_MASK_std_prio_5 | 0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               btask_sup_m,\r
+               4,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               RES_MASK_std_prio_3 | RES_MASK_std_prio_4 | RES_MASK_std_prio_5 | 0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_ETASK(\r
+               etask_master,\r
+               1,\r
+               FULL,\r
+               TRUE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_sup_h,\r
+               6,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               RES_MASK_std_prio_3 | RES_MASK_std_prio_4 | RES_MASK_std_prio_5 | 0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_sup_l,\r
+               2,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               RES_MASK_std_prio_3 | RES_MASK_std_prio_4 | RES_MASK_std_prio_5 | 0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_sup_m,\r
+               4,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               RES_MASK_std_prio_3 | RES_MASK_std_prio_4 | RES_MASK_std_prio_5 | 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 data 0\r
+\r
+GEN_SCHTBL_TASK_LIST_HEAD( 0, 5 ) { \r
+       \r
+       TASK_ID_etask_sup_m,\r
+       \r
+};\r
+\r
+\r
+\r
+\r
+GEN_SCHTBL_EVENT_LIST_HEAD( 0, 7 ) {\r
+       \r
+       { \r
+               EVENT_MASK_notif, \r
+               TASK_ID_etask_sup_m \r
+       },\r
+       \r
+};\r
+\r
+\r
+GEN_SCHTBL_TASK_LIST_HEAD( 0, 11 ) { \r
+       \r
+       TASK_ID_etask_sup_m,\r
+       \r
+};\r
+\r
+GEN_SCHTBL_EVENT_LIST_HEAD( 0, 11 ) {\r
+       \r
+       { \r
+               EVENT_MASK_notif, \r
+               TASK_ID_etask_sup_m \r
+       },\r
+       \r
+};\r
+\r
+\r
+GEN_SCHTBL_EXPIRY_POINT_HEAD( 0 ) {\r
+       GEN_SCHTBL_EXPIRY_POINT_W_TASK(0, 5),
+       GEN_SCHTBL_EXPIRY_POINT_W_EVENT(0, 7),
+       GEN_SCHTBL_EXPIRY_POINT_W_TASK_EVENT(0, 11),
+       \r
+};\r
+\r
+\r
+// Table data 1\r
+\r
+GEN_SCHTBL_TASK_LIST_HEAD( 1, 2 ) { \r
+       \r
+       TASK_ID_etask_sup_m,\r
+       \r
+};\r
+\r
+\r
+\r
+GEN_SCHTBL_EXPIRY_POINT_HEAD( 1 ) {\r
+       GEN_SCHTBL_EXPIRY_POINT_W_TASK(1, 2),
+       \r
+};\r
+\r
+\r
+// Table heads\r
+GEN_SCHTBL_HEAD {\r
+       GEN_SCHEDULETABLE(\r
+               0,\r
+               "0",\r
+           COUNTER_ID_soft_1,\r
+           SINGLE_SHOT,\r
+               15,\r
+               NULL\r
+       ),\r
+       GEN_SCHEDULETABLE(\r
+               1,\r
+               "1",\r
+           COUNTER_ID_soft_1,\r
+           SINGLE_SHOT,\r
+               5,\r
+               NULL\r
+       ),\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_01/Os_Cfg.h b/system/kernel/testsystem/suite_01/Os_Cfg.h
new file mode 100644 (file)
index 0000000..14e9d15
--- /dev/null
@@ -0,0 +1,108 @@
+/* 
+* Configuration of module Os (Os_Cfg.h)
+* 
+* Created by: 
+* Configured for (MCU): MPC551x
+* 
+* Module editor vendor:  ArcCore
+* Module editor version: 2.0.7
+* 
+* 
+* Generated by Arctic Studio (http://arccore.com)
+*           on Tue Jun 08 20:51:20 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
+#define ALARM_ID_c_soft_1_inc_counter_2        0\r
+#define ALARM_ID_c_soft_1_setevent_etask_m     1\r
+#define ALARM_ID_c_sys_1_setevent_etask_m      2\r
+#define ALARM_ID_c_sys_activate_btask_h        3\r
+\r
+// Counter Id's\r
+#define COUNTER_ID_OsTick      0\r
+#define COUNTER_ID_soft_1      1\r
+#define COUNTER_ID_soft_2      2\r
+\r
+// Counter macros\r
+#define OSMAXALLOWEDVALUE_OsTick 65535\r
+#define OSMAXALLOWEDVALUE_soft_1 65535\r
+#define OSMAXALLOWEDVALUE_soft_2 65535\r
+\r
+\r
+// Event masks\r
+#define EVENT_MASK_kill        32768\r
+#define EVENT_MASK_notif       1\r
+\r
+// Isr Id's\r
+\r
+// Resource Id's\r
+#define RES_ID_int_1   0\r
+#define RES_ID_std_prio_3      1\r
+#define RES_ID_std_prio_4      2\r
+#define RES_ID_std_prio_5      3\r
+\r
+// Linked resource id's\r
+\r
+// Resource masks\r
+#define RES_MASK_int_1 (1 << 0)\r
+#define RES_MASK_std_prio_3    (1 << 1)\r
+#define RES_MASK_std_prio_4    (1 << 2)\r
+#define RES_MASK_std_prio_5    (1 << 3)\r
+\r
+// Task Id's\r
+#define TASK_ID_OsIdle 0\r
+#define TASK_ID_btask_sup_h    1\r
+#define TASK_ID_btask_sup_l    2\r
+#define TASK_ID_btask_sup_m    3\r
+#define TASK_ID_etask_master   4\r
+#define TASK_ID_etask_sup_h    5\r
+#define TASK_ID_etask_sup_l    6\r
+#define TASK_ID_etask_sup_m    7\r
+\r
+// Task entry points\r
+void OsIdle( void );\r
+void btask_sup_h( void );\r
+void btask_sup_l( void );\r
+void btask_sup_m( void );\r
+void etask_master( void );\r
+void etask_sup_h( void );\r
+void etask_sup_l( void );\r
+void etask_sup_m( void );\r
+\r
+// Schedule table id's\r
+#define SCHTBL_ID_0  0\r
+#define SCHTBL_ID_1  1\r
+\r
+// Stack size\r
+#define OS_INTERRUPT_STACK_SIZE        2048\r
+#define OS_OSIDLE_STACK_SIZE 512\r
+\r
+#define OS_ALARM_CNT                   4 \r
+#define OS_TASK_CNT                            8\r
+#define OS_SCHTBL_CNT                  2\r
+#define OS_COUNTER_CNT                 3\r
+#define OS_EVENTS_CNT                  2\r
+#define OS_ISRS_CNT                            0\r
+#define OS_RESOURCE_CNT                        4\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_01/build_config.mk b/system/kernel/testsystem/suite_01/build_config.mk
new file mode 100644 (file)
index 0000000..c418f94
--- /dev/null
@@ -0,0 +1,7 @@
+\r
+# Figure out the most of the modules to use.\r
+OPTIMAL_USE = T32_TERM 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 T32_TERM SIMPLE_PRINTF RAMLOG\r
+\r
diff --git a/system/kernel/testsystem/suite_01/config_01.arxml b/system/kernel/testsystem/suite_01/config_01.arxml
new file mode 100644 (file)
index 0000000..0d4d303
--- /dev/null
@@ -0,0 +1,788 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.2"><TOP-LEVEL-PACKAGES>\r
+    <AR-PACKAGE UUID="822fb2e1-4171-4ec3-812a-b58265eb646e">\r
+      <SHORT-NAME>testsystem</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="adececfa-6614-4f2a-bc3b-0de7440970a7">\r
+          <SHORT-NAME>config_01</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <DOC-REVISIONS>\r
+              <DOC-REVISION>\r
+                <REVISION-LABEL>Rev</REVISION-LABEL>\r
+              </DOC-REVISION>\r
+            </DOC-REVISIONS>\r
+            <SDGS>\r
+              <SDG GID="Arccore::EcuOptions">\r
+                <SD GID="MCU">MPC551x</SD>\r
+                <SD GID="GENDIR">/arc/system/kernel/testsystem/config</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <MODULE-REFS>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/testsystem/Os</MODULE-REF>\r
+          </MODULE-REFS>\r
+        </ECU-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="9810a6d9-2cc9-4b23-a969-e4662fdc4a40">\r
+          <SHORT-NAME>Os</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.4</SD>\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Os</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="c28c1e41-ab85-44af-8c08-8bfe14a614d8">\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/ArcCoreOsDebugResource</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
+                <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/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
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="225d4007-aaa5-4862-9c24-1c00c1418e51">\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="18ffb863-c03b-485d-9d2f-6f3516d63901">\r
+              <SHORT-NAME>int_1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsResource</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsResource/OsResourceProperty</DEFINITION-REF>\r
+                  <VALUE>INTERNAL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="86681234-fe16-4039-82aa-b7d47e2e38ae">\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="5f49198a-5604-45b0-b4ea-e5a711e5416f">\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="1f1560f5-2306-4238-a7a4-50d5bdc6a359">\r
+              <SHORT-NAME>etask_sup_l</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
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_3</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_4</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_5</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="c5691264-811a-4714-8c56-37affb1ba27c">\r
+              <SHORT-NAME>etask_sup_m</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
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_3</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_4</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_5</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="6d2cdf4d-467d-43a0-a7b6-5f23a73fbf12">\r
+              <SHORT-NAME>etask_sup_h</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>6</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
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_3</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_4</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_5</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="f3adef46-f5f6-4707-af6e-a771ffec9385">\r
+              <SHORT-NAME>btask_sup_l</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
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_3</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_4</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_5</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="8d1d4b20-17b3-4b75-947f-8f844ad34a13">\r
+              <SHORT-NAME>btask_sup_m</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
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_3</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_4</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_5</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="7a61a623-77b7-49e9-896f-375ca12b1441">\r
+              <SHORT-NAME>btask_sup_h</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>6</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
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_3</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_4</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_5</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="a05049bd-092b-4199-9de0-b0770a57c029">\r
+              <SHORT-NAME>std_prio_3</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsResource</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsResource/OsResourceProperty</DEFINITION-REF>\r
+                  <VALUE>STANDARD</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="a9b777b9-66df-48ee-9cc2-9d91e70d769b">\r
+              <SHORT-NAME>std_prio_4</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsResource</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsResource/OsResourceProperty</DEFINITION-REF>\r
+                  <VALUE>STANDARD</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="e0499b83-ea54-4b70-8023-a1c0912d3496">\r
+              <SHORT-NAME>std_prio_5</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsResource</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsResource/OsResourceProperty</DEFINITION-REF>\r
+                  <VALUE>STANDARD</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="535d1101-3931-4273-81af-00627d240a77">\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>1</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="19e4f863-4f93-4692-ade2-6e2451d7c194">\r
+              <SHORT-NAME>kill</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>32768</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="637fd8fb-42a3-4c05-9183-885a432a8b25">\r
+              <SHORT-NAME>0</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableDuration</DEFINITION-REF>\r
+                  <VALUE>15</VALUE>\r
+                </INTEGER-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableRepeating</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/soft_1</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="91fe76c0-a4f8-41cd-bd0c-2a54607e170c">\r
+                  <SHORT-NAME>ExpiryPoint</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset</DEFINITION-REF>\r
+                      <VALUE>5</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="29ae18ef-642a-49b0-89e8-f084c8be0184">\r
+                      <SHORT-NAME>TaskActivation1</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation</DEFINITION-REF>\r
+                      <REFERENCE-VALUES>\r
+                        <REFERENCE-VALUE>\r
+                          <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation/OsScheduleTableActivateTaskRef</DEFINITION-REF>\r
+                          <VALUE-REF DEST="CONTAINER">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+                        </REFERENCE-VALUE>\r
+                      </REFERENCE-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="1eeb83cf-6e40-4459-b43b-519938cfeacf">\r
+                  <SHORT-NAME>ExpiryPoint1</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset</DEFINITION-REF>\r
+                      <VALUE>7</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="3eee4e25-4387-4890-99ec-971b1f818ff7">\r
+                      <SHORT-NAME>EventSetting1</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting</DEFINITION-REF>\r
+                      <REFERENCE-VALUES>\r
+                        <REFERENCE-VALUE>\r
+                          <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventRef</DEFINITION-REF>\r
+                          <VALUE-REF DEST="CONTAINER">/testsystem/Os/notif</VALUE-REF>\r
+                        </REFERENCE-VALUE>\r
+                        <REFERENCE-VALUE>\r
+                          <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventTaskRef</DEFINITION-REF>\r
+                          <VALUE-REF DEST="CONTAINER">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+                        </REFERENCE-VALUE>\r
+                      </REFERENCE-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="ba969f84-2712-4a6a-9545-af7170e843f1">\r
+                  <SHORT-NAME>ExpiryPoint2</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset</DEFINITION-REF>\r
+                      <VALUE>11</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="a86f8b0e-fe35-4b43-b574-fdfbd1f6cf4f">\r
+                      <SHORT-NAME>EventSetting1</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting</DEFINITION-REF>\r
+                      <REFERENCE-VALUES>\r
+                        <REFERENCE-VALUE>\r
+                          <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventRef</DEFINITION-REF>\r
+                          <VALUE-REF DEST="CONTAINER">/testsystem/Os/notif</VALUE-REF>\r
+                        </REFERENCE-VALUE>\r
+                        <REFERENCE-VALUE>\r
+                          <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventTaskRef</DEFINITION-REF>\r
+                          <VALUE-REF DEST="CONTAINER">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+                        </REFERENCE-VALUE>\r
+                      </REFERENCE-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="e37a1042-45ed-46f8-ae6d-83230d160aea">\r
+                      <SHORT-NAME>TaskActivation1</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation</DEFINITION-REF>\r
+                      <REFERENCE-VALUES>\r
+                        <REFERENCE-VALUE>\r
+                          <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation/OsScheduleTableActivateTaskRef</DEFINITION-REF>\r
+                          <VALUE-REF DEST="CONTAINER">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+                        </REFERENCE-VALUE>\r
+                      </REFERENCE-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="6746f7ae-bbee-45d9-bc71-3268c81fb344">\r
+              <SHORT-NAME>OsTick</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="72ed3e36-bb2e-420e-a74e-094b97f07fd8">\r
+              <SHORT-NAME>soft_1</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>SOFTWARE</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="2d133eeb-5148-444e-9b31-237b57e098b4">\r
+              <SHORT-NAME>1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableDuration</DEFINITION-REF>\r
+                  <VALUE>5</VALUE>\r
+                </INTEGER-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableRepeating</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/soft_1</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="460781a7-a783-492c-8e2a-589e5d6fedbb">\r
+                  <SHORT-NAME>ExpiryPoint</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset</DEFINITION-REF>\r
+                      <VALUE>2</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="72ad160e-bf1e-4442-a8f0-a65a7ec8f816">\r
+                      <SHORT-NAME>TaskActivation1</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation</DEFINITION-REF>\r
+                      <REFERENCE-VALUES>\r
+                        <REFERENCE-VALUE>\r
+                          <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation/OsScheduleTableActivateTaskRef</DEFINITION-REF>\r
+                          <VALUE-REF DEST="CONTAINER">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+                        </REFERENCE-VALUE>\r
+                      </REFERENCE-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="dede2d6e-0f82-4652-86b6-78c1360c1592">\r
+              <SHORT-NAME>c_sys_activate_btask_h</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="97c6029d-cef4-4bb1-bab0-f882479de012">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/testsystem/Os/btask_sup_h</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="17540841-1b7d-4421-be1a-2f116364deba">\r
+              <SHORT-NAME>c_sys_1_setevent_etask_m</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="7ebab0c9-e8c1-4371-b439-a901d6122efc">\r
+                  <SHORT-NAME>OsAlarmSetEvent</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/testsystem/Os/notif</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="f6022231-7387-4d18-9833-be28dce71f30">\r
+              <SHORT-NAME>c_soft_1_setevent_etask_m</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/soft_1</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="f832f963-085b-45f1-a4a5-507e10cef798">\r
+                  <SHORT-NAME>OsAlarmSetEvent</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/testsystem/Os/notif</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="85e281ff-fa24-4ade-867b-4126a3bc99e2">\r
+              <SHORT-NAME>c_soft_1_inc_counter_2</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/testsystem/Os/soft_1</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="b5cc2bdd-1f43-414d-bea7-d7cb4d559d3b">\r
+                  <SHORT-NAME>OsAlarmIncrementCounter</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmIncrementCounter</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmIncrementCounter/OsAlarmIncrementCounterRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/testsystem/Os/soft_2</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="f510c7bd-12d7-475b-88cf-387b50e955c9">\r
+              <SHORT-NAME>soft_2</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>SOFTWARE</VALUE>\r
+                </ENUMERATION-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_01/makefile b/system/kernel/testsystem/suite_01/makefile
new file mode 100644 (file)
index 0000000..ccf8090
--- /dev/null
@@ -0,0 +1,71 @@
+\r
+# included from rules.mk\r
+\r
+# =======================================================================\r
+# APPLICATION\r
+\r
+obj-y += test_master.o\r
+obj-y += test_01_task.o\r
+obj-y += test_02_resource.o\r
+obj-y += test_03_alarm.o\r
+obj-y += test_04_stable.o\r
+obj-y += test_05_const.o\r
+obj-y += test_06_event.o\r
+\r
+obj-y += test_framework.o\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
+MOD_USE+=T32_TERM\r
+#MOD_USE+=PROTECTIONHOOK STARTUPHOOK SHUTDOWNHOOK ERRORHOOK                    1\r
+#MOD_USE+=PRETASKHOOK POSTTASKHOOK\r
+CFG+=CONSOLE_T32\r
+CFG+=CONSOLE_WINIDEA\r
+\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 = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
+#ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\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_01/test_01_task.c b/system/kernel/testsystem/suite_01/test_01_task.c
new file mode 100644 (file)
index 0000000..ce87d76
--- /dev/null
@@ -0,0 +1,243 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+/*\r
+ * Tests tasks:\r
+ *\r
+ * OSEK\r
+ * - ActivateTask   E_OS_ID, E_OS_LIMIT\r
+ * - TerminateTask  E_OS_RESOURCE, E_OS_CALLEVEL\r
+ * - ChainTask      E_OS_ID, E_OS_LIMIT, E_OS_RESOURCE, E_OS_CALLLEVEL\r
+ * - Schedule       E_OS_CALLEVEL, E_OS_RESOURCE\r
+ * - GetTaskID\r
+ * - GetTaskState   E_OS_ID\r
+ *\r
+ *\r
+ * Limitations:\r
+ * - No way to detect if in ISR1 or hooks\r
+ * - NON tasks are not tested.\r
+ * - ActivateTask() with own taskid?\r
+ */\r
+\r
+#include "Os.h"\r
+#include "os_test.h"\r
+#include "arc.h"\r
+\r
+int btaskRunCnt = 0;\r
+\r
+static int status_100 = 0;\r
+\r
+void isr_l(void ) {\r
+       StatusType rv;\r
+       switch(test_nr) {\r
+       case 11:\r
+               rv = TerminateTask();\r
+               TEST_ASSERT(rv=E_OS_CALLEVEL);\r
+               break;\r
+       case 12:\r
+               break;\r
+       case 13:\r
+               break;\r
+       default:\r
+               while(1);\r
+       }\r
+}\r
+\r
+void etask_sup_l_01(void) {\r
+       _Bool done = 0;\r
+       StatusType rv;\r
+\r
+       while (!done) {\r
+               TEST_RUN();\r
+\r
+               switch (test_nr) {\r
+               case 1:\r
+                       /*@req E_OS_ID ActivateTask */\r
+                       rv = ActivateTask(TASK_ID_ILL);\r
+                       TEST_ASSERT(rv == E_OS_ID);\r
+                       test_nr = 2;\r
+                       break;\r
+               case 2:\r
+                       /*@req E_OS_LIMIT ActivateTask\r
+                        * Test the activation limit and check that activated task is run\r
+                        * the activation limit times */\r
+\r
+                       /* Activate higher prio task to do the test */\r
+                       rv = ActivateTask(TASK_ID_btask_sup_h);\r
+                       TEST_ASSERT(rv == E_OK);\r
+\r
+                       /* Was it run activation times? */\r
+                       TEST_ASSERT(btaskRunCnt == Os_ArcTest_GetTaskActivationLimit(TASK_ID_btask_sup_m));\r
+                       test_nr = 10;\r
+                       break;\r
+               case 10:\r
+                       /*@req E_OS_RESOURCE TerminateTask\r
+                        * Terminate a task that still holds resources\r
+                        * This is done in the TASK_ID_btask_sup_m task..\r
+                        */\r
+                       rv = ActivateTask(TASK_ID_btask_sup_m);\r
+                       TEST_ASSERT(rv == E_OK);\r
+                       test_nr++;\r
+                       break;\r
+               case 11:\r
+                       /*@req E_OS_CALLEVEL TerminateTask */\r
+                       Os_ArcTest_SetIrqNestLevel(1);\r
+                       isr_l();\r
+                       Os_ArcTest_SetIrqNestLevel(0);\r
+                       test_nr=20;\r
+                       break;\r
+\r
+               case 20:\r
+                       /*@req E_OS_ID ChainTask */\r
+                       rv = ChainTask(TASK_ID_ILL);\r
+                       TEST_ASSERT(rv == E_OS_ID);\r
+                       test_nr = 100;\r
+               case 21:\r
+                       /*@req E_OS_LIMIT ChainTask */\r
+               case 22:\r
+                       /*@req E_OS_RESOURCE ChainTask */\r
+               case 23:\r
+                       /*@req E_OS_CALLLEVEL ChainTask */\r
+                       break;\r
+\r
+               case 30:\r
+                       /*@req E_OS_CALLEVEL Schedule */\r
+               case 31:\r
+                       /*@req E_OS_RESOURCE Schedule */\r
+                       break;\r
+\r
+               case 100:\r
+                       /* Check that tasks as run in priority order and that the oldest task\r
+                        * of the same priority should be scheduled first.\r
+                        * 1. esup_l: Activate(sup_m)\r
+                        * 2. bsup_m: Activate(sup_l)  (should not be taken)\r
+                        * 3. bsup_m: Activate(sup_h)  (taken)\r
+                        * 4. bsup_h: Terminate()\r
+                        *   (We should now have bsup_m, esup_l, bsup_l )\r
+                        * 5. bsup_m: Terminate()\r
+                        * 6. esup_l : Terminate()\r
+                        * 7. bsup_l : Activate(esup_l)  (found by dispatcher)\r
+                        * 8. esup_l:  Back again!!!!\r
+                        *\r
+                        * */\r
+                       if(status_100==6) {\r
+                               test_nr=101;\r
+                               break;\r
+                       }\r
+                       btaskRunCnt = 0;\r
+                       rv = ActivateTask(TASK_ID_btask_sup_m);\r
+                       TEST_ASSERT(status_100=3);\r
+                       status_100=4;\r
+                       TerminateTask();  // Step 6.\r
+\r
+                       // Should never get here since we have restarded ourselves.\r
+                       assert(0);\r
+                       break;\r
+               case 101:\r
+                       /* End Testing of this module */\r
+                       TerminateTask();\r
+                       break;\r
+               default:\r
+                       while(1);\r
+               }\r
+       }\r
+}\r
+\r
+void btask_sup_l_01( void ) {\r
+       switch(test_nr){\r
+       case 100:\r
+               btaskRunCnt++;\r
+               /* Make it go up again */\r
+               TEST_ASSERT(status_100=4);\r
+               status_100=5;\r
+               ActivateTask(TASK_ID_etask_sup_l);  // Step 7.\r
+               TEST_ASSERT(status_100=5);\r
+               status_100=6;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+}\r
+\r
+void btask_sup_m_01( void ) {\r
+       int rv;\r
+       switch(test_nr){\r
+       case 2:\r
+               btaskRunCnt++;\r
+               TerminateTask();\r
+               break;\r
+       case 10:\r
+               rv = GetResource(RES_ID_std_prio_3);\r
+               TEST_ASSERT(rv == E_OK);\r
+\r
+               rv = TerminateTask();\r
+               TEST_ASSERT(rv==E_OS_RESOURCE);\r
+\r
+               rv = ReleaseResource(RES_ID_std_prio_3);\r
+               TEST_ASSERT(rv==E_OK);\r
+               TerminateTask();\r
+               break;\r
+       case 100:\r
+               /* We got here from etask_l, so it should be oldest */\r
+               rv = ActivateTask(TASK_ID_btask_sup_l);\r
+               TEST_ASSERT(rv==E_OK);\r
+               TEST_ASSERT(status_100==0);\r
+               status_100=1;\r
+               rv = ActivateTask(TASK_ID_btask_sup_h);\r
+               TEST_ASSERT(rv==E_OK);\r
+               TEST_ASSERT(status_100==2);\r
+               status_100=3;\r
+               break;\r
+       default:\r
+               while(1);\r
+       }\r
+\r
+}\r
+\r
+void btask_sup_h_01(void) {\r
+       StatusType rv;\r
+       int limit;\r
+\r
+       switch (test_nr) {\r
+       case 2:\r
+               /* Activate a basic task to many times */\r
+               limit = Os_ArcTest_GetTaskActivationLimit(TASK_ID_btask_sup_m);\r
+               for (int i = 0; i < limit; i++) {\r
+                       rv = ActivateTask(TASK_ID_btask_sup_m);\r
+                       TEST_ASSERT(rv == E_OK);\r
+               }\r
+               rv = ActivateTask(TASK_ID_btask_sup_m);\r
+               TEST_ASSERT(rv == E_OS_LIMIT);\r
+               /* Let the us terminate and count the number of times the tasks\r
+                * was actually activated\r
+                *\r
+                * TODO:@req Since the etask and btask have the same priority, who gets scheduled?\r
+                *           Oldest is scheduled first..\r
+                * */\r
+               break;\r
+       case 100:\r
+               TEST_ASSERT(status_100==1);\r
+               status_100=2;\r
+               break;\r
+       default:\r
+               while(1);\r
+\r
+       }\r
+}\r
+\r
+DECLARE_TEST_ETASK(01, etask_sup_l_01, NULL, NULL );\r
+DECLARE_TEST_BTASK(01, btask_sup_l_01, btask_sup_m_01, btask_sup_h_01);\r
+\r
diff --git a/system/kernel/testsystem/suite_01/test_02_resource.c b/system/kernel/testsystem/suite_01/test_02_resource.c
new file mode 100644 (file)
index 0000000..7f66b14
--- /dev/null
@@ -0,0 +1,138 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+/*\r
+ * Tests:\r
+ *\r
+ * OSEK:\r
+ * - GetResource                       E_OS_ID, E_OS_ACCESS\r
+ * - ReleaseResource                   E_OS_ID, E_OS_ACCESS, E_OS_NOFUNC\r
+ *\r
+ * More tests here:\r
+ * - GetResource(RES_SCHEDULER)\r
+ * - Check the ceiling protocol\r
+ * - Linked resources\r
+ * - Nested allocation of the same resource is forbidden.\r
+ *\r
+ *\r
+ * Limitations:\r
+ * - Internal resources.\r
+ */\r
+\r
+#include "Os.h"\r
+#include "os_test.h"\r
+#include "arc.h"\r
+#include "irq.h"\r
+\r
+\r
+static int isr2RunCnt = 0;\r
+static int taskRunCnt = 0;\r
+\r
+static void isr2( void ) {\r
+       isr2RunCnt++;\r
+       ActivateTask(TASK_ID_btask_sup_m);\r
+#if 0\r
+       {\r
+               TaskType task;\r
+               GetTaskID(&task);\r
+               printf("ISR2: %d\n",task);\r
+       }\r
+#endif\r
+}\r
+\r
+static void isr1( void ) {\r
+\r
+}\r
+\r
+void etask_sup_l_02(void) {\r
+       _Bool done = 0;\r
+       StatusType rv;\r
+       TaskType isrTask;\r
+       TaskType task;\r
+\r
+       while (!done) {\r
+               TEST_RUN();\r
+               switch (test_nr) {\r
+               case 1:\r
+                       rv = GetResource(RES_ID_std_prio_3);\r
+                       TEST_ASSERT(rv == E_OK);\r
+                       rv = ReleaseResource(RES_ID_std_prio_3);\r
+                       TEST_ASSERT(rv == E_OK);\r
+                       test_nr++;\r
+                       break;\r
+               case 2:\r
+                       /* Get the same resource twice */\r
+                       rv = GetResource(RES_ID_std_prio_3);\r
+                       TEST_ASSERT(rv == E_OK);\r
+                       rv = GetResource(RES_ID_std_prio_3);\r
+                       TEST_ASSERT(rv == E_OS_ACCESS);\r
+                       test_nr = 10;\r
+                       break;\r
+               case 10:\r
+                       /* Test RES_SCHEDULER.\r
+                        * Since GetResource(RES_SCHEDULER) only locks the\r
+                        * scheduler (interrupts are still working) we the interrupt\r
+                        * task should trigger a higher prio task, but that should\r
+                        * not be swapped in.\r
+                        */\r
+\r
+                       /* Create an ISR2 */\r
+                       isrTask = Os_Arc_CreateIsr( isr2, 4/*prio*/,"soft_0");\r
+                       Irq_AttachIsr2(isrTask,NULL,INTC_SSCIR0_CLR0);\r
+                       /* Create an ISR1 */\r
+                       Irq_AttachIsr1(isr1,NULL,INTC_SSCIR0_CLR1,6);\r
+\r
+                       GetTaskID(&task);\r
+                       TEST_ASSERT( task == TASK_ID_etask_sup_l );\r
+                       /* Lock the scheduler */\r
+                       rv = GetResource(RES_SCHEDULER);\r
+                       Irq_GenerateSoftInt( INTC_SSCIR0_CLR0 );\r
+\r
+                       GetTaskID(&task);\r
+\r
+                       TEST_ASSERT( task == TASK_ID_etask_sup_l );\r
+\r
+                       /* TODO: Should we re-schedule here? */\r
+                       rv = ReleaseResource(RES_SCHEDULER);\r
+                       // TODO: ReleaseResource should re-schedule\r
+\r
+                       TEST_ASSERT( task == TASK_ID_etask_sup_l );\r
+\r
+//                     TEST_ASSERT( taskRunCnt == 1 );\r
+                       // TODO:\r
+\r
+                       test_nr = 100;\r
+                       break;\r
+               case 100:\r
+                       TerminateTask();\r
+                       break;\r
+               }\r
+       }\r
+}\r
+\r
+void btask_sup_l_02(void) {\r
+}\r
+\r
+void btask_sup_m_02(void) {\r
+       TaskType task;\r
+       GetTaskID(&task);\r
+\r
+       taskRunCnt++;\r
+       TEST_ASSERT( task == TASK_ID_btask_sup_m );\r
+}\r
+\r
+\r
+DECLARE_TEST_ETASK(02, etask_sup_l_02, NULL, NULL );\r
+DECLARE_TEST_BTASK(02, btask_sup_l_02, btask_sup_m_02, NULL );\r
diff --git a/system/kernel/testsystem/suite_01/test_03_alarm.c b/system/kernel/testsystem/suite_01/test_03_alarm.c
new file mode 100644 (file)
index 0000000..288227c
--- /dev/null
@@ -0,0 +1,382 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+/*\r
+ * Tests:\r
+ *\r
+ * OSEK\r
+ * - GetAlarmBase                              E_OS_ID\r
+ * - GetAlarm                                  E_OS_ID, E_OS_NOFUNC\r
+ * - SetRelAlarm                E_OS_ID, E_OS_STATE, E_OS_VALUE\r
+ * - SetAbsAlarm                E_OS_ID, E_OS_STATE, E_OS_VALUE\r
+ * - CancelAlarm                E_OS_ID, E_OS_NOFUNC\r
+ *\r
+ * Autosar\r
+ * - IncrementCounter                  E_OS_ID\r
+ * - GetCounterValue            E_OS_ID\r
+ * - GetElapsedCounterValue     E_OS_ID, E_OS_VALUE\r
+ *\r
+ * More tests here:\r
+ *\r
+ * Limitations:\r
+ */\r
+\r
+\r
+#include "Os.h"\r
+#include "os_test.h"\r
+#include "arc.h"\r
+\r
+\r
+void etask_sup_l_03(void) {\r
+       _Bool done = 0;\r
+       StatusType rv;\r
+       AlarmBaseType alarmBase;\r
+       TickType tick;\r
+       TickType tickElapsed;\r
+\r
+       int i;\r
+\r
+       rv = ActivateTask(TASK_ID_etask_sup_m);\r
+       assert( rv == E_OK );\r
+\r
+       while (!done) {\r
+               TEST_RUN();\r
+               switch (test_nr) {\r
+               /*--------------------------------------------------------------------\r
+                * API tests\r
+                *--------------------------------------------------------------------\r
+                */
+               case 1:\r
+                       /* GetAlarmBase E_OS_ID */\r
+                       rv = GetAlarmBase(ALARM_ID_c_sys_activate_btask_h, &alarmBase);\r
+                       TEST_ASSERT(rv == E_OK);\r
+                       rv = GetAlarmBase(ALARM_ID_ILL, &alarmBase);\r
+                       TEST_ASSERT(rv == E_OS_ID);\r
+                       test_nr++;\r
+                       break;\r
+               case 2:\r
+                       /* GetAlarm E_OS_ID and E_OS_NO_FUNC */\r
+                       rv = GetAlarm(ALARM_ID_c_sys_activate_btask_h,&tick);\r
+                       TEST_ASSERT(rv == E_OS_NOFUNC);\r
+                       rv = GetAlarm(ALARM_ID_ILL,&tick);\r
+                       TEST_ASSERT(rv == E_OS_ID);\r
+                       test_nr++;\r
+                       break;\r
+               case 3:\r
+                        /* SetRelAlarm  E_OS_ID, E_OS_STATE, E_OS_VALUE */\r
+                       rv = SetRelAlarm(ALARM_ID_ILL,1,10);\r
+                       TEST_ASSERT(rv == E_OS_ID);\r
+                       rv = SetRelAlarm(ALARM_ID_c_soft_1_setevent_etask_m,0,10);\r
+                       TEST_ASSERT(rv == E_OS_VALUE);\r
+                       rv = SetRelAlarm(ALARM_ID_c_soft_1_setevent_etask_m,1,10);\r
+                       TEST_ASSERT(rv == E_OK);\r
+                       rv = SetRelAlarm(ALARM_ID_c_soft_1_setevent_etask_m,1,10);\r
+                       TEST_ASSERT(rv == E_OS_STATE);\r
+                       rv = CancelAlarm(ALARM_ID_c_soft_1_setevent_etask_m);\r
+                       TEST_ASSERT(rv == E_OK);\r
+                       test_nr++;\r
+                       break;\r
+               case 4:\r
+                        /* SetAbsAlarm  E_OS_ID, E_OS_STATE, E_OS_VALUE */\r
+                       rv = SetAbsAlarm(ALARM_ID_ILL,1,10);\r
+                       TEST_ASSERT(rv == E_OS_ID);\r
+                       rv = SetAbsAlarm(ALARM_ID_c_soft_1_setevent_etask_m,\r
+                                       OSMAXALLOWEDVALUE_soft_1 + 1, 10);\r
+                       TEST_ASSERT(rv == E_OS_VALUE);\r
+                       rv = SetAbsAlarm(ALARM_ID_c_soft_1_setevent_etask_m,1,10);\r
+                       TEST_ASSERT(rv == E_OK);\r
+                       rv = SetAbsAlarm(ALARM_ID_c_soft_1_setevent_etask_m,1,10);\r
+                       TEST_ASSERT(rv == E_OS_STATE);\r
+                       rv = CancelAlarm(ALARM_ID_c_soft_1_setevent_etask_m);\r
+                       TEST_ASSERT(rv == E_OK);\r
+                       test_nr++;\r
+                       break;\r
+               case 5:\r
+                        /* CancelAlarm  E_OS_ID, E_OS_NOFUNC */\r
+                       rv = CancelAlarm(ALARM_ID_ILL);\r
+                       TEST_ASSERT(rv == E_OS_ID);\r
+                       rv = CancelAlarm(ALARM_ID_c_soft_1_setevent_etask_m);\r
+                       TEST_ASSERT(rv == E_OS_NOFUNC);\r
+                       test_nr++;\r
+                       break;\r
+               case 6:\r
+                        /* IncrementCounter    E_OS_ID */\r
+                       rv = IncrementCounter(COUNTER_ID_ILL);\r
+                       TEST_ASSERT(rv == E_OS_ID);\r
+                       test_nr++;\r
+                       break;\r
+               case 7:\r
+                        /* GetCounterValue     E_OS_ID */\r
+                       rv = GetCounterValue(COUNTER_ID_ILL,&tick);\r
+                       TEST_ASSERT(rv == E_OS_ID);\r
+                       test_nr++;\r
+                       break;\r
+               case 8:\r
+                        /* GetElapsedCounterValue      E_OS_ID, E_OS_VALUE */\r
+                       rv = GetElapsedCounterValue(COUNTER_ID_ILL,&tick,&tick);\r
+                       TEST_ASSERT(rv == E_OS_ID);\r
+                       test_nr = 10;\r
+                       break;\r
+\r
+               /*--------------------------------------------------------------------\r
+                * Functional tests, Counters\r
+                *--------------------------------------------------------------------\r
+                * IncrementCounter\r
+                * GetCounterValue\r
+                * GetElapsedCounterValue\r
+                */\r
+               case 10:\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       TEST_ASSERT(rv == E_OK);\r
+                       rv = GetCounterValue(COUNTER_ID_soft_1,&tick);\r
+                       TEST_ASSERT(rv == E_OK);\r
+                       TEST_ASSERT(tick == 1);\r
+                       rv = GetElapsedCounterValue(    COUNTER_ID_soft_1,\r
+                                                                                       &tick,\r
+                                                                                       &tickElapsed);\r
+                       TEST_ASSERT(tick == 1);\r
+                       TEST_ASSERT(tickElapsed == 0);\r
+\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       TEST_ASSERT(rv == E_OK);\r
+                       rv = GetElapsedCounterValue(    COUNTER_ID_soft_1,\r
+                                                                                       &tick,\r
+                                                                                       &tickElapsed);\r
+                       TEST_ASSERT(tick == 2);\r
+                       TEST_ASSERT(tickElapsed == 1);\r
+\r
+                       /* Test max value */\r
+                       for( i=0; i< OSMAXALLOWEDVALUE_soft_1 - 2; i++ ) {\r
+                               rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                               TEST_ASSERT(rv == E_OK);\r
+                       }\r
+\r
+                       rv = GetCounterValue(COUNTER_ID_soft_1,&tick);\r
+                       TEST_ASSERT(tick == OSMAXALLOWEDVALUE_soft_1);\r
+\r
+                       tick = 0;\r
+                       rv = GetElapsedCounterValue(    COUNTER_ID_soft_1,\r
+                                                                                       &tick,\r
+                                                                                       &tickElapsed);\r
+\r
+                       TEST_ASSERT(tick == OSMAXALLOWEDVALUE_soft_1 );\r
+                       TEST_ASSERT(tickElapsed == OSMAXALLOWEDVALUE_soft_1);\r
+\r
+                       /* Check that wrapping calculation works */\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetElapsedCounterValue(    COUNTER_ID_soft_1,\r
+                                                                                       &tick,\r
+                                                                                       &tickElapsed);\r
+\r
+                       TEST_ASSERT(tick == 1);\r
+                       TEST_ASSERT(tickElapsed == 2);\r
+\r
+                       test_nr++;\r
+                       break;\r
+\r
+               /*--------------------------------------------------------------------\r
+                * Functional tests, Alarm\r
+                *--------------------------------------------------------------------\r
+                * GetAlarmBase\r
+                * GetAlarm\r
+                * SetRelAlarm\r
+                * SetAbsAlarm\r
+                * CancelAlarm\r
+                */\r
+\r
+               case 11:\r
+                       rv = GetAlarmBase(ALARM_ID_c_soft_1_setevent_etask_m, &alarmBase);\r
+                       TEST_ASSERT(alarmBase.maxallowedvalue == OSMAXALLOWEDVALUE_soft_1 );\r
+                       /* TODO: Fix this in the editor */\r
+                       TEST_ASSERT(alarmBase.mincycle == 1 );\r
+                       TEST_ASSERT(alarmBase.tickperbase == 1 );\r
+                       test_nr++;\r
+                       break;\r
+\r
+               case 12:\r
+                       /* Test single-shot alarm */\r
+                       rv = SetRelAlarm(ALARM_ID_c_soft_1_setevent_etask_m,2,0);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       TEST_ASSERT(tick == 2 );\r
+\r
+                       IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       TEST_ASSERT(tick == 1 );\r
+\r
+                       IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OS_NOFUNC );\r
+                       test_nr++;\r
+                       break;\r
+               case 13:\r
+                       /* Test cyclic alarm */\r
+                       rv = SetRelAlarm(ALARM_ID_c_soft_1_setevent_etask_m,2,5);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       TEST_ASSERT(tick == 2 );\r
+\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       TEST_ASSERT(tick == 1 );\r
+\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       TEST_ASSERT(tick == 5 );\r
+\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT(tick == 4 );\r
+\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT(tick == 1 );\r
+\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       TEST_ASSERT(tick == 5 );\r
+\r
+                       rv = CancelAlarm(ALARM_ID_c_soft_1_setevent_etask_m);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       test_nr++;\r
+                       break;\r
+               case 14:\r
+                       /*\r
+                        * SetAbsAlarm\r
+                        */\r
+\r
+                       /* Start from 0 */\r
+                       rv = GetCounterValue(COUNTER_ID_soft_1,&tick);\r
+                       for(i=0;i<OSMAXALLOWEDVALUE_soft_1 - tick + 1 ;i++) {\r
+                               IncrementCounter(COUNTER_ID_soft_1);\r
+                       }\r
+\r
+                       rv = GetCounterValue(COUNTER_ID_soft_1,&tick);\r
+                       TEST_ASSERT(tick == 0);\r
+\r
+                       /* Test single-shot alarm */\r
+                       rv = SetAbsAlarm(ALARM_ID_c_soft_1_setevent_etask_m,2,0);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       TEST_ASSERT(tick == 2 );\r
+\r
+                       IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       TEST_ASSERT(tick == 1 );\r
+\r
+                       IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OS_NOFUNC );\r
+                       test_nr++;\r
+                       break;\r
+               case 15:\r
+\r
+                       /* Start from 1 */\r
+                       rv = GetCounterValue(COUNTER_ID_soft_1,&tick);\r
+                       for(i=0;i<OSMAXALLOWEDVALUE_soft_1 - tick + 1 ;i++) {\r
+                               IncrementCounter(COUNTER_ID_soft_1);\r
+                       }\r
+                       IncrementCounter(COUNTER_ID_soft_1);\r
+\r
+                       /* Test cyclic alarm */\r
+                       rv = SetAbsAlarm(ALARM_ID_c_soft_1_setevent_etask_m,3,5);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       TEST_ASSERT(tick == 2 );\r
+\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       TEST_ASSERT(tick == 1 );\r
+\r
+                       /* Trigger the alarm */\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       /* The abs alarm is now a relative alarm cith cycle */\r
+                       TEST_ASSERT(tick == 5 );\r
+\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT(tick == 4 );\r
+\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT(tick == 1 );\r
+\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       TEST_ASSERT(tick == 5 );\r
+\r
+                       rv = CancelAlarm(ALARM_ID_c_soft_1_setevent_etask_m);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       test_nr++;\r
+                       break;\r
+               case 16:\r
+                       test_nr = 100;\r
+                       break;\r
+               case 100:\r
+                       SetEvent(TASK_ID_etask_sup_m, EVENT_MASK_KILL);\r
+                       TerminateTask();\r
+                       break;\r
+               }\r
+       }\r
+}\r
+\r
+void etask_sup_m_03(void) {\r
+\r
+       for(;;) {\r
+\r
+               WaitEvent(EVENT_MASK_NOTIF | EVENT_MASK_KILL );\r
+               switch (test_nr) {\r
+               case 12:\r
+               case 13:\r
+               case 14:\r
+               case 15:\r
+                       ClearEvent(EVENT_MASK_NOTIF);\r
+                       break;\r
+               case 100:\r
+                       TerminateTask();\r
+                       break;\r
+               default:\r
+                       assert(0);\r
+               }\r
+       }\r
+\r
+}\r
+\r
+void btask_sup_l_03(void) {\r
+}\r
+\r
+\r
+DECLARE_TEST_ETASK(03, etask_sup_l_03, etask_sup_m_03, NULL );\r
+DECLARE_TEST_BTASK(03, btask_sup_l_03, NULL, NULL );\r
diff --git a/system/kernel/testsystem/suite_01/test_04_stable.c b/system/kernel/testsystem/suite_01/test_04_stable.c
new file mode 100644 (file)
index 0000000..9ca3fee
--- /dev/null
@@ -0,0 +1,317 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+/*\r
+ * From Autosar 3.1\r
+ *\r
+ * Tests:\r
+ * - StartScheduleTableRel          E_OS_ID, E_OS_VALUE, E_OS_STATE\r
+ * - StartScheduleTableAbs          E_OS_ID, E_OS_VALUE, E_OS_STATE\r
+ * - StopScheduleTable                         E_OS_ID, E_OS_NO_FUNC\r
+ * - NextScheduleTable                         E_OS_ID, E_OS_NO_FUNC, E_OS_STATE\r
+ * - GetScheduleTableStatus                    E_OS_ID,\r
+ *\r
+ *   Class 2 and 4\r
+ * - StartScheduleTableSynchrone    E_OS_ID, E_OS_STATE\r
+ * - SyncScheduleTable              E_OS_ID, E_OS_VALUE, E_OS_STATE\r
+ * - SetScheduleTableAsync                     E_OS_ID,\r
+ *\r
+ * More tests here:\r
+ *\r
+ * Limitations:\r
+ */\r
+\r
+#include "Os.h"\r
+#include "os_test.h"\r
+#include "arc.h"\r
+\r
+\r
+static         int subTest = 0;\r
+\r
+void etask_sup_l_04(void) {\r
+       _Bool done = 0;\r
+       StatusType rv;\r
+       ScheduleTableStatusType status;\r
+\r
+       while (!done) {\r
+               TEST_RUN();\r
+               switch (test_nr) {\r
+               case 1:\r
+                       /* StartScheduleTableRel E_OS_ID, E_OS_VALUE, E_OS_STATE */\r
+                       rv = StartScheduleTableRel(SCHTBL_ID_ILL,1);\r
+                       TEST_ASSERT(rv==E_OS_ID);\r
+                       rv = StartScheduleTableRel(SCHTBL_ID_0,0);\r
+                       TEST_ASSERT(rv==E_OS_VALUE);\r
+                       rv = StartScheduleTableRel(SCHTBL_ID_0,1);\r
+                       TEST_ASSERT(rv==E_OK);\r
+                       rv = StartScheduleTableRel(SCHTBL_ID_0,1);\r
+                       TEST_ASSERT(rv==E_OS_STATE);\r
+                       rv = StopScheduleTable(SCHTBL_ID_0);\r
+                       test_nr++;\r
+                       break;\r
+               case 2:\r
+                       /* StartScheduleTableAbs E_OS_ID, E_OS_VALUE, E_OS_STATE */\r
+                       rv = StartScheduleTableAbs(SCHTBL_ID_ILL,1);\r
+                       TEST_ASSERT(rv==E_OS_ID);\r
+#if 0\r
+                       /* TODO:Must supply an offset bigger than OsCounterMaxAllowedValue */\r
+                       StartScheduleTableAbs(SCHTBL_ID_0,0);\r
+                       TEST_ASSERT(rv==E_OS_VALUE);\r
+#endif\r
+                       rv = StartScheduleTableAbs(SCHTBL_ID_0,1);\r
+                       TEST_ASSERT(rv==E_OK);\r
+                       rv = StartScheduleTableAbs(SCHTBL_ID_0,1);\r
+                       TEST_ASSERT(rv==E_OS_STATE);\r
+                       rv = StopScheduleTable(SCHTBL_ID_0);\r
+                       test_nr++;\r
+                       break;\r
+               case 3:\r
+                       /* StopScheduleTable E_OS_ID, E_OS_NO_FUNC */\r
+                       rv = StopScheduleTable(SCHTBL_ID_ILL);\r
+                       TEST_ASSERT(rv==E_OS_ID);\r
+                       rv = StopScheduleTable(SCHTBL_ID_0);\r
+                       TEST_ASSERT(rv==E_OS_NOFUNC);\r
+                       test_nr++;\r
+                       break;\r
+               case 4:\r
+                       /* NextScheduleTable    E_OS_ID, E_OS_NO_FUNC, E_OS_STATE */\r
+                       rv = NextScheduleTable(SCHTBL_ID_ILL, SCHTBL_ID_ILL);\r
+                       TEST_ASSERT(rv==E_OS_ID);\r
+                       rv = NextScheduleTable(SCHTBL_ID_ILL, SCHTBL_ID_0);\r
+                       TEST_ASSERT(rv==E_OS_ID);\r
+                       rv = NextScheduleTable(SCHTBL_ID_0, SCHTBL_ID_ILL);\r
+                       TEST_ASSERT(rv==E_OS_ID);\r
+\r
+                       rv = NextScheduleTable(SCHTBL_ID_0,SCHTBL_ID_0);\r
+                       TEST_ASSERT(rv==E_OS_NOFUNC);\r
+\r
+                       rv = StartScheduleTableRel(SCHTBL_ID_0,1);\r
+                       rv = StartScheduleTableRel(SCHTBL_ID_1,1);\r
+                       rv = NextScheduleTable(SCHTBL_ID_0,SCHTBL_ID_1);\r
+                       TEST_ASSERT(rv==E_OS_STATE);\r
+\r
+                       /* Cleanup */\r
+                       rv = StopScheduleTable(SCHTBL_ID_0);\r
+                       TEST_ASSERT(rv==E_OK);\r
+                       rv = StopScheduleTable(SCHTBL_ID_1);\r
+                       TEST_ASSERT(rv==E_OK);\r
+                       test_nr = 10;\r
+                       break;\r
+               /*--------------------------------------------------------------------\r
+                * Functional tests, ScheduleTables\r
+                *--------------------------------------------------------------------\r
+                * - StartScheduleTableRel\r
+                * - StartScheduleTableAbs\r
+                * - StopScheduleTable\r
+                * - NextScheduleTable\r
+                * - GetScheduleTableStatus\r
+                */\r
+               case 10:\r
+                       subTest = 0;\r
+                       rv = ActivateTask(TASK_ID_etask_sup_m);\r
+                       TEST_ASSERT( rv == E_OK );\r
+\r
+                       rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+                       TEST_ASSERT(rv==E_OK);\r
+                       TEST_ASSERT( status == SCHEDULETABLE_STOPPED );\r
+                       rv = StartScheduleTableRel(SCHTBL_ID_0,2);\r
+                       TEST_ASSERT(rv==E_OK);\r
+\r
+                       rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+                       TEST_ASSERT(rv==E_OK);\r
+                       TEST_ASSERT( status == SCHEDULETABLE_RUNNING );\r
+\r
+                       /* 2+ 5 */\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       subTest = 5;\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+\r
+                       /* 2 more for next*/\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       subTest = 7;\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+\r
+                       /* 4 more for next*/\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       subTest = 11;\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+                       TEST_ASSERT(rv==E_OK);\r
+                       TEST_ASSERT( status == SCHEDULETABLE_RUNNING );\r
+\r
+                       /* and the final offset */\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+                       TEST_ASSERT(rv==E_OK);\r
+                       TEST_ASSERT( status == SCHEDULETABLE_STOPPED );\r
+\r
+                       /* First offset, again. */\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+\r
+                       /* TODO: More here */\r
+\r
+                       test_nr = 100;\r
+                       break;\r
+\r
+\r
+#if 0 /* Working single shot case */\r
+               case 10:\r
+                       subTest = 0;\r
+                       rv = ActivateTask(TASK_ID_etask_sup_m);\r
+                       TEST_ASSERT( rv == E_OK );\r
+\r
+                       rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+                       TEST_ASSERT(rv==E_OK);\r
+                       TEST_ASSERT( status == SCHEDULETABLE_STOPPED );\r
+                       rv = StartScheduleTableRel(SCHTBL_ID_0,2);\r
+                       TEST_ASSERT(rv==E_OK);\r
+\r
+                       rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+                       TEST_ASSERT(rv==E_OK);\r
+                       TEST_ASSERT( status == SCHEDULETABLE_RUNNING );\r
+\r
+                       /* 2+ 5 */\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       subTest = 5;\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+\r
+                       /* 2 more for next*/\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       subTest = 7;\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+\r
+                       /* 4 more for next*/\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       subTest = 11;\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+                       TEST_ASSERT(rv==E_OK);\r
+                       TEST_ASSERT( status == SCHEDULETABLE_RUNNING );\r
+\r
+                       /* and the final offset */\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = IncrementCounter(COUNTER_ID_soft_1);\r
+                       rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+                       TEST_ASSERT(rv==E_OK);\r
+                       TEST_ASSERT( status == SCHEDULETABLE_STOPPED );\r
+                       test_nr = 100;\r
+\r
+                       break;\r
+#endif\r
+\r
+\r
+               case 100:\r
+                       rv = SetEvent(TASK_ID_etask_sup_m, EVENT_MASK_KILL);\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       TerminateTask();\r
+                       break;\r
+               }\r
+       }\r
+}\r
+\r
+void etask_sup_m_04(void) {\r
+\r
+       TaskType currTask;\r
+       EventMaskType eventMask;\r
+       GetTaskID(&currTask);\r
+       StatusType rv;\r
+\r
+       for(;;) {\r
+               WaitEvent(EVENT_MASK_NOTIF | EVENT_MASK_KILL );\r
+               switch(test_nr) {\r
+               case 10:\r
+                       switch(subTest) {\r
+                       case 7:\r
+                       case 11:\r
+                               printf("etask\n");\r
+                               rv = GetEvent(currTask,&eventMask);\r
+                               TEST_ASSERT( rv == E_OK );\r
+                               TEST_ASSERT(eventMask == EVENT_MASK_NOTIF );\r
+                               ClearEvent(EVENT_MASK_NOTIF);\r
+                               break;\r
+\r
+                       default:\r
+                               TEST_ASSERT(0);\r
+                               break;\r
+\r
+                       }\r
+                       break;\r
+               case 100:\r
+                       rv = TerminateTask();\r
+                       TEST_ASSERT( rv == E_OK );\r
+                       break;\r
+\r
+               default:\r
+                       TEST_ASSERT(0);\r
+                       break;\r
+               }\r
+       }\r
+}\r
+\r
+\r
+void btask_sup_l_04(void) {\r
+\r
+\r
+\r
+}\r
+\r
+void btask_sup_m_04(void) {\r
+\r
+       switch(test_nr) {\r
+       case 10:\r
+               switch(subTest) {\r
+               case 5:\r
+               case 11:\r
+                       printf("btask\n");\r
+                       break;\r
+\r
+               default:\r
+                       TEST_ASSERT(0);\r
+                       break;\r
+               }\r
+\r
+               break;\r
+       }\r
+\r
+}\r
+\r
+\r
+DECLARE_TEST_ETASK(04, etask_sup_l_04, etask_sup_m_04, NULL );\r
+DECLARE_TEST_BTASK(04, btask_sup_l_04, btask_sup_m_04, NULL );\r
+\r
+\r
diff --git a/system/kernel/testsystem/suite_01/test_05_const.c b/system/kernel/testsystem/suite_01/test_05_const.c
new file mode 100644 (file)
index 0000000..7ddff73
--- /dev/null
@@ -0,0 +1,42 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+/*\r
+ * Tests:\r
+ *\r
+ * OSEK constants\r
+ * - OSMAXALLOWEDVALUE_x\r
+ * - OSTICKSPERBASE_x\r
+ * - OSMINCYCLE_x\r
+ * - OSMAXALLOWEDVALUE\r
+ * - OSTICKSPERBASE\r
+ * - OSMINCYCLE\r
+ * - OSTICKDURATION\r
+ *\r
+ * - INVALID_TASK\r
+ *\r
+ * - OSDEFAULTAPPMODE\r
+ *\r
+ * - OSServiceId_xx\r
+ * - OSErrorGetServiceId\r
+ * - OSError_x1_x2\r
+ *\r
+ * Autosar constants\r
+ *\r
+ * More tests here:\r
+ *\r
+ * Limitations:\r
+ */\r
+\r
diff --git a/system/kernel/testsystem/suite_01/test_06_event.c b/system/kernel/testsystem/suite_01/test_06_event.c
new file mode 100644 (file)
index 0000000..55d4b22
--- /dev/null
@@ -0,0 +1,22 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+/*\r
+ * Tests:\r
+ *  Ramlog\r
+ *\r
+ * Limitations:\r
+ */\r
+\r
diff --git a/system/kernel/testsystem/suite_01/test_07_misc.c b/system/kernel/testsystem/suite_01/test_07_misc.c
new file mode 100644 (file)
index 0000000..2dbb8d2
--- /dev/null
@@ -0,0 +1,104 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+/*\r
+ * Tests:\r
+ *\r
+ * OSEK\r
+ * - DisableAllInterrupts\r
+ * - EnableAllInterrupts\r
+ * - SuspendAllInterrupts\r
+ * - ResumeAllInterrupts\r
+ * - SuspendOSInterrupts\r
+ * - ResumeOSInterrupts\r
+ *\r
+ * - GetActiveApplicationMode\r
+ * - StartOS\r
+ * - ShutdownOS\r
+ *\r
+ *\r
+ * Autosar\r
+ *\r
+ * Class 3 and 4\r
+ * - GetApplicationID\r
+ * - GetISRID                                  IVALID_ISR\r
+ * - CallTrustedFunction               ...\r
+ * - CheckISRMemoryAccess              ...\r
+ * - CheckTaskMemoryAccess\r
+ * - CheckObjectMemoryAccess\r
+ * - CheckObjectOwnership\r
+ * - TerminateApplication\r
+ *\r
+ * Autosar additional tests:\r
+ *\r
+ *   Class 2,3,4\r
+ * - ProtectionHook\r
+ *\r
+ *   Class 2,4\r
+ * - Timing Protection\r
+ * - Global Time\r
+ *\r
+ *   Class 3,4\r
+ * - Memory Protection\r
+ * - Os-Applications\r
+ * - Service Protection\r
+ * - Call trusted function\r
+ *\r
+ * Limitations:\r
+ */\r
+\r
+void intTest( void ) {\r
+\r
+       /* Just call them to its works */\r
+       DisableAllInterrupts();\r
+       EnableAllInterrupts();\r
+\r
+       SuspendAllInterrupts();\r
+       ResumeAllInterrupts();\r
+\r
+       SuspendOSInterrupts();\r
+       ResumeOSInterrupts();\r
+\r
+       /** @req OS092 */\r
+       /* We should be able to call them and they should be ignored */\r
+       EnableAllInterrupts();\r
+       EnableAllInterrupts();\r
+\r
+       ResumeAllInterrupts();\r
+       ResumeAllInterrupts();\r
+\r
+       ResumeOSInterrupts();\r
+       ResumeOSInterrupts();\r
+\r
+       /* No nesting for DisableAllInterrupts() and EnableAllInterrupts */\r
+       DisableAllInterrupts();\r
+       /* No calls allowed here */\r
+       EnableAllInterrupts();\r
+\r
+       /* Nesting allowed for these calls */\r
+       SuspendAllInterrupts();\r
+       SuspendAllInterrupts();\r
+       SuspendOSInterrupts();\r
+       ResumeOSInterrupts();\r
+       ResumeAllInterrupts();\r
+       ResumeAllInterrupts();\r
+\r
+       /* MORE MORE */\r
+\r
+}\r
+\r
+\r
+\r
+\r
similarity index 96%
rename from system/kernel/testsystem/test_master.c
rename to system/kernel/testsystem/suite_01/test_master.c
index 593875cbb97041fb1bf67d51e87effd69e197b8a..8abe33543544ff7bc7467251a550bd9f17bb5015 100644 (file)
@@ -72,11 +72,8 @@ void etask_master( void ) {
                test_suite++;\r
        }\r
 
-       test_done();
-\r
-       // Test complete..\r
-       while(1);\r
-\r
+       // Test complete..
+       testExit(0);
 }\r
 
 extern test_func_t etask_sup_matrix[][3];
diff --git a/system/kernel/testsystem/suite_02/Os_Cfg.c b/system/kernel/testsystem/suite_02/Os_Cfg.c
new file mode 100644 (file)
index 0000000..d349d3a
--- /dev/null
@@ -0,0 +1,251 @@
+/* 
+* 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 Tue Jun 08 08:23:43 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
+       GEN_COUNTER(    COUNTER_ID_Counter2,\r
+                                       "Counter2",\r
+                                       COUNTER_TYPE_SOFT,\r
+                                       COUNTER_UNIT_NANO,\r
+                                       65535,\r
+                                       1,\r
+                                       1,\r
+                                       0),\r
+};\r
+\r
+CounterType Os_Arc_OsTickCounter = COUNTER_ID_Counter1;\r
+\r
+// ##################################    ALARMS     ################################\r
+GEN_ALARM_AUTOSTART(ALARM_ID_Alarm1, ALARM_AUTOSTART_ABSOLUTE, 1, 0, OSDEFAULTAPPMODE );\r
+       \r
+GEN_ALARM_AUTOSTART(ALARM_ID_Alarm2, ALARM_AUTOSTART_ABSOLUTE, 1, 0, OSDEFAULTAPPMODE );\r
+       \r
+\r
+GEN_ALARM_HEAD {\r
+       GEN_ALARM(      ALARM_ID_Alarm1,\r
+                               "Alarm1",\r
+                               COUNTER_ID_Counter2,\r
+                               GEN_ALARM_AUTOSTART_NAME(ALARM_ID_Alarm1),\r
+                               ALARM_ACTION_SETEVENT,\r
+                               TASK_ID_etask_master,\r
+                               EVENT_MASK_Alarm_1,\r
+                               NULL ),\r
+       GEN_ALARM(      ALARM_ID_Alarm2,\r
+                               "Alarm2",\r
+                               COUNTER_ID_Counter2,\r
+                               GEN_ALARM_AUTOSTART_NAME(ALARM_ID_Alarm2),\r
+                               ALARM_ACTION_SETEVENT,\r
+                               TASK_ID_etask_master,\r
+                               EVENT_MASK_Alarm_2,\r
+                               NULL ),\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_2,2048);\r
+DECLARE_STACK(btask_4,2048);\r
+DECLARE_STACK(etask_3,2048);\r
+DECLARE_STACK(etask_5,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_ETASK(\r
+               btask_2,\r
+               2,\r
+               FULL,\r
+               TRUE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+       GEN_BTASK(\r
+               btask_4,\r
+               4,\r
+               FULL,\r
+               TRUE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_ETASK(\r
+               etask_3,\r
+               3,\r
+               FULL,\r
+               TRUE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_5,\r
+               5,\r
+               FULL,\r
+               TRUE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_master,\r
+               10,\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 data ScheduleTable_1\r
+\r
+\r
+GEN_SCHTBL_EVENT_LIST_HEAD( 0, 0 ) {\r
+       \r
+       { \r
+               EVENT_MASK_SchTbl_1, \r
+               TASK_ID_etask_master \r
+       },\r
+       \r
+};\r
+\r
+\r
+GEN_SCHTBL_EXPIRY_POINT_HEAD( 0 ) {\r
+       GEN_SCHTBL_EXPIRY_POINT_W_EVENT(0, 0),
+       \r
+};\r
+\r
+GEN_SCHTBL_AUTOSTART(\r
+       0,\r
+       SCHTBL_AUTOSTART_ABSOLUTE,\r
+       1, \r
+       OSDEFAULTAPPMODE\r
+);\r
+\r
+// Table data ScheduleTable_2\r
+\r
+\r
+GEN_SCHTBL_EVENT_LIST_HEAD( 1, 0 ) {\r
+       \r
+       { \r
+               EVENT_MASK_SchTbl_2, \r
+               TASK_ID_etask_master \r
+       },\r
+       \r
+};\r
+\r
+\r
+GEN_SCHTBL_EXPIRY_POINT_HEAD( 1 ) {\r
+       GEN_SCHTBL_EXPIRY_POINT_W_EVENT(1, 0),
+       \r
+};\r
+\r
+GEN_SCHTBL_AUTOSTART(\r
+       1,\r
+       SCHTBL_AUTOSTART_ABSOLUTE,\r
+       1, \r
+       OSDEFAULTAPPMODE\r
+);\r
+\r
+// Table heads\r
+GEN_SCHTBL_HEAD {\r
+       GEN_SCHEDULETABLE(\r
+               0,\r
+               "ScheduleTable_1",\r
+           COUNTER_ID_Counter2,\r
+           SINGLE_SHOT,\r
+               10,\r
+               GEN_SCHTBL_AUTOSTART_NAME(0)\r
+       ),\r
+       GEN_SCHEDULETABLE(\r
+               1,\r
+               "ScheduleTable_2",\r
+           COUNTER_ID_Counter2,\r
+           SINGLE_SHOT,\r
+               10,\r
+               GEN_SCHTBL_AUTOSTART_NAME(1)\r
+       ),\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_02/Os_Cfg.h b/system/kernel/testsystem/suite_02/Os_Cfg.h
new file mode 100644 (file)
index 0000000..d54e2e2
--- /dev/null
@@ -0,0 +1,95 @@
+/* 
+* 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 Tue Jun 08 08:23:43 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
+#define ALARM_ID_Alarm1        0\r
+#define ALARM_ID_Alarm2        1\r
+\r
+// Counter Id's\r
+#define COUNTER_ID_Counter1    0\r
+#define COUNTER_ID_Counter2    1\r
+\r
+// Counter macros\r
+#define OSMAXALLOWEDVALUE_Counter1 65535\r
+#define OSMAXALLOWEDVALUE_Counter2 65535\r
+\r
+\r
+// Event masks\r
+#define EVENT_MASK_Alarm_1     1\r
+#define EVENT_MASK_Alarm_2     2\r
+#define EVENT_MASK_Event1      1\r
+#define EVENT_MASK_SchTbl_1    4\r
+#define EVENT_MASK_SchTbl_2    8\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_2        1\r
+#define TASK_ID_btask_4        2\r
+#define TASK_ID_etask_3        3\r
+#define TASK_ID_etask_5        4\r
+#define TASK_ID_etask_master   5\r
+\r
+// Task entry points\r
+void OsIdle( void );\r
+void btask_2( void );\r
+void btask_4( void );\r
+void etask_3( void );\r
+void etask_5( void );\r
+void etask_master( void );\r
+\r
+// Schedule table id's\r
+#define SCHTBL_ID_ScheduleTable_1  0\r
+#define SCHTBL_ID_ScheduleTable_2  1\r
+\r
+// Stack size\r
+#define OS_INTERRUPT_STACK_SIZE        2048\r
+#define OS_OSIDLE_STACK_SIZE 512\r
+\r
+#define OS_ALARM_CNT                   2 \r
+#define OS_TASK_CNT                            6\r
+#define OS_SCHTBL_CNT                  2\r
+#define OS_COUNTER_CNT                 2\r
+#define OS_EVENTS_CNT                  5\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_02/build_config.mk b/system/kernel/testsystem/suite_02/build_config.mk
new file mode 100644 (file)
index 0000000..c418f94
--- /dev/null
@@ -0,0 +1,7 @@
+\r
+# Figure out the most of the modules to use.\r
+OPTIMAL_USE = T32_TERM 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 T32_TERM SIMPLE_PRINTF RAMLOG\r
+\r
diff --git a/system/kernel/testsystem/suite_02/config_02.arxml b/system/kernel/testsystem/suite_02/config_02.arxml
new file mode 100644 (file)
index 0000000..49ec540
--- /dev/null
@@ -0,0 +1,608 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.2"><TOP-LEVEL-PACKAGES>\r
+    <AR-PACKAGE UUID="c33d4e0c-6dad-411a-a350-aabadc4bf0df">\r
+      <SHORT-NAME>suite_02</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="8461e526-eb23-49f1-a321-0a64a6bce731">\r
+          <SHORT-NAME>suite_02</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_02</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <MODULE-REFS>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/suite_02/Os</MODULE-REF>\r
+          </MODULE-REFS>\r
+        </ECU-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="6656fb2b-da0c-4674-b652-35cfbbeb8858">\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="a98299a2-3749-44a2-b40b-98aa5727758d">\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="99c66754-68e6-4e66-a837-56dcea0bf884">\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="26696744-a69d-4889-8270-79ca5aa23560">\r
+              <SHORT-NAME>btask_2</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
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="3003d3ff-e15d-40a0-abba-986d6c49b14b">\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="7a2dfce0-db02-4ca0-8218-b4e7a8780d15">\r
+              <SHORT-NAME>Alarm1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/suite_02/Os/Counter2</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="262870a1-3030-4004-af9e-81e2178a5f04">\r
+                  <SHORT-NAME>OsAlarmAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmAlarmTime</DEFINITION-REF>\r
+                      <VALUE>1</VALUE>\r
+                    </INTEGER-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmAutostartType</DEFINITION-REF>\r
+                      <VALUE>ABSOLUTE</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmCycleTime</DEFINITION-REF>\r
+                      <VALUE>0</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="a3679f73-9065-4170-921f-b23c1817fa6e">\r
+                  <SHORT-NAME>OsAlarmSetEvent</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/suite_02/Os/Alarm_1</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/suite_02/Os/etask_master</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="31355487-8041-41af-b093-63eb63487f1f">\r
+              <SHORT-NAME>Alarm2</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/suite_02/Os/Counter2</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="156c631d-4d48-45f6-a1ed-35f66b2b4b01">\r
+                  <SHORT-NAME>OsAlarmAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmAlarmTime</DEFINITION-REF>\r
+                      <VALUE>1</VALUE>\r
+                    </INTEGER-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmAutostartType</DEFINITION-REF>\r
+                      <VALUE>ABSOLUTE</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmCycleTime</DEFINITION-REF>\r
+                      <VALUE>0</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="9a456d78-7bf4-4e77-b78c-487be11727dc">\r
+                  <SHORT-NAME>OsAlarmSetEvent</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/suite_02/Os/Alarm_2</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/suite_02/Os/etask_master</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="33b3f94e-daa4-4baf-957e-fa31413e5511">\r
+              <SHORT-NAME>ScheduleTable_1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableDuration</DEFINITION-REF>\r
+                  <VALUE>10</VALUE>\r
+                </INTEGER-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableRepeating</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/suite_02/Os/Counter2</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="a6d8025b-aed3-49ba-a0a5-afc974e83a43">\r
+                  <SHORT-NAME>ExpiryPoint</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset</DEFINITION-REF>\r
+                      <VALUE>0</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="3e02a90b-3d35-4f05-ab0c-d0cd49c9cf0d">\r
+                      <SHORT-NAME>EventSetting1</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting</DEFINITION-REF>\r
+                      <REFERENCE-VALUES>\r
+                        <REFERENCE-VALUE>\r
+                          <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventRef</DEFINITION-REF>\r
+                          <VALUE-REF DEST="CONTAINER">/suite_02/Os/SchTbl_1</VALUE-REF>\r
+                        </REFERENCE-VALUE>\r
+                        <REFERENCE-VALUE>\r
+                          <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventTaskRef</DEFINITION-REF>\r
+                          <VALUE-REF DEST="CONTAINER">/suite_02/Os/etask_master</VALUE-REF>\r
+                        </REFERENCE-VALUE>\r
+                      </REFERENCE-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="0aa6ddd3-2a72-4776-89fc-5bee1c48c401">\r
+                  <SHORT-NAME>OsScheduleTableAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableAutostart</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableAutostart/OsScheduleTableAutostartType</DEFINITION-REF>\r
+                      <VALUE>ABSOLUTE</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableAutostart/ArcCoreOsScheduleTableOffset</DEFINITION-REF>\r
+                      <VALUE>1</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="034f9a38-b528-41b1-bb43-2342926f6153">\r
+              <SHORT-NAME>ScheduleTable_2</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableDuration</DEFINITION-REF>\r
+                  <VALUE>10</VALUE>\r
+                </INTEGER-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableRepeating</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/suite_02/Os/Counter2</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="56f1a565-9c0c-44f2-a8f4-be874470ffbd">\r
+                  <SHORT-NAME>ExpiryPoint</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset</DEFINITION-REF>\r
+                      <VALUE>0</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="693a4960-facf-4e4a-a571-d365ae875ceb">\r
+                      <SHORT-NAME>EventSetting1</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting</DEFINITION-REF>\r
+                      <REFERENCE-VALUES>\r
+                        <REFERENCE-VALUE>\r
+                          <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventRef</DEFINITION-REF>\r
+                          <VALUE-REF DEST="CONTAINER">/suite_02/Os/SchTbl_2</VALUE-REF>\r
+                        </REFERENCE-VALUE>\r
+                        <REFERENCE-VALUE>\r
+                          <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventTaskRef</DEFINITION-REF>\r
+                          <VALUE-REF DEST="CONTAINER">/suite_02/Os/etask_master</VALUE-REF>\r
+                        </REFERENCE-VALUE>\r
+                      </REFERENCE-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="fe834b1b-1ae2-4888-9518-59bd2d1f1195">\r
+                  <SHORT-NAME>OsScheduleTableAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableAutostart</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableAutostart/OsScheduleTableAutostartType</DEFINITION-REF>\r
+                      <VALUE>ABSOLUTE</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableAutostart/ArcCoreOsScheduleTableOffset</DEFINITION-REF>\r
+                      <VALUE>1</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="6701be99-c484-4d78-be6f-efcb73566fba">\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="b00f59e1-c49c-49ec-ada6-7a027fd0060b">\r
+              <SHORT-NAME>Counter2</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>SOFTWARE</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="e3bf560f-b9b7-4e6f-9520-6271b3e699a5">\r
+              <SHORT-NAME>Event1</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="b236cee5-5b51-4b4b-a93c-2eb78964d7ff">\r
+              <SHORT-NAME>btask_4</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
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="4733a77a-c470-4529-a9ae-00c242bbe251">\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="7e97f4aa-e766-48f0-8cbd-29357df062e3">\r
+              <SHORT-NAME>etask_3</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
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="b71f84b9-4f48-40f3-a6c3-02e2aabb7dcf">\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="13e11cb6-2ea8-45df-aca8-5b2c785a419e">\r
+              <SHORT-NAME>etask_5</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>5</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="a471975b-1543-41a5-a56c-25affcc0878b">\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="f8e58cab-67b1-4e2b-a825-ceb98bb85743">\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>10</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="38d4c454-e3dd-47b5-8a01-a0aee062e796">\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="af762c17-2f49-46c2-a380-763ba5b9be79">\r
+              <SHORT-NAME>Alarm_1</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="4d562e94-c082-4513-a946-71331d918a2f">\r
+              <SHORT-NAME>Alarm_2</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="9ad1eb87-cc43-4fc3-a390-c7839f5cb55f">\r
+              <SHORT-NAME>SchTbl_1</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
+            <CONTAINER UUID="11c5b9c1-3eb2-4f06-a490-d75d001a72c5">\r
+              <SHORT-NAME>SchTbl_2</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>8</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_02/makefile b/system/kernel/testsystem/suite_02/makefile
new file mode 100644 (file)
index 0000000..9449ccd
--- /dev/null
@@ -0,0 +1,65 @@
+\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
+MOD_USE+=T32_TERM\r
+#MOD_USE+=PROTECTIONHOOK STARTUPHOOK SHUTDOWNHOOK ERRORHOOK                    1\r
+#MOD_USE+=PRETASKHOOK POSTTASKHOOK\r
+#CFG+=CONSOLE_T32\r
+#CFG+=CONSOLE_WINIDEA\r
+\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 = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
+#ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\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_02/test_master.c b/system/kernel/testsystem/suite_02/test_master.c
new file mode 100644 (file)
index 0000000..cb74fa5
--- /dev/null
@@ -0,0 +1,369 @@
+/* -------------------------------- 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
+ *   Autostart bananza..
+ *   1. Autostart of tasks
+ *   2. Autostart of alarms
+ *   3. Autostart of scheduletables.
+ */
+
+
+
+
+
+#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];
+}
+
+
+static _Bool started[OS_TASK_CNT];
+
+static TaskType prioList[OS_TASK_CNT] = {
+               TASK_ID_etask_master,
+               TASK_ID_etask_5,
+               TASK_ID_btask_4,
+               TASK_ID_etask_3,
+               TASK_ID_btask_2,
+               TASK_ID_OsIdle };
+
+static void setStarted( void ) {
+       TaskType taskId;
+       GetTaskID(&taskId);
+       for(int i=0;i<OS_TASK_CNT;i++) {
+               if( prioList[i] == taskId ) {
+                       started[i] ^= 1;
+                       break;
+               }
+       }
+}
+
+static _Bool checkStarted( void ) {
+       TaskType taskId;
+       _Bool after = 0;
+
+       GetTaskID(&taskId);
+
+       for(int i=0;i<OS_TASK_CNT;i++) {
+
+               if( after) {
+                       if( started[i] == 1 ) {
+                               return 0;
+                       }
+               } else {
+                       if( started[i] == 0 ) {
+                               return 0;
+                       }
+               }
+
+               // Should be less priority until we hit it.
+               if( prioList[i] == taskId ) {
+                       after = 1;
+               }
+
+       }
+       return 1;
+}
+
+
+
+
+
+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 ) {
+       StatusType rv;
+       uint32_t mask;
+       TEST_INIT();
+
+       TEST_START("Autostart, priority tasks",test_nr);
+       setStarted();
+       TEST_ASSERT(checkStarted());
+       WaitEvent(EVENT_MASK_Event1);
+       ClearEvent(EVENT_MASK_Event1);
+
+       TEST_NEXT("Autostart, Alarms and Scheduletables",++test_nr);
+
+
+       /* Autostart
+        * SetRelAlarm                          Increment: Must != 0
+        * SetAbsAlarm                          No limit
+        * StartScheduleTableAbs
+        * ..
+        * ...
+        *
+        */
+
+
+       rv = IncrementCounter(COUNTER_ID_Counter2);
+
+#if 0
+       validateErrorHook(      0,                                      /* backlog */
+                                                       E_OS_LIMIT,                     /* error */
+                                                       OSServiceId_ActivateTask,       /* Service Id */
+                                                       COUNTER_ID_Counter2, /* param1 */
+                                                       TEST_VALUE_NC,  /* param2 */
+                                                       TEST_VALUE_NC,  /* param3 */
+                                                       TEST_VALUE_NC,          /* API id */
+                                                       TEST_VALUE_NC );        /* Module id */
+#endif
+
+       validateErrorHook(      0,0,0,0,                                        /* backlog */
+                                                       TEST_VALUE_NC,  /* param2 */
+                                                       TEST_VALUE_NC,  /* param3 */
+                                                       TEST_VALUE_NC,          /* API id */
+                                                       TEST_VALUE_NC );        /* Module id */
+
+       mask = EVENT_MASK_Alarm_1 | EVENT_MASK_Alarm_2 | EVENT_MASK_SchTbl_1 | EVENT_MASK_SchTbl_2;
+       WaitEvent( mask );
+
+       TaskType currTask;
+       EventMaskType evMask;
+
+       GetTaskID(&currTask);
+       GetEvent(currTask,&evMask);
+       TEST_ASSERT( evMask == mask);
+
+       testExit(0);
+}\r
+
+//--------------------------------------------------------------------\r
+\r
+void etask_3( void )\r
+{
+       setStarted();
+       TEST_ASSERT(checkStarted());\r
+       TerminateTask();\r
+}\r
+\r
+void etask_5( void )\r
+{
+       setStarted();
+       TEST_ASSERT(checkStarted());\r
+       TerminateTask();\r
+}\r
+\r
+\r
+//--------------------------------------------------------------------\r
+\r
+void btask_2( void ) {\r
+       setStarted();
+       TEST_ASSERT(checkStarted());
+       TerminateTask();
+}\r
+
+void btask_4( void ) {\r
+       setStarted();
+       TEST_ASSERT(checkStarted());
+       TerminateTask();
+}\r
+\r
+void OsIdle(void ) {
+       setStarted();
+       TEST_ASSERT(checkStarted());
+       SetEvent(TASK_ID_etask_master, EVENT_MASK_Event1);
+       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
+       if( task > 10 ) {\r
+               while(1);\r
+       }\r
+       LDEBUG_PRINTF("## PreTaskHook, taskid=%d\n",task);\r
+}\r
+\r
+void PostTaskHook( void ) {\r
+       TaskType task;\r
+       GetTaskID(&task);\r
+       if( task > 10 ) {\r
+               while(1);\r
+       }\r
+\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 7499821e2b776dd0c3382b9ad31ec09d2c31b9ad..b7c0dce8d865f1826171da74dc867095c568bb87 100644 (file)
@@ -368,7 +368,7 @@ void etask_sup_m_03(void) {
                        TerminateTask();\r
                        break;\r
                default:\r
-                       assert(0);\r
+                       TEST_ASSERT(0);\r
                }\r
        }\r
 \r
index 4327970c64be0dce68bf9cd48ba6262cbc4b939f..ce47697e98ef65fbe000f0f068593d14e5c596f2 100644 (file)
  * -------------------------------- Arctic Core ------------------------------*/
 
 #include <stdint.h>
-#include <stdio.h>\r
+#include <stdio.h>
 #include "Platform_Types.h"
+#include "test_framework.h"
+#include "Cpu.h"
 \r
 int test_suite = 1;\r
 int test_nr = 1;\r
 int _test_ok = 0;\r
 int _test_failed = 0;\r
 
+
 int testCnt = 0;
+
+
+
 struct test {
        uint8_t testSuite;
        uint8_t testNr;
        uint16_t status;
+       const char *description;
+       uint32_t expectedErrMask;
 };
 \r
 struct test testTable[50] = { {0} };
 
+
+void testInit( void ) {
+
+}
 \r
 void test_done( void ) {\r
        printf( "\nTest summary\n"\r
@@ -39,16 +51,75 @@ void test_done( void ) {
                                "FAIL : %d\n", _test_ok + _test_failed, _test_ok, _test_failed);\r
 \r
 }\r
-\r
+
+/**
+ *
+ * @param text
+ * @param file
+ * @param line
+ * @param function
+ */\r
 void test_fail( const char *text,char *file,  int line, const char *function ) {\r
        printf("%02d %02d FAILED, %s , %d, %s\n",test_suite, test_nr, file, line, function);\r
        testTable[testCnt].testSuite = test_suite;
        testTable[testCnt].testNr = test_nr;
-       testTable[testCnt].status = 0;
-       testCnt++;
-       _test_failed++;\r
+       testTable[testCnt].status = TEST_FLG_ASSERT;
+//     testCnt++;
+//     _test_failed++;\r
 }\r
-\r
+
+
+/**
+ * Set errors that are expected during the test
+ * @param errMask
+ */
+void testSetErrorMask( uint32_t errMask ) {
+
+}
+
+
+void testValidateHook( void ) {
+
+}
+/**
+ * Start a test
+ */
+void testStart( const char *str, int testNr ) {
+       testTable[testCnt].status = TEST_FLG_RUNNING;
+       testTable[testCnt].testNr = testNr;
+       testTable[testCnt].description = str;
+       printf("%3d %3d %s\n",testCnt,testNr,str);
+}
+
+void testInc( void ) {
+       testCnt++;
+}
+
+/**
+ * End a testcase.
+ */
+void testEnd( void ) {
+       uint16_t status = testTable[testCnt].status;
+
+       if( status & TEST_FLG_RUNNING ) {
+               if( status & TEST_FLG_ASSERT ) {
+
+               } else {
+                       /* All is OK */
+                       testTable[testCnt].status &= TEST_FLG_RUNNING;
+                       testTable[testCnt].status |= TEST_FLG_OK;
+               }
+       } else {
+               printf("testEnd() on a test that is not running\n");
+       }
+       testCnt++;
+}
+
+void testExit( int rv ) {
+       Irq_Disable();
+       exit(rv);
+}
+
 \r
 void test_ok( void ) {\r
        printf("%02d %02d OK\n",test_suite, test_nr);
@@ -58,3 +129,4 @@ void test_ok( void ) {
        testCnt++;\r
        _test_ok++;\r
 }\r
+
index 18e9f5ea1fa5b02859fb8f119ea6697247621010..c0a5050f2815b68c96672a82700ae3a07cacdb0d 100644 (file)
  * -------------------------------- Arctic Core ------------------------------*/
 
 
-
-
-
-
-
-
 /*\r
  * test_framework.h\r
  *\r
 \r
 #ifndef TEST_FRAMEWORK_H_\r
 #define TEST_FRAMEWORK_H_\r
-\r
+
+/* Test flags */
+#define TEST_FLG_RUNNING               1
+#define TEST_FLG_ASSERT                (1<<1)
+#define TEST_FLG_DONE                  (1<<2)
+#define TEST_FLG_OK                    (1<<3)
+
+#define TEST_VALUE_NC                  (-1)\r
 void test_done( void );\r
 \r
-void test_fail( char *text,char *file,  int line , const char *function );\r
+void test_fail( const char *text,char *file,  int line, const char *function );\r
 void test_ok( void );\r
+
+void testStart( const char *str, int testNr );
+void testInc( void );
+void testEnd( void );
+void testExit( int rv );
 \r
 #endif /* TEST_FRAMEWORK_H_ */\r
index af3a36ef6403338f2ef8227016621550dd82fdd0..1b396a270ac240f68e2defc5e45c30f1ba199330 100644 (file)
@@ -9,7 +9,7 @@ if CPU()=="HC12DG128A"
   gosub &var\r
 )\r
 ELSE\r
-  gosub &cmd\r
+  gosub &cmd &arg1\r
 \r
 \r
 \r
@@ -32,10 +32,13 @@ dialog:
 //-------------------------------------------------------------\r
 load:\r
   LOCAL &file\r
-  dialog.file "&cfg_project_path_g"/*.elf\r
   ENTRY &file\r
-\r
-  IF OS.FILE(&file)\r
+  IF "&file"==""\r
+  (\r
+    dialog.file "&cfg_project_path_g"/*.elf\r
+    ENTRY &file\r
+  )\r
+  IF OS.FILE("&file")\r
     &cfg_loadfile_g="&file"\r
 \r
   do config save\r
@@ -163,6 +166,8 @@ path:
 \r
 \r
 \r
+\r
+\r
 \r
 \r
 \r
index 1764c1ad8e30a338bce54bd3b0467d085e43e69d..749aeaa583056e05f2b174b24b1fab5a116ccb9d 100644 (file)
@@ -1,3 +1,10 @@
+// Manage T32 terminal   \r
+// \r
+// args\r
+//   1 - file, if non-empty output is also written to this file.\r
+\r
+LOCAL &file\r
+ENtry &file\r
 winclear my_term\r
 WinPOS 50% 50% 50% 50% 1. 1. my_term\r
 term.size 80. 300.\r
@@ -12,7 +19,8 @@ IF CPUFAMILY()=="ARM"
 ELSE\r
 (\r
   term.view e:address.offset(v.address(t32_outport)) e:0\r
-  term.write e:address.offset(v.address(t32_outport))  hoppsan.log \r
+  IF "&file"!=""\r
+    term.write e:address.offset(v.address(t32_outport)) "&file"\r
 )\r
 \r
 enddo\r
@@ -26,3 +34,4 @@ enddo
 \r
 \r
 \r
+\r
diff --git a/tools/t32/test.cmm b/tools/t32/test.cmm
new file mode 100644 (file)
index 0000000..b98f61c
--- /dev/null
@@ -0,0 +1,64 @@
+//&cmdline="OS.area dir"\r
+//print &cmdline\r
+\r
+screen.always\r
+LOCAL &datafile &file &rfile &data &tmpfile &stop\r
+\r
+&stop="no"\r
+&datafile="va1.txt"\r
+&rfile="test_result.txt"\r
+&tdir="&cfg_project_path_g\system\kernel\testsystem"\r
+os cmd /c dir &tdir/B /A:D> &datafile\r
+\r
+os cmd /c del &rfile\r
+\r
+// Start file at #10 to make space for others to use #1..#9\r
+OPEN #10 &datafile /read\r
+READ #10 &data\r
+WHILE "&data"!=""\r
+( \r
+       &file="&cfg_project_path_g"+"/binaries/system_kernel_testsystem_"+"&data"+".elf"\r
+  IF OS.FILE("&file")\r
+  (\r
+    &tmpfile=os.tmpfile()\r
+    GOSUB testrun &file "hopp.txt"\r
+    os cmd /c type hopp.txt >> &rfile  \r
+  )\r
+  IF "&stop"=="yes"\r
+  (\r
+    print "Press any key"\r
+    inkey \r
+  )\r
+\r
+  READ #10 &data\r
+) \r
+\r
+CLOSE #10\r
+\r
+type "&rfile"\r
+\r
+enddo\r
+\r
+//-------------------------------------\r
+testrun:\r
+  LOCAL &file &term_file\r
+  ENTRY &file &term_file\r
+\r
+  IF ("&file"=="")||!OS.FILE("&file")\r
+    RETURN\r
+\r
+  sys.up\r
+  do load load &file\r
+  do term &term_file\r
+  b.s exit\r
+  b.s _exit\r
+  go\r
+  wait !run()\r
+  b.d /all\r
+  term.close\r
+  RETURN\r
+\r
+\r
+\r
+\r
+\r