当前位置:网站首页>【AutoSAR 八 OS】
【AutoSAR 八 OS】
2022-07-02 23:49:00 【柯宇谦】
AutoSAR 八 OS
1 Tasks
- 基础任务(Basic Task)
- 扩展任务(Extended Task)
1.1 基础任务(Basic Task)
当启动操作系统后,所有的Task都进入到挂起状态;然后由用户去触发需要执行的Task(一般在DaVinci中都有配置,可以生成代码,比如配置成初始化执行或者100ms周期执行);被触发的Task都直接进入准备状态,等待被OS调用;这时OS会根据Task的优先级来调度Task(如果这时有高优先级的Task进入准备状态了,OS就会暂停正在执行的Task,优先让高优先级的Task执行,后继续执行被暂停的Task,类似于中断嵌套)。

1.2 扩展任务(Extended Task)
扩展任务比基础任务多了一个等待状态,这个状态就是当Task正在运行的时候,突然需要一个事件(比如刚刚的ADC数据更新),那么在等待这个事件的时候,Task进入等待状态并释放CPU资源,低优先级的Task就可以继续占用CPU;当ADC数据更新事件来了,那么再让我们在等待状态中的Task进入准备状态,由于优先级高,那么再进入运行状态。
2 Alarms
Alarms顾名思义是闹钟,作用就是设置一个周期定时,但不光能用来触发Task,还可以用来设置一个Event事件或者Call一个回调函数。
Alarms的时间基准是通过由硬件定时器产生的Tick Time决定的,每个Tick Time是多少时间可以在DaVinci中配置。每来一个Tick Time,System Counter便加1,加到预设的值,Alarm就被触发了。
3 Interrupts
- 中断的优先级始终高于Task
- 中断的优先级中一类中断大于二类中断;
- 周期性Task和周期性中断都能做周期处理,但是在周期要求严格的情况下,最好用中断
3.1 一类中断(Cat1)
- 不会访问OS服务,中断结束后直接返回中断处
- 这里OS依然按照正常的调度执行
3.2 二类中断(Cat2)
- 会访问部分OS服务(一些OS服务是不允许的,比如TerminateTask)
- 中断结束后会发生一次OS的重新调度。
3.3 一类与二类中断的区别
- 一类中断: 由于不允许使用OS服务,因此在一类中断中不能调用Task2触发函数,只能在退出中断后回到Task1,然后等待OS应该调用Task2的时候再调用
- 二类中断: 因为允许使用OS部分服务,这时我们在二类中断中写入了Task2的触发函数,那么在中断结束返回的时候会直接发生一次调度,由于Task2被触发了,优先级又高,那么就直接进入Task2运行,等Task2运行结束,再返回Task1继续运行(如下图的2情况);当然,在中断中也可以不触发其他Task,OS调度也就依然返回到Task1中去(如下图的1情况)

4 IOC (Inter OS Application Communicator)
是在内存中开辟了一个被保护的IOC区域,用于跨核通信。
该区域支持多输入多输出,由OS管理,在DaVinci中一般是自动生成无需修改,这里仅作了解
5 OS Resources
当至少两个Task并行访问同一个资源的时候,很可能出问题,OS Resources就是用来防止并行访问出错

边栏推荐
- Wechat applet obtains the information of an element (height, width, etc.) and converts PX to rpx.
- 简单聊聊运维监控的其他用途
- FRP reverse proxy +msf get shell
- Redis21 classic interview questions, extreme pull interviewer
- Nc50528 sliding window
- NC24840 [USACO 2009 Mar S]Look Up
- NC50965 Largest Rectangle in a Histogram
- [pulsar document] concepts and architecture
- 毕业总结
- Don't want teachers to see themselves with cameras in online classes? Virtual camera you deserve!
猜你喜欢

Multiprocess programming (I): basic concepts

University of Oslo: Li Meng | deep reinforcement learning based on swing transformer

Install docker and use docker to install MySQL

文件操作IO-Part2

logback配置文件

Basic 10 of C language: array and pointer

UART、RS232、RS485、I2C和SPI的介绍

图解网络:什么是虚拟路由器冗余协议 VRRP?

如何系统学习机器学习

Use Jenkins II job
随机推荐
Introduction of UART, RS232, RS485, I2C and SPI
Program analysis and Optimization - 9 appendix XLA buffer assignment
NC24325 [USACO 2012 Mar S]Flowerpot
多进程编程(二):管道
Andorid 获取系统标题栏高度
[pulsar document] concepts and architecture
University of Toronto:Anthony Coache | 深度强化学习的条件可诱导动态风险度量
Two common methods and steps of character device registration
Extension of flutter
Preview word documents online
Briefly talk about other uses of operation and maintenance monitoring
Markdown tutorial
Detailed explanation of pod life cycle
Multi process programming (III): message queue
简单聊聊运维监控的其他用途
机器学习:numpy版本线性回归预测波士顿房价
setInterval定时器在ie不生效原因之一:回调的是箭头函数
NC24840 [USACO 2009 Mar S]Look Up
There is an unknown problem in inserting data into the database
node_modules删不掉