]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Blinker example fixed for arm cm targets
authorjonte <devnull@localhost>
Fri, 26 Nov 2010 13:10:01 +0000 (14:10 +0100)
committerjonte <devnull@localhost>
Fri, 26 Nov 2010 13:10:01 +0000 (14:10 +0100)
12 files changed:
boards/stm32_mcbstm32/config/Dio_Cfg.h
boards/stm32_mcbstm32/config/Dio_Lcfg.c
boards/stm32_stm3210c/build_config.mk
boards/stm32_stm3210c/config/Dio_Cfg.h
examples/blinker_node/Rte/Rte.h
examples/blinker_node/config/stm32_mcbstm32/Os_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/Os_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/Os_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/Os_Cfg.h [new file with mode: 0644]
scripts/rules.mk
system/EcuM/EcuM_Internals.h
system/EcuM/EcuM_Main.c

index 7898232fd3af78e64ca90cd82b62f409dd619dbd..aa01df9b71d3467ba4c6b9485f2447a917c062b3 100644 (file)
@@ -131,7 +131,7 @@ typedef enum
         DIO_CHANNEL_F14,\r
         DIO_CHANNEL_F15,\r
 \r
-} Dio_ChannelType;\r
+} Dio_Hw_ChannelType;\r
 //@}\r
 \r
 /** HW specific DIO port definitions. */\r
@@ -144,24 +144,10 @@ typedef enum {
        DIO_PORT_D,\r
        DIO_PORT_E,\r
        DIO_PORT_F,\r
-} Dio_PortType;\r
+} Dio_Hw_PortType;\r
 \r
-/** @req DIO021 */\r
-/** @req DIO022 */\r
-typedef struct\r
-{\r
-  Dio_PortType port;\r
-  uint16 offset;\r
-  uint16 mask;\r
-} Dio_ChannelGroupType;\r
-\r
-/** @req DIO023 */\r
-typedef uint16 Dio_LevelType;\r
-\r
-/** @req DIO024 */\r
-typedef uint16 Dio_PortLevelType;\r
-\r
-#define LED_CHANNEL (DIO_CHANNEL_B13)\r
+#define LED_CHANNEL1 (DIO_CHANNEL_B13)\r
+#define LED_CHANNEL2 (DIO_CHANNEL_B14)\r
 \r
 #define LED_PORT               (DIO_PORT_B)\r
 \r
index 7fd913d9b38005483f8cc04052b3320d8ffd4245..e1a57d7f1e4f1d218edb5eb101ba0725d42260c1 100644 (file)
@@ -17,7 +17,8 @@
 \r
 const Dio_ChannelType DioChannelConfigData[] =\r
 {\r
-       LED_CHANNEL,\r
+       LED_CHANNEL1,\r
+       LED_CHANNEL2,\r
        DIO_END_OF_LIST,\r
 };\r
 \r
index d1ce89bd5efec573b704e60327c5dd2f32797ac2..9b2ecb190806f26a13fa85edc281b72bdae9f42b 100644 (file)
@@ -10,7 +10,7 @@ ARCH_MCU=arm_cm3
 \r
 CFG=ARM ARM_CM3\r
 # Add our board  \r
-CFG+=BRD_STM32_MCBSTM32 \r
+CFG+=BRD_STM32_STM3210C \r
 \r
 # \r
 # ST have devided devices into ( See chapter 6 in Ref manual )\r
index eea16368e1e4310f5f78c1dc81f0939b97e82e42..efe9d84e9dfed2352957749bba00338502fc3cba 100644 (file)
@@ -146,10 +146,10 @@ typedef enum {
        DIO_PORT_F,\r
 } Dio_Hw_PortType;\r
 \r
-#define LED_CHANNEL1 (DIO_CHANNEL_D3)\r
-#define LED_CHANNEL2 (DIO_CHANNEL_D4)\r
-#define LED_CHANNEL3 (DIO_CHANNEL_D7)\r
-#define LED_CHANNEL4 (DIO_CHANNEL_D13)\r
+#define LED_CHANNEL1 (DIO_CHANNEL_D7)\r
+#define LED_CHANNEL2 (DIO_CHANNEL_D13)\r
+#define LED_CHANNEL3 (DIO_CHANNEL_D3)\r
+#define LED_CHANNEL4 (DIO_CHANNEL_D4)\r
 \r
 #define LED_PORT               (DIO_PORT_D)\r
 \r
index 2fcde906b46ce2f6cc0dffa697ac8eeb19d6aeac..e2b949d3c5816a9aa4dc88bbc0738dd215d4c2cd 100644 (file)
 #elif defined(CFG_BRD_HCS12X_ELMICRO_TBOARD)\r
 #define LED_CHANNEL             DIO_CHANNEL_NAME_DO_PB0\r
 \r
