Autosar OS原理

事件触发操作系统,通过定时器届满,错误检出等event触发os task的调度运行

1.TASK种类与状态

task的种类分为两种,基本task和扩展的task,处理器在同一时间只能运行一个task指令,os会负责保存和恢复task的状态切换时的数据

1.1.Basic task

状态:Running,Ready,Suspended
单次任务模型,当基本任务中止或被强占时才会释放处理器
自动开始任务在startOS()时被自动激活,可以开启需要等待事件的扩展任务。基本task在进入中止状态前只执行依次

1.2.Extended task

状态:Running,Ready,Waiting,Suspended
多一个waiting状态,适合于需要中间执行同步的功能,使任务具有同步点,(当处理过程中发现缺少信息时,会切换到Waiting状态)时间响应较快,但会一直占用Ram资源,相当于以空间换时间

1.3.状态与栈工作的对应

1.Basic task:当进入running状态时直接依次入栈,加到栈顶,然后依次出栈;2.Extended task:最差情况:在waiting过程中其他低优先级的任务都被激活并全被打断,扩展task的入栈位置需要确定,即知道实际任务占用的栈空间当扩展任务的栈管理异常时,会进入shutdownOS()

抢占式调度会增加任务context的切换时间和内存消耗,不可抢占式会降低实时性,但是节省context切换的时间

2.调度方式
2.1.任务调度方式
FirstComeFirstServed(FCFS)
2.2.切换机制与调度策略

抢占式并需要设置优先级

静态调度:在调度前就已经配置好;

动态调度:根据负载率自动去调度
autosar支持静态调度,单个处理器一次处理一个任务,不同任务通过alarm进行切换

抢占策略的选择:如果应用程序并行的task比较少,可以选择全抢占式,如果有明确的执行时间的短期任务则是和混合抢占式。

若有三个task,优先级task1<task2<task3,task1,3,可以被抢占,task2不可被抢占,所以在运行task2时,task3不会抢占task2,优先级其实是相同的。好处是可以让task2运行完,节省了一次任务切换时间,并且task3的栈不会压到task2上增加栈空间。

2.3.资源管理
  1. 死锁
    1.概念:当两个(进程)task同时访问一个资源,在无外力作用时会导致无法推进
    2.产生原因:竞争了不可剥夺资源;进程间的非法推进
    3.产生条件:互斥条件 请求和保持 不剥夺 环路等待
    4.解决方法:通过os resources使用优先级上限协议机制
  2. 优先级反转

优先级反转:低优先级延迟了高优先级的执行顺序

举例:假设有task1-task4,优先级递减,task1强占task4对信号x的访问,此时task1在等待访问信号x的过程中(等待信号x被task4释放),中途会执行优先级比task4更高的task2和task3,当执行完task2,3后才会执行task4,即释放信号x,所以task1的执行时间被task2和task3延迟,即优先级反转。

  1. 优先级上限协议:即上文的静态分配

    内容:在系统初始化时对每个资源静态分配一个上限优先级,当任务使用这个资源时任务的优先级就自动提升到该资源的优先级上限,使得其他访问该资源的task的优先级都低。
    作用:相当于获得这个资源的最高级别优先级,其他试图访问该进程的优先级都低于它,所以不会发生倒挂

3.task的激活

启动操作系统后,所有任务默认均为Suspended状态,用户去触发然后激活后进入Ready状态,os根据task的优先级进行调度

3.1.Task的激活方式:

1.ActivateTask()—直接激活

2.Alarm届满:对Alarm指定任务,该任务在每次Alarm届满时激活—间接激活

对于一些重复的事件,通过定时器进行设置

3.2 event和alarm机制

Alarm作用:以设置定时周期的方式

1.激活一个task(通过硬件定时器产生tick time ,使system counter++,加到预设的值触发task)
2.设置一个event(event仅仅提供给Extended task)

event为扩展任务提供同步点,每个event可以关联多个task,一个扩展任务ye可以用很多event,但是该event只能由其接受的那个扩展任务进行清除。

当某个task正在运行时突然需要一个event,此时task进入waiting状态,释放cpu资源,而后去执行优先级低的task,等event来了,再执行改优先级高的task。

3.设置回调函数
4.task的登录
  1. Runnables可运行实体,SWC中的函数,再被达芬奇生成的时候手动添加实际功能,可以被定时器或者操作调用以及接受数据触发

  2. Runnables需要os中的task作为载体,需要放在操作系统的任务中来执行这个函数

  3. Runnables到task的映射需要RTE实现

5.中断
优先级说明
0类中断不受OS管理
Timing protect防止时间失效导致死锁,阻塞,错误同步等
1类中断不与OS内部交互,1类中断不能被2类中断打断,开销小
2类中断其中断向量表指向OS内部,开销大
Task中断的周期性比task更严格
  1. 1类中断和2类中断的区别在于当有两个不同优先级的task1,task2时,在执行低优先级的task1时,如果1类中断被触发,退出中断后仍然回到task1,如果2类中断被触发,会进行os调度,中断退出后执行高优先级的task2

  2. AUTOSAR有两种时间保护机制,一种是执行时间的保护,一种是在bsw里的看门狗的保护

5.HOOK机制

类似中断的机制,在OS里一般使用在StartupHook(操作系统启动后并且在调度程序运行前),ShutdownHook(系统被应用或是操作系统出错要求关闭),调试以及出错管理

HOOK程序的优先级比task高,因为属于操作系统的一部分,所以不会被2类中断打断

6.OS运行流程
  1. 硬件代码初始化

  2. call startOS

  3. OS执行操作初始化代码

  4. OS执行StartupHook,用户将初始化程序放置在这里,此时所有中断无效

  5. 操作程序激活中断和调度程序

  6. 执行用户的中断和 task。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AUTOSARAutomotive Open System Architecture)是一种开放式汽车系统架构,为汽车电子系统提供了一种标准化的软件架构和开发方法。AUTOSAR OSAUTOSAR中的一个子系统,用于管理和调度车辆电子系统中的各个软件组件和任务。 培训资料是指为了更好地理解和应用AUTOSAR OS而制作的教育材料。这些资料通常包括AUTOSAR OS的概念、架构、功能和应用示例等内容。 AUTOSAR OS培训资料的目的是帮助工程师和开发人员快速掌握和应用AUTOSAR OS。它可以通过提供基础知识、实例演示和实际操作等方式来帮助学习者理解AUTOSAR OS原理和功能,并解决实际开发过程中遇到的问题。 在AUTOSAR OS培训资料中,通常会包括以下内容: 1. AUTOSAR OS概述:介绍AUTOSAR OS的定义、特点和优势。 2. AUTOSAR OS架构:解释AUTOSAR OS的分层结构和各个组件的功能。 3. AUTOSAR OS任务管理:讲解AUTOSAR OS中任务的创建、调度和优先级等管理机制。 4. AUTOSAR OS资源管理:介绍AUTOSAR OS中的资源管理,包括内存、时间和事件的管理。 5. AUTOSAR OS通信机制:讨论AUTOSAR OS中任务间和任务与ISRs(Interrupt Service Routines)之间的通信方式。 6. AUTOSAR OS错误处理:解释AUTOSAR OS中的错误检测和处理机制,以保证系统的稳定性和可靠性。 7. AUTOSAR OS应用案例:通过实际案例展示如何在实际项目中使用AUTOSAR OS。 通过学习AUTOSAR OS培训资料,开发人员可以更好地理解和应用AUTOSAR OS,提高汽车电子系统的开发效率和质量。这也有助于促进汽车行业的标准化和互操作性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值