void Mcu_Init(const Mcu_ConfigType *configPtr) { VALIDATE( ( NULL != configPtr ), MCU_INIT_SERVICE_ID, MCU_E_PARAM_CONFIG ); #if !defined(USE_SIMULATOR) Mcu_CheckCpu(); #endif memset(&Mcu_Global.stats,0,sizeof(Mcu_Global.stats)); Irq_Enable(); Mcu_Global.config = configPtr; Mcu_Global.initRun = 1; }
void Mcu_Init(const Mcu_ConfigType *configPtr) { VALIDATE( ( NULL != configPtr ), MCU_INIT_SERVICE_ID, MCU_E_PARAM_CONFIG ); Mcu_Arc_InitPre(configPtr); #if defined(CFG_MPC560X) || defined(CFG_MPC563XM) /* Disable watchdog. Watchdog is enabled default after reset.*/ SWT.SR.R = 0x0000c520; /* Write keys to clear soft lock bit */ SWT.SR.R = 0x0000d928; SWT.CR.R = 0x8000010A; /* Disable watchdog */ #if defined(USE_WDG) #if defined(CFG_MPC5604P) SWT.TO.R = 0x7d000; /* set the timout to 500ms, , 16khz clock */ #elif defined(CFG_MPC563XM) SWT.TO.R = 4000000; /* set the timout to 500ms, 8mhz crystal clock */ #else SWT.TO.R = 0xfa00; /* set the timout to 500ms, 128khz clock */ #endif SWT.CR.R = 0x8000011B; /* enable watchdog */ #endif #endif if( !SIMULATOR() ) { Mcu_CheckCpu(); } memset(&Mcu_Global.stats,0,sizeof(Mcu_Global.stats)); // Setup memories Mcu_ConfigureFlash(); Mcu_Global.config = configPtr; #if defined(CFG_MPC560X) /* Enable DRUN, RUN0, SAFE, RESET modes */ ME.MER.R = 0x0000001D; /* MPC5604P: CMU_0 must be initialized differently from the default value in case of 8 MHz crystal. */ #if defined (CFG_MPC5604P) CGM.CMU_0_CSR.R = 0x00000004; #endif #endif Mcu_Global.initRun = 1; if( Mcu_Global.config->McuClockSrcFailureNotification == TRUE ) { #if defined(CFG_MPC560X) /*not support*/ #else ISR_INSTALL_ISR1("LossOfLock", Mcu_LossOfLock, PLL_SYNSR_LOLF, 10 , 0 ); #if defined(CFG_MPC5516) || defined(CFG_MPC5668) FMPLL.ESYNCR2.B.LOLIRQ = 1; #elif defined(CFG_MPC5554) || defined(CFG_MPC5567) || defined(CFG_MPC563XM) FMPLL.SYNCR.B.LOLIRQ = 1; #endif ISR_INSTALL_ISR1("LossOfClock", Mcu_LossOfClock, PLL_SYNSR_LOLF, 10 , 0 ); #if defined(CFG_MPC5516) || defined(CFG_MPC5668) FMPLL.ESYNCR2.B.LOCIRQ = 1; #elif defined(CFG_MPC5554) || defined(CFG_MPC5567) || defined(CFG_MPC563XM) FMPLL.SYNCR.B.LOCIRQ = 1; #endif #endif } #if defined(CFG_MPC5668) /* Enable ecc error reporting */ ECSM.ECR.B.EPFNCR = 1; #else /* TODO: add support */ #endif Mcu_Arc_InitPost(configPtr); }