+#elif defined(CFG_BRD_STM32_STM3210C)\r
+#define LED_CHANNEL             LED_CHANNEL1\r
+\r
+#elif defined(CFG_BRD_STM32_MCBSTM32)\r
+#define LED_CHANNEL             LED_CHANNEL1\r
+\r
 #else\r
 #warning "Unknown board or CFG_BRD_* undefined"\r
 \r
diff --git a/examples/blinker_node/config/stm32_mcbstm32/Os_Cfg.c b/examples/blinker_node/config/stm32_mcbstm32/Os_Cfg.c
new file mode 100644 (file)
index 0000000..e14fd79
--- /dev/null
@@ -0,0 +1,170 @@
+/*\r
+ * Configuration of module Os (Os_Cfg.c)\r
+ *\r
+ * Created by: ArcCore AB\r
+ * Configured for (MCU): Undefined MCU\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.11\r
+ *\r
+ * Copyright ArcCore AB 2010\r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Nov 24 20:34:20 CET 2010\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 = 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
+                                       0,\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_alarm10,\r
+                               "alarm10",\r
+                               COUNTER_ID_OsTick,\r
+                               NULL,\r
+                               ALARM_ACTION_ACTIVATETASK,\r
+                               TASK_ID_bTask10,\r
+                               NULL,\r
+                               NULL ),\r
+       GEN_ALARM(      ALARM_ID_alarm100,\r
+                               "alarm100",\r
+                               COUNTER_ID_OsTick,\r
+                               NULL,\r
+                               ALARM_ACTION_ACTIVATETASK,\r
+                               TASK_ID_bTask100,\r
+                               NULL,\r
+                               NULL ),\r
+       GEN_ALARM(      ALARM_ID_alarm25,\r
+                               "alarm25",\r
+                               COUNTER_ID_OsTick,\r
+                               NULL,\r
+                               ALARM_ACTION_ACTIVATETASK,\r
+                               TASK_ID_bTask25,\r
+                               NULL,\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(Startup,2048);\r
+DECLARE_STACK(bTask10,2048);\r
+DECLARE_STACK(bTask100,2048);\r
+DECLARE_STACK(bTask25,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
+               Startup,\r
+               2,\r
+               FULL,\r
+               TRUE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               bTask10,\r
+               1,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               bTask100,\r
+               1,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               bTask25,\r
+               1,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\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/examples/blinker_node/config/stm32_mcbstm32/Os_Cfg.h b/examples/blinker_node/config/stm32_mcbstm32/Os_Cfg.h
new file mode 100644 (file)
index 0000000..48cff7f
--- /dev/null
@@ -0,0 +1,85 @@
+/*\r
+ * Configuration of module Os (Os_Cfg.h)\r
+ *\r
+ * Created by: ArcCore AB\r
+ * Configured for (MCU): Undefined MCU\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.11\r
+ *\r
+ * Copyright ArcCore AB 2010\r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Nov 24 20:34:20 CET 2010\r
+ */\r
+\r
+
+#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_alarm10       0\r
+#define ALARM_ID_alarm100      1\r
+#define ALARM_ID_alarm25       2\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
+\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_Startup        1\r
+#define TASK_ID_bTask10        2\r
+#define TASK_ID_bTask100       3\r
+#define TASK_ID_bTask25        4\r
+\r
+// Task entry points\r
+void OsIdle( void );\r
+void Startup( void );\r
+void bTask10( void );\r
+void bTask100( void );\r
+void bTask25( void );\r
+\r
+// Schedule table id's\r
+\r
+// Stack size\r
+#define OS_INTERRUPT_STACK_SIZE        1024\r
+#define OS_OSIDLE_STACK_SIZE 512\r
+\r
+#define OS_ALARM_CNT                   3 \r
+#define OS_TASK_CNT                            5\r
+#define OS_SCHTBL_CNT                  0\r
+#define OS_COUNTER_CNT                 1\r
+#define OS_EVENTS_CNT                  0\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/examples/blinker_node/config/stm32_stm3210c/Os_Cfg.c b/examples/blinker_node/config/stm32_stm3210c/Os_Cfg.c
new file mode 100644 (file)
index 0000000..e14fd79
--- /dev/null
@@ -0,0 +1,170 @@
+/*\r
+ * Configuration of module Os (Os_Cfg.c)\r
+ *\r
+ * Created by: ArcCore AB\r
+ * Configured for (MCU): Undefined MCU\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.11\r
+ *\r
+ * Copyright ArcCore AB 2010\r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Nov 24 20:34:20 CET 2010\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 = 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
+                                       0,\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_alarm10,\r
+                               "alarm10",\r
+                               COUNTER_ID_OsTick,\r
+                               NULL,\r
+                               ALARM_ACTION_ACTIVATETASK,\r
+                               TASK_ID_bTask10,\r
+                               NULL,\r
+                               NULL ),\r
+       GEN_ALARM(      ALARM_ID_alarm100,\r
+                               "alarm100",\r
+                               COUNTER_ID_OsTick,\r
+                               NULL,\r
+                               ALARM_ACTION_ACTIVATETASK,\r
+                               TASK_ID_bTask100,\r
+                               NULL,\r
+                               NULL ),\r
+       GEN_ALARM(      ALARM_ID_alarm25,\r
+                               "alarm25",\r
+                               COUNTER_ID_OsTick,\r
+                               NULL,\r
+                               ALARM_ACTION_ACTIVATETASK,\r
+                               TASK_ID_bTask25,\r
+                               NULL,\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(Startup,2048);\r
+DECLARE_STACK(bTask10,2048);\r
+DECLARE_STACK(bTask100,2048);\r
+DECLARE_STACK(bTask25,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
+               Startup,\r
+               2,\r
+               FULL,\r
+               TRUE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               bTask10,\r
+               1,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               bTask100,\r
+               1,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               bTask25,\r
+               1,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\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/examples/blinker_node/config/stm32_stm3210c/Os_Cfg.h b/examples/blinker_node/config/stm32_stm3210c/Os_Cfg.h
new file mode 100644 (file)
index 0000000..07cc12f
--- /dev/null
@@ -0,0 +1,85 @@
+/*\r
+ * Configuration of module Os (Os_Cfg.h)\r
+ *\r
+ * Created by: ArcCore AB\r
+ * Configured for (MCU): Undefined MCU\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.11\r
+ *\r
+ * Copyright ArcCore AB 2010\r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Nov 24 20:34:20 CET 2010\r
+ */\r
+\r
+
+#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_alarm10       0\r
+#define ALARM_ID_alarm100      1\r
+#define ALARM_ID_alarm25       2\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
+\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_Startup        1\r
+#define TASK_ID_bTask10        2\r
+#define TASK_ID_bTask100       3\r
+#define TASK_ID_bTask25        4\r
+\r
+// Task entry points\r
+void OsIdle( void );\r
+void Startup( void );\r
+void bTask10( void );\r
+void bTask100( void );\r
+void bTask25( void );\r
+\r
+// Schedule table id's\r
+\r
+// Stack size\r
+#define OS_INTERRUPT_STACK_SIZE        2048\r
+#define OS_OSIDLE_STACK_SIZE 512\r
+\r
+#define OS_ALARM_CNT                   3 \r
+#define OS_TASK_CNT                            5\r
+#define OS_SCHTBL_CNT                  0\r
+#define OS_COUNTER_CNT                 1\r
+#define OS_EVENTS_CNT                  0\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
index d94bb745a625547128f48867e501ab7383c4c780..16d92eac43b5d71bac7105a7231799173dbafdda 100644 (file)
@@ -31,7 +31,7 @@ endef
 $(foreach mod,$(MOD_AVAIL),$(eval $(call MOD_AVAIL_template,${mod})))\r
 $(foreach mod,$(MOD_USE),$(eval $(call MOD_USE_template,${mod})))\r
 $(foreach mod,$(CFG),$(eval $(call CFG_template,${mod})))\r
