• 766查看
  • 0回复

[Autosar] AUTOSAR OS概述(二)

[复制链接]


该用户从未签到

发表于 21-1-2024 10:00:16 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


目录

1.AUTOSAR OS中的Alarm和Counter关系

1.1 Counter概念

1.2  Alarm和Counter

2.AUTOSAR OS中的Event

3.AUTOSAR OS中的ISR种类

4.AUTOSAR OS-APPLICATION概念   

5.AUTOSAR OS 多核的概念

6.AUTOSARO OS 任务切换过程详解

1


AUTOSAR OS中的Alarm和Counter关系

        如果忘记上篇OS的内容,大家可以复习一下:AUTOSAR OS概述(一)

1.1 Counter概念

      在AUTOSAR OS中,Counter用于事件的计数,例如timer tick;它有两种分类:

    Hardware Counter

      硬件实现的计数器;通常是MCU的STM模块来处理。

    Software Counter

      OS软件维护的Counter值;通常是调用API IncrementCounter进行递增。

       实际上,软件Counter基本很少使用,我们以Vector的MicroSAR OS为例,它在时间概念中描述MicroSAR OS的Counter(时基)是MCU内部的timer硬件产生,通常在定义OsCounter的对象类型为HARDWARE,配置一个OSDriver属性,同时OsAlarmCounterRef也需要配置。

       不仅如此,它还详细定义了硬件Counter的两种模式:

    PIT(Periodical interrupt timer mode)
定时器硬件设置成 在严格的周期间隔内生成定时器中断请求;在这个中断服务例程里,OS检查alarm或者调度表是否应该执行相关动作

    HRT(High resolution timer mode)
当一个alarm或者调度表动作应该执行时,timer硬件生成一个timer中断,在这个服务例程里OS执行响应动作,计算下个动作的时间间隔,并重新编程timer。
        上述两者对比如下:

AUTOSAR OS概述(二)w1.jpg

1.2  Alarm和Counter

        AUTOSAR OS Alarm机制主要是用于激活Task、设置Event、增加Counter或者调用另一个Alarm call-back,通常我们用前两个比较多。如下图:

AUTOSAR OS概述(二)w2.jpg

        换句话说,就是Counter自己在计数,我们在设计时就要考虑当计数到多少时,产生一个alarm,这个alarm用来干什么?就用来生成event、激活task等等。

        通常,alarm的配置如下:

AUTOSAR OS概述(二)w3.jpg

上图配置为alarm触发一个callback:Os_AlarmActionSetEvent;

还有一种周期性alarm的方式,如下图:

AUTOSAR OS概述(二)w4.jpg

2

AUTOSAR OS中的Event

        在OSEK OS介绍(二)中我们介绍了Event机制,本质上是一种同步机制;当Task A在运行时,如果此时有Event触发了另外的Task B,且Task均可被抢占,这时候就通知A等待,B切换到运行状态,如下图所示:

AUTOSAR OS概述(二)w5.jpg

再结合上面alarm的callback,大家有没有回想起RTE配置时经常看到的event\mask之类的配置,生成的代码如下:
AUTOSAR OS概述(二)w6.jpg

AUTOSAR OS概述(二)w7.jpg

3

AUTOSAR OS中的ISR种类

ISR,全称Interrupt Service Routine,它直接由硬件中断请求触发;在AUTOSAR OS中定义了多种中断类型,具体如下:
AUTOSAR OS概述(二)w8.jpg

其中 Category2的优先级在ISR中是最低的,但高于Task,但这个类别的ISR可以使用OS的服务,包括激活task;由于OS的介入,这类别的ISR的进入和退出会有额外的延迟Category 1的优先级高于2,但低于SC2/4等级下的时间保护ISR ;它不可使用OS服务,使用起来更像是一个真正的中断。Vector在此基础上扩展了Category0,具有更低的中断延迟,有点IRQ和FIQ的区别。
4

AUTOSAR OS-APPLICATION概念     

OS-Application是一个功能单元,主要包括:Task、ISR、Alarm、ScheduleTable、Counter;OS负责在共享核心的OS-Application之间调度可用的处理资源。如果一个OS-Application被使用,那么所有的task、isrs、Counters、Alarms和ScheduleTables必须属于该OS-Application。属于统一Application的对象由权限访问彼此。其他Application访问这些对象需要事先配置。由访问权限意味着这些对象可以使用API服务。
        实际使用过程中包含两类OS-Application

1.Trusted OS-Application

        允许在监控和保护机制关闭时运行,OS假设该类型OS-Application不会导致内存相关的保护错误。该类型的OS Appliaction在管理员模式下运行,除了stack区域外,它可以读写整个内存区域。

2.Non-Trusted OS-Application

        不允许在监控和保护机制关闭时运行;它们限制了对内存的访问,限制了对操作系统模块API的访问,并在运行时强制执行它们的计时行为。

需要注意的是:Resource不属于任何OS-Appliaction,但必须明确授予对它们的访问权限。

其状态机如下:

AUTOSAR OS概述(二)w9.jpg


    APPLICATION_ACCESSIBLE:OS对象可以被其他Appliaction访问

    APPLICATION_RESTARTING:OS对象不允许其他Application访问,除非OS-Application调用allowaccess

    APPLICATION_TERMINATED:OS对象不允许被其他Application访问。
所以我们在做功能安全设计时,通常Trust和Non-Trust之间的数据通信通常也是通过RTE生成接口,如下:
AUTOSAR OS概述(二)w10.jpg

5

AUTOSAR OS 多核的概念

多核数据概念主要还是试图避免核之间的并发写入访问。内核可以读取所有核的OS数据,但是写入只能在自己这个核上实现。

    特定核心的数据可以链接到快速访问的内存中

    特定核心的数据可以链接到缓存内存中

      只有与自旋锁相关的变量必须链接到全局内存中,所有参与的内核都必须访问全局内存。

多核的task调度如下:

AUTOSAR OS概述(二)w11.jpg

如上图,每个核都独立进行调度,T2、T3、T5以真正并行方式执行;同一核心上具有相同优先级的任务将按激活顺序执行;不同内核上具有相同优先级的任务可能不会按激活顺序执行,因为内核调度彼此独立。
多核启动概述
使用startOS来同步两次所有核。第一次同步点:在startupHook前执行,第二次在OS-Application设置StartupHoos完成后,且在调度器开始调度之前。

AUTOSAR OS概述(二)w12.jpg
编辑

6

AUTOSARO OS 任务切换过程详解

      最后,我们来看RH850某块芯片的Task切换过程,主要是涉及到现场保护和恢复,如下:

AUTOSAR OS概述(二)w13.jpg
编辑

    OS调用 Os_Hal_ContextSwitch(Current->Context, Next->Context)进行切换,具体可以看上图注释。这里不再赘述。


该用户从未签到

发表于 15-3-2025 13:12:07 | 显示全部楼层
AUTOSAR OS中的Counter概念是用于记录或监控系统状态的重要工具。它是用来计数或者计时的一个基准量,例如在汽车控制系统中用于记录行驶里程或发动机转速等参数。

关于Alarm和Counter的关系,Alarm可以基于Counter的值触发相应的操作或事件。当Counter达到预设的阈值或满足特定条件时,Alarm会发出警报或通知,以提醒系统需要采取相应的措施或响应。这种关系确保了系统的精确控制和高效运行。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 17:19 , Processed in 0.321653 second(s), 37 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.