AUTOSAR OS(一)_Xiaowestwind的博客-CSDN博客_autosar os
OSEK OS:
OESK OS是一个事件触发操作系统,通过定时器溢出、错误发生等这些事件触发OS TASK的调度运行。 AUTOSAR OS的核心功能还是源自OSEK OS ,OSEK OS的很多特点在AUTOSAR OS中还是适应的。
AUTOSAR OS:
- 静态操作系统:举个例子,OS中的task是实现在Davinci CFG工具中配置好的,实现运行中不会像ucos一样可以调用API动态创建task,还有,Task的优先级也是实现配置好的
- 完全抢占(preemptive): 高优先级的任务一旦就绪,总能得到CPU的控制权。 如果中断服务程序使一个高优先级的任务进入就绪态(在category 2 的ISR里面去active一个OS task),中断完成时,被中断的低优先级任务被挂起,优先级高的那个任务开始运行。
- 事件触发(event trigger):task运行需要通过事件来触发,事件可以是定时器溢出事件、错误事件等。
- 功能和大小可配置:前面也提到过,OS有4类,SC1、2、3、4,可以通过配置来选择是否需要时间保护(time protection)或者内存保护(memory protection)
Task:
- Basic task: 3种状态, suspend,ready,run
- Extended task: 4种状态, suspend,ready,run, wait (wait for event)
Baisc 和 Extend task 最大的区别是: extend task 多一个 wait 的状态,可以wait for event
Alarm: alarm is alarm
-
激活一个task
-
设置一个事件,set a event
-
调用一个回调函数
-
增加os counter,什么是 os counter?暂且按字面意思理解吧,OS计数,详细且听下回分解,多谢各位看官。
IOC:
semaphore: Semaphores are integer variables, if a variable is shared between multi-thread, use Semaphores to show its ready or not, for process synchronization
mutex: Mutex is a mutual exclusion object that synchronizes access to a resource, only one thread can acquire the Mutex at a time
difference: A Mutex is different than a semaphore as it is a locking mechanism while a semaphore is a signalling mechanism. A binary semaphore can be used as a Mutex but a Mutex can never be used as a semaphore.
-
DID: 2个byte UDS诊断之22/2E服务 - 知乎
-
routine control: 直接在DEM里面分配 routine ID(ID也是2个byte),然后就能生成RTE接口和callback函数了。 这个函数可以有输入输出,也就是说可以在CANalyzer的界面上给他手动传值 程序控制(ISO14229系列之31服务)_第55号小白鸭的博客-CSDN博客_31服务
DID 和 routine control 基本完全一样最大的区别是,read/write DID额外有一个condition check,只有pass了才能执行。否则返回NRC:condition not correct
DTC: 下面两个的目的,就是当DTC(failure)发生的时候,去记录下来一系列系统的当前信息,用作之后的故障诊断
-
DTC extended data:
-
DTC snapshot:(Freeze Frame)
DTC snapshot:(Freeze Frame).跟 extended data基本完全一样。最大的区别是FreezeFrame里面的data element只能是DID的信息,extended data则可以自己customize,(反正也是SWC赋值,所以定义prototype生成接口就好)【说白了snapshot是发生故障的时候shot指定的一系列DID的信息,而extend data则是shot一系列其他的user感兴趣的数据(来自于SWC的传值到指定的NvM空间)】