--- /dev/null
+<?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
--- /dev/null
+/* -------------------------------- 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
--- /dev/null
+\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
--- /dev/null
+/*\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
--- /dev/null
+/*\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
--- /dev/null
+# 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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+/*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
--- /dev/null
+#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