资讯详情

【AutoSAR 十二 模式管理】

AutoSAR 十二 模式管理

  • 1. 术语描述
  • 2. BswM
    • 2.1 ESH (ECU State Handing)
    • 2.2 Module Initialization
  • 3. EcuM
    • 3.1 Ecu上下电流程
  • 4. 网络管理
    • 5.1 Network Mode
      • 5.1.1 Repeat Message State(帧重复状态)
      • 5.1.2 Normal State(正常运行状态)
      • 5.1.3 Ready Sleep State(准备睡眠)
    • 5.2 Prepare Sleep Mode
    • 5.3 Bus-Sleep Mode
  • 5. ComM 通信管理模块
    • 5.1 内部唤醒
    • 5.2 外部唤醒
  • 6. CanSM
  • 7.状态关联


1. 术语描述

每个不同的ECU要完成的功能不同,所以我们的底层BSW需要根据上层功能要求进行实时调整。

  • 我们称之为这种调整动作Action;
  • 我们称之为什么时候调整,如何触发这种调整机制Rules。

  • Mechanisms for notification: 通知机制
  • Service requests for mode changes:模式切换
  • Mode arbitration: 模式仲裁。
  • Mode control: 模式控制。

2. BswM

BswM是基础Rules的服务模块,主要工作根据制定的Rules,执行相应的Action。

对Rules评估可以有两种形式:立即 和 延迟

  • 马上:当然是被子call之后立即开始
  • 延迟:在被call之后,需要执行BswM_MainFunction()这个函数刚刚开始,所以会有一定的延迟

2.1 ESH (ECU State Handing)

在这里插入图片描述

2.2 Module Initialization

? Module Initialization: 这个是在OS启动后,在BswM初始化各BSW初始化过程用于模块。也就是说OS启动后,进入Init Task,然后在这个Taks中会初始化BswM和BSW各模块 ? Initialization: 这是在OS启动前,一些初始化操作OS必要的初始配置通常是一堆初始配置Memory。其实,MCU模块、DIO模块和PORT这些驱动程序的初始化也可以放在这里.

3. EcuM

EcuM就是管理Ecu状态的

EcuM有两个定义:Flexible(灵活)和Fixed(固定),,Fixed一般会用在AutoSAR 3.x上。

3.1 Ecu上下电流程

  1. 上电: 首先是由cstart.c这样的引导代码,引导CPU跳入main()函数。然后在main()函数中做OS初步准备
  2. 预启动OS: 将进入预启动阶段EcuM_Init,在这里做点什么Error判断,最后是开始OS了
  3. 启动OS之后: 启动OS之后,会进入一个Task中,被称为Init Task,这里会调用EcuM_StartupTwo()函数主要用于此函数SchM和BswM初始化,并在这里通过BswM可以将ADC、PORT等等,这些底层驱动模块初始化
  4. 启动BswM之后: 启动BswM之后就完成了Startup的阶段,然后会进行Rte_Start(),然后进入UP该阶段可正常运行

  1. BswM通知EcuM下电: 最重要的是EcuM_GoDown()这个函数,调用后进入EcuM下电流程
  2. 预关闭OS: 这就是做一些Deinit操作,然后设置下电设置,最后关闭OS
  3. 关闭OS: 这里会调用一个ShutDownHook()让用户关闭OS一些定制工作
  4. 关闭OS之后: 根据不同的下电需求(直接关机或重启),进入不同的动作

因为睡眠通常是为了节能。睡眠有两种模式:Poll或Halt,是不断循环或停止的模式。

  1. 准备睡眠: 就是GoSleep在这个阶段,首先可以唤醒源,然后指定唤醒源的当前状态,最后GetResource,这之后将由EcuM接管。详见下图:
  2. 进入睡眠: 有两种睡眠状态: ? 进入Poll先设置MCU状态Mcu_SetMode(ECUM_SLEEP…),然后执行EcuM_Mainfunction,进入后就是激活唤醒源,然后不断的检查是否被唤醒了 ? 进入Halt先设置Global Suspend,然后生成Ram Hash,接着设置MCU状态Mcu_SetMode(ECUM_HALT…),然后Global Restore全局恢复。如果是。Halt想醒来,需要检查Ram Hash
  3. 唤醒: 首先设置MCU状态Mcu_SetMode(ECUM_NORMAL…),然后禁止唤醒源,然后重启各种底层驱动,最后RelsaseResource,唤醒之后由BswM接管。详见下图:


4. 网络管理

AutoSAR的网络管理(Network)通过网络管理报文(NM Message)实现主要分为三种模式: ? 网络模式(Network Mode) ? 预睡眠模式(Prepare Sleep Mode) ? 睡眠模式(Bus-Sleep Mode)

5.1 Network Mode

5.1.1 Repeat Message State(帧重复状态)

当ECU上电后,通信网络将自动进入Bus-Sleep状态,然后通过唤醒源唤醒进入Network Mode的Repeat Message State中。 当进入Repeat Message State之后,将根据设置和一定的周期重复发送一系列NM Message,目的是告诉其他节点,我目前的节点被唤醒了。 ? 主动进入是我的节点,因为有报纸要发送,需要激活我的通信网络送报纸,主动进入Repeat Message State。 ? 被动进入是因为其他节点进入后发送了一系列重复NM Message,而收到这些NM Message节点被动进入。

  • 当进入Repeat Message State之后,将打开计时器T_NM_TIMEROUT,这个计时器在发送或收到一帧NM Message自动清零。

5.1.2 Normal State(正常运行状态)

每次发送NM Message就会更新T_NM_TIMEROUT。当这时ECU不再准备发送和接收数据后,就可以进入到Ready Sleep State。

5.1.3 Ready Sleep State(准备睡眠状态)

在Ready Sleep State下,还有其他节点会发网络管理帧保持网络唤醒,此时ECU处于等待进入Prepare Sleep Mode,T_NM_TIMEROUT仍然会因为NM Message而清零。所以这样的结果就是,当网络上所有的ECU发出了最后一帧NM Message(之后没有ECU再发送NM Message),大家都同步清零T_NM_TIMEROUT,如果设置的T_NM_TIMEROUT相同,会同步进入Prepare Sleep Mode阶段。

5.2 Prepare Sleep Mode

到这个阶段的时候,就是等待,让所有的节点有时间结束网络活动,所有的总线静默。然后在等待T_WAIT_BUS_SLEEP时间后,所有节点进入Bus-Sleep Mode

5.3 Bus-Sleep Mode

当ECU上电后会默认进入Bus-Sleep Mode,而且网络其实是在不断的试图进入到Bus-Sleep Mode中,但是由于有NM Message在总线上的传输,所以才能保留网络模式不进入Bus-Sleep Mode中。

大家可以想象成看门狗,NM Message就是不断的喂狗,一旦没有NM Message,就进Bus-Sleep Mode

5. ComM 通信管理模块

ComM就像一个通信的总开关,它可以管住CAN、LIN和以太网等相关的通信网络。

三种状态:

•	Full Communication(全通信)
•	Silent(静默状态)
•	No Comunication(不通信)

ComM可以通过NM(Network Manager)去保持network的唤醒,同时也可以通过SM(State Manager)去激活通信,总而言之就像一个通信的总管。

唤醒源:

- 内部唤醒
- 外部唤醒

5.1 内部唤醒

5.2 外部唤醒

如果被外部唤醒,NM会进入被动状态(Passive)。然后当ComM进入Full Communication后也会默认往Ready Sleep状态里面去跑,不会去保持Network的唤醒状态

6. CanSM

CanSM主要是管理ECU内部的CAN节点的状态。

CanSM就是针对ECU的CAN功能的状态管理(覆盖到CanIf层),也就是可以控制芯片内置的CAN外设或者芯片外置的CAN收发器的状态

7.状态关联

  1. 只有当EcuM处于UP状态下才能保持ComM的Full Communication状态和Slient状态
  2. ComM能全权负责本ECU的通信状态,也就是管理SM模块,但是Network的状态不光是本ECU有关,还和其他的ECU有关,所以ComM

标签: esh悬臂梁传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台