]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Added small mpc5606s tests to boards/mpc5606s/examples/tests
authortojo <tobias.johansson@arccore.com>
Wed, 4 May 2011 13:17:27 +0000 (15:17 +0200)
committertojo <tobias.johansson@arccore.com>
Wed, 4 May 2011 13:17:27 +0000 (15:17 +0200)
boards/mpc5606s/examples/tests/NewEcu.arxml [new file with mode: 0644]
boards/mpc5606s/examples/tests/Tasks.c [new file with mode: 0644]
boards/mpc5606s/examples/tests/build_config.mk [new file with mode: 0644]
boards/mpc5606s/examples/tests/config/Os_Cfg.c [new file with mode: 0644]
boards/mpc5606s/examples/tests/config/Os_Cfg.h [new file with mode: 0644]
boards/mpc5606s/examples/tests/makefile [new file with mode: 0644]
boards/mpc5606s/examples/tests/test/Can_test.c [new file with mode: 0644]
boards/mpc5606s/examples/tests/test/Gpt_Test.c [new file with mode: 0644]
boards/mpc5606s/examples/tests/test/PortDio_Test.c [new file with mode: 0644]
boards/mpc5606s/examples/tests/test/Pwm_test.c [new file with mode: 0644]

diff --git a/boards/mpc5606s/examples/tests/NewEcu.arxml b/boards/mpc5606s/examples/tests/NewEcu.arxml
new file mode 100644 (file)
index 0000000..9a0e6e5
--- /dev/null
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.4"><TOP-LEVEL-PACKAGES>\r
+    <AR-PACKAGE>\r
+      <SHORT-NAME>NewEcu</SHORT-NAME>\r
+      <ELEMENTS>\r
+        <ECU-CONFIGURATION UUID="f393f163-72e1-4ed2-80b7-0234ea700271">\r
+          <SHORT-NAME>NewEcu</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">MPC551x</SD>\r
+                <SD GID="GENDIR">/test_vle/config</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <ECU-SW-COMPOSITION-REF DEST="ECU-SW-COMPOSITION">/NewEcu/SwComposition_NewEcu</ECU-SW-COMPOSITION-REF>\r
+          <MODULE-REFS>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/NewEcu/Os</MODULE-REF>\r
+          </MODULE-REFS>\r
+        </ECU-CONFIGURATION>\r
+        <ECU-SW-COMPOSITION UUID="5509ac22-28ea-42df-bf2f-8e436755651a">\r
+          <SHORT-NAME>SwComposition_NewEcu</SHORT-NAME>\r
+        </ECU-SW-COMPOSITION>\r
+        <MODULE-CONFIGURATION UUID="e6051c40-3b58-4141-b504-410965185f01">\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.11</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Os</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="c2e7c9b9-9669-4a4b-8f05-1fdafdc13eb1">\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>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugTask</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugAlarm</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugResource</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugScheduleTable</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugEvent</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="a0adb3fc-971a-488e-8680-59a83c7189bc">\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="e4006856-e7fe-4a0e-8d66-2628d47f2a17">\r
+              <SHORT-NAME>Task1</SHORT-NAME>\r
+              <ADMIN-DATA>\r
+                <SDGS>\r
+                  <SDG GID="Arccore::IdentifiableOptions"/>\r
+                </SDGS>\r
+              </ADMIN-DATA>\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="feff3a98-9a22-4656-b313-0f980d6dce7a">\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="d1e80b19-daaf-424c-8865-48703494a7f0">\r
+              <SHORT-NAME>Counter1</SHORT-NAME>\r
+              <ADMIN-DATA>\r
+                <SDGS>\r
+                  <SDG GID="Arccore::IdentifiableOptions"/>\r
+                </SDGS>\r
+              </ADMIN-DATA>\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>1</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
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+      </ELEMENTS>\r
+    </AR-PACKAGE>\r
+  </TOP-LEVEL-PACKAGES></AUTOSAR>\r
diff --git a/boards/mpc5606s/examples/tests/Tasks.c b/boards/mpc5606s/examples/tests/Tasks.c
new file mode 100644 (file)
index 0000000..814c39b
--- /dev/null
@@ -0,0 +1,253 @@
+/* -------------------------------- 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
+#include "Os.h"\r
+#include "Mcu.h"\r
+#include "arc.h"\r
+#include "EcuM.h"\r
+\r
+//#define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.\r
+#include "debug.h"\r
+\r
+// How many errors to keep in error log.\r
+#define ERROR_LOG_SIZE 20\r
+int i;\r
+int k = 0;\r
+/**\r
+ * Just an example of a basic task.\r
+ */\r
+\r
+void btask_3( void ) {\r
+       StackInfoType si;\r
+       TaskType currTask;\r
+       LDEBUG_PRINTF("[%08u] btask_3 start\n", (unsigned)GetOsTick() );\r
+\r
+       GetTaskID(&currTask);\r
+       Os_Arc_GetStackInfo(currTask,&si);\r
+       LDEBUG_PRINTF("btask_3: %u%% stack usage\n",\r
+                       (unsigned)OS_STACK_USAGE(&si));\r
+\r
+       TerminateTask();\r
+}\r
+\r
+/**\r
+ * An extended task is auto-started and is also triggered by an alarm\r
+ * that sets event 2.\r
+ */\r
+#if 0\r
+void main(void){\r
+       int i;\r
+       ME.MER.R = 0x0000001D;          /* Enable DRUN, RUN0, SAFE, RESET modes */\r
+                                                 /* Initialize PLL before turning it on: */\r
+                 //CGM.FMPLL_CR.R = 0x02400100;    /* 8 MHz xtal: Set PLL0 to 64 MHz */\r
+                 ME.RUN[0].R = 0x001F0074;       /* RUN0 cfg: 16MHzIRCON,OSC0ON,PLL0ON,syclk=PLL */\r
+                 ME.RUNPC[1].R = 0x00000010;     /* Peri. Cfg. 1 settings: only run in RUN0 mode */\r
+                 ME.PCTL[4].R = 0x01;            /* MPC56xxB/P/S DSPI0:  select ME.RUNPC[1] */\r
+                 ME.PCTL[5].R = 0x01;            /* MPC56xxB/P/S DSPI1:  select ME.RUNPC[1] */\r
+                 ME.PCTL[68].R = 0x01;           /* MPC56xxB/S SIUL:  select ME.RUNPC[0] */\r
+                                                 /* Mode Transition to enter RUN0 mode: */\r
+                 ME.MCTL.R = 0x40005AF0;         /* Enter RUN0 Mode & Key */\r
+                 ME.MCTL.R = 0x4000A50F;         /* Enter RUN0 Mode & Inverted Key */\r
+                 while (ME.GS.B.S_MTRANS) {}     /* Wait for mode transition to complete */\r
+                                                 /* Note: could wait here using timer and/or I_TC IRQ */\r
+                 while(ME.GS.B.S_CURRENTMODE != 4) {} /* Verify RUN0 is the current mode */\r
+\r
+       SIU.PCR[69].R = 0x200;\r
+       for(i=0;i<100000;i++)\r
+       {\r
+               if(i==99999)\r
+               {\r
+               SIU.GPDO[69].B.PDO = ~SIU.GPDO[69].B.PDO;\r
+               i = 0;\r
+               }\r
+               else;\r
+       }\r
+       while(1);\r
+}\r
+#endif\r
+void etask_1( void ) {\r
+       volatile float tryFloatingPoint = 0.0F;\r
+       StackInfoType si;\r
+       TaskType currTask;\r
+\r
+       //EcuM_StartupTwo();\r
+       LDEBUG_FPUTS("etask_1 start\n");\r
+       for(;;) {\r
+               for(i=0;i<300000;i++);\r
+               SIU.GPDO[69].B.PDO = ~SIU.GPDO[69].B.PDO;\r
+               SetEvent(TASK_ID_etask_2,EVENT_MASK_EVENT_1);\r
+               WaitEvent(EVENT_MASK_EVENT_2);\r
+               ClearEvent(EVENT_MASK_EVENT_2);\r
+               tryFloatingPoint += 1.0F;\r
+               GetTaskID(&currTask);\r
+               Os_Arc_GetStackInfo(currTask,&si);\r
+               LDEBUG_PRINTF("etask_1: %u%% stack usage\n",\r
+                               (unsigned)OS_STACK_USAGE(&si));\r
+\r
+       }\r
+}\r
+\r
+/**\r
+ * An extended task that receives events from someone\r
+ * and activates task: btask_3.\r
+ */\r
+void etask_2( void ) {\r
+\r
+       LDEBUG_FPUTS("etask_2 start\n");\r
+       Test_Gpt();\r
+       SIU.PCR[69].B.OBE = 1;\r
+\r
+       for(;;) {\r
+               for(i=0;i<300000;i++);\r
+               SIU.GPDO[69].B.PDO = ~SIU.GPDO[69].B.PDO;\r
+               WaitEvent(EVENT_MASK_EVENT_1);\r
+               ClearEvent(EVENT_MASK_EVENT_1);\r
+               ActivateTask(TASK_ID_btask_3);\r
+               {\r
+                       StackInfoType si;\r
+                       TaskType currTask;\r
+                       GetTaskID(&currTask);\r
+                       Os_Arc_GetStackInfo(currTask,&si);\r
+                       LDEBUG_PRINTF("etask_2: %u%% stack usage\n",\r
+                                       (unsigned)OS_STACK_USAGE(&si));\r
+               }\r
+       }\r
+\r
+\r
+}\r
+\r
+\r
+/*\r
+ * Functions that must be supplied by the example\r
+ */\r
+//extern OsTickType OsTickFreq;\r
+//extern const OsTickType OsTickFreq ;\r
+//long xyyy __attribute__((section(".rodata"))) = 1000;\r
+//long abc = 0;\r
+void OsIdle( void ) {\r
+\r
+int i;\r
+//OsTickFreq++;\r
+               //INTC.PSR[4].R = 2;\r
+               //INTC.SSCIR[4].R = 2;\r
+//abc = xyyy;\r
+while(1){\r
+               //INTC.CPR.B.PRI = 0;\r
+               //PIT.CH[1].TFLG.B.TIF = 1;\r
+               //INTC.PSR[3].R = 2;\r
+               //INTC.SSCIR[3].R = 2;\r
+       //abc++;\r
+\r
+}\r
+for(i=0;i<100000;i++){}\r
+\r
+       INTC.PSR[4].R = 2;\r
+       INTC.SSCIR[4].R = 2;\r
+while(1);\r
+}\r
+\r
+\r
+/* Global hooks */\r
+ProtectionReturnType ProtectionHook( StatusType FatalError ) {\r
+       LDEBUG_FPUTS("## ProtectionHook\n");\r
+       return PRO_KILLAPPL;\r
+}\r
+\r
+void StartupHook( void ) {\r
+       LDEBUG_FPUTS("## StartupHook\n");\r
+\r
+       LDEBUG_PRINTF("Sys clock %u Hz\n",(unsigned)McuE_GetSystemClock());\r
+}\r
+\r
+void ShutdownHook( StatusType Error ) {\r
+       LDEBUG_FPUTS("## ShutdownHook\n");\r
+       while(1);\r
+}\r
+\r
+struct LogBad_s {\r
+       uint32_t param1;\r
+       uint32_t param2;\r
+       uint32_t param3;\r
+       TaskType taskId;\r
+       OsServiceIdType serviceId;\r
+       StatusType error;\r
+};\r
+\r
+void ErrorHook( StatusType Error ) {\r
+\r
+       TaskType task;\r
+       static struct LogBad_s LogBad[ERROR_LOG_SIZE];\r
+       static uint8_t ErrorCount = 0;\r
+\r
+       GetTaskID(&task);\r
+\r
+\r
+       OsServiceIdType service = OSErrorGetServiceId();\r
+\r
+       /* Grab the arguments to the functions\r
+        * This is the standard way, see 11.2 in OSEK spec\r
+        */\r
+       switch(service) {\r
+       case OSServiceId_SetRelAlarm:\r
+       {\r
+               // Read the arguments to the faulty functions...\r
+               AlarmType alarm_id = OSError_SetRelAlarm_AlarmId;\r
+               TickType increment = OSError_SetRelAlarm_Increment;\r
+               TickType cycle = OSError_SetRelAlarm_Cycle;\r
+               (void)alarm_id;\r
+               (void)increment;\r
+               (void)cycle;\r
+\r
+               // ... Handle this some way.\r
+               break;\r
+       }\r
+       /*\r
+        * The same pattern as above applies for all other OS functions.\r
+        * See Os.h for names and definitions.\r
+        */\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       LDEBUG_PRINTF("## ErrorHook err=%u\n",Error);\r
+\r
+       /* Log the errors in a buffer for later review */\r
+       LogBad[ErrorCount].param1 = os_error.param1;\r
+       LogBad[ErrorCount].param2 = os_error.param2;\r
+       LogBad[ErrorCount].param3 = os_error.param3;\r
+       LogBad[ErrorCount].serviceId = service;\r
+       LogBad[ErrorCount].taskId = task;\r
+       LogBad[ErrorCount].error = Error;\r
+\r
+       ErrorCount++;\r
+\r
+       // Stall if buffer is full.\r
+       while(ErrorCount >= ERROR_LOG_SIZE);\r
+}\r
+\r
+void PreTaskHook( void ) {\r
+       TaskType task;\r
+       GetTaskID(&task);\r
+//     LDEBUG_PRINTF("## PreTaskHook, taskid=%u\n",task);\r
+}\r
+\r
+void PostTaskHook( void ) {\r
+       TaskType task;\r
+       GetTaskID(&task);\r
+//     LDEBUG_PRINTF("## PostTaskHook, taskid=%u\n",task);\r
+}\r
+\r
diff --git a/boards/mpc5606s/examples/tests/build_config.mk b/boards/mpc5606s/examples/tests/build_config.mk
new file mode 100644 (file)
index 0000000..75c9ad7
--- /dev/null
@@ -0,0 +1,17 @@
+\r
+# Version of build system\r
+REQUIRED_BUILD_SYSTEM_VERSION=1.0.0\r
+\r
+# Get configuration makefiles\r
+-include ../config/*.mk\r
+-include ../config/$(BOARDDIR)/*.mk\r
+\r
+\r
+# Project settings\r
+\r
+MOD_USE += MCU KERNEL ECUM DET GPT PORT DIO PWM #CAN\r
+\r
+SELECT_CONSOLE = RAMLOG\r
+\r
+SELECT_OPT = OPT_DEBUG \r
+\r
diff --git a/boards/mpc5606s/examples/tests/config/Os_Cfg.c b/boards/mpc5606s/examples/tests/config/Os_Cfg.c
new file mode 100644 (file)
index 0000000..cc178e5
--- /dev/null
@@ -0,0 +1,146 @@
+/*\r
+* Configuration of module: Os (Os_Cfg.c)\r
+*\r
+* Created by:              ArcCore AB\r
+* Copyright:               Copyright ArcCore AB 2010\r
+*\r
+* Configured for (MCU):    Undefined MCU\r
+*\r
+* Module vendor:           ArcCore\r
+* Generator version:       2.0.11\r
+*\r
+* Generated by Arctic Studio (http://arccore.com) \r
+*           on Thu Mar 10 09:40:07 CET 2011\r
+*/\r
+\r
+       \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 = 0;\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
+                                       0,\r
+                                       0),\r
+};\r
+\r
+CounterType Os_Arc_OsTickCounter = COUNTER_ID_OsTick;\r
+\r
+// ##################################    ALARMS     ################################\r
+GEN_ALARM_AUTOSTART(ALARM_ID_Alarm_4ms, ALARM_AUTOSTART_ABSOLUTE, 100, 4, OSDEFAULTAPPMODE );\r
+       \r
+\r
+GEN_ALARM_HEAD {\r
+       GEN_ALARM(      ALARM_ID_Alarm_4ms,\r
+                               "Alarm_4ms",\r
+                               COUNTER_ID_OsTick,\r
+                               GEN_ALARM_AUTOSTART_NAME(ALARM_ID_Alarm_4ms),\r
+                               ALARM_ACTION_SETEVENT,\r
+                               TASK_ID_etask_1,\r
+                               EVENT_MASK_EVENT_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_3,2048);\r
+DECLARE_STACK(etask_1,2048);\r
+DECLARE_STACK(etask_2,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_3,\r
+               3,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_ETASK(\r
+               etask_1,\r
+               1,\r
+               FULL,\r
+               TRUE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_2,\r
+               2,\r
+               FULL,\r
+               TRUE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+};\r
+\r
+// ##################################    HOOKS     #################################\r
+GEN_HOOKS( \r
+       StartupHook, \r
+       NULL, \r
+       ShutdownHook, \r
+       ErrorHook,\r
+       PreTaskHook, \r
+       PostTaskHook \r
+);\r
+\r
+// ##################################    ISRS     ##################################\r
+\r
+\r
+// ############################    SCHEDULE TABLES     #############################\r
+\r
+// Table heads\r
+GEN_SCHTBL_HEAD {\r
+};\r
+\r
+GEN_PCB_LIST()\r
+\r
+uint8_t os_interrupt_stack[OS_INTERRUPT_STACK_SIZE] __attribute__ ((aligned (0x10)));\r
+\r
+GEN_IRQ_VECTOR_TABLE_HEAD {};\r
+GEN_IRQ_ISR_TYPE_TABLE_HEAD {};\r
+GEN_IRQ_PRIORITY_TABLE_HEAD {};\r
+\r
+#include "os_config_funcs.h"\r
diff --git a/boards/mpc5606s/examples/tests/config/Os_Cfg.h b/boards/mpc5606s/examples/tests/config/Os_Cfg.h
new file mode 100644 (file)
index 0000000..2cd5f42
--- /dev/null
@@ -0,0 +1,85 @@
+/*\r
+* Configuration of module: Os (Os_Cfg.h)\r
+*\r
+* Created by:              ArcCore AB\r
+* Copyright:               Copyright ArcCore AB 2010\r
+*\r
+* Configured for (MCU):    Undefined MCU\r
+*\r
+* Module vendor:           ArcCore\r
+* Generator version:       2.0.11\r
+*\r
+* Generated by Arctic Studio (http://arccore.com) \r
+*           on Thu Mar 10 09:40:07 CET 2011\r
+*/\r
+\r
+
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
+#error Os: Configuration file expected BSW module version to be 2.0.*
+#endif
+
+\r
+#ifndef OS_CFG_H_\r
+#define OS_CFG_H_\r
+\r
+\r
+// Alarm Id's\r
+#define ALARM_ID_Alarm_4ms     0\r
+\r
+// Counter Id's\r
+#define COUNTER_ID_OsTick      0\r
+\r
+// Counter macros\r
+#define OSMAXALLOWEDVALUE_OsTick 65535\r
+\r
+\r
+// Event masks\r
+#define EVENT_MASK_EVENT_0     0\r
+#define EVENT_MASK_EVENT_1     1\r
+#define EVENT_MASK_EVENT_2     2\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_3        1\r
+#define TASK_ID_etask_1        2\r
+#define TASK_ID_etask_2        3\r
+\r
+// Task entry points\r
+void OsIdle( void );\r
+void btask_3( void );\r
+void etask_1( void );\r
+void etask_2( void );\r
+\r
+// Schedule table id's\r
+\r
+// Stack size\r
+#define OS_INTERRUPT_STACK_SIZE        2048\r
+#define OS_OSIDLE_STACK_SIZE 1028\r
+\r
+#define OS_ALARM_CNT                   1 \r
+#define OS_TASK_CNT                            4\r
+#define OS_SCHTBL_CNT                  0\r
+#define OS_COUNTER_CNT                 1\r
+#define OS_EVENTS_CNT                  3\r
+#define OS_ISRS_CNT                            0\r
+#define OS_RESOURCE_CNT                        0\r
+#define OS_LINKED_RESOURCE_CNT 0\r
+\r
+#define CFG_OS_DEBUG                           STD_OFF\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/boards/mpc5606s/examples/tests/makefile b/boards/mpc5606s/examples/tests/makefile
new file mode 100644 (file)
index 0000000..ec15508
--- /dev/null
@@ -0,0 +1,47 @@
+# Project files (adds all .c files in project root)\r
+PROJECT_C_FILES=$(notdir $(wildcard ../*.c))\r
+obj-y += $(PROJECT_C_FILES:%.c=%.o)\r
+\r
+obj-y += Gpt_test.o\r
+obj-y += PortDio_test.o\r
+obj-y += Pwm_test.o\r
+obj-y += Can_test.o\r
+\r
+VPATH += ..\r
+\r
+VPATH += ../test\r
+inc-y += ../test\r
+\r
+inc-y += $(ROOTDIR)/system/kernel/$(objdir)\r
+inc-y += $(ROOTDIR)/system/kernel/include\r
+\r
+# The more precise configuration, the higher preceedance.\r
+VPATH := ../config/$(BOARDDIR) ../config $(VPATH)\r
+inc-y := ../config/$(BOARDDIR) ../config $(inc-y)\r
+\r
+# linkfile\r
+#ldcmdfile-y = linkscript_gcc.ldp\r
+#vpath %.ldf $(ROOTDIR)/$(ARCH_PATH-y)/scripts\r
+ldcmdfile-y = linkscript_$(COMPILER).lcf\r
+vpath %.ldf $(ROOTDIR)/$(ARCH_PATH-y)/scripts\r
+\r
+# What I want to build\r
+build-exe-y = test_vle.elf\r
+\r
+\r
+#################### Arctic Core make system ######################\r
+# Following is an explanation of the most usable features \r
+# of the Arctic Core make system.\r
+#\r
+# obj-y : list of object files to build.\r
+# VPATH : list of directories in which to\r
+#         look for source files.\r
+# inc-y : list of directories in which to\r
+#         look for header files.\r
+# libitem-y : list of libraries to include. \r
+# build-exe-y : the name of build the output file.\r
+# ldcmdfile-y: path to linkscript, used when building "build-exe-y"\r
+#\r
+# For more information see:\r
+# http://arccore.com/wiki/Makesystem\r
+###################################################################\r
diff --git a/boards/mpc5606s/examples/tests/test/Can_test.c b/boards/mpc5606s/examples/tests/test/Can_test.c
new file mode 100644 (file)
index 0000000..e6d3234
--- /dev/null
@@ -0,0 +1,39 @@
+#include "Can.h"\r
+\r
+void delayms(int ms)\r
+{\r
+    int i,j;\r
+    if (ms<1) ms=1;\r
+    for(i=0;i<ms;i++)\r
+        for(j=0;j<1335;j++);\r
+}\r
+\r
+void Test_Can(void)\r
+{      \r
+       uint8 i;\r
+       Can_PduType canFrame = {0};\r
+       uint8 TxData[6] = {0};\r
+\r
+       for(i = 0; i < 6; i++)\r
+       {\r
+               TxData[i] = (i + 1);\r
+       }\r
+\r
+       canFrame.id = 0x22B;\r
+       canFrame.length = 6;\r
+       canFrame.sdu = TxData;\r
+       canFrame.swPduHandle = 1;\r
+\r
+       SIU.PSMI[0].R = 0x00;           /* MPC56xxS: Select PCR17 for CAN0RX input */\r
+       SIU.PSMI[1].R = 0x00;\r
+\r
+       Can_SetControllerMode(CAN_CTRL_A, CAN_T_START);\r
+       Can_SetControllerMode(CAN_CTRL_B, CAN_T_START);\r
+\r
+       while(1)\r
+       {\r
+               Can_Write(CAN_HTH_A_1, &canFrame);\r
+               Can_Write(CAN_HTH_B_1, &canFrame);\r
+               delayms(1000);\r
+       }\r
+}\r
diff --git a/boards/mpc5606s/examples/tests/test/Gpt_Test.c b/boards/mpc5606s/examples/tests/test/Gpt_Test.c
new file mode 100644 (file)
index 0000000..38c9857
--- /dev/null
@@ -0,0 +1,26 @@
+#include "Gpt.h"\r
+\r
+\r
+void Test_Gpt(void)\r
+{\r
+       Gpt_ValueType value_1,value_2;\r
+\r
+       Gpt_DisableNotification( GPT_CHANNEL_PIT_1 );\r
+\r
+       Gpt_EnableNotification( GPT_CHANNEL_PIT_0 );\r
+\r
+\r
+\r
+       Gpt_StartTimer( GPT_CHANNEL_PIT_0, 0x300000 );\r
+\r
+\r
+\r
+       value_1 = Gpt_GetTimeElapsed( GPT_CHANNEL_PIT_0 );\r
+\r
+       value_2 = Gpt_GetTimeRemaining( GPT_CHANNEL_PIT_0 );\r
+       \r
+       //Gpt_StopTimer( GPT_CHANNEL_PIT_0);\r
+\r
+       while(1);\r
+\r
+}\r
diff --git a/boards/mpc5606s/examples/tests/test/PortDio_Test.c b/boards/mpc5606s/examples/tests/test/PortDio_Test.c
new file mode 100644 (file)
index 0000000..23ee0ba
--- /dev/null
@@ -0,0 +1,98 @@
+/*Belows includes added by Cobb for test Port and Dio*/\r
+#include "mpc55xx.h"\r
+#include "Port.h"\r
+#include "Dio.h"\r
+/*************************END*************************/\r
+\r
+void PortDio_Test(void)\r
+{\r
+       /************Tested by Cobb***************/\r
+       volatile uint32_t i = 0,i1 = 0,i2 = 0,i3 = 0,i4 = 0; /* Dummy idle counter */\r
+       Dio_PortLevelType temp = 0;\r
+       Dio_LevelType temp1 = 0;\r
+       Dio_PortLevelType temp_PL1 = 0;\r
+       Dio_PortLevelType temp_PL2 = 0;\r
+       Dio_PortLevelType temp_PL3 = 0;\r
+       Dio_PortLevelType temp_PL4 = 0;\r
+       Dio_PortLevelType temp_PL5 = 0;\r
+       Std_VersionInfoType versionInfo;\r
+\r
+#if 1 /*It is just test Port.*/\r
+       Port_Init(&PortConfigData);\r
+\r
+       /*LED1...LED4*/\r
+       Port_SetPinMode(68,0x0200);\r
+       Port_SetPinMode(69,0x0200);\r
+       Port_SetPinMode(70,0x0200);\r
+       Port_SetPinMode(71,0x0200);\r
+\r
+       /*Test setting the normal pins mode.*/\r
+       Port_SetPinMode(51,0x0103);\r
+       Port_SetPinMode(52,0x0103);\r
+       Port_SetPinMode(53,0x0103);\r
+       Port_SetPinMode(54,0x0103);\r
+       Port_SetPinMode(55,0x0103);\r
+\r
+       /*Test the function of Port_SetPinDirection.*/\r
+       Port_SetPinDirection(51,PORT_PIN_OUT);\r
+       Port_SetPinDirection(52,PORT_PIN_OUT);\r
+       Port_SetPinDirection(53,PORT_PIN_OUT);\r
+       Port_SetPinDirection(54,PORT_PIN_OUT);\r
+       Port_SetPinDirection(55,PORT_PIN_OUT);\r
+\r
+       /*The function couldn't been tested. Out of reset pins PH[0:3](PCR99~PCR102) are available as JTAG pins(TCK,TDI,TDO and TMS respectively)\r
+        * It is up to the user to configure pins PH[0:3]when need.\r
+       */\r
+       //Port_RefreshPortDirection();\r
+\r
+       /*Test the function of Port_GetVersionInfo*/\r
+       Port_GetVersionInfo(&versionInfo);\r
+\r
+#endif\r
+\r
+#if 1/*It is just test Dio.*/\r
+\r
+       /*Test the function Dio_WriteChannel and Dio_ReadChannel*/\r
+       Dio_WriteChannel(4,1);\r
+       temp1 = Dio_ReadChannel(4);\r
+       Dio_WriteChannel(5,1);\r
+       temp1 = Dio_ReadChannel(5);\r
+       Dio_WriteChannel(6,1);\r
+       temp1 = Dio_ReadChannel(6);\r
+       Dio_WriteChannel(7,1);\r
+       temp1 = Dio_ReadChannel(7);\r
+\r
+       /*Test the function of Dio_WritePort and Dio_ReadPort.*/\r
+       Dio_WritePort(0,0xabcd);\r
+       temp = Dio_ReadPort(0);\r
+       Dio_WritePort(0,0xacbd);\r
+       temp = Dio_ReadPort(0);\r
+       Dio_WritePort(0,0xdbca);\r
+       temp = Dio_ReadPort(0);\r
+       Dio_WritePort(0,0xbacd);\r
+       temp = Dio_ReadPort(0);\r
+       Dio_WritePort(0,0xabdc);\r
+       temp = Dio_ReadPort(0);\r
+\r
+       /*Test the function Dio_WriteChannelGroup and Dio_ReadChannelGroup.*/\r
+       Dio_WriteChannelGroup(&DioConfigData[0],0xff01);\r
+       temp_PL1 = Dio_ReadChannelGroup(&DioConfigData[0]);\r
+\r
+       Dio_WriteChannelGroup(&DioConfigData[0],0xdcba);\r
+       temp_PL2 = Dio_ReadChannelGroup(&DioConfigData[0]);\r
+\r
+       Dio_WriteChannelGroup(&DioConfigData[0],0xcdab);\r
+       temp_PL3 = Dio_ReadChannelGroup(&DioConfigData[0]);\r
+\r
+       Dio_WriteChannelGroup(&DioConfigData[0],0xdddc);\r
+       temp_PL4 = Dio_ReadChannelGroup(&DioConfigData[0]);\r
+\r
+       Dio_WriteChannelGroup(&DioConfigData[0],0xaded);\r
+       temp_PL5 = Dio_ReadChannelGroup(&DioConfigData[0]);\r
+\r
+#endif\r
+\r
+\r
+/****************END*******************/\r
+\r
+}\r
diff --git a/boards/mpc5606s/examples/tests/test/Pwm_test.c b/boards/mpc5606s/examples/tests/test/Pwm_test.c
new file mode 100644 (file)
index 0000000..a171eda
--- /dev/null
@@ -0,0 +1,11 @@
+#include "Pwm.h"\r
+\r
+\r
+void Test_Pwm(void)\r
+{\r
+       Pwm_SetDutyCycle(PWM_CHANNEL_7,0x2000);\r
+       Pwm_SetPeriodAndDuty( PWM_CHANNEL_2, 5000, 0x2000 );\r
+       while(1);\r
+       Pwm_DeInit();\r
+\r
+}\r