-def-y += $(ARCH) $(ARCH_FAM) $(ARCH_MCU) \r
+#def-y += $(ARCH) $(ARCH_FAM) $(ARCH_MCU) \r
 \r
 # Select console / debug\r
 $(foreach mod,$(SELECT_OS_CONSOLE),$(eval $(call MOD_USE_template,${mod})))\r
index b1b6fc72710cf12a15261c34b6bc667ff1b31c58..853a96d734348e2ee1aded246da2b319b7caebf0 100644 (file)
@@ -71,6 +71,6 @@ typedef struct
 \r
 extern EcuM_GobalType internal_data;\r
 \r
-inline void EcuM_enter_run_mode(void);\r
+void EcuM_enter_run_mode(void);\r
 \r
 #endif /*_ECUM_INTERNALS_H_*/\r
index 895d974bedfa5b9c940e18d861fc11f86050d3ac..b3e78cb01e07844f8c16141ffcf40ddc9a95d93d 100644 (file)
@@ -36,8 +36,7 @@ static uint32 internal_data_go_off_one_state_timeout = 0;
 #endif\r
 \r
 \r
-\r
-inline void EcuM_enter_run_mode(void)\r
+void EcuM_enter_run_mode(void)\r
 {\r
        internal_data.current_state = ECUM_STATE_APP_RUN;\r
        EcuM_OnEnterRUN();\r