多核OS
AUTOSAR的多核OS不是虚拟ECU的概念,每一个核上都可以跑相同的代码,但是每个核可以有不同的数据结构。
因此,每个核是在并行运行,每个核都独立的进行任务调度,任务的并行运行可以以下图为例:

当然,由于是静态配置的,任务和中断无法在运行时被分配到另一个核上。
可定位实体 Locatable Entities
可定位实体必须分配到一个核上,分配情况需要在配置阶段即定义好。
这个可定位实体,在AUTOSAR标准当中,是以OS-Application实现的。在一个使用多核系统的工程当中,OS-Application是必须被使用的,即使不需要任何保护机制,BSW任一模块都需要被分配到某一个OS-Application当中。在实际配置当中,需要将Task, ISR等OS Objects分配到OS-Application中。

多核启动

AUTOSAR采用的是主从启动模式,无论是硬件直接提供这种特性,还是使用软件模拟,会有一个主核先启动,如果想开启多核,需要在主核中激活其他从核,且这个操作必须在启动OS之前完成。每个核在启动OS之后,会先进行第一次核同步;此后,执行OS StartupHook和application StartupHook,然后再次核同步;然后才会开始开始任务调度。
需要注意的是,AUTOSAR在启动同步阶段不支持超时监测,如果启动核以后由于某种原因很长时间都没有启动OS,可能会导致系统挂起。集成人员需要保证不会出现这种情况。
多核关闭
AUTOSAR提供两种关闭概念,也即同步关闭和独立关闭。
选择同步关闭时,在调用接口之后,会给其他核发送关闭信号。当其他核接收到此信号,开始进入关闭过程后,不再处理任何中断和任务。集成人员需要保证在进入到关闭过程前,完成所有需要在关闭前执行的动作。每个核在执行完OS-Application Shutdown Hook后会进行一次同步,同步后每一个core都会同时调用Global Shutdown Hook。

独立关闭时,调用接口后对应调用接口的核会进行关闭。如果希望ECU关闭,那么需要所有的核都进行了关闭动作。
不过此行为在AUTOSAR 4.x版本规范中不支持,需要注意。