极氪软件及电子核心 jojo
实时操作系统(RTOS)是指当外界事件或数据产生时,可能承受并以足够快的速度予以解决,其解决的后果又能在规定的工夫之内来管制生产过程或对解决零碎做出疾速响应,调度所有可利用的资源实现实时工作,并管制所有实时工作协调一致运行的操作系统。

与实时操作系统对应的就是非实时操作系统了,例如Linux(能够通过给内核打上RT补丁使其变为实时操作系统),windows。这类操作系统将零碎处理机工夫和内存空间依照肯定的工夫距离,轮流地切换给各终端用户的程序应用,会给低优先级过程分一些运行工夫,防止高优先级重负载工作把键盘鼠标控制台桌面之类堵死。实时操作系统有很多如Cos、FreeRTOS、Vxworks、QNX、Osek os。AUTOSAR的core OS就是OSEK,他早已广泛应用于汽车工业。OSEK源于德语,是一种嵌入式操作系统,被设计用于提供整车的各种电子管制单元的软件系统。AUTOSAR OS 向后兼容OSEK OS,基于OSEK OS 扩大了一些个性和需要,比方内存保护(memory protection)和工夫爱护(time protection)等。

OS-Application是AUTOSAR OS 的重要的性能单元, 负责收集操作系统对象,如Tasks, ISRs, Alarms, Schedule tables, Counters等。

AUTOSAR_SWS_OS标准中7.6章节对AUTOSAR OS的框架定义。其中蕴含:
序号 操作系统对象 作用
1 APPLICATION OS-APP,负责收集操作系统对象
2 SCHEDULETABLE 调度表
3 ALARM 报警器,个别用于在操作系统运行过程中,可进行实时的报警周期设置,典型的用于性能平安相干的调度机制
4 COUNTER 计数器
5 TASK 周期工作
6 ISR 中断工作,响应内部和外部事件触发的中断
7 ErrorHook 当软件运行遇到Error,调用hook
8 StartupHook 当软件上电且须要从boot进入到操作系统之前,往往须要调用hook,实现启动操作。
9 ShutdownHook 软件下电且须要退出操作系统,往往会调用hook,跳转到shutdown实现下电操作。

如果在零碎中应用OS-Application,则所有的Task, ISR, Counter, Alarm, Schedule Table都必须属于某一个OS-Application 。接下来咱们来聊聊AUTOSAR操作系统中的多核解决。AUTOSAR中的多核操作系统并不是一个虚构ECU概念,而是一个共享雷同配置和大部分代码的操作系统,然而不同的核上进行不同的运算。操作系统的生成局部的相干信息来源于同一个配置。这意味着,ID(例如TASKID、RESOURCEID…)在核之间是惟一的。工作的优先级定义来源于调度表的配置。因而多个内核能够真正并行运行,能够同时执行多个工作。
  1. Startup阶段。初始化MCU,每个核实现EcuM_Init() (AUTOSAR定义性能),且每个核实现StartOS。
  2. 运行阶段。从启动模式切换到操作系统运行模式,实现OS:Startuphook,并开始操作系统的运行,e.g. 10ms, 100ms等周期性工作开始运行。
  3. Shutdown阶段。从OS运行模式切换到下电模式。下电关闭程序由BswM和EcuM协调。所有核上的EcuM都表明它们曾经筹备好了敞开,EcuM在主内核上调用shutdownallcore(),实现整个ECU的下电。

    在AUTOSAR OS中具体的调配策略有如下几种:
    1)ChainTask链工作机制
    什么是ChainTask机制,AUTOSAR标准中又是如何定义的呢?一个链工作由几个工作组成,每个链工作OS-Mechanism互相激活。所以不同的工作能够依照定义的程序在不同的核上执行。
    例如下图所示。右边是单核芯片core X,左边是双核芯片core Y和core Z。
    原来工作Task A是独自在单核芯片core X上运行, Task A => proc1(); proc2(); proc3(); proc4()。当把Task A拆分为两个工作Task A’和Task A’’ 并且别离在2个独自的核core Y和core Z上运行时,链工作ChainTask机制确保,流程程序是与工作A一样,在不同的内核中运行。

    跨核task又是如何开销ChainTask呢?例如下图所示。拿1ms工作举例,首先Core X触发OS_BswStart_1ms_Task工作,因为链工作的作用,间接跨核到Core Y执行OS_1ms_Task,执行完后又通过链工作跨核回到Core X执行OS_BswEnd_1ms_Task。这种工作链的毛病会开销runtime,比方1ms的工作,2次的来回的Chaintask,大概会开销2x30us的负荷,约占6% runtime。


    2)分布式运行机制
    分布式运行机制,AUTOSAR标准中解释为”task clusters are freely distributable”。该分布式运行机制是以后AUTOSAR多核调配形式的支流,task在一个核上运行,不存在跨核之间的链工作,耦合性不高。毛病是容易造成不同核之间的负荷不均。如下图所示,某一个双核的控制器Core X运行所有CAT1 的中断,Core Y运行所有的周期性工作,不存在跨核间的调度,所有的工作都在本人的核上独自运行。

    操作系统的运行工夫能够通过优化缩小数据的拜访工夫来实现。如下图举例。某个3核的MCU,Core0为Peripheral Core,Core 1为Locked Core,Core 2为Performance Core。每个core都有独自的RAM别离为RAM0,1,2,同时通过总线内部挂有system Ram。通过下图能够发现当core1拜访本人的RAM1只须要1个tick的工夫,而core1拜访core2的RAM须要9个tick的工夫。同时拜访外挂system ram须要9个tick的工夫。
    由此可见,当代码运行在特定的内核上,尽量把该段性能所属的变量定义在雷同的RAM上,以便优化核缩小运行工夫。咱们在做性能开发的时候特地须要关注变量的调配和工作的调配,使其尽量保持一致,以便减小MCU的开销。优良的软件工程师通过优化内存,能够升高10%左右的负荷。

    AUTOSAR的软件架构曾经成为汽车电子管制畛域不可逆转的趋势,以后国内不少车企,曾经把非AUTOSAR软件架构的电子控制器供应商排除在供应商目录之列。同时随着汽车电子芯片的飞速发展,用于AUTOSAR Classic的MCU也倒退迅猛。迅速从单核跨入到多核时代,主频和内存空间也有了大幅度的晋升。很多车型曾经集成了基于AUTOSAR的软件架构和多核芯片的管制单元,以满足日益简单的电子电器架构。目前,极氪的软件及电子核心正在开发下一代行业顶尖的ZEEA3.0电气架构平台,其中的地方计算平台CSC(Core Super Computer)蕴含A核和M核,A核上运行由极氪自研的ZEEKR_OS ,M核上将运行Classic AUTOSAR OS来实现多核解决,因而本文介绍基于AUTOSAR OS和多核管制芯片的控制策略,帮忙大家尽快了解根底软件的运行架构。