AUTOSAR OS概述(二)
目录
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)
HRT(High resolution timer mode)
上述两者对比如下:
1.2 Alarm和Counter
AUTOSAR OS Alarm机制主要是用于激活Task、设置Event、增加Counter或者调用另一个Alarm call-back,通常我们用前两个比较多。如下图:
换句话说,就是Counter自己在计数,我们在设计时就要考虑当计数到多少时,产生一个alarm,这个alarm用来干什么?就用来生成event、激活task等等。
通常,alarm的配置如下:
上图配置为alarm触发一个callback:Os_AlarmActionSetEvent;
还有一种周期性alarm的方式,如下图:
2
AUTOSAR OS中的Event
在OSEK OS介绍(二)中我们介绍了Event机制,本质上是一种同步机制;当Task A在运行时,如果此时有Event触发了另外的Task B,且Task均可被抢占,这时候就通知A等待,B切换到运行状态,如下图所示:
3
AUTOSAR OS中的ISR种类
4
AUTOSAR OS-APPLICATION概念
实际使用过程中包含两类OS-Application
1.Trusted OS-Application
允许在监控和保护机制关闭时运行,OS假设该类型OS-Application不会导致内存相关的保护错误。该类型的OS Appliaction在管理员模式下运行,除了stack区域外,它可以读写整个内存区域。
2.Non-Trusted OS-Application
不允许在监控和保护机制关闭时运行;它们限制了对内存的访问,限制了对操作系统模块API的访问,并在运行时强制执行它们的计时行为。
需要注意的是:Resource不属于任何OS-Appliaction,但必须明确授予对它们的访问权限。
其状态机如下:
APPLICATION_ACCESSIBLE:OS对象可以被其他Appliaction访问
APPLICATION_RESTARTING:OS对象不允许其他Application访问,除非OS-Application调用allowaccess
APPLICATION_TERMINATED:OS对象不允许被其他Application访问。
5
AUTOSAR OS 多核的概念
特定核心的数据可以链接到快速访问的内存中
特定核心的数据可以链接到缓存内存中
只有与自旋锁相关的变量必须链接到全局内存中,所有参与的内核都必须访问全局内存。
多核的task调度如下:
多核启动概述
6
AUTOSARO OS 任务切换过程详解
最后,我们来看RH850某块芯片的Task切换过程,主要是涉及到现场保护和恢复,如下:
OS调用 Os_Hal_ContextSwitch(Current->Context, Next->Context)进行切换,具体可以看上图注释。这里不再赘述。