当前位置: 首页 > Linux

【Zeekr_Tech】汽车软件RTOS-AUTOSAROS多核控制介绍

时间:2023-04-06 21:45:58 Linux

Jikr软件和电子中心jojo实时操作系统(RTOS)是指当外部事件或数据产生时,能够快速接受并处理足够的速度。其处理结果可以控制生产过程或在指定时间内快速响应处理系统,调度所有可用资源完成实时任务,控制操作系统使所有实时任务协调运行。与实时操作系统相对应的是非实时操作系统,如Linux(通过对内核打RT补丁,内核可以变成实时操作系统)、windows。这类操作系统按照一定的时间间隔,将系统处理器时间和内存空间轮流切换给各个终端用户的程序,将部分运行时间分配给低优先级的进程,避免高优先级的重负载任务使用键盘和鼠标。控制台桌面等都被屏蔽了。实时操作系统有很多,例如μCos、FreeRTOS、Vxworks、QNX、Osekos。AUTOSAR的核心操作系统是OSEK,在汽车行业应用广泛。OSEK起源于德语,是一种嵌入式操作系统,旨在为车辆的各种电子控制单元提供软件系统。AUTOSAROS向后兼容OSEKOS,并在OSEKOS的基础上扩展了一些特性和要求,例如内存保护和时间保护。OS-Application是AUTOSAROS的重要功能单元,负责收集操作系统对象,如Tasks、ISRs、Alarms、Scheduletables、Counters等。AUTOSAR_SWS_OS规范的7.6节定义了AUTOSAROS的框架。包括:序号操作系统对象函数1APPLICATIONOS-APP,负责收集操作系统对象2SCHEDULETABLE调度表3ALARM报警,一般用于操作系统运行过程中的实时报警周期设置,一般用于Functional安全相关的调度机制4COUNTER计数器5TASK周期性任务6ISR中断任务,响应外部和内部事件触发的中断7ErrorHook当软件运行遇到Error时,调用hook8StartupHook当软件上电需要进入操作系统从启动前,往往需要调用钩子来完成启动操作。9ShutdownHook当软件关机需要退出操作系统时,往往会调用这个hook,跳转到shutdown完成关机操作。如果系统中使用了OS-Application,那么所有的Tasks、ISRs、Counters、Alarms和ScheduleTables都必须属于某个OS-Application。接下来,我们来谈谈AUTOSAR操作系统中的多核处理。AUTOSAR中的多核操作系统并不是虚拟ECU的概念,而是共享相同配置和大部分代码,但在不同核上执行不同操作的操作系统。有关操作系统生成部分的信息来自相同的配置。这意味着ID(例如TASKID、RESOURCEID...)在内核之间是唯一的。任务的优先级定义来自于调度器的配置。所以多个核心可以真正并行运行,可以同时执行多个任务。启动阶段。初始化MCU,各核完成EcuM_Init()(AUTOSAR定义函数),各核完成StartOS。运行阶段。从启动模式切换到操作系统运行模式,完成OS:Startuphook,启动操作系统的运行,例如10ms、100ms等周期任务开始运行。关机阶段。从操作系统运行模式切换到关机模式。断电关机程序由BswM和EcuM协调。所有核上的EcuMs表示准备关机,EcuM调用主核上的shutdownallcore()完成整个ECU的断电。AUTOSAROS中的具体分配策略如下:1)ChainTask链式任务机制什么是ChainTask机制,AUTOSAR规范中是如何定义的?一个链式任务由若干个任务组成,每个链式任务OS-Mechanism相互激活。因此,不同的任务可以按定义的顺序在不同的内核上执行。例如,如下图所示。左边是单核芯片coreX,右边是双核芯片coreY和coreZ,原来任务TaskA单独运行在单核芯片coreX上,TaskA=>proc1();proc2();proc3();过程4()。当任务A被拆分为两个任务TaskA'和TaskA''分别运行在两个独立的核心coreY和coreZ上时,链式任务ChainTask机制保证了与任务A的处理顺序相同,在a上运行不同的内核。跨核任务如何花费ChainTask?例如,如下图所示。以1ms任务为例。首先,CoreX触发OS_BswStart_1ms_Task任务。由于chaintask的作用,直接跨核到CoreY执行OS_1ms_Task。执行完毕后,返回CoreX通过链式任务执行OS_BswEnd_1ms_Task。这种任务链的缺点是会消耗运行时间。例如,一个1ms的任务和2个往返的Chaintask将花费大约2x30us的负载,约占运行时间的6%。2)分布式运行机制分布式运行机制在AUTOSAR规范中解释为“任务集群可自由分布”。这种分布式运行机制是目前AUTOSAR多核分配方式的主流。任务运行在一个核上,核与核之间没有链式任务,耦合度不高。缺点是容易造成不同核间负载不均。如下图所示,某双核控制器CoreX运行所有CAT1中断,CoreY运行所有周期性任务。没有跨核调度,所有任务都在自己的核上独立运行。操作系统的运行时间可以通过优化来减少数据访问时间。以下图为例。对于3核MCU,Core0是外设核心,Core1是锁定核心,Core2是性能核心。每个核心都有独立的RAM,分别是RAM0、1、2,系统Ram通过总线对外连接。从下图中可以发现,core1访问自己的RAM1只需要1个tick,而core1访问core2的RAM需要9个tick。同时访问插件系统ram需要9个tick。可以看出,当代码运行在特定的内核上时,尽量将函数所属的变量定义在同一个RAM上,从而优化内核,减少运行时间。我们在做功能开发的时候,需要特别注意变量和任务的分配,尽量保持一致,以减少MCU的开销。优秀的软件工程师通过优化内存可以降低10%左右的负载。AUTOSAR的软件架构已经成为汽车电控领域不可逆转的趋势。目前,国内多家车企已将非AUTOSAR软件架构的电子控制器供应商排除在供应商名单之外。同时,随着汽车电子芯片的快速发展,用于AUTOSARClassic的MCU也在快速发展。从单核迅速进入多核时代,主频和内存空间也有了大幅提升。许多机型都集成了基于AUTOSAR的软件架构和多核芯片控制单元,以满足日益复杂的电子电气架构。目前,极氪软件电子中心正在研发下一代业界领先的ZEEA3.0电气架构平台。中央计算平台CSC(CoreSuperComputer)包括A核和M核,A核由极氪运行。ZEEKR_OS,M核会运行ClassicAUTOSAROS实现多核处理,因此本文介绍基于AUTOSAROS的控制策略和多核控制芯片,帮助大家尽快了解基础软件的运行架构。