而Halt则是MCU会停下,不执行任何代码,等到有唤醒源事件通过中断上报后依靠EcuM检查,如果检查通过那么会通过设置MCU mode的方式让程序继续执行,进行唤醒的逻辑。 在调用Mcu_SetMode接口让MCU halt之前,可以使用EcuM_CheckRamHash()接口计算当前时刻ram的哈希值,待到离开halt后再次计算哈希值,由于在长时间睡眠状态下ram...
当唤醒事件发生时,ECU从SLEEP状态唤醒,并在MCU驱动程序的MCU_SetMode服务中恢复执行。当WakeupRestart序列完成时,ECU管理器模块将有一个待验证的唤醒事件列表。接着ECU管理器模块释放BSW调度器和所有BSW MainFunctions。最值得注意的是,在这种情况下EcuM Main Function可以恢复处理。 实现提示: 由于SchM将在StartPostOS...
Master Core在调用EcuM_ShutdownSynchronization()之前会调用EcuM_SetCoreStatusValue()设置MasterCore进入到Sleep状态。 Slave Core中EcuM_EnterSleepOnSlave()调用EcuM_SetCoreStatusValue()设置Slave Cores进入到Sleep状态,最后调用EcuM_McuSetMode()进入深度休眠Halt. EcuM_SetCoreStatusValue(CoreID)和EcuM_GetCore...
Mcu_DistributePllClock();#endifMcu_SetMode(McuModeSettingConf_0);/* Initialize Port driver */Port_Init(NULL_PTR);/* Initialize Interrupt */Platform_Init(NULL_PTR);/* Initialize Mcl for using Flexio and Dma*/Mcl_Init(NULL_PTR); Spi_Init(NULL_PTR);/* Using interrupt in transfer */Spi_...
Wdg_InitWdg_SetModeWdg_SetTriggerCondition 2.4 CoreTest 在考虑Fusa设计时,CoreTest、RAMtest和Flash Test是必须要涉及的。CoreTest主要就是针对MCU的内核最小系统进行测试,常见的Core主要由CPU、内部特定memory(例如Cache、TCM)、中断控制器、MPU和调试接口等组成,如下: ...
Mcu模块,在WdgM监控程序失败之后,可以通过Mcu的接口Mcu_PerformReset立即重新ECU单元 Det模块,诊断开发中的错误 Dem模块,WdgM 在侦测到错误之后,可以通过Dem模块触发Event SchM模块,WdgM 调用SchM模块接口WdgM_GlobalSuspendInterrupts进入临界区,WdgM_GlobalRestoreInterrupts退出临界区 ...
Watchdog Driver:用于实现针对硬件看门狗的寄存器操作与控制,可以分为MCU内部看门狗(Internal Watchdog)与外部看门狗(External Watchdog),该外部看门狗可以通过GPIO或者IIC或者SPI来实现喂狗; Watchdog Interface:Watchdog If作为整个Watchdog Stack的一部分,其主要功能则是为了实现上层Watchdog Manager与底层Watchdog Driver...
Mcu_SetMode(McuModeSettingConf_0); /* Initialize all pins using the Port driver */ Port_Init(NULL_PTR); Now replace the logic of for loop as shown below code section in the main function, which will enable the LED blinking for 10 times: ...
Watchdog Driver:用于实现针对硬件看门狗的寄存器操作与控制,可以分为MCU内部看门狗(Internal Watchdog)与外部看门狗(External Watchdog),该外部看门狗可以通过GPIO或者IIC或者SPI来实现喂狗; Watchdog Interface:Watchdog If作为整个Watchdog Stack的一部分,其主要功能则是为了实现上层Watchdog Manager与底层Watchdog Driver...
Mcu_DistributePllClock(); Mcu_SetMode(McuModeSettingConf_0); Before the pin can be controlled, it needs to be initialized using the configuration information that was generated from the S32 Configuration tools. Initialize all pins using the Port driver by adding